Friday, March 11, 2022

FND_PROFILE & FND_GLOBAL usage

FND_PROFILE

Use of the API FND_PROFILE
It is used to perform various actions related to profile values through PL/SQL. Some of the important ones are listed below
1. FND_PROFILE.GET(‘Name of the Profile’, variable name);
Example
SELECT fnd_profile.value('PROFILEOPTION')
,fnd_profile.value('MFG_ORGANIZATION_ID')
,fnd_profile.value('ORG_ID')
,fnd_profile.value('LOGIN_ID')
,fnd_profile.value('USER_ID')
,fnd_profile.value('USERNAME')
,fnd_profile.value('CONCURRENT_REQUEST_ID')
,fnd_profile.value('GL_SET_OF_BKS_ID')
,fnd_profile.value('SO_ORGANIZATION_ID')
,fnd_profile.value('APPL_SHRT_NAME')
,fnd_profile.value('RESP_NAME')
,fnd_profile.value('RESP_ID')
FROM DUAL;



FND_GLOBAL

The server-side package FND_GLOBAL returns the values of system globals, such as the login/signon or “session” type of values. You should not use FND_GLOBAL routines in your forms (that is on the client side). On the client side, most of the procedures in the FND_GLOBAL package are replaced by a user profile option with the same (or a similar) name. You should use FND_PROFILE routines in your forms instead.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
fnd_global.USER_ID 
fnd_global.USER_NAME 
fnd_global.RESP_ID 
fnd_global.RESP_NAME 
fnd_global.APPLICATION_NAME 
fnd_global.APPLICATION_SHORT_NAME 
fnd_global.RESP_APPL_ID 
fnd_global.BASE_LANGUAGE 
fnd_global.CONC_LOGIN_ID 
fnd_global.CONC_PRIORITY_REQUEST 
fnd_global.CONC_PROCESS_ID 
fnd_global.CONC_PROGRAM_ID 
fnd_global.CONC_QUEUE_ID 
fnd_global.CONC_REQUEST_ID 
fnd_global.CURRENT_LANGUAGE 
fnd_global.CUSTOMER_ID 
fnd_global.EMPLOYEE_ID 
fnd_global.FORM_APPL_ID 
fnd_global.FORM_ID 
fnd_global.GET_SESSION_CONTEXT 
fnd_global.LANGUAGE_COUNT 
fnd_global.LOGIN_ID 
fnd_global.NEWLINE 
fnd_global.NLS_DATE_FORMAT 
fnd_global.NLS_DATE_LANGUAGE 
fnd_global.NLS_LANGUAGE 
fnd_global.NLS_NUMERIC_CHARACTERS 
fnd_global.NLS_SORT 
fnd_global.NLS_TERRITORY 
fnd_global.ORG_ID 
fnd_global.ORG_NAME 
fnd_global.PARTY_ID 
fnd_global.PER_BUSINESS_GROUP_ID 
fnd_global.PER_SECURITY_PROFILE_ID 
fnd_global.PROG_APPL_ID 
fnd_global.QUEUE_APPL_ID 
fnd_global.RT_TEST_ID 
fnd_global.SECURITY_GROUP_ID 
fnd_global.SERVER_ID 
fnd_global.SESSION_ID 
fnd_global.SUPPLIER_ID 
fnd_global.TAB

Thursday, March 10, 2022

EBS information for table begin with all*

1)  select table_name from all_tables

2)  select view_name from all_views


3)  select distinct type from all_source 

    where name = 'CUX_SEND_MAIL_PKG' 

    and type = 'PACKAGE BODY'

    order by line;

TYPE:

PACKAGE BODY

TYPE BODY

TRIGGER

PACKAGE

PROCEDURE

FUNCTION

LIBRARY

TYPE

JAVA SOURCE

Wednesday, March 9, 2022

How to get CCID

1) Fnd_Flex_ext.get_ccid

 

--return CCID or 0 when flexfield segment ACCOUNT does not exist in the value set TTI_ACCOUN

 

DECLARE

    p_ccid    NUMBER;

BEGIN

    p_ccid := Fnd_Flex_ext.get_ccid(application_short_name => 'SQLGL',

                                         key_flex_code          => 'GL#',

                                         structure_number       => 50190,

                                         validation_date        => to_char(SYSDATE,

                                                                           'YYYY/MM/DD HH24:MI:SS'),

                                         concatenated_segments  => 'B1.21399.00.6733.000000.00000000.11.00.0000.000');

    IF p_ccid <> '0' THEN

        DBMS_OUTPUT.PUT_LINE( p_ccid);

    ELSE

        DBMS_OUTPUT.PUT_LINE( FND_FLEX_EXT.GET_MESSAGE) ;

    END IF;

END;

 

====================================================================

 

2) fnd_flex_keyval.validate_segs

 

--return true or false & get ccid by FND_FLEX_KEYVAL.COMBINATION_ID()

 

BEGIN

    IF fnd_flex_keyval.validate_segs(

        operation        => 'CREATE_COMBINATION' -- CHECK_COMBINATION, FIND_COMBINATION

        , appl_short_name  => 'SQLGL' -- 請根據情況自行修改

        , key_flex_code    => 'GL#' -- 請根據情況自行修改

        , structure_number => 50190 -- 請根據情況自行修改

        , concat_segments  => 'B1.21299.00.6733.000000.00000000.11.00.0000.000') THEN

        DBMS_OUTPUT.PUT_LINE( (FND_FLEX_KEYVAL.COMBINATION_ID()));

--.concatenated_descriptions());

    ELSE

        DBMS_OUTPUT.PUT_LINE( FND_FLEX_KEYVAL.ERROR_MESSAGE) ;

    END IF;

END; 





1、Check Combination:

IF (NOT fnd_flex_keyval.validate_segs(operation => 'CHECK_COMBINATION',

                                      appl_short_name => 'SQLGL',

                                      key_flex_code => 'GL#',

                                      structure_number => 50394,

                                      concat_segments => '0.0.530101.0.0.1006001.0.0',

                                      validation_date => sysdate)) THEN

  -- return the error message

  RETURN fnd_flex_keyval.error_message;

END IF;


2. Create Combination:

    1) fnd_flex_ext.get_ccid(application_short_name => 'SQLGL',  

                                                 key_flex_code          => 'GL#',  

                                                 structure_number       => l_id_flex_num,  

                                                 validation_date        => to_char(SYSDATE,  

                                                                                   apps.fnd_flex_ext.DATE_FORMAT),  

                                                 concatenated_segments  => x_concatenated_seg);

    2: fnd_flex_keyval.validate_segs('CREATE_COMBINATION' --'CREATE_COMB_NO_AT'

                                       ,'SQLGL'

                                        ,'GL#'

                                        ,lv_chart_of_accounts_id

                                        ,lv_concatenated_segments);



FND_KEY_FLEX.Define() 定义弹性域
FND_FLEX_EXT.GET_SEGS() 获取科目节段组合
fnd_flex_ext.get_ccid() 获取ID
FND_FLEX_KEYVAL.validate_ccid验证ccid的有效性
FND_FLEX_KEYVAL.concatenated_descriptions 得到ccid的描述
FND_KEY_FLEX.Update_Definition()