NAV_BAR

Drop Down MenusCSS Drop Down MenuPure CSS Dropdown Menu

Tuesday, June 30, 2015

Profile Options in Oracle Apps R12 - Overview (FND PROFILE)



Definition:

·         Profiles are the changeable options which affect the way Oracle Applications run. 
·         The profile option acts like a Global Variable in Oracle, to provide the flexibility in Oracle Applications.

Types:

The profiles are of two types those are given below.
1.    System Profile and
2.    User Profile.
Different Levels a Profile value can be set:

The Profile values will be set in different levels as given below.
1.    Site
2.    Application
3.    Responsibility
4.    User
5.    Server
6.    Organization
·          Site: This field displays the current value, if set, for all users at the installation site. 
·         Application: This field displays the current value, if set, for all users working under responsibilities owned by the application identified in the Find Profile Values block. 
·         Responsibility: This field displays the current value, if set, for all users working under the responsibility identified in the Find Profile Values block.  
·         User: This field displays the current value, if set, for the application user identified in the Find Profile Values block.  
·         Profile: Enter the name of the profile option whose values you wish to display.

Navigation to set Profile Values
·         SYSTEM PROFILE: 
Responsibility SYSTEM ADMINISTRATOR -->

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0cPJTM5wGMNml5iTOVOCVApwgdBkTAoz3RDvDfroFB87Ur5R9nKkFHqDmhQ0vD1bUMaTRfwNTlPax2v_5mOipv4OjiZjTFW1CVhd9a65rK58Zcl3wQAqbfUr6tfYtFV66-v_7P-ev_-7h/s400/NAvigation+system.jpg

You may search for profile options using character strings and the wildcard symbol (%). For example, to find all the profile options prefixed by "Concurrent:” you could enter "Conc%" and press the Find button.

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMmOf1tHFvDxT0YdDfxFmkfxchOEp3SrKFS2M3HuZrpuhesq-DKowCtdgo092IvSbpfS7XVor9o54Y1unjPePuIPddPI-pxt2yIaMo5hNjrGwtOvc-XX7iZVTNdxMCLGNGG6DKa9H1PQKl/s400/NAvigation+system+1.jpg

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkW6KwcYnfTPhXlWKTyAh2h0BT33xuB8z9Egk6eiFnp3LsdM9AI5Ch8sOZxSdemhtQK2dp5gDCQuJ-7uBsSmO-9TSR0kEcwmcBi0eB1g7LZVvBUvh6g19PVNT-lvABlJkBySk9ei_HHmA3/s400/NAvigation+system+2.jpg
  
·         PERSONAL PROFILE:

Responsibility SYSTEM ADMINISTRATOR -->

To view personal profiles enter into the query mode and enter the profile name which we have already then we get profile value details.

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicceR_csHUOX1WOnZ_jnjiTR9lMgHODOLOp_6YihUCMdjp-hsu16cRXPwmu6BqtfRAbGiMqIR8U2pFEIOHKBHyr0A5mgdMh2aBTjGKgPTwC6sOyE2k-vkWxMAgthGl5Xq4XKP2YFYCWvO6/s400/Personal+Navigation.jpg

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpr2O5Vh_egAFqKVZS2GdD3yHHTwqmDXUjkLVzwucfGn7wTqTEpIEm7FphWEQcy0TsifmJ1DYtPLpMkNwMjVuI8gRhdpbPpyO2Tweb3ivGOVFTQ34zI16RK0_XWEHrg7xpEupHP3awSnEw/s400/NAvigation+system1.jpg

To check the validation done against the Profile value while setting:

Responsibility APPLICATION DEVELOPER -->

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipwqSFUqWYkeBkwqkMpHAFaQYRVCs2fSw0p7Wpg2JrgYqssDJelP2Ru6BIplvo9Dw101D_KslttwicFMIWqJL50EmIfSst9QztLj6aGlJE_if3gijjd_T8T6HkczZaT4-8o7W-Bq3aWC7n/s400/validation+navigation.jpg

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv6y4MV13FrhyynfRZg9XoM5HxIcxOMHAiW4Iw6WbbBy6Jowy49oHkb9yCBSCwF1CJbhDZJBut53Pd5EICiWcTB-f9dVkYOTbTvIyRP746XxUFIw3h329UbFTYlaVEqnISLjWIfW9VMowB/s400/validation.jpg


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;


2. variable name := FND_PROFILE.VALUE(‘Name of the profile’);
3. FND_PROFILE.PUT(‘Name of the profile’, value of the profile);

Example
SET SERVEROUTPUT ON;
DECLARE
   v_conc_login_id      NUMBER;
BEGIN
   FND_PROFILE.put ('CONC_LOGIN_ID',1425);
   fnd_profile.get ('CONC_LOGIN_ID', v_conc_login_id);
   DBMS_OUTPUT.put_line (v_conc_login_id);
END;
Output:
1425
PL/SQL procedure successfully completed

The 1st and 2nd are same but, the only difference is FND_PROFILE.GET is the procedure and FND_PROFILE.VALUE is the function so, it return a value.  

Apart from the above procedures we have another important one named FND_PROFILE.SAVE used to set the profile values from backend. A detail regarding this API is as below. 

Changing Profile Options from Backend
The table fnd_profile_options_tlprofile options names are kept.  Now find the corresponding the Profile option name for which you need to update from backend. For this example I took my favorite “ORG_ID”

SELECT profile_option_name
 FROM fnd_profile_options_tl
 
WHERE user_profile_option_name LIKE 'MO%'

It returns more than one row but i can make out that "ORG_ID" is the PROFILE_OPTION_NAME for MO: Operating Unit. Now I need to know the Org_ID of the Org whose value is to be set in MO: Operating Unit. SO I use the simple select as below
SELECT organization_id, NAME
  FROM hr_all_organization_units;

From the organization name I find the one which will be the default Operating Unit, and I note the ID. In my case the ID for my default Operating Unit is 286. Now with the code below I set the profile option value using fnd_profile.save.
DECLARE
   stat   
BOOLEAN;
BEGIN
   DBMS_OUTPUT
.DISABLE;
   DBMS_OUTPUT
.ENABLE (100000);
   stat :
= fnd_profile.SAVE ('ORG_ID', 286, 'SITE');
   
IF stat
   THEN
      DBMS_OUTPUT
.put_line ('Stat = TRUE - profile updated');
   ELSE
      DBMS_OUTPUT
.put_line ('Stat = FALSE - profile NOT updated');
   END 
IF;
   COMMIT;
END;


No comments:

Post a Comment