Thursday, October 17, 2013

Oracle iProcurement REALM (11i)




Oracle iProcurement REALM is nothing but a definition of Rules. You can group Item categories under a REALM and attach the REALM at user or responsibility level using Securing attribute ICX_POR_REALM_ID.

Information on the implementation guide is enough to understand this feature.

Below are the ones that are not mentioned in the document.

1. REALM are effective only for Catalog items, Non catalog items will not get restricted by the REALM.
2. You need to bring the Item categories to define it in REALM screen through
E-Catalot Admin --> Loader Values. This submits a concurrent program which will load the Item categories which can be used in the REALM screen.

Back with a Bang....

It has been almost a year since I wrote my last blog...

Please watch my space for more posts soon on Financials.  You can always suggest me a topic on what you are looking for.

Thanks to the followers of my blog.


Thursday, November 15, 2012

Know applcust.txt

The $APPL_TOP/admin/applcust.txt file should be used to register your customization and being used as a reference while applying patches.

There are two ways of doing a customization

Customization by Extension (CBE)
Customization by Modification (CBM)

Customization by Extension (CBE) is nothing but doing customizations to copies of the original Oracle applications files.
Customization by Modification (CBM) is doing the customizations directly in the Oracle applciations files. It is difficult to maintain

There is a format to be followed while registering your customization

# <Sprd>  <Src Dir>  <Src Fname>  <Dprd> <Dest Dir> <Dest Fname>

It is easier to understand the format with an example.Consider that the file $AR_TOP/forms/US/ARXSUVAT.fmb has been modified in the method CBE as $XXAR_TOP/forms/US/XXARXSUVAT.fmb

<Sprd> is nothing but the Standard product abbreviation. In simple meaning the Sprd is taken using the format $<Sprd>_TOP.
<Src Dir> is always whatever after $<Sprd>_TOP, in our case it is forms/US
<Src Fname> is the exact file name.
<Dprd> is your custom top where you have your customized/modified file.
<Dest Dir> is the directory structure after $<Dprd>_TOP
<Dest Fname> is the name of your custom file.

So in our example case, the format of the entry will be as follows
# ar  forms/US    ARXSUVAT.fmb   xxar    forms/US    XXARXSUVAT.fmb

If you have customized your file in the CBM method, then you can leave the last three entries as blank (as below)

# ar  forms/US    ARXSUVAT.fmb

The applcust.txt is replaced by Register Flagged Files Tool in R12. Register Flagged Files tool can be accessed through Oracle Applications Manager (OAM) responsibility in R12.

Interesting Features of OAF RUI - R12.1

Below are the profile options introduced as part of R12.1 which give rich User Interface experience to the end users.

FND: Disable Configurable Home
Determines whether the Configurable Home page is enabled or disabled. Valid values are:
  • True - Disables the Configurable Home page.
  • False - Enables the Configurable Home page.
Default Value : False as Site Level

FND: Disable Navigator and Favorites Rich Menu
Determines whether the Navigator and Favorites Pull-down Menus feature is enabled or disabled. Valid values are:
  • True - Disables the Navigator and Favorites Pull-down menus.
  • False - Enables the Navigator and Favorites Pull-down menus.
Default Value : False as Site Level

FND: Disable Look Ahead LOV


Determines whether the Look Ahead LOV feature is enabled or disabled at the Site or Application level. Valid values include:
  • false - Look Ahead LOV feature is enabled.
  • true - Look Ahead LOV is disabled.
Default Value : False as Site Level


When Set to False, the system suggests the values as you type.

FND: Disable Inline Attachments


Determines whether the Inline Attachments feature is enabled or disabled at the Site or Application level. Valid values include:
  • false - Inline Attachments is enabled.
  • true - Inline Attachments is disabled.
Default Value : False as Site Level
This option eliminates the navigation between pages. As shown in the screenshot, the attachment can be added through a pop up like page, also through the similar pop up page it can be viewed.

Saturday, October 6, 2012

Oracle iStore - Copy Sales Order to User Cart

In Oracle OTN forum, one user has posted the below interesting requirement on Oracle iStore module.

How to copy a Sales Order to a Shopping cart?

The user was expecting something like copy cart feature provided by Oracle iStore. Because the Sales order has configured item that user is planning to order in different times and they are not ready to use shopping list feature as they are not sure for which sales order they are going to repeat the order.

So below were my suggestion to the user for customization,

User have Sales Order number with him. Through Sales order, the corresponding Quote Number/Quote Header Id can be obtained.

ASO_QUOTE_HEADERS_ALL.QUOTE_HEADER_ID is nothing but OE_ORDER_HEADERS_ALL.SOURCE_DOCUMENT_ID.


We have oracle provided API to copy quote ASP_QUOTE_PUB.COPY_QUOTE. This API can be used to create a new quote from the existing quote.

So the new quote/cart is created for the user, but the quote/cart is getting saved in to the saved cart and not becoming the active cart.

For a user, to get a active cart there should be a row in the table IBE_ACTIVE_QUOTES_ALL table with reference to the particular quote_header_id in the table ASO_QUOTE_HEADERS_ALL.


IBE_ACTIVE_QUOTES_ALL is used to store the current active cart of a user. 
The user is identified by party_id and cust_account_id referring HZ_PARTIES and the active cart is identified by the quote_header_id referring ASO_QUOTE_HEADERS_ALL. This is an org striped table. Primary key is a combination of party_id, cust_account_id and org_id 

So suggested the user to insert a record in the IBE_ACTIVE_QUOTES_ALL table with reference to the quote created through the ASO api. Once this is done, User was able to see the created cart as active cart in the customer UI.

I will soon share the full API 

Here is the link the forum thread  

Journeyer in OTN Forums

Glad to share this with the blog readers.....

Became a Journeyer in Oracle Technology Forum :)

Here is my profile at OTN

I have been contributing for this OTN forum for more than a year now. I use Solution beacon instance to work out issues posted by the users.

My main focus areas in OTN are Oracle iStore, Procurement, Financials and OA Framework related questions.

Sunday, September 9, 2012

How to restrict the user from forwarding the approval notifications to other users?

Login as admin
2. Click System administrator --> Oracle Application Manager --> workflow
5. Clcik on Notification Mailers --> Edit --> Advanced --> Email Servers
6. click "edit"
7. Uncheck "Allow Forwarded Response" which will restrict the user to respond by e-mail to an e-mail notification that has been forwarded from another role.

Thursday, September 6, 2012

Delegate or Transfer or Reassign ?

Today I have learnt some interesting stuff in Oracle Workflow Notifications...

Every Oracle Workflow Notifications have the feature to delegate or transfer or reassign the notification.

What all this means? and where this values are coming from?

The value is coming from the profile 'WF: Notification Reassign Mode' , the values for this profile can be Delegate, Transfer or Reassign.

Delegate
The Notification will be forwarded to the delegated employee/user, but the original recipient of the notification remains the owner.

Transfer
The Notification will be forwarded to the delegated employee/user and the new recipient becomes the owner of the notification.

Reassign
The user can decide whether to Delegate or Transfer.

Friday, August 31, 2012

Oracle Payables - Custom Hold on Invoices

Invoices can be put on hold using custom validations. The custom validation can be through any API or CUSTOM.pll.

The below APIs can be used to put the invoice on hold ap_holds_pkg.insert_single_hold and the hold can be released using ap_holds_pkg.release_single_hold.

Inserting Hold

ap_holds_pkg.insert_single_hold  (X_invoice_id         IN number,  -- Invoice Id to which the Hold needs to be applied
                                 X_hold_lookup_code   IN varchar2, -- Hold Look up code (select hold_lookup_code from ap_hold_codes)
                                 X_hold_type IN varchar2 DEFAULT NULL, -- Hold Type (select hold_type from ap_hold_codes)
                                 X_hold_reason IN varchar2 DEFAULT NULL, -- Can be user defined
                                 X_held_by IN number DEFAULT NULL, --Can be user defined
                                 X_calling_sequence IN varchar2 DEFAULT NULL -- Can be user defined)

Releasing the Hold

ap_holds_pkg.release_single_hold (X_invoice_id          IN number,-- Invoice Id from which the Hold needs to be released
                                 X_hold_lookup_code    IN varchar2,-- Hold Look up code (select hold_lookup_code from ap_hold_codes) This is the Hold we are trying to release.
                                 X_release_lookup_code IN varchar2, --  Release Look up code (select hold_lookup_code from ap_hold_codes) This is the Release Hold we are using to release the Hold on invoice.
                                 X_held_by IN number DEFAULT NULL,--Can be user defined ( but it has to be the same as X_held_by when the hold is applied)
                                 X_calling_sequence IN varchar2 DEFAULT NULL-- Can be user defined)

Before executing the above two procedures, define your custom hold and release using
Payables Manager --> Set up --> Hold and Release

The Hold type for the Invoice hold should be like 'INVOICE HOLD REASON' and for the release type it should be like 'INVOICE RELEASE REASON'

Also you can mention in the set up that If the hold on invoice can be released manually or not. This will be useful when you dont want to user to bypass the validation by releasing the hold manually.



Tuesday, May 8, 2012

Oracle Forms Personalization - Basics


Getting the Access

Enable the Diagnostics to the Form Personalization

Enable the profile FND: Diagnostics at the required level to perform the form personalization.

Navigating to Form Personalization screen

Open the form in which you want to perform the personalization.
Make sure that you are in the correct form by accessing Help--> About Oracle Applications.

You can see something like below

----------------------------------------
Current Form
----------------------------------------
Form Application : Payables
Form Name : APXINWKB
Form Path : /<server_location>/ap/11.5.0/forms/US/APXINWKB.fmx
Form Version : 11.5.1081
Form Last Modified : $Date: 2010/06/09 06:29  $

----------------------------------------

Once you confirmed that you are in the right form, access Help --> Diagnostics --> Custom Code --> Personalize.



 Understand 'What and When'

If you get a requirement, first thing is to understand what action to be performed and more importantly when to perform.

In the form personalization 'When to perform' goes as a Trigger event and Condition and 'what to perform' goes as Action.


Identifying 'When' ( Trigger Event)

It is important to identify the trigger event to write any form personalization.
For example you are getting a requirement like below.

In the Quick Invoice window, when the Invoice type is selected as 'Credit Memo' , make the Description field as non-editable.

So we need to identify the exact trigger being executed by form when the Invoice type is selected as 'Credit Memo'.

There is a simple way to capture that trigger.

Help --> Diagnostics --> Custom Code --> Show Custom Events.

The below message will appear
"Setting this option will cause a dialog box to be displayed whenever an event is passed to the custom library."

Click on 'OK' and proceed to identify the trigger being executed when the value is changed.

1. Open the 'Quick Invoice' Form
2. Enable display for Custom events Help --> Diagnostics --> Custom Code --> Show Custom Events.
3. Select the Invoice type as 'Credit Memo' and then tab out.
4. Note down the trigger being executed as soon as you tab'd out.

APXIISIM.INVOICES_FOLDER.INVOICE_NUM: WHEN-NEW-ITEM-INSTANCE

The above format is nothing but <FORMNAME>.<ITEMNAME>: <TRIGGERNAME>

So we have now identified the trigger event and trigger object.

Now let us access the Personalization from Help --> Diagnostics --> Custom Code --> Personalize.

Doing it...
  
'Seq' - is the sequence the personalization gets executed.
'Description'  - User entered description
'Level' - Form or Function.

The Personalization can be done either at Fuction or Form levels.

Form Level : Once you do the form personalization at the Form level, it will be reflected in all the functions,forms where
this form is included.

Function Level : if the form personalization is done at the Function level, it will be reflected only in the function. When
the same function is included in any other responsibility, the personalization will get reflected there as well.

 Choosing the Level

Choosing the level of personalization is entirely based on the requirement and user needs. But understand the impact when the
personalization is done at the Form level.

'Enabled' - When checked, the personalization will have impact on the Form.
            When Unchecked, the personalization is disabled.


For our example scenario, we have identified the trigger event and item name.

The condition for our example is : When the Invoice Type is 'Credit Memo'

When you see the above sentence there are two instance one is 'Invoice Type' and another is 'Credit Memo'.

'Invoice Type' is nothing but the form Item
'Credit Memo' is the value of that form item

Now we need the Item name for 'Invoice Type' to mention in it the Condition so that the form understands our condition.

Getting the Item Name

For any field in a Form, you can get the name of the item and the folder where it resides.

Place your cursor at the field. In our case place the cursor in the Invoice Type field then
click on Help--> Diagnostics--> Examine which will give you the field name ,block name the filed belongs to and the value.

In our case Block Name : INVOICES_FOLDER Field Name: INVOICE_TYPE

It is important to refer a field with the block name.

<BLOCK>.<FIELD>
  
CONDITION

Trigger Event: WHEN-NEW-ITEM-INSTANCE
Trigger Object:INVOICES_FOLDER.INVOICE_NUM
Condition:

There are properties for each field. for example to get the value of a field, the property name is 'VALUE'. To make the field
editable/non-editable the property name is 'ENTERABLE'. Similary there are more number of properties for a field.

To get the property of any item in the form, the 'Insert 'Get' Expression' button can be used and to get the value of any
item in the form, the 'Insert Item Value' button can be used.

In our case, we need to get the value (property) of Invoice type field (Item).

   ${item.invoices_folder.invoice_type.value} ='Credit Memo'

 ACTIONS

Seq: - is the sequence the personalization action gets executed.
Type: -

Property - To change any item properties
Message - To dispaly any message. Message can be displayed as Warning, Error or Hint.
Builtin - To Launch SRS form,URL,Function, set profile option, execute procedure.
Menu - Any thing related to the Menu and Special Button.

In our case, we are trying to make the Description field read only so the type would be Property.

Object Type : Item
Target Object : INVOICES_FOLDER.DESCRIPTION
Property Name : ENTERABLE
Value : FALSE
  
So our form personalization to make the Description field read only when the Invoice type is selected as 'Credit Memo' would
be as below

 CONDITION

Trigger Event: WHEN-NEW-ITEM-INSTANCE
Trigger Object:INVOICES_FOLDER.INVOICE_NUM
Condition:

   ${item.invoices_folder.invoice_type.value} ='Credit Memo'
  
ACTIONS

Seq: 1
Type: Property

Object Type : Item
Target Object : INVOICES_FOLDER.DESCRIPTION
Property Name : ENTERABLE
Value : FALSE

Friday, April 27, 2012

Techie....me

Long time no see...

I am glad that am getting good visitors for my page and more encouraging comments.

Thanks to all.

I am slowly moving to technical side with my current assignment where I have got lot of assignment in Forms.

I am getting familiar with Forms Personalizations and Customizations, so thought of sharing few challenges I have faced during this assignment.

Tuesday, December 6, 2011

Oracle Fusion - Documents Link

This is my post regarding Oracle Fusion in this blog, here is the link to Oracle Fusion Applications documentation.

http://docs.oracle.com/cd/E15586_01/index.htm

There are numerous training available for Oracle Partners network (OPN) on Fusion Moudles.

Oracle Applications Upgrade - Data Model Comparison Report

The EBS data model comparison report provides the database object definition changes between two EBS releases to help users to preview the database object definition changes before upgrading their instances from one release to another and understand the impact of the database object changes that may affect the customization or business flows.

Users can select a product and navigate the database object definition differences for each supported database object type.


Please access the metalink note 1290886.1 and get the report downloaded to your PC / Desktop.

The Data Model Comparison Report is available for the below upgrades.

Release 11.5.9 to Release 12.1.3
Release 11.5.10.2 to Release 12.1.3

Release 12.0.4 to Release 12.1.3
Release 12.0.6 to Release 12.1.3

Release 12.1.1 to Release 12.1.3
Release 12.1.2 to Release 12.1.3

Thursday, December 1, 2011

12.1.3 - New Delivery Options

In 12.1.3, there is a new feature called 'Delivery options' for the concurrent
program submission.

The output file/report of a concurrent program can be mailed to one or more email ids thorugh this option.

But the below set up is required to make this feature work.

FND: SMTP Host - Set the SMTP Host name at the Site level.
FND: SMTP Port - Set the SMTP Port Number at the Site level.

Friday, September 16, 2011

Oracle iStore - 'How To?' Part 3

Q11. How do I find the iStore patch set level?

Select patch_level, status from fnd_product_installations where patch_level like ‘%IBE%’

Status = ‘I’ means Installed, ‘S’ means Shared Install, ‘N’ means Not installed

Q12. How do I find the ASO (Oracle Order Capture) patch set level?

Select patch_level, status from fnd_product_installations where patch_level like ‘%ASO%’

Status = ‘I’ means Installed, ‘S’ means Shared Install, ‘N’ means Not installed

Q13. How to find particular Java Class file version?

Issue the below UNIX command to get the version of the file.
Strings –a | grep ‘Header’
For (e.g.)

Q14. How to enable Debug for Oracle iStore?

Set the below profiles:
IBE: Enable Debug to Yes at User level
ASO: Enable Debug to Yes at User level
OM: Debug level to 5 at user level
OM: Debug log Directory at Site level.
The value for the OM: Debug log Directory should be from any one of the value from the below query
Select value from v$parameter where name like 'utl_file_dir'

Q15. How to I get the generated Java and PL/SQL debug log ?

The PL/SQL log is generated under the directory mentioned in the profile OM: Debug log Directory.
The Java log is generated under the directory [ The java log will be in Mid-Tier/App Node]
$LOG_HOME/ora/10.1.3/j2ee/oacore
ls -ltr IBE*.log
The log file name will have the username part of it.

Oracle iStore - 'How To?' Part 2

Q6. Query to get the Item details associated to a Section.

Select unique (description),
ORDERABLE_ON_WEB_FLAG,
WEB_STATUS
From MTL_SYSTEM_ITEMS_B where inventory_item_id in (select inventory_item_id from IBE_DSP_SECTION_ITEMS where section_id = &Section_Id)

Q7. The Item is not appearing in the iStore UI, What are the parameters to be checked?

Check the Item Web Status and Orderable on web flag in the Item master for the Item that is not appearing in the iStore UI.The Web Status should be “Published” and The Orderable on the Web flag should be enabled.

Q8. Query to get all the Items listed in the minisite.

Select distinct (inventory_item_id), description from mtl_system_items_b
Where inventory_item_id in (select mini_site_section_item_id
From IBE_DSP_MSITE_SCT_ITEMS where mini_site_id = &Minisite_Id);

Q9. Query to get all the Items assigned to a particular section

Select distinct (inventory_item_id), description from mtl_system_items_b
Where inventory_item_id in (select inventory_item_id
From IBE_DSP_SECTION_ITEMS where section_id = 10022);

Q10. How to clear client Side cookies?

Browser: IE (Internet Explorer)

In the Menu, navigate to Tools --> Internet Options --> Click on Delete Cookies and Delete Files options.


Browser: Mozilla Firefox

In the Menu, navigate to Tools --> Options --> Privacy --> Cookies -->Show Cookies --> Remove All Cookies
Tools --> Options -->Privacy --> Private Data --> Clear Now

Thursday, September 15, 2011

FND_UNSUCCESSFUL_LOGINS

When ever an unsuccessful attempt was made to login to the application, a record gets inserted in to the table FND_UNSUCCESSFUL_LOGINS.

Oracle iStore - Difference btw 'Delete all lines' & 'Delete Cart'

Delete Cart:

Delete Cart functionality keeps all the records in the line table and headers table.
The header table status is updated as 5, which is inactive.

Deleting all the lines:

Deleting all the lines deletes the data from the lines table and header level record is retained in the headers table with status as 5, which is inactive.

Oracle iStore - Quick How To Part 1

Q1. How to get Error stack for the Application Error message from the iStore customer UI?

Option 1: Right click on the Application error screen and select the view source from the options available.
Option 2: Click on View from the browser menu and select source.

Q2. What if the error stack is not available for the Application error?

Make ensure that the profile FND: Debug Log Enabled is set to Yes.

Q3. How to get the Template Name for the associated JSP file?

Use the below query to get the Template name for the associated JSP file.
SELECT I.ACCESS_NAME, A.FILE_NAME FROM JTF.JTF_AMV_ATTACHMENTS A, APPS.JTF_AMV_ITEMS_VL I, IBE.IBE_DSP_LGL_PHYS_MAP M, IBE.IBE_MSITES_TL S WHERE A.ATTACHMENT_ID = M.ATTACHMENT_ID AND I.ITEM_ID = M.ITEM_ID AND M.MSITE_ID = S.MSITE_ID and a.FILE_NAME like 'Jsp file name here'

Same query can be little modified to get the File name from the Template name.

SELECT I.ACCESS_NAME, A.FILE_NAME FROM JTF.JTF_AMV_ATTACHMENTS A, APPS.JTF_AMV_ITEMS_VL I, IBE.IBE_DSP_LGL_PHYS_MAP M, IBE.IBE_MSITES_TL S
WHERE A.ATTACHMENT_ID = M.ATTACHMENT_ID AND I.ITEM_ID = M.ITEM_ID AND M.MSITE_ID = S.MSITE_ID and I.ACCESS_NAME like ‘template name here

Q4. How to change the Company Logo in the Customer UI?
Map the template STORE_LOGO_MAIN with the desired image. The Mapping can be done in the iStore Administrator UI using the navigation iStore Admin UI --> Advanced --> Template Manager.

Q5. Query to get the Price list associated with the Order.
select distinct(name) from QP_LIST_HEADERS_TL where LIST_header_id = (select PRICE_LIST_ID from oe_order_headers_all where order_number = &Order_Number)

Saturday, September 3, 2011

FND Messages


I have defined a message of 5 lines in Application developer to use the message in my self service application. The message is supposed to appear as 10 different lines my self service application when invoked.

So I have defined the message text as below in Application Developer

Message Name : XXX_TOOL_TIP

Message Text :

This is message line no 1
This is message line no 2
This is message line no 3
This is message line no 4
This is message line no 5

Then I have invoked this message XXX_TOOL_TIP in my application and the message appeared as below

This is message line no 1This is message line no 2This is message line no 3This is message line no 4This is message line no 5

It is just because Oracle apps does not interpret the message as defined in the Application developer. If you want to display a blank line in the application, the message has to be defined in the Application developer accordingly.

The above message has to be defined as below to get the message in the expected format.

<br>This is message line no 1<br>This is message line no 2<br>This is message line no 3<br>This is message line no 4<br>This is message line no 5