Thursday, March 28, 2019

Oracle AP Invoice Account Generator - Projects

This is From oracle Support

https://support.oracle.com/epmos/faces/DocumentDisplay?id=1344854.1


Customizing Supplier invoice account generator is one of the mandatory steps to generate an account for the project related invoice created in Payables.
Without customizing workflow system will not allow you to create a project related supplier invoice.

If we do not customize the PAAPINVW workflow, when we save the project related invoice distribution following error is raised.
"The default workflow for the Oracle Payables Account function Project Supplier Invoice Charge Account has not been customized.
Please replace the dummy function in the default process for account generation by your own account generation method"
Sample examples on how to customize PAAPINVW workflow.
  • Example 1 - Customizing the workflow with all the constant segment Values.
  • Example 2 - Customizing the workflow with one segment value derived from Lookup Set and rest are constant values.
  • Example 3 - Customizing the workflow to use user-entered account in the invoice distributions screen.

Note: Even if users manually enter the account segments in the invoice distribution screen the workflow has to be customized.


The workflow file related to Project Supplier Invoice Account Generator which we need to customize is: PAAPINVW.wft

The following points should be noted while customizing the workflow.
  1. The process must have result type of "Flexfield Result"
  2. The first node should be "Start Generating Code Combinations" and must be a "Start" Node
  3. The "Validate Code Combination" activity should be used before ending workflow with Success result.
  4. The end generating Code Combination must be an "End" node and should have result set to "Success"
  5. To abort generating Code Combination there should be a branch to an "End" node with result set to "Failure"

Before we start customizing the workflow we should know the number of segments to use in the workflow file. To determine number of segments go to the applications.

In Projects navigate to: Setup-->Flexfields-->Key-->Segments and search using
  • Application: General Ledger
  • Flexfield Title: Accounting Flexfield
Select the Accounting Structure that you are using and click on Segments



Example 1 - Customizing the workflow with all the constant segment Values.


1. Open the workflow file PAAPINVW.wft using Oracle Workflow Builder.

2. Create the process
Goto Node PAAPINVW-->Processes

Right Click on Processes Node and select "New Process" and input the following details
  • Internal Name
  • Display Name
  • Result Type - Flexfield Result
Click Ok.



3. Create the Start node
Open the process that you have defined. It will open a blank page
Right click on the page and select "New Function".  In the "Function" Tab, select following details
  • Item Type: Standard Flexifield Workflow
  • Internal Name: FND_FLEX_START_GENERATION




Next go to the "Node" tab. For Start/End - select "Start" since this is the start node.




Click Ok. It will create a Start node.



4. Next define other nodes and assign values to the segments. In this example we have 4 segments to which we must assign values.
  • Services Company
  • Services Department
  • Services Account
  • Services Product
To assign values to the above segments, right click on the page and select "New Function"

In the "Function" Tab, select the values as below:
  • Item Type: Standard Flexifield Workflow
  • Internal Name: FND_FLEX_ASSIGN_TO_SEGMENT



Go to the "Node Attributes" tab. Here we have four attributes:
  • Segment Identifier - whether segment is identified by "Qualifier" (like Balancing Segment) or "Name"
  • Segment - either the specific qualifier or specific name
  • Value - value to be assigned
  • Replace existing value - use "True" to copy value regardless of existing value,
    "False" to only copy the value if no value is currently assigned to the segment

We will use the name as our Segment Identifier.



For the "Segment" attribute input the value of the fisrt segment i,e "Services Company"
Since we are identifying segment using Name, segment value would be the internal name of the Segment.



For Value input a constant value to be assigned to the "Services Company" segment.
Replace existing value - use "True" to copy value regardless of existing value,"False" to only copy the value if no value is currently assigned to the segment





Once done click Ok.
5. Similarly assign values to other 3 segments.
  • Services Department
  • Services Account
  • Services Product







6. Once values are assigned to the segments, add the activity "Validate Code Combination"

Right click on the page and select "New Function"

In the "Function" Tab, select the values below:
  • Item Type: Standard Flexfield Workflow
  • Internal Name: FND_FLEX_VALIDATE_COMBINATION



Go to the "Node Attributes" and input the required values
  • Validation Type: Set to "Generate Code Combination ID" to do full validation and return the CCID, set to "Validate Segments with Values only" to validate the individual segment values that have values assigned
  • New code combinations are allowed:  Set to "True" if you have dynamic inserts enabled for your accounting flexfield and wish for new combinations to be created.  Set to "False" otherwise. 
Note: Even if new combinations are allowed, this node does not insert the combination into GL_CODE_COMBINATIONS or create the new CCID. Rather it validates the combination and returns -1 as the CCID to the calling module if the combination is otherwise valid.




7. Create the End node

Right click on the page and select "New Function".  In the "Function" tab, select the values below:
  • Item Type: Standard Flexfield Workflow
  • Internal Name: FND_FLEX_END_GENERATION



Go to the "Node" tab. For "Start/End" select "End" since this is the end node.
For "Result" select  "Success".



Click ok and it will create an End Node.

8. Link all the nodes we have created to derive the process flow



9. Once the Customization is complete, we need load the workflow file to the data base.

This can be done directly in workflow builder by saving the workflow to the database, or you can save the workflow to a file and use the below command to load the workflow file to the database.

WFLOAD apps/apps 0 Y UPLOAD <filename>.wft
10. Assign our account generator process to the appropriate account generation function in the application.
Sign into applications
In Projects: Setup > Flexfields > Key > Accounts, search using the following
  • Application: General Ledger
  • Flexfiled Title: Accounting Flexfield
Select the Accounting Structure that you are using.

Select appropriate account generator i.e., "Project Supplier Invoice Account Generator", and assign the new custom process that you defined.

11. Now when we create a project related supplier invoice the process will create a supplier charge account using the workflow customization we have created and assigned.


Example 2 - Customizing the workflow with one segment value derived from Lookup Set and rest are constant values.

In the above example all values assigned to the segments were constant values.  In this example, we will show how we can also get the values for the segments from lookup sets defined in Projects.

In this example, we will show how the value for segment2 ("Services Department") can be dervied from a lookup set, with the other values remaining the same.

1. First we need to define a lookup set in the application.
In Projects navigate to: Setup > AutoAccounting > Lookup sets
Define a lookup set, providing the lookup set name and optionally a description.
Define at least one intermediate value and segment value.  These values will map application related information to an accounting segment value


2. Create a new node which uses the lookup set to determine the segment value
Open the Workflow and goto the process that we have defined.  Right click on the page and select "New Function"

In the "Function" Tab, select the values below:
  • Item Type: Project Supplier Invoice Account Generation
  • Internal Name: SEGMENT_LOOKUP_SET



Go to the "Node Attributes" tab and input "Lookup Set Name". Here input the lookup set which is defined in the previous step (or any well defined lookup set).



The intermediate value you select depends on your business requirement and the way lookup set is defined.  This will be the value you are using to map to the segment values.  For example, if we need to get the segment values based on Expenditure type we would use the following:
  • Type: Item Attribute
  • Value: Expenditure Type



When the workflow is called, the expenditure type attribute for the current transaction will be compared against the assigned lookup set, and if a corresponding intermediate value is found there, it will return the mapped segment value.

In our example, if the invoice distribution being processed has an assigned expenditure type of "Clerical", then the corresponding segment value "02" will be returned.
If the intermediate value (in this case expenditure type) is not found in the lookup set, the process will return an error.

3. Create branches to handle the return values based on success or failure results
If the value has been found, we will create a node to assign the value to segment.

Right click on the page and select "New Function".  In the "Function" Tab, select the values below
  • Item Type: Standard Flexifield Workflow
  • Internal Name: FND_FLEX_ASSIGN_TO_SEGMENT
Go to the "Node Attributes".
For the "Segment" attribute input the value of the segment for which the lookupset value needs to be assigned.  Since we are using the segment name to identify our segments this would be  "Services Department".

For the "Value" section the type would be "Item Attribute" and the value would be "Lookup Set Value"
Note:  The "Assign Value to Segment" node should immediately follow the "Segment Lookup Set value" node in the flow, or at least should occur prior to any subsequent "Segment Lookup Set value" nodes.



When the value is not found or there is an error we should abort the process.
Right click on the page and select "New Function" and in the "Function" Tab, select the values below
  • Item Type: Standard Flexifield Workflow
  • Internal Name: FND_FLEX_ABORT_GENERATION



Go to the "Node" tab and enter the values
  • Start/End: End
  • Result: Failure



Once all the nodes are defined link all the nodes to complete the workflow setup




Example 3 - Customizing the workflow to use the account entered manually in the Invoice Workbench distributions screen.


In the Invoice Workbench we have an option to manually enter the supplier invoice account, to retain this account we need to customize the workflow as follows.
Note: On 11i, you may need to apply periodic patch 5847631 in order for this example to work correctly

1. Set the value of the profile option "PA: Allow Override of PA Distributions in AP/PO" to "Yes".

2. Create a branching node which will use the function "Comparenumber" to determine the appropriate branch of the workflow based on the existence of a passed in code combination id (CCID).  This node should be placed after the "Start" node of the process.

Open the workflow file and goto the process that we have defined. Right click on the page and select "New Function" In the "Function" tab, select the values below
  • Item Type: Standard
  • Internal Name: Compare Number



Go to the "Node Attributes" tab.
For the attribute "Test Value" input the following details:
  • Type: Attribute
  • Value: Supplier Invoice Account Ccid



For the attribute "Reference Value" input the following details:
  • Type: Constant
  • Value: 0



Since we are entering account manually in the invoice screen, the ccid will be already populated and will get assigned to "Supplier Invoice Account Ccid" when the workflow is called.
Here by using the "Compare number" we are validating whether or not an account has already been entered.

Because the "Test Value"  is "Supplier Invoice Account Ccid" and the "Reference Value"  is 0 the comparison will be a match when the "Supplier Invoice Account Ccid" value is 0.  This will be the value if no CCID has been passed in, meaning that no account was entered manually.
In this case we need to follow a path that will generate a valid account.

If, on the other hand, the value of "Supplier Invoice Account Ccid" is not 0, this implies that an account has been entered manually in invoice screen.  In this case we will branch to a path that will accept the values from the passed in CCID and exit.


3.  Define a node to copy the passed in CCID when this is available from manual entry of the account.

Right click on the page and select "New Function" and in the "Function" tab, select the values below
  • Item Type: Standard Flexfield Workflow
  • Internal Name: FND_FLEX_COPY_FROM_COMB



Go to the "Node Attributes" tab and for attribute "Code Combination ID" input the following details:
  • Type: Attribute
  • Value: Supplier Invoice Account Ccid



For attribute "Replace existing value" input the following details:
  • Type: Constant
  • Value: True



Link the nodes as shown in the below screen shot below which has 2 paths:
  1. To generate account using the standard workflow customization logic when no account combination is passed in
  2. To retain the account entered manually in the invoice screen when this is passed in




Note - Please note that all the above are merely examples using dummy values assigned to the segments. Based on your business requirements the values you use and number of segments will obviously differ. Your actual customizations will have to be created in accordance with your requirements.

Wednesday, March 27, 2019

Oracle Projects & AR Invoice Link



The AR table ra_customer_trx_all holds the following info:

   Project Number - INTERFACE_HEADER_ATTRIBUTE1
   Draft Invoice Number- INTERFACE_HEADER_ATTRIBUTE2
   Agreement Number -INTERFACE_HEADER_ATTRIBUTE3
   Project Organization -INTERFACE_HEADER_ATTRIBUTE4
   Project Manager -INTERFACE_HEADER_ATTRIBUTE5


Another join:

PA_DRAFT_INVOICES_ALL.SYSTEM_REFERENCE = RA_CUSTOMER_TRX_ALL.CUSTOMER_TRX_ID


* The PA_DRAFT_INVOICES_ALL.SYSTEM_REFERENCE will have customer_trx_id.

Oracle Create Role responsibility API



DECLARE
    p_role_responsibility_rec   hz_cust_account_role_v2pub.role_responsibility_rec_type;
    x_responsibility_id         NUMBER;
    x_return_status             VARCHAR2(2000);
    x_msg_count                 NUMBER;
    x_msg_data                  VARCHAR2(2000);
    CURSOR c1 IS SELECT
        customer_number,
        cust_account_role_id
                 FROM
        ar_customers ac,
        hz_cust_account_roles hcar
                 WHERE
        ac.status = 'A'
        AND   ac.customer_id = hcar.cust_account_id
        AND   NOT EXISTS (
            SELECT
                responsibility_id
            FROM
                hz_role_responsibility hrr
            WHERE
                hrr.cust_account_role_id = hcar.cust_account_role_id
        )
        ;
BEGIN
   --  fnd_global.apps_initialize(0,000000,222); (user_id, responsibility_id, application_id)
    FOR i IN c1 LOOP
        p_role_responsibility_rec.cust_account_role_id := i.cust_account_role_id;
        p_role_responsibility_rec.responsibility_type := 'BILL_TO';
        p_role_responsibility_rec.created_by_module := 'HZ_CPUI';
        p_role_responsibility_rec.primary_flag := 'N';
        hz_cust_account_role_v2pub.create_role_responsibility('T',p_role_responsibility_rec,x_responsibility_id,x_return_status,x_msg_count
,x_msg_data);
        COMMIT;
        dbms_output.put_line('***************************');
        dbms_output.put_line('Output information ....');
        dbms_output.put_line('***************************');
        dbms_output.put_line('x_responsibility_id: '
        || x_responsibility_id);
        dbms_output.put_line('x_return_status: '
        || x_return_status);
        dbms_output.put_line('x_msg_count: '
        || x_msg_count);
        dbms_output.put_line('x_msg_data:
'
        || x_msg_data);
        dbms_output.put_line(' *************************** ');
        IF
            x_msg_count > 1
        THEN
            FOR i IN 1..x_msg_count LOOP
                dbms_output.put_line(i
                || '
.'
                || substr(fnd_msg_pub.get(p_encoded => fnd_api.g_false),1,255) );
            END LOOP;
        END IF;
    END LOOP;
END;

Monday, March 25, 2019

Oracle XML/BI Publisher Color Code & Color



Code :- <?if:CS_COUNT='1'?><?attribute@incontext:background-color;'#b0e0e6'?><?end if?>

CodeColor
#000000Black
#0C090ANight
#2C3539Gunmetal
#2B1B17Midnight
#34282CCharcoal
#25383CDark Slate Grey
#3B3131Oil
#413839Black Cat
#3D3C3AIridium
#463E3FBlack Eel
#4C4646Black Cow
#504A4BGray Wolf
#565051Vampire Gray
#5C5858Gray Dolphin
#625D5DCarbon Gray
#666362Ash Gray
#6D6968Cloudy Gray
#726E6DSmokey Gray
#736F6EGray
#837E7CGranite
#848482Battleship Gray
#B6B6B4Gray Cloud
#D1D0CEGray Goose
#E5E4E2Platinum
#BCC6CCMetallic Silver
#98AFC7Blue Gray
#6D7B8DLight Slate Gray
#657383Slate Gray
#616D7EJet Gray
#646D7EMist Blue
#566D7EMarble Blue
#737CA1Slate Blue
#4863A0Steel Blue
#2B547EBlue Jay
#2B3856Dark Slate Blue
#151B54Midnight Blue
#000080Navy Blue
#342D7EBlue Whale
#15317ELapis Blue
#151B8DDenim Dark Blue
#0000A0Earth Blue
#0020C2Cobalt Blue
#0041C2Blueberry Blue
#2554C7Sapphire Blue
#1569C7Blue Eyes
#2B60DERoyal Blue
#1F45FCBlue Orchid
#6960ECBlue Lotus
#736AFFLight Slate Blue
#357EC7Windows Blue
#368BC1Glacial Blue Ice
#488AC7Silk Blue
#3090C7Blue Ivy
#659EC7Blue Koi
#87AFC7Columbia Blue
#95B9C7Baby Blue
#728FCELight Steel Blue
#2B65ECOcean Blue
#306EFFBlue Ribbon
#157DECBlue Dress
#1589FFDodger Blue
#6495EDCornflower Blue
#6698FFSky Blue
#38ACECButterfly Blue
#56A5ECIceberg
#5CB3FFCrystal Blue
#3BB9FFDeep Sky Blue
#79BAECDenim Blue
#82CAFALight Sky Blue
#82CAFFDay Sky Blue
#A0CFECJeans Blue
#B7CEECBlue Angel
#B4CFECPastel Blue
#C2DFFFSea Blue
#C6DEFFPowder Blue
#AFDCECCoral Blue
#ADDFFFLight Blue
#BDEDFFRobin Egg Blue
#CFECECPale Blue Lily
#E0FFFFLight Cyan
#EBF4FAWater
#F0F8FFAliceBlue
#F0FFFFAzure
#CCFFFFLight Slate
#93FFE8Light Aquamarine
#9AFEFFElectric Blue
#7FFFD4Aquamarine
#00FFFFCyan or Aqua
#7DFDFETron Blue
#57FEFFBlue Zircon
#8EEBECBlue Lagoon
#50EBECCeleste
#4EE2ECBlue Diamond
#81D8D0Tiffany Blue
#92C7C7Cyan Opaque
#77BFC7Blue Hosta
#78C7C7Northern Lights Blue
#48CCCDMedium Turquoise
#43C6DBTurquoise
#46C7C7Jellyfish
#7BCCB5Blue green
#43BFC7Macaw Blue Green
#3EA99FLight Sea Green
#3B9C9CDark Turquoise
#438D80Sea Turtle Green
#348781Medium Aquamarine
#307D7EGreenish Blue
#5E7D7EGrayish Turquoise
#4C787EBeetle Green
#008080Teal
#4E8975Sea Green
#78866BCamouflage Green
#848b79Sage Green
#617C58Hazel Green
#728C00Venom Green
#667C26Fern Green
#254117Dark Forest Green
#306754Medium Sea Green
#347235Medium Forest Green
#437C17Seaweed Green
#387C44Pine Green
#347C2CJungle Green
#347C17Shamrock Green
#348017Medium Spring Green
#4E9258Forest Green
#6AA121Green Onion
#4AA02CSpring Green
#41A317Lime Green
#3EA055Clover Green
#6CBB3CGreen Snake
#6CC417Alien Green
#4CC417Green Apple
#52D017Yellow Green
#4CC552Kelly Green
#54C571Zombie Green
#99C68EFrog Green
#89C35CGreen Peas
#85BB65Dollar Bill Green
#8BB381Dark Sea Green
#9CB071Iguana Green
#B2C248Avocado Green
#9DC209Pistachio Green
#A1C935Salad Green
#7FE817Hummingbird Green
#59E817Nebula Green
#57E964Stoplight Go Green
#64E986Algae Green
#5EFB6EJade Green
#00FF00Green
#5FFB17Emerald Green
#87F717Lawn Green
#8AFB17Chartreuse
#6AFB92Dragon Green
#98FF98Mint green
#B5EAAAGreen Thumb
#C3FDB8Light Jade
#CCFB5DTea Green
#B1FB17Green Yellow
#BCE954Slime Green
#EDDA74Goldenrod
#EDE275Harvest Gold
#FFE87CSun Yellow
#FFFF00Yellow
#FFF380Corn Yellow
#FFFFC2Parchment
#FFFFCCCream
#FFF8C6Lemon Chiffon
#FFF8DCCornsilk
#F5F5DCBeige
#FBF6D9Blonde
#FAEBD7AntiqueWhite
#F7E7CEChampagne
#FFEBCDBlanchedAlmond
#F3E5ABVanilla
#ECE5B6Tan Brown
#FFE5B4Peach
#FFDB58Mustard
#FFD801Rubber Ducky Yellow
#FDD017Bright Gold
#EAC117Golden brown
#F2BB66Macaroni and Cheese
#FBB917Saffron
#FBB117Beer
#FFA62FCantaloupe
#E9AB17Bee Yellow
#E2A76FBrown Sugar
#DEB887BurlyWood
#FFCBA4Deep Peach
#C9BE62Ginger Brown
#E8A317School Bus Yellow
#EE9A4DSandy Brown
#C8B560Fall Leaf Brown
#D4A017Orange Gold
#C2B280Sand
#C7A317Cookie Brown
#C68E17Caramel
#B5A642Brass
#ADA96EKhaki
#C19A6BCamel brown
#CD7F32Bronze
#C88141Tiger Orange
#C58917Cinnamon
#AF9B60Bullet Shell
#AF7817Dark Goldenrod
#B87333Copper
#966F33Wood
#806517Oak Brown
#827839Moccasin
#827B60Army Brown
#786D5FSandstone
#493D26Mocha
#483C32Taupe
#6F4E37Coffee
#835C3BBrown Bear
#7F5217Red Dirt
#7F462CSepia
#C47451Orange Salmon
#C36241Rust
#C35817Red Fox
#C85A17Chocolate
#CC6600Sedona
#E56717Papaya Orange
#E66C2CHalloween Orange
#F87217Pumpkin Orange
#F87431Construction Cone Orange
#E67451Sunrise Orange
#FF8040Mango Orange
#F88017Dark Orange
#FF7F50Coral
#F88158Basket Ball Orange
#F9966BLight Salmon
#E78A61Tangerine
#E18B6BDark Salmon
#E77471Light Coral
#F75D59Bean Red
#E55451Valentine Red
#E55B3CShocking Orange
#FF0000Red
#FF2400Scarlet
#F62217Ruby Red
#F70D1AFerrari Red
#F62817Fire Engine Red
#E42217Lava Red
#E41B17Love Red
#DC381FGrapefruit
#C34A2CChestnut Red
#C24641Cherry Red
#C04000Mahogany
#C11B17Chilli Pepper
#9F000FCranberry
#990012Red Wine
#8C001ABurgundy
#954535Chestnut
#7E3517Blood Red
#8A4117Sienna
#7E3817Sangria
#800517Firebrick
#810541Maroon
#7D0541Plum Pie
#7E354DVelvet Maroon
#7D0552Plum Velvet
#7F4E52Rosy Finch
#7F5A58Puce
#7F525DDull Purple
#B38481Rosy Brown
#C5908EKhaki Rose
#C48189Pink Bow
#C48793Lipstick Pink
#E8ADAARose
#ECC5C0Rose Gold
#EDC9AFDesert Sand
#FDD7E4Pig Pink
#FCDFFFCotton Candy
#FFDFDDPink Bubble Gum
#FBBBB9Misty Rose
#FAAFBEPink
#FAAFBALight Pink
#F9A7B0Flamingo Pink
#E7A1B0Pink Rose
#E799A3Pink Daisy
#E38AAECadillac Pink
#F778A1Carnation Pink
#E56E94Blush Red
#F660ABHot Pink
#FC6C85Watermelon Pink
#F6358AViolet Red
#F52887Deep Pink
#E45E9DPink Cupcake
#E4287CPink Lemonade
#F535AANeon Pink
#FF00FFMagenta
#E3319DDimorphotheca Magenta
#F433FFBright Neon Pink
#D16587Pale Violet Red
#C25A7CTulip Pink
#CA226BMedium Violet Red
#C12869Rogue Pink
#C12267Burnt Pink
#C25283Bashful Pink
#C12283Dark Carnation Pink
#B93B8FPlum
#7E587EViola Purple
#571B7EPurple Iris
#583759Plum Purple
#4B0082Indigo
#461B7EPurple Monster
#4E387EPurple Haze
#614051Eggplant
#5E5A80Grape
#6A287EPurple Jam
#7D1B7EDark Orchid
#A74AC7Purple Flower
#B048B5Medium Orchid
#6C2DC7Purple Amethyst
#842DCEDark Violet
#8D38C9Violet
#7A5DC7Purple Sage Bush
#7F38ECLovely Purple
#8E35EFPurple
#893BFFAztech Purple
#8467D7Medium Purple
#A23BECJasmine Purple
#B041FFPurple Daffodil
#C45AECTyrian Purple
#9172ECCrocus Purple
#9E7BFFPurple Mimosa
#D462FFHeliotrope Purple
#E238ECCrimson
#C38EC7Purple Dragon
#C8A2C8Lilac
#E6A9ECBlush Pink
#E0B0FFMauve
#C6AEC7Wisteria Purple
#F9B7FFBlossom Pink
#D2B9D3Thistle
#E9CFECPeriwinkle
#EBDDE2Lavender Pinocchio
#E3E4FALavender blue
#FDEEF4Pearl
#FFF5EESeaShell
#FEFCFFMilk White
#FFFFFFWhite

Wednesday, March 20, 2019

Oracle OAF Personalization Profile Options 12.2



FND: Enable Personalization Workbench

– Yes – Navigates to the personalization workbench
– No – Navigates to the classic page hierarchy



Personalize Self-Service Defn

– Yes to allow ‘Personalize’ button to appear at the top of the page



FND: Personalization Region Link Enabled

– Yes to display all the regional links above each region
– Minimal to display key regional links



Disable Self-Service Personal

– Yes will disable all personalizations at any level



FND: Diagnostics

– Turns on ‘About this Page’ and ‘Inspect MDS Contents” buttons

FND: Personalization Document Root Path

Required to migrate personalizations 
Set this profile option to a tmp directory with open (777) permissions



FND: Enable Rich Table Interactions

Yes to allow users to dynamically resize tables and change column order using mouse 
Oracle Applications Look and Feel profile option to "Skyros Look and Feel”
  (Not set (null), which implies the Skyros Look and Feel - Oracle's new standard Look-and-Feel for Release 12.2.3+)



FND: OA:Enable Defaults

Set to Y or N at the site or responsibility level

Determines whether default values specified in personalizations are applied to your Pages


IF Personalizations Not Editable  For Seeded OAF Pages


• FND: Personalization Seeding Mode

– Yes to Enalbe
NULL/No  to Disable


Note :- Sometimes changing profiles through System Administration requires clearing cache ; this is not consistent

Wednesday, March 13, 2019

Unable to Create/Update/Delete/View Value Set Values in Oracle EBS R12.2


Issue :- Update In R12.2
=========================
Value sets do not appear in the List of Values (LOV) in the Values form FNDFFMSV after upgrading to Oracle E-Business Suite 12.2.
Users are not able to insert or update any independent or dependent value set values after the upgrade.


Solution
=================

1. Login as SYSADMIN and navigate to 'User Management' responsibility.

2. Query the user that you want to grant access to all value sets > and grant the following role

                   Role = Flexfield Value Set Security: All privileges
                   Code = UMX|FND_FLEX_VSET_ALL_PRIVS_ROLE

Monday, March 11, 2019

Portable Java JDK on Windows


Prerequisite: Install 7-Zip file archiver :- https://www.7-zip.org/


1. Download the Java 8 SDK for Windows from Oracle. You will get a file named like jdk-8u101-windows-x64.exe.
Url- https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

2. Open the downloaded file with 7-Zip, which will show a a list of files and folders.
 

3. Open folder ‘.rsrc’ (select and double click this folder within 7-Zip).
4. Open folder ‘1033’ (or the folder of greatest size).
 


5. Open folder ‘JAVA_CAB10’ (or the folder of greatest size).
6. Open file ‘111’ (or the folder of greatest size).
 


7. Open file ‘tools.zip’.
8. Extract its contents to a directory where own write permissions, for example: C:\Users\Daniel\Documents\jdk-8u102-x64. To prevent issues, I recommend a directory without spaces.
9. From within this directory, search for all .pack files and extract them using unpack2000.exe command line tool found in the bin subdirectory. Following windows prompt command does the trick when executed from within the extracted directory: for /r %i in (*.pack) do .\bin\unpack200.exe %i %~pi%~ni.jar

How I Did it
============

.\bin\unpack200.exe E:\Vishal\SelfStudy\java\eclipse\jre\lib\ext\localedata.pack  "E:\Vishal\SelfStudy\java\eclipse\jre\lib\ext\localedata.jar"
.\bin\unpack200.exe E:\Vishal\SelfStudy\java\eclipse\jre\lib\charsets.pack  "E:\Vishal\SelfStudy\java\eclipse\jre\lib\charsets.jar"
.\bin\unpack200.exe E:\Vishal\SelfStudy\java\eclipse\jre\lib\javaws.pack  "E:\Vishal\SelfStudy\java\eclipse\jre\lib\javaws.jar"
.\bin\unpack200.exe E:\Vishal\SelfStudy\java\eclipse\jre\lib\deploy.pack  "E:\Vishal\SelfStudy\java\eclipse\jre\lib\deploy.jar"
.\bin\unpack200.exe E:\Vishal\SelfStudy\java\eclipse\jre\lib\jsse.pack  "E:\Vishal\SelfStudy\java\eclipse\jre\lib\jsse.jar"
.\bin\unpack200.exe E:\Vishal\SelfStudy\java\eclipse\jre\lib\rt.pack  "E:\Vishal\SelfStudy\java\eclipse\jre\lib\rt.jar"
.\bin\unpack200.exe E:\Vishal\SelfStudy\java\eclipse\jre\lib\plugin.pack  "E:\Vishal\SelfStudy\java\eclipse\jre\lib\plugin.jar"
.\bin\unpack200.exe E:\Vishal\SelfStudy\java\eclipse\lib\tools.pack  "E:\Vishal\SelfStudy\java\eclipse\lib\tools.jar"



The downloaded .exe file also contains the JDK sources. Navigating through the folders ‘.rsrc’, ‘1033’, ‘JAVA_CAB9’, ‘110’.

Alternate Method
=============================

These scripts can be run as:

jdk-extract path_to_install.exe
or
jdk-extract-pre-7.0.bat path_to_installer.bat


And now on to the actual the code:
File Name :- jdk-extract.bat

@echo off
REM This script will extract JDK tools from installers, without polluting Windows environment.
REM You need the pristine installers from Oracles website to extract all the data
setlocal
SET CWD=%CD%
SET FILE=%~f1
SET DEST=%~dpn1
echo DEST=%DEST% FILE=%FILE% CWD=%CWD%
md %DEST%
REM Used e here instead of x to keep structure flat
7z e -o"%DEST%"  -y "%FILE%" tools.zip
cd "%DEST%"
7z x -y tools.zip
del tools.zip
for /r %%x in (*.pack) do call :unpack2000 "%%x"
cd %CWD%
goto end
:unpack2000
%DEST%\bin\unpack200 -r %1 "%~dpn1.jar"
goto:eof
:end
echo Extracted %FILE% to %DEST%