P. 1


|Views: 288|Likes:
Published by Mohammad Zaheer

More info:

Published by: Mohammad Zaheer on Nov 17, 2011
Copyright:Attribution Non-commercial


Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less





Basics Of Oracle Apps Training Material (Step by Step Learning of Oracle Apps

What happens when you login to Oracle Apps? Why is it called apps? What is a profile option? What is org_id. Why is it important. Relationship between Applications and Modules Where to find/deploy the code (Forms tier/Middle tier or DB Tier) The testing cycle in Oracle Apps Difference between forms and form functions and menu What is a Concurrent Program What is concurrent Manager What is a Value set What is a lookup in oracle apps How does lookup differ from Value Sets Descriptive Flex field Basics in Oracle Apps How to make context sensitive descriptive flexfields ( step by step) Key Flex fields Basics Setting up your PC for development environment Your first custom form from scratch Your first pl/sql concurrent program from scratch Oracle FNDLOAD Script Examples Restart or Bounce Apache in Oracle Apps 11i Playing with CUSTOM.pll Read Only Schema in Oracle APPS 11i Create Oracle FND_USER with System Administrator ( Using Script ) A New Custom Form in Oracle Apps Forms Customization Steps in Oracle Applications Reports Customization Steps in Oracle Applications Your first Migration program in Apps. Migrate Customers FNDLOAD for Oracle Web ADI API to Update FND_USER and Add Responsibility Forms Personalization Example 1 Various Examples of Forms Personalization’s [ Everything that you wanted to know about FP ] Oracle Fusion Development Tools Debugging In Oracle Applications XML Publisher Concurrent Program Report Audit Trail in Oracle Apps Hierarchy Profile Options in Oracle Apps


Design and Development of Open Interfaces in Oracle Apps Customization of Reports in Oracle Apps How to find the Request Group for Concurrent program Smart Descriptive Flex fields Using XML Publisher with Pre-Printed Stationary Procure to Pay, Order to Cash, End to End Cycle Functional Documents What happens when you login to Apps? Firstly and surely there is a URL for oracle applications that is structured possibly in below format, although it can vary from version of apps. http://machinename:portnumber/OA_HTML/US/ICXINDEX.htm http://machinename:portnumber /oa_servlets/AppsLogin When you join an Oracle Apps development team for an employer, you will first be given URL of the development environment. In any Oracle Apps implementation project (assuming it has gone live), there are minimum of three environments, each with different URL's and different database instances. These are:--------------Development environment Testing environment Production environment You will most probably, as a techie, be given url,username ad password of the development environment. What happens when you login(no advanced info here):-------------------------------------A. Your login gets authenticated against a table named fnd_user for your username and password. The screen below is where username and password defined. This screen is called user definition screen. Only system administrators have access to this screen. B. As you can see above, this username xxpassi is attached to two responsibilities (this will be discussed in details in latter training lesson). It is this assignment to the responsibility that controls what a logged in person can do and can't do. In layman’s words, a responsibility is a group of menu.


C. When you successfully login you will see below screens. This screen below will prompt you to change your password, to a value different than that assigned by System Administrator.

Click on either of the above Responsibility Names, will initiate Oracle Apps( Note: You might be prompted to install jinitiator…..just keep clicking OK…OK for all Jinitiator messages). Effectively, what I mean to say is that you do not need to download jinitiator from anywhere; Oracle will do this automatically (provided your DBA’s got this cofig’ed) for you during your first logon attempt from the PC. Once your jInitiator gets installed


However. but it isn’t. however this question is an excuse for me to explain to you the evolution of APPS schema. Some people regard this as a security threat. a purchasing user (until version 10. Those days each module had its own database schema(which we still have). I started working in Oracle Financials 9 years ago.Hurray. Your DBA’s can change the “guest” password from its default value after installation. prior to invoking validation of actual username. Oracle uses a DB User account named applsyspub to which it first connects during validation of LOGIN. we have logged into apps. Some notes on advanced info (beginners may ignore this): Oracle internally uses a login named GUEST. This user account has very restricted privileges and has access to below objects (primarily for authentication purposes):FND_APPLICATION FND_UNSUCCESSFUL_LOGINS FND_SESSIONS FND_PRODUCT_INSTALLATIONS FND_PRODUCT_GROUPS FND_MESSAGES FND_LANGUAGES_TL FND_APPLICATION_TL FND_APPLICATION_VL FND_LANGUAGES_VL FND_SIGNON FND_PUB_MESSAGE FND_WEBFILEPUB FND_DISCONNECTED FND_MESSAGE FND_SECURITY_PKG FND_LOOKUPS Why call it Apps and not Oracle ERP ? Ever wondered why is Oracle’s eBusiness Suite nicknamed apps? Is it just the short name of Oracle Applications? Possibly yes.6) used to connect to PO schema 4 .

I haven’t considered org_Id in this example.po_Id = p.all columns here ) Step2. one had to do Selelct 'x’ from PO. you will either connect to APPS Schema or to the custom schema where you will create new tables.. you will need to create a Synonym in APPS schema As a developer. ap_invoices_all a where a.. they would then use notation PO. You wish to create a custom screens ( your own screen to capture some info) for a functionality that is not delivered by Oracle 2. Hence if you have a pseudo report that joins ap_invoices_all table( in AP schema) to PO_HEADERS_ALL table( in AP schema). as you can see. if Oracle wants to create anew table named PO_HEADERS_ALL. Org_Id will be covered in one of the following chapters ( have a look at index).ap_invoices_all a where a. where custom tables are created. you will simply need to do the below once connected to APPS. The tables are still owned by their respective schema. Connect to po/po@XX_DEVDB Create table PO_HEADERS_ALL ( . APPS schema is able to access PO_HEADERS_ALL without the notation po. Just like saying. example po. Some notes:Custom tables are generally required in Oracle ERP because:1. if a report or screen of AR ( Oracle Receivables ) module wanted to access a table named PO_HEADERS_ALL. connect to apps/apps@XX_DEVDB Create or replace synonym PO_HEADERS_ALL for PO.po_Id Note: To keep matters simple. gl etc. reports. Step 3. Hence.and much more 5 . they will do the following Step 1.6(of Oracle ERP –not database version). there will exist one synonym in APPS schema Tables are not created in APPS schema. prior to version 10.PO_HEADERS_ALL By following the above steps. Pre-Interface tables ( Interface will certainly be discussed in one of the latter chapters) 3. Grant all on po_headers_all to apps . Temp processing 4. now we have several database schemas(in most cases one schema per module). workflows etc in Oracle Applications connect to APPS schema only. For each custom table created by you. AP. Here. Every implementation has at least 1 custom schema. Selelct 'x’ from po_headers_all p.(by the virtue of the screen being a PO screen). all schema lead to APPS. Moral of the Story is:All the pl/sql packages will be created in APPS Schema All the views will be created in APPS Schema For each table in individual schema.PO_HEADERS_ALL However.po_Id Note.po_headers_all In Oracle ERP. Staging of data for third party extract interfaces…. Hence. ar. ALL ROADS LEAD TO ROME. but now we have a central schema named APPS. But the screens. now we have 100s of schemas. ap.po_Id = p. Oracle ERP simply connects to APPS database schema for all its operations(with a couple of exceptions that are best ignored for now).po_headers_all p.

give me some scenarios where profile options are used by Oracle. The value assigned to such profile option will be "Name of the Organization" for which they can see the employees. But Sales Manager can enter an Order with 15% discount. a clerk Order Entry User can give no more than 5% discount. Why does Oracle provide profile options? These are provided to keep the application flexible. Screen should be flexible to ensure that different users of the screen can give different levels of discounts. You can set profile option "Discount Allowed" to a value of either Yes or No against each Order Entry user. then leave a comment and I promise to respond. 3.. hence these much be understood properly.I mean raise error after showing message END IF .value('OEPASSI_MAX_DISCOUNT') THEN message( 'You can’t give discount more than ' || fnd_profile. When the discount value is entered in discount field.What are Profile Options in Oracle Apps ? Profile Options provide flexibility to Oracle Apps. 2. They are a key component of Oracle Applications. For example. raise form_trigger_failure . Hence the profile options are delivered by Oracle in such a manner to avoid hard-coding of logic. Say one of 1000 users reports a problem. 1. 2.. Navigate to System administration and click on system profile menu. 1. There are profile options which can turn the debugging on. But you do not want Manager of D2 to be able to see the list of Employees in Organization D1. There are profile options that control which user can give discount to their customers at the time of data entry. 3.-. They will define a profile option named "OEPASSI Maximum Discount Allowed". In this case you can “Turn On” the debugging profile option "again that specific user". if you still have questions regarding profile options. In the screen there will be a discount field. In the when-validate-item of the discount field(assuming Oracle Forms). 2. Here is how Oracle will code this screen 1. Of course. I will be taking multiple examples here to explain what profile options mean. What is profile option? The profile option acts like a Global Variable in Oracle. the SQL in screen that displays list of employees will filter off the data based on “logged in users profile option value”. There should not be any hard-coding regarding the maximum permissible discount.. For Clerk User(JOHN). to generate debug messages. Let’s assume you are a developer in Oracle Corporation building a screen in ERP. The short name of this profile option is "OEPASSI_MAX_DISCOUNT" 2. Let us further assume that you are developing an Order Entry screen. by using Profile Options. set value of profile "OEPASSI Maximum Discount Allowed" to 5 6 .discount_value > fnd_profile. I will also try to explain by stepping into Oracle shoes "How will you design a program that is flexible". Here is how. an error will be raised if user violates the maximum permissible discount. For the learners of Oracle Apps. understanding profile options is mandatory. and to let the implementation team at site decide the values of those variables. Let’s take an example. 2. Lets assume an Organization has department D1 and D2. Managers of both the Departments have "HRMS Employee View" responsibility. and hence you wish to enable debugging against just that specific user. 4. Hence you can set a profile option against the username of each of these users.value('OEPASSI_MAX_DISCOUNT') || '%' ) . Enough definitions. following code will be written IF :oe_line_block. Following that. Assume that business requirements for your development work is:1. The business rules in various countries and various companies can be different. the client implementing Oracle Order Entry will configure their system.

-. Profile Options Examples Screenshots You have reached this page from Profile Options Training Article Firstly. --No: Does Profile option value exist against Responsibility -----Yes: Use the profile option value defined against the current responsibility in which user has logged into. Please note that our coding style does not change even though the profile option is now being assigned against responsibility.discount_value > fnd_profile. as we discussed in Article. lets define the sales manager responsibility. raise form_trigger_failure . “XX Order Entry Clerk Responsibility” will have a value 5% assigned against it. However. in this case. but what if you have 500 Order Entry Clerks and 100 Order Entry Sales Managers? Do we have to assign profile option values to each 600 users? Answer : Well. -----No: Use the profile option value defined against Site level. The reason is that API fnd_profile. In the when-validate-item of the discount field. 7 .I mean raise error after showing message END IF . “XX Order Entry Sales Manager Responsibility” will have a profile option value of 15% assigned.value('OEPASSI_MAX_DISCOUNT') THEN message( 'You can’t give discount more than ' || fnd_profile.value('OEPASSI_MAX_DISCOUNT') || '%' ) . you can assign a profile option value to both these responsibilities. lets define the responsibility for Clerk.value will follow logic similar to below. set value of profile "OEPASSI Maximum Discount Allowed" to 15 Question: This sounds good. Next. as we discussed in Article. following code will then be written IF :oe_line_block. each Clerk will be assigned Responsibility named say “XX Order Entry Clerk Responsibility” Each Sales Manager will be assigned Responsibility named say “XX Order Entry Sales Manager Responsibility” In this case. Does Profile option value exist against User? --Yes: Use the profile option value defined against the user.For Sales Manager User(SMITH).

hence go to responsibility "Application Developer" 8 . we need to define the profile option for discount. that is Clerk And also.Lets define user JOHN. lets define user SMITH ( Sales manager ) Now.

Hence go to responsibility "System Administrator" Click on Menu Profile/System. you will then see below screen for defining profile option.value Now. as below 9 .When you click on menu "Profile" above. and it is this name used in API call to FND_PROFILE. after having defined a profile option. Please note that the "Name" field is the short name of profile option. its time to assign these to JOHN & SMITH.

all the users that use this responsibility. 10 . Click on torch.The profile option assignment screen looks like below. to select profile named "OEPASSI Maximum Discount Allowed" Assign a value of 5 to the user. we can also simply assign profile value to Responsibility of Clerk. what if we have too many clerks. will inherit profile option value against Responsibility. OK. to return to search screen as below and this time we will assign value of 15 against user SMITH. Doing so. Enter JOHN in USER. OEPASSI% in Profile.

. lets sel ect Sales Manager responsibility in profile screen Search on this.....as below.Assign 5% max discount for Clerks Now... 11 .

That's it for setup."UKVAT" 7. In the Order Entry screen. Lets further assume that there are two responsibilities Responsibility 1 . 3. Responsibility 2 . 5. Record 1 tax code -"FRVAT" Record 2 tax code ."UK order entry" 8. Users in UK will be using responsibility named "UK order entry" 10. I hope that you have read and understood the significance of profile options that we discussed in the earlier chapter. Before I tell you what is org_id. This company(GameGold Inc) has offices in both London and Paris 2. there is just one table that holds list of taxes. and hence different tax codes are defined for these countries. there will be different company locations that are autonomous in their back office operations. we will learn about org_id.GameGold Inc has implemented Oracle Apps in single instance(one common Oracle Apps database for both UK & France). 4. they do not wish to see tax codes for their French sister company. Lets assume there are two records in this table. Now. Given the single database instance of GameGold Inc."French order entry" 9. This is important because French tax codes are not applicable to UK business. 12 . lets take the example of a gaming company named GameGold Inc that has operations in both UK and France. When "UK order entry" or "UK Payables" user logs into Oracle Apps. UK has different taxation rules that France. For example. Please note the following carefully:1. users in France are assigned responsibility 1 . Lets assume that the name of the Oracle table is ap_tax_codes_all 6. lets do some questions & answers:Why do we need org_id In any global company. Any questions? leave your question by click on link Leave Comment for this article Thanks Anil Passi <!--[if !vml]--><!--[endif]--> ORG_ID and Multi Org In Oracle Apps In this Oracle Apps training article."French order entry".Assign value 15% to Sales Manager responsibility. there is a field named Tax Code(or VAT Code).

In multi org environment(like uk + france in one db). You will be defining two organizations in apps named "French operations" and "UK Operations". UK Responsibities will filter just UK Invoices. because UK has no purpose to see and modify french invoices. Vendor Sites/Locations are partitined too. The screenshots are at the bottom of the article 1. The two organizations we define here will be of type operating unit. will oracle do: select * from ap_vat_codes_all where org_id=fnd_profile. This can be done by using organization definition screen..co. By doing so.value('ORG_ID')? Answer: almost yes.. the "French order entry" user should only be able to select "FRVAT" in the tax field. from the vat field in screen. when displaying VAT Codes in LOV. 2. Oracle provides a correspondong view without _all. For examples create or replace view xx_invoices as select * from xx_invoices_all where org_id=fnd _profile. Remember. 3. At the tme of inserting data into multi-org table. Qns: How will you establish a relation betwee uk responsibility and uk organization. Invoice screens will use ap_invoices in their query and not AP_INVOICES_ALL. Ans: By setting profile option MO : Operating unit to a value of UK Org. To the French user.value('ORG_ID') 3. 4.value('org_id'). only "UKVAT" should be pickable. In Oracle Apps. 2. following insert will be done Insert into ap_vat_codes_all values(:screenblock. fnd_profile. 12. that uses responsibility "UK Order Entry". Tables like invoices are org sensitive. 8.co. 3. UK order entry user. For each _all table . At the time of inserting records in such table. Hence a invoice table is a candidate for ORG_ID column. org_id column will always be populated.the answer is org_id ORG_ID/Multi-Org/Operating Unit are the terminologies that get used interchangeably. Alternately. In the lov. Similarly. 13. then keep reading.. When you connect to SQL*Plus do the below 13 . Creates a view in apps as below Create or replace view ap_vat_codes as Select * from ap_vat_codes_all where org_id = fnd_profile. For example po_headers_all in apps schema is a synonym for po_headers_all in PO schema. then select from _all table. it will do insert into (vatcode. against uk order entry responsibility Qns: How will the system know that UKVAT belongs to uk org? Ans: In VAT code entry screen(where Tax Codes will be entered). Also. 6. 2. without any hard coding in the screen. In brief steps. select * from ap_vat_codes .value('org_id'). Lets say. use USERENV('CLIENT_INFO') Next question..uk whereas france will raise orders from dell. or Inventory Warehouse Org. I will be using words org_Id & operating unit interchangeably. If you ever wish to report across all operating units... then such table name will end with _all 4.. Well. 7. Oracle will do the following 1.org_id) . Any table that is mutli-org (has column named org_id). Operating Unit Org or much more types. first the setup required to support this.fr. an organization can be classified as HRMS Org. _all object in APPS will be a synonym to the corresponding _all table in actual schema. How can all this be achieved. Organization type is just a mean of tagging a flag to an organization definition.. 5. These are called vendor sites in Oracle Terminology. because UK will place its ordersfrom dell. in list of values UKVAT must not be visible. May be quick revesion is necessary:_ 1. This is possible because in Apps.11. each Multi-Org Table will have a column named org_id. or Business Group..vatfield. uk org has an internal organization_I'd =101 And french org has orgid =102. If the above doesn't make sense.

select tax_code from ap_tax_codes . ---Returns FRVAT --assuming 102 is UKOrg Id execute dbms_application_info.set_client_info ( 101 ).set_client_info ( 102 ). --assuming 101 is French Org Id execute dbms_application_info. select tax_code from ap_tax_codes .connect apps/apps@dbapps . ---Returns UKVAT Now some screenshots 14 .

Oracle is a mixture of various applications like Payables. for one module there is one single application. manufacturing. Uptill 8 years ago. As a thumbrule.Applications in Oracle Apps In this training chapter I will explain what Application means. 15 . Payroll. as this relation is not enforced by the System). but now such a relation no longer exist. Hence the name Oracle Applications(i think) Is there a relation between application and table:Indirectly/logically there is. Human Resources. General Ledger. You can call these modules. as the table is owned by a specific schema. and then a schema is related to an Application( though logically. in Oracles context. it was mandatory for each table to be registered against an Application in Oracle Financials. but officially these are called applications.

Each program has an executable. 3. which effectively is also the Environment variable on operating system. Unix Shell Script has . oracle will ask below series of questions to itself I see that user is running XXPOPRINT. what else must be the consideration with respect to Application. then wait for the training lesson on concurrent programs. sql*loader are all deployed in database tier of 16 . Ans: I will jump the training ship to explain this. 2. then its name must finish with _all and also it must have a integer column named org_id Qns: For an Oracle Apps developer. 1. Create the desired table in custom schema. Applicaton XXPO (that holds PO Customizations) may map to /home/oracle/apps/appl/po d. it is XXPO application. Any executable that has intense database operations is stored at database tier. Each application is mapped to a specific path. however I suggest that you understand this well. All the Forms & Reports are attached to an Application. To give you some examples. Database tier and then at least one web tier. sql*plus has . it is not your responsibility to define this. oracle report java concurrent programs. which applicaton is this report registered against? Oh well. When you register an executable with Oracle Apps. Say you have developed/customized a report for PO Module.rdf . Profile options can be defined at application level too. For example.say to a directory in unix box. c.e. forms has .. The below image can be clicked to see how applications are defined in Oracle Apps. Oracle thought very logically to decide which executable runs on database tier and which on web/forms tier(also known as mid-tier).What precautions do I take when creating a new table in oracle apps:Ans: Find out from DBA's the schema in which your custom tables are meant to be created.plx b. One needs to navigate to System Administrator responsibilotu.sql file. and select Menu /Application/Register.. 2. sql files. your fundamental question is.where to find the piece of code that you are being asked to customize? Before I begin to explain you this. If you register this executable with XXPO applicaton. When running this report in Oracle Apps.fmx. you must then register this against an Application. then where is the directory location where I can expect to find this file? Oh ok. You will most likely find that any implementation of oracle apps will involve at least two machines. i. Oracle Apps Deployment Training When you are a fresh new Oracle Apps developer. As a developer. For example reports have rdf.prog(in apps) & D2k libraries have . first some fundamentals. a. Each application has a base path. In case you do not understand.. Now some notes:1. Assume your report executable name is XXPOPRINT.. Note: If your custom table will support multi-org. application definition of XXPO is mapped to /home/oracle/apps/appl/po (as per application definition). hence lets pick the rdf from /home/oracle/apps/appl/po/reports/US Here lies the significance of applicaton in oracle apps.rdf.. then this rdf must be copied/ftp'ed to /home/oracle/apps/appl/po e.

Hence. if one server has 1000 user cpacity. but how do multiple mid-tiers impact my forms deployment? Ans: You will need to deploy your forms file to each middle tier machine (unles shared APPL_TOP) has been implemented. pll/plx etc. should this be done on pc or on the mid tier? Ans: This must always be done on the mid tier For example use below steps Step 1 FORMS60_PATH=$FORMS60_PATH:$AU_TOP/forms/US Step 2 export FORMS60_PATH Step 3 cd $XXPO_TOP/forms/US Step 4 ----Below in one single line f60gen module=XXPOSCREEN. this switch the decides which middle tier to use. then you can have 5mid tiers to handle 5000 concurrent users. Any executable that has intense UI operations is deployed at forms tier. such aproach may be justified to an extent. but what if you have to build a form that has intense database processing.Oracle Applications. assuming a purchasing screen has been customized. 3. In reality the forms are attached to form functions and it is the form function that is attached to an application 17 . However.fmb userid=apps/apps module_type=form batch=no compile_all=special Qns:I have deployed the form at $XXPO_TOP but I can't run it. Qns: Why do we have multiple middle tiers for one database. I am saddened to see that some apps programmers write tons of sql code/DMLs inside the oracle forms triggers.? Hence building pl/sql api's is the preferred approach. Qns: How do I generate fmx. Examples are Oracle Forms fmx files. Qns: The above sounds good in most cases.I get message can not find form Ans: Firstly find out the application to which this form is registered against. jsp files. otherwise your form will never be run. The api's that you build in pl/sql must have well defined parameters. but what if some other developer desires to use validations developed for your form in other areas of apps. Qns: That's fine for the theory. Ans: Well the form will still be deployed in the mid-tier. you must handle most of the database processing within pl/sql packages. for such forms. The user requests are first sent to a load balancer switch. This includes your custom packages and also oracle delivered packages. Ans: This will be deployed at $XXPO_TOP/forms/us Basically by deployment I mean that fmx file will be copied to xxpo_top/forms/us Have you read the previous article on applications? Qns: Where do I deploy a pl/sql package? Ans: All of the pl/sql packages are installed in apps schema. In this era of high speed networks. Ans: Most implementations install multiple mid-tiers to distribute the user load. Qns: Where do I pick the fmb files delivered by oracle? Ans: These are picked from $AU_TOP/forms/us Qns: Where do I deploy the fmx file on mid tier. Qns: Ehere do we create the database views? Ans: Views will be created in apps schema too.

This environment is usually used for sign off during new implementations..Ditto for DB Tier Please let me know if you have any questions. User Training Environment 18 . Development environment. during implementation. This environment is usually the most frequently cloned environment in Oracle Apps site that has gone live.. where developers usually have System Administrator responsibility and also the apps password. let me clarify that I assume that hosting o/s will be Unix./XX_POENT. Support environment This environment is exclusive to support staff. then it means you need to contact your DBAs to find out why environment variables are not being populated on your sign-on to Unix . The rule of thumb states that below environment are a must:1.pll userid=apps/apps output_file=. As soon as you logon to your mid-tier. Production environment This is where the business runs Optional environments:CRP environment Conference room pilot environment is where usually implementation team gets buying to their product offering from user community. your environment should automatically be setup based on scripts within . Patching environment This is where all new Oracle Patches are sanity tested.profile file. Oracle Apps Training Testing Environments In every implementation. Before you start moaning. Frequent cloning helps the Oracle Applications support staff to reproduce production issues Migration Environment This is where repeated data migration can take place before migration code gets frozen and ready for UAT. you will be provided with a Unix Username & Password. To know whether your environment has been setup on Unix box.pll or any other Forms Library Ans: ----Below statements in one single line cd $AU_TOP/resource f60gen module=$AU_TOP/resource/CUSTOM. 2. Testing environment Developers usually do not and must not have apps password to this environment . 3./CUSTOM. If not System Administrator then at least they should have access to "Application Developer" responsibility. there are always more than one environments in Oracle Apps.Qns: How can I generate CUSTOM. but how on earth do I connect to Mid Tier to generate forms Ans: For Mid-Tier server. This is where users signoff customizations or even setup changes.pll userid=apps/apps output_file=.plx module_type=LIBRARY f60gen module=$AU_TOP/resource/XX_POENT. do the below: echo $FND_TOP If the above returns blank.plx module_type=LIBRARY Qns: All the above sounds good.

If :parameter. Qns: In Oracle why do we have a form and then also a Form Function? Isn't just having a Screen/Form just good enough? Ans: What if.. 2.Some clients mix this with the CRP itself. But post-goLive of APPS. for the same form. when rolling out new module. then at startup of the screen we want to provide a "Search Window". There can be more than one development environment at any implementation site. The development to production cycle is. the changes get applied to Production environment. everything except for Functional Configuration can be scripted. the changes to each environment are UAT'ed on a common Test environment. The form will have following code within it in when-new-form-instance. and their code gets promoted to User Testing environment. You all know that a form is nothing but a screen from where users can enter or retrieve(query) existing data. The changes done to "development environment" must be scripted in all cases where possible.. all having different timelines. As a thumb rule. Now some notes:1. when different big modules are being implemented. Question: From above example it appears that form function will be passing parameter named 19 . as your focus will be on Development Environment only. you wish to provide slightly different functionalities depending upon which menu is clicked to invoke that form?? Question: Are there any examples? Answer: Lets assume the following There are two responsibilities -----------------------------Payables Manager responsibility Payables clerk responsibility There is one form for invoices -----------------------------Payables invoice screen Our requirement ------------------------------If invoice screen is invoked from Payables Manager Responsibility. Hence the word function or call it "Form Function" is related to Oracle Forms. Developer does development & unit testing on Development Environment.invoice_mode='MANAGER' then Go_block(lfind_invoices') Elsif :parameter.. then at startup of the screen we want to provide "Invoice Data Entry window". Notice the word functionality. Following this. End if. However. You as a developer do not need to worry about these environments. an environment like this comes handy. so that clerk can begin entering the invoices. so that manager can search for the invoices to review If the invoice screen is invoked from "Payables Clerk Responsibility". You may be intersted in FNDLOAD Link Oracle Forms Functions Menus and their relationship Every screen we develop delivers a business functionality of sorts.invoice_mode='CLERK' then GO_BLOCK('invoice_header'). 3.

.. Question : Oh dear.. Invoice form is attached to a Form Function.. For example... invoice entry..what is the base path for this application... Correct in this case..are the form functions all about parameters? Answer: Parameters is the main feature of Form Functions.what is the application assigned to the for form function.fmx for this name Click on menu /application/function Define your two functions.. Then this Form Function is attached to the Menu. what is the form function for this menu.lets then run the fmx file from ap_top/forms/us Screenshots for examples A... when defining the Form Function we pass parameters to it.remember. pass them parameters as below.. lets define the function 20 .rite... Go to application developer click on menu /application/form Define you form..its ap(account payables) application......invoice_mode to the form? Answer. each form will be located in a specific directory on Unix box.oh. invoice review. oracle will expect an executable of ..hmm it is InvoiceReview. Purchasing Form executables will be in $PO_TOP/foms/US And account payables form executables will be located in $AP_TOP/forms/US.ok. and select responsibility "Application Developer" Navigate the menu "Form" Define the Form as below Now.. and it is the Menu that gets attached to responsibility.hmm user clicked on a menu. As you know from previous training lessons. But there are others too.. Did you wonder how Oracle will know to look for a payables form executable in AP_TOP and not in PO_TOP?? Oracle will think like this.it is AP_TOP. Login to Oracle Apps .right. So that we understand how things hang together.

The schedule is defined at the time of submission.Do you wish to know the name of form that has approx 600 functions defined in oracle apps? To find the answer. click on interview questions link. The user will then be given access to this Concurrent Program. Concurrent Programs in Oracle Apps An article on very basics of Concurrent Program. Question : But how will the end user or Oracle Apps make this script run every 10hours daily? Answer : A concurrent program can be scheduled to run at desired intervals. Question: What are the different types of scripts/programs that can be attached to concurrent programs? Answer : 21 . you have just developed a SQL script or a PL/SQL package procedure. for beginners that follow http://getappstraining. Lets first discuss the below scenario Being a developer.blogspot. given that an end user will never have access to apps password(and rightly so)? Answer: This script can be attached to a Concurrent Program via a concurrent program executable.com. The end user wants to be able to run this script ad-hoc or they wish to schedule this to run every night. Question : How can an end-user be given control to run a script developed by a developer.

Make Oracle Apps identify the executable In Oracle Apps we have something called as concurrent program executable. with screenshots and with almost real life example? Answer: 1. We need to define a concurrent program and attach that to the executable defined in above step. Create a table and a stored procedure in pl/sql create table xx_hello_world_tab ( message_text VARCHAR2(100) . Step 2. namely errbuff and retcode These parameters for used for the interaction between the concurrent program and the pl/sql Program. --Zero records will be returned here 2.SYSDATE). Answer: Broadly speaking there are three steps when developing a concurrent program in Oracle Apps Step 1. CREATE OR REPLACE PROCEDURE xx_register_user_prc(errbuf OUT VARCHAR2. Make this concurrent program accesible to selected users via their responsibility. This can be done by navigating to the responsibility “Application Developer”. Question : Please explain the steps for defining a pl/sql concurrent program. 3. SELECT * FROM xx_hello_world_tab . Make this concurrent program accesible to selected users via their responsibility. Concurrent program executable is defined to register a script or a procedure for its usage within oracle apps. I will be writing a dedicated article to explain this step. like a unix shell script Pro*C/Spawned Perl Question: What are the basic steps when defining a concurrent program. and selecting the menu /Concurrent/Executable 22 .retcode OUT VARCHAR2) IS BEGIN INSERT INTO xx_hello_world_tab VALUES ('Hello World' .creation_date DATE ). Don't worry if you do not understand this step. Note the two parameters. END xx_register_user_prc. Define an executable attached to this procedure. I suggest to the beginners not to spend much time on these parameters. Provide a handle to the executable by means of defining a concurrent program Step 3. Question: Please can you describe the above steps in detail Answer: Step 1. Provide a handle to the executable by means of defining a Concurrent Program. The request group is either associated with a responsibility or is passed in as a parameter to the function request form function. We do this by adding the concurrent program to something called as request group. Step 3. Make Oracle Apps identify the executable Step 2.A sql script A Sql*Loader program Java program Oracle Report Pl/SQL program ( or call it a stored procedure/package procedure) Host script.

and select /Security/Responsibility/Request Now.4. Go to System Administrator responsibility. 23 . Define the concurrent program This can be done by navigating to responsibility “Application Developer” and then selecting menu /Concurrent/Program 5. we can navigate to the Receivables Manager and submit the concurrent request. Attach this program to a report group.

called Concurrent Manager ideally will be running 24x7. So what's left to explain?. I realize it is worth writing something in plain English on this topic.. And now when I begin to write..After the completion of the request. Concurrent manager manages the concurrent(oops I mean parallel) execution of concurrent programs. Question: What happens when you submit a concurrent program? Answer: There is something known as Concurrent Manager that runs in the background all the time. As soon as a concurrent program is submitted. we check the table Concurrent manager in Oracle Apps Lets discuss the very basics of Concurrent Managers.blogspot..com Two things are obvious:1.Well nothing much. As the name suggests. but I gave a commitment to one of my readers that I shall write something about concurrent managers today. it then gets put in an execution queue by 24 . This background process. purpose of a concurrent manager is to manage the submitted concurrent programs.. Lets explain this with some Q&A Question : How to run a concurrent program? Answer: In oracle apps you have a concurrent program submission screen. Question: When I submit a concurrent program( or call it concurrent request). You can submit the concurrent program from that screen. Concurrent Manager is related to Concurrent Programs 2. again the very basics for the beginners that read http://getappstraining. how does concurrent manager pick this up? Answer: Concurrent manager will be running in the background waiting for a concurrent program to be submitted.

next the manager checks if there is a slot available (i. rule based etc. Classpath of a java program:A concurrent program can be of type java too. if enable trace checkbox is checked in program definition. but it manages the completion status of the program too. we can specify the printer where report gets printed.. Optimization options:The concurrent program definition provides an option to specify optimization mode.. Hence. Concurrent manager will send the output of the program to that printer. then read on…. I guess you too are by now.. The concurrent manager will alter the optimization mode of the session before the submission of the program. then you can specify the path of that library in concurrent program definition. If for this specific concurrent program you wish to use a set of java libraries. like choose. you can specify if there are any incompatible programs.. the concurrent manager then runs the program.blogspot. Concurrent manager is responsible for below things too…. Question: If we have two concurrent programs. Question: Is that all what concurrent manager does? Answer: Much more.. First the manager puts a submitted program into a queue. When you define a concurrent program. Oracle Apps uses 25 . Interaction with host concurrent programWhen running a host concurrent program.concurrent manager.can concurrent manager manage such scenarios? Answer: Of course it can.com Question: What is value set? Answer: It is a set of values Question: Why do we need value sets? Answer: You do not always want a user to enter junk free text into all the fields.well I am bored with concurrent managers now.. During submission or during the definition of concurrent program. Question: Why does the Concurrent manager put a concurrent program into a queue? Why doesn't the manager simply let the program run? Answer: Because at any given point in time a concurrent manager can run no more than say 10 programs concurrently. fist rows. More? .all rows. Managing the printer:An Oracle Report is registered as a concurrent program too.e. if interested. for beginners that follow http://getappstraining. the concurrent manager passes the apps password as a parameter to the unix script Tracing a concurrent program Concurrent manager enable the session trace for the concurrent program. Concurrent manager will amend the CLASSPATH to reflect the path of the java library.. or else it keeps the concurrent program in a queue with status Pending. Managing the programs completion statusFor example a pl/sql concurrent program can set retcode=2 to make a program complete with warning. then concurrent manager will wait for the incompatible program to complete. Obviously this option has no relevance to Host type concurrent program. Hence concurrent manager not just executes the program.. This figure of 10 is configurable of course. You can then go to user dump directory and do tkprof on the file. Less than 10 programs are currently running). Value set basics in Oracle Apps An article on Value Sets.. If a slot is found available. If incompatible concurrent programs exist. that must never run in parallel(oops I mean concurrently).

value set to validate that correct data is being entered in the fields in screen. Question: Is value set attached to all the fields that require validations? Answer : A big NO Question: Then where lies the usage of value sets? Answer: Broadly speaking, value sets are attached to segments in Flexfields. You can argue that value sets are also attached to parameters of concurrent program(but in reality oracle treats parameters as Descriptive Flexfields) Question: This is insane, flexfields haven’t been covered in http://getappstraining.blogspot.com as yet? Answer: Agreed, hence let’s restrict value set explanation to their usage in concurrent program parameters. Question: Any examples? Answer: For the namesake, lets add a Parameter to the concurrent program that we defined in “Concurrent Program Training Lesson link”. Lets add a parameter named “cost centre”, the values to this parameter must be restricted to one of the three values, i.e. HR, SEC, IT. At the time of submission of the concurrent program the user should be able to pick a cost centre from a list. This is where value set gets used. Lets now define a simple value set as described above. Step 1. Go to Application Developer, and select menu /Validation/Set

Step 2. Now define a value set of type Independent. We will cover the other most widely used Type “Table” latter.


Step 3. Now, lets add three independent values to the value set for this Cost Centre list. Hence click on menu Values within Validation

Step 4. Here we add the values for IT, HR, SEC to this independent value set.

“CONTROL-S” to save the data Step 5. Now let us go back to Concurrent Program that we created in earlier training lesson and Click on Parameters


Step 6. Now lets create a parameter, and attach the value set that we created to this parameter.

Step 7. Now to test this, lets go to receivables manager and click on Requests.


Submit New Request. we can see the values defined in the value set here.Click on Request. Lookup Types and Lookup codes in Oracle Apps 29 . Step 8. and then click on OK. Step 9 Now.

Female. Now let’s say you want this to be changed to "Undisclosed". their Gender is being displayed as "Unknown". This will have definitions as below Code Meaning -----------------M Male F Female U Unknown Question: But where is it used. Imagine a situation as below a. there is a field named Ethnicity. 30 . Hence it will look like Code Meaning -----.blogspot. Question : Any other usage of lookups? Answer : Sure. they can amend the Oracle delivered lookup definition as below Lookup code lookup meaning -----------------------------------ASI Asian-Indian ASP Asian-Pakistani EU European Hence these values will then be available in the list of values for Ethnicity field. any examples of its usages? Answer: Let us say that there is a table for employees. for beginners that follow http://getappstraining.------------M Male F Female U Undisclosed Here lies the beauty of lookups. Unknown etc) instead of displaying the code of M or F or U Question: hmmm.000 records in people table of which 2000 records have gender value = U.com Question : What is a lookup in Oracle Apps Answer: It is a set of codes and their meanings. In HRMS.. Male. lets take another example.. Question: Any examples? Answer: The simplest example is say a lookup type of Gender. In the screen.An article on Lookups. To implement this change. you do not need to modify 2000 odd records in this case.e. and the screen that displays people details will in reality display the meaning of those respective codes (i. and this table named PER_PEOPLE_F & has following columns ---FIRST_NAME LAST_NAME DATE_OF_BIRTH GENDER Question: Will the gender column in above table hold the value of M or F or U? Answer: Correct. By default Oracle ERO delivers the below values Lookup code lookup meaning -----------------------------------AS Asian EU European Now.so are lookups used to save the bytes space on database machine? Answer: Noooo. There are 30. if your client wants to track Ethnicity at a granular level. all you have to do is to change the meaning of the lookup codes for lookup type GENDER.

. Once in the screen. 31 . the screenshots. GENDER is the LOOKUP_TYPE Question: Does a LOOKUP_TYPE get attached to a Descriptive Flexfield…just like Value Sets? Answer: Not really. Please see the screenshot Question: Can we add our own new lookup types? Answer: Yes you can. and if based on the termination status code Oracle has some rules defined within Payroll Engine. In our example above. There is no direct relation between lookup and Descriptive Flexfield. you can define your lookup type and lookup codes as below. Now. provided the Oracle delivered Lookup Type is flagged as Extensible. for this you will first define a lookup type and will then define a set of lookup codes against the Lookup Type. what if I do not wish to modify existing Lookup codes. and the lookup entry screen will not let you modify those lookup codes. Click on the menu as below to invoke Lookup Screen.. Oracle flags some lookups as System lookups. If oracle has a lookup called termination status. Question: OK.!! Surely Oracle Payroll Engine will not like it if you end date an existing status code or add a new status code to termination. For this very reason. but only wish to add new Lookup codes to an existing Oracle delivered Lookup Type? Answer: You can do so..Question: Are we saying that all the lookups delivered by oracle can be modified? Answer: Depends.

Difference between Lookups and Value Sets I hope you have read the previous articles on Value Sets and also on Lookups. Difference 1 Value sets can be attached to parameters of a concurrent program. Answer: Yes. depending upon the value in a field. but no programmatic change is needed to setup DFF. we can make either Field1 or Field2 to appear in DFF.com A training article on Descriptive flexfields. Question: Are these new fields that get created as a result of DFF free text? I mean.. Question: Are these DFF's flexible? Answer: A little flexible. for example. Difference 2 Certain types of Lookups are maintainable by the users too. Descriptive Flexfield Basics in Oracle Apps An article on basics of Descriptive flexfields. for example HR Users will maintain "Ethnic Minority" lookups. hence Oracle lets us create new fields to the screen. Lookup Codes are Static list of values. Or may be Oracle simply used a silly word to distinguish DFF from KFF(discussed in latter training lesson). this happens because for each field that you create using DFF will be mapped to a column in Oracle Applications.you are describing the structure of these new fields. Question: What does DFF mean? Answer: DFF is a mechanism that lets us create new fields in screens that are delivered by Oracle. Question: So we create new fields in existing screen. for beginners that follow http://getappstraining. Question : Will the values that get entered by the user in dff fields be updated to database? Answer: Indeed. certainly. Value Sets are almost never maintained by end users. Difference 3 Value sets can contain values that are a result of an SQL Statement.. with the exception of GL Flexfield codes. The entered value in the field will be validated. also a list of valid values will be provided in LOV. It is important for the learners to read things in Sequence.. Hence you may decide to browse through the Training Index Page. Value sets are usually maintained by System Administrators. and then we will do screenshots detailing how flexfields are configured. Only some setup is needed. Question: Why the word Descriptive in Name DFF? Answer: I think Oracle used this terminology because by means of setup. but why the need of doing so? Answer: Oracle delivers a standard set of fields for each screen. Hence it is possible to make Value Set list of values dynamic.. but different customers have different needs. Question: Oh good. Here comes the end of another simple article. also refered as DFF First some basic Question and answers. whereas Lookups can't.blogspot. then field will no longer be free text. can end user enter any junk into the new fields that are added via DFF? Answer: If you attach a value set to the field(at time of setup of dff). but can these new fields be added without modifying/customization of the screen?. On the contrary. Question: Can I create a DFF on any database column? 32 .

that is available in Payables responsibility. Question: I want these fields to appear in screen only when certain conditions are met. We need to add a new field as below. Only those columns can be mapped to DFF segments. These columns are named similar to ATTRIBUTE1. Question: Can I add hundreds of fields to a given screen? Answer: This depends on the number of attribute columns in the table that screen uses.. Each DFF is mapped to one table. ATTRIBUTE2. Navigate to the DFF Registration screen in Oracle Apps and query on Table AP_BANK_BRANCES.. We go to Flexfield/Register 33 . Is it possible? Answer: Yes. Oracle delivers a predefined list of columns for each table that are meant for DFF usage. Answer: Yes correct. Don't need to worry much about this because all the ATTRIBUTE columns are by default flagged for their DFF usage. In Order to do this. I can see that DFFs are related to table and columns. Now click on Reference Field 2. but this number can vary. Also. we will follow the below steps(screenshots will follow) :1.. those columns must be flagged as DFF enabled in DFF Registration screen. ATTRIBUTE3 ETC..The descriptions are embedded within the screenshots. Navigate to DFF Segments screen and query on the Title of the “Bank Branch” and Unfreeze the Flexfield and add segments as to Section "GLOBAL Data Elements" as shown in screenshots. And also each segment(or call it field) is mapped to one of the attribute columns in that table.. Once having noted down the table.Answer: Not really. Usually Oracle provides upto 15 columns.. Here are the screenshots.. we have something known as Context Sensitive Descriptive Flexfields. we try to find the Title of the DFF for that Table. We are in "Bank Branches screen" below. Question: Hmmm.

Here we pick the Title of the respective DFF Query on that DFF Title from Descriptive Flexfield Segment Screen Add a new segment under "Global Data Elements" 34 .

Click on OK 35 . Once you finalize the changes. you will be prompted to Freeze the DFF definition.The options for making mandatory or enabling validations for the new field.

Find out the table name for Bank Branch screen. This article is an extension to the work that we did for a simple flexfields. You have a "Bank Branch" screen where you enter the Bank names and their branches . First some basic Question and answers. you can. Register the BANK_BRANCH_TYPE field as a reference item. There is a field named Branch Type in that screen. see the the screenshots and you will surely understand.. IMPORTANT:.. and ensure that “BANK_BRANCH_TYPE” field can be used as a context switch. Create the contexts for each possible value of Bank Branch Type field(for which you want conditional display of fields). Is it possible? Answer: Yes. Question: I want these Flex fields to appear in screen only when certain conditions are met. Navigate to the DFF Registration screen in Oracle Apps and query on Table AP_BANK_BRANCES. Navigate to DFF Segments screen and query on the Title of the “Bank Branch” and Unfreeze the Flexfield and add segments as in screenshot below. If Branch type CHIPS is selected by the user.You must read Basics Flexfield article . In Order to do this. Lets take an Example. we will follow the below steps(screenshots will follow) :1. If user entered a value of SWIFT in Branch type. 2. we must show this new field). for beginners that follow http://getappstraining. In our case we add this field as a reference field. then display a new DFF segment "SWIFT Partner field".blogspot.. You wish to show & capture following new fields:a.com A training article on Context Sensitive Descriptive flexfields..Now. Banks Country of Origin Field ( regardless of bank branch type. then display a DFF segment "Chip ID" field. c.. we see the fruits of our configuration Context Sensitive Descriptive Flexfields An article on Context Sensitive Descriptive Flexfields. and then we will do screenshots detailing how flexfields are configured. As we configured in earlier training chapter. this will enable us to find the DFF that is available for 36 .. Now click on Reference Field. b... 3. Hmmmm not clear yet.

Bank Branch The Bank Branch can have one of the following values. This can be done by using examine as shown We can see that internal name of the Branch Type is "BANK_BRANCH_TYPE". Given that our DFF will be sensitive to what we enter in Bank Branch. we must find out name of the field(not the display name). We need to ensure that a DFF can be made sensitive to the value in BANK_BRANCH_TYPE 37 .

Lets navigate to DFF registration screen. Alternately you can query using DFF title too. and using the table name. we query DFF for AP_BANK_BRANCHES. 38 .

All you need to do is to add your segment to Global Data Elements 39 .Now lets add BANK_BRANCH_TYPE as a REFERENCE Field. This means that DFF will become sensitive to values in Branch Type field IMPORTANT: If your requirement is not to have any conditiional logic. then no need for all the "Reference Field" blaaa. In this screen. This screen is accessed via menu /Descriptive/Segments . by clicking on Button Reference Now we need to define the new fields(segments). lets make BANK_BRANCH_TYPE as the context/reference.

40 .

When the user selects Type=SWIFT. we see the relevant SWIFT field appear in Flexfield window 41 .

Here we now see that value entered in DFF field gets stored in the database column. we see CHIP Id field appearing in Flexfield window. 42 .When user selects Type=CHIPS.

Company name: GM Cost Centre: IT Project: OFP --means Oracle Fusion Project Expense Type: OCC -.OFP ATTRIBUTE4 :..IT ATTRIBUTE3 :. Consider an alternate approach. All we have is a descriptive flex (lets assume). CODE_COMBINATION_ID SEGMENT1 SEGMENT2 SEGMENT3 SEGMENT4 Let’s capture A SINGLE record in this table as below:43 .OCC These 4 text values for fields(above) are physically being duplicated in each module. as it causes duplication of data at various places.IT ATTRIBUTE3 :. Question: Key Flexfields help us capture additional fields. and so does descriptive flexfield too? What is the deal here? Answer: Ok.GM ATTRIBUTE2 :. all I had was the cryptic definitions in Oracle Manual.OFP ATTRIBUTE4 :. and it took me weeks to get my head around the differences between Key Flexfields and Descriptive Flexfields.GM ATTRIBUTE2 :. Requirement is this:Your client wants to capture values in following additional fields for a purchase order transaction and invoices. ATTRIBUTE1 :. Imagine further when this transaction flows to Oracle General Ledger... Now that you understand why Descriptive flexfield does not fit into this design.Oracle Consultant Cost In a DFF ONLY WORLD. lets consider a new scenario.Key Flexfields Basics Please find an article on the very basics of Key Flexfields.OCC Surely. should we still bother learning key flexfield? Answer : Indeed we must learn this. when your client raises Purchase Order to IT Consulting Company. Question : We have already covered Descriptive Flexfield in detail in previous article.OCC When an invoice is received from consulting company. When I myself learnt Oracle Apps. let’s assume for a minute that there is no such thing as a key flexfield... Now I hope you can learn this crystal clear in minutes.GM ATTRIBUTE2 :. would you again expect oracle to physically store the 4 columns into table GL_JE_LINES? If so your table GL_JE_LINES will have following values in its DFF (Descriptive Flex) columns. the Payables clerk will capture the Invoice Line accounting as below in AP_INVOICE_DISTRIBUTIONS_ALL ATTRIBUTE1 :.OFP ATTRIBUTE4 :.( using KFF ) Let’s have a table named gl_code_combinations with following columns. such design using a descriptive flexfield will be flawed. in PO_DISTRIBUTIONS_ALL table record you will store ATTRIBUTE1 :. for the related/unrelated transactions.IT ATTRIBUTE3 :.

we will have below column with value CODE_COMBINATION_ID : 10902 NOTE: Now we are not storing all four columns here in PO Dist table. A grade can be defined as a combination of say Clerk + Senior or Clerk + Junior. Hence all the tables(PO Dist. Again.com 9i/10g Oracle Client --------------------------This will install Workflow Builder SQL*Plus Once installed. only the ID that references those 4 columns will be stored. Now some Q & A below Question: Does this mean.blogspot. I have covered a HRMS Key Flexfield. AP Dist. Question: Does Oracle deliver Key-Flexfields out of the box. for each key flexfield. These combinations will be stored in per_grades table. even though the clerk will enter in screen values for four columns (four each segment). In PO_DISTRIBUTIONS_ALL table. as configured during setup. named Special Information Types. the database will only store value 10902 in column CODE_COMBINATION_ID of payables distributions table. you must then try to connect to the apps schema of your development database. Thee segments columns are generic columns so that each client can call them by whatever name as they desire. for the readers of http://getappstraining.segmentx? Answer : Correct. which will pop-up a window with relevant fields.. Question: do all the tables which are used for storing key Flexfields have columns named segment1. Answer : Have a look at article for Setting up Special Information Types in HRMS using Key FlexField .CODE_COMBINATION_ID : 10902 SEGMENT1 : GM SEGMENT2 : IT SEGMENT3 : OFP SEGMENT4 : OCC Note the above combination of 4 fields can be uniquely identified by 10902(CODE_COMBINATION_ID). Install tools for Oracle Apps Development This article is for setting up the PC for Oracle Apps development. Question : Is there a step by step example of setting up key flexfield. Answer : Yes.. it is a standard practice used by oracle. and if value sets are attached. in Account Payables. For gl accounting key flexfield. there is a table named gl_code_combinations. For change in perspective. GL JE Lines) will reference just the CODE_COMBINATION_ID. the fields can be validated too.segment2. with forms version 6i --------------------------This will install 44 . Ditto for the entry in GL_JE_LINES table in oracle general ledger. there will be a dedicated table? And such table will hold the unique combination of field values that can be reused? Answer: correct. as we store the Unique ID of the record in Key Flexfield table. Other examples are grades in oracle human resources. D2K.

Note this is optional. ensure that you can connect to apps schema from Oracle Forms and Oracle Reports. Lets you logon to your middle tier or the database tier to Unix Prompt Note: I am assuming a Unix install for Oracle Applications. Please note that this patch comes bundled with jDeveloper and all the Apps related libraries.com/plsqldev.Only needed if developing extensions to OAF). My personal favorite is Pl/SQL developer from http://www. Lets you do ftp or sftp with your servers b. Oracle jDeveloper for OAF ( Optional:. that a. Oracle IDE --------------------------A rapid pl/sql development tool like TOAD or PL/SQL developer or Golden or SQL*navigator.allroundautomations. Once installed. but I suggest you get used to one of these. Download patch 4045639 from Metalink.Oracle Forms Oracle Reports Next. A Unix client --------------------------A unix shell program like ssh or putty or any others. you need to upgrade the default version of installed Forms 6i by downloading and applying patch 3596539 from Metalink.html 45 .

open workflow named Standard. You will require this wft file for building all new Workflows. Once connected. 46 .Workflows -------------I suggest you create a directory similar to c:\oracle\wf Next you need to ensure that you are able to connect to apps schema from the workflow builder.wft. Click on File/Open in Workflows Builder Connect to database to apps schema Open workflow Standard and save it as WFSTD.wft. and save this as WFSTD.

you get an error like "xyz. Ensure that you are able to connect to apps schema from all the above tools. do windows run. In order to do this. You are now ready to roll with your Oracle Apps development tasks…. In simple words you need to recursively ftp all the form files. This is equivalent to sanity checking your Reports install. regedit. After setting your registry path. In case. If you are prompted that any specific library is missing. A New Custom Form in Oracle Apps In this training article (for the readers of http://getappstraining. 3. 2. you need to add c:\oracle\reports to the REPORTS60_PATH in registry. Next you need to ensure that you are able to open that report. The error might be related to some other pll being referred indirectly by xyz. but is optional step. the you should try to open xyz.Next we need to do the following:1.fmb APP*. FTP any given Oracle delivered report to your PC. then ftp that library too into your c:\oracle\forms.pll FND*. we will learn the steps needed to develop a custom Oracle Apps form from the very scratch. which are needed as foundation for forms development in apps. In the previous chapter we learnt "how to customize an existing oracle delivered form" 47 .pll itself. when opening the form. open the forms designer. You will see a variable named FORMS60_PATH. inside registry follow path HKEY_LOCAL_MACHINE/SOFTWARE/Oracle. to a directory named “c:\oracle\forms” TEMPLATE.pll is missing" and if you believe xyz.fmb without any problems.blogspot. and see if you can open template.pll is already there on your pc. Similarly.com ).pll Note: These files are available on $AU_TOP/forms/US or from $AU_TOP/resource Add directory “c:\oracle\foms” to your registry path named FORMS60_PATH. FTP the following files from your mid tier.pll..

J) cd to $XXPO_TOP/forms/US And f60gen on XXHELLOAPPS. F) go to form level property. many of the clients will keep using this technology for decades. However more importantly Oracle will support current tech stack indefinitely.fmb. For each block in the screen. and set first navigation block to XXHELLOAPPS. then try not to fetch them from post query trigger. on-delete and on-lock triggers. C) Create a new canvas and name it XXHELLOAPPS . I won't bother my kid learning Oracle form though. Try not to do to much pl/sql within the form. 3. Yes. by right clicking on Window/new Name this window as XXHELLOAPPS. and if that block has some description type fields. M) Now add a menu item so that this forms function becomes available to specific responsibility.blogspot. always add a field for Current Record Indicator.com/2006/10/oracle-forms-functionsmenus-and-their. H) Generate the form on PC using Control-T keystrokes. 2. ensuring its Sublcass Type is “Content” D) Make the windows property reference canvas XXHELLOAPPS and vice versa make the canvas reference windows XXHELLOAPPS. G) Add a label and a field named “Hello_World” to this block. Give preference to the creation of form package variables. If you have a table based block. and save this as XXHELLOAPPS. you will be able to open up this form from the responsibility. E) Now create a block named XXHELLOAPPS .Question: Why bother teaching this when Oracle fusion is destined to replace oracle forms by OA Framework? Answer: Well firstly I am yet to hear an official word from Oracle in this regard. Thats it.html] yet? This forms function must be registered against application "XX Purchasing".fmb This will create a file executable as XXHELLOAPPS. Your triggers in the block/block fields will make calls to that package.and assign it SubClass Type “WINDOW” from picklist. on-update. Lets keep this a control block for simplicity. what are the steps for building a screen from scratch? Answer: Below steps in brief A) Open up TEMPLATE. Instead.fmb B) Create a new window. Always do such database intensive operations in a database level package. Hence. Lets revisit some basics first 48 . Indeed you will need to do dml on the actual table yourself by overriding on-insert. In a multi record block. 5. but I agree it is highly likely that fusion will se demise of Oracle Forms. Now some important notes:1. but I would like to touch base on this again. create a form level package spec and package body. develop a view in apps schema and assign that view as base tale to this block. Question : Ok. unless really needed. 4. This will ensure that nothing critical has been missed out. I) FTP the form file to $XXPO_TOP/forms/US Surely.e Release 12 will be supported for foreseen time as per Apps Unlimited statement.fmx K) Go to Application Developer responsibility Menu /applicaton/form Register the form L) Register the Forms Function Have you read he article form functions[http://getappstraining. Steps for your first pl/sql Concurrent Program in Oracle Apps I think this topic is already covered partially in one of the previous training lesson[ for concurrent programs]. this XX will be replaced by the naming convention at your client/company. I. This has a benefit that users will be able to query on the description field if need be. Try not using global variables.

Question: Does this stored procedure need to have some specific parameters. Siebel is assumingly hosted on a Oracle database from where it has database links to your Oracle apps database. in order to become an executable of a concurrent program? Answer: Yes.xx_stage_siebel_customers . Question: What are the possible things that a concurrent pl/sql program can do? Answer: Firstly your stored procedure would have been created in apps. This concurrent program will connect to "apps schema" from where access to all the tabes across every module will be available. Display messages in the output file or the log file of the concurrent program. Question: Can those parameters be validated or will these parameters be free text? Answer: These parameters can be attached to a value set. Effectively I mean first two parameters must always be errbuff and retcode. retcode out NUMBER) Question: Can we add additional parameters to such pl/sql procedures that happen to be Conc Prog Executables? Answer: Sure you can. hence this will avoid users passing free text values. Update and delete records 3. Step 3 ( again in apps schema) Create or replace procedure xx_synch_siebel_cust ( errbuff out varchar2. Make this concurrent program complete with status Error or Warning or Normal. customer name varchar2(400)). thencall the api to update existing customer If this is a new customer. Step 2 Connect apps/apps_password Create or replace synonym xx_stage_siebel_customers for xxschema. Initiate workflows 4. 5. then update existing TCA Customer/Party record Question: Ok. siebel inserts sales order records into your custom staging tables. retcode out varchar2 ) is n_ctr INTEGER := 0 . You can do the following:1. Assume that it is Siebel application where the new customer records are created. Grant all on xx_stage_siebel_customers to apps . However. Question: Will executable for a pl/sql concurrent program be a database stored procedure? Answer: Yes. Question: Please give me an example of a pl/sql concurrent program in Oracle apps in real life? Answer: Lets say you have an external application which is integrated with apps. such procedure must have at least two parameters ( errbuff out VARCHAR2. The sequence of the remaining parameters must match with the sequence in which parameters are registered in define concurrent program-parameters window. how do I do the above? Answer: Find the steps below for doing so Step 1 Connect xxschema/password Create table xx_stage_siebel_customers ( customer_Id integer. you can't make a Function to become the executable for a stored procedure.Question: What are the ingredients for a concurrent program? Answer: A concurrent executable and a program attached to that executable. but in addition to above you can also register a procedure within a package as an executable. In this case. You can then develop a concurrent process which will do the following:-------Loop through the records in that staging table Check if the customer already exists in Oracle AR TCA If customer already exists. but those parameters must be defined after the first two parameters. Begin 49 . Insert records in tables(usually interface or temp tables) 2.

I have included some useful notes on FNDLOAD utility I have used FNDLOAD successfully in past for several different entities/data types within Oracle 11i for almost all my previous clients. Please note that the text written down here could get wrapped in the browser. visit link ) Step 5 Create concurrent program for that executable Step 6 Add this concurrent program to request group Now your program is ready to roll..ldt REQUEST_GROUP REQUEST_GROUP_NAME="XX_MY_REPORT_GROUP_NAME" APPLICATION_SHORT_NAME="XXGMS" ##Note that ##--------## <> will be your Application Shortname where request group is registered ## XX_MY_REPORT_GROUP_NAME Will be the name of your request group ## ##To upload this Request Group in other environment after having transferred the ldt file 50 . Some of the examples in this FNDLOAD article include:FNDLOAD to transfer Request Groups FNDLOAD for moving Concurrent Programs FNDLOAD to download and upload Forms Personalizations ( or Personalisations depending on where you are located ) To FNDLOAD Web ADI. FNDLOAD can be used to migrate Key FlexFields.customer_number. Also.for p_rec in ( select * from xx_synch_siebel_cust ) LOOP Select count(*) into n_ctr from hz_parties where party_number = p_rec. in case you find the lines wrapping In my case I am ensuring that $CLIENT_APPS_PWD has the apps password before running the scripts -----------------------------------------------------------------------------------------##To FNDLOAD Request groups FNDLOAD apps/$CLIENT_APPS_PWD O Y DOWNLOAD $FND_TOP/patch/115/import/afcpreqg. END LOOP . ever since this utility became available. End if. Descriptive Flexfields. delete from xx_synch_siebel_cust . Oracle FNDLOAD Script Examples PLEASE USE THIS LINK FOR FNDLOAD ON APPS2FUSION.COM In this article I wish to give real working examples of Oracle's FNDLOAD utility. Hence you may have to use \ to continue the single line command on Unix. Responsibilities and almost every other FND entity.. visit the link Web ADI FNDLOAD Use FNDLOAD for transferring value set definitions. Besides that. If n_ctr=0 then Hz_party_create(pass appropriate parameters here). End xx_synch_siebel_cust Step 4 Create concurrent program executable ( for example of screenshot.lct XX_MY_REPORT_GROUP_NAME. Else Hz_party_update(pass appropriate parameters here).. -->Please note that when transferring Key Flex Fields and Descriptive flex fields the respective value sets against each segment will be extracted and loaded automatically.

lct XX_FND_COMMON_LOOKUPS_DFF.ldt -----------------------------------------------------------------------------------------##To FNDLOAD Oracle Descriptive Flexfields $FND_TOP/bin/FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afffload.lct XX_PA_EXPENDITURE_TYPES_DESC_FLEX_DFF.ldt DESC_FLEX APPLICATION_SHORT_NAME=PA DESCRIPTIVE_FLEXFIELD_NAME='PA_EXPENDITURE_TYPES_DESC_FLEX' -----------------------------------------------------------------------------------------##To FNDLOAD Oracle Menus $FND_TOP/bin/FNDLOAD apps/$CLIENT_APPS_PWD O Y DOWNLOAD $FND_TOP/patch/115/import/afsload.lct XX_PO_REQ_HEADERS_DFF.lct ICX_POR_SSP_HOME. rather than logging into the screen (ooops via jinitiator) ########----->SELECT ########----->application_id.lct ----------------------------------------------------------------------------------------##To FNDLOAD Concurrent Programs FNDLOAD apps/$CLIENT_APPS_PWD O Y DOWNLOAD $FND_TOP/patch/115/import/afcpprog.lct XX_CUSTOM_ORACLE_INTERFACE_PROG. DESCRIPTIVE_FLEXFIELD_NAME.FNDLOAD apps/$CLIENT_APPS_PWD O Y UPLOAD $FND_TOP/patch/115/import/afcpreqg.ldt PROGRAM APPLICATION_SHORT_NAME="XXGMS" CONCURRENT_PROGRAM_NAME="XX_CUSTOM_ORACLE_INTERFACE_PROG" ##Note that ##--------## XXGMS will be your custom GMS Application Shortname where concurrent program is registered ## XX_CUSTOM_ORACLE_INTERFACE_PROG Will be the name of your request group ## XX_CUSTOM_ORACLE_INTERFACE_PROG.lct XX_PO_REQ_HEADERS_DFF.ldt MENU MENU_NAME="ICX_POR_SSP_HOME" ##Note that 51 . application_table_name ########----->FROM ########-----> fnd_descriptive_flexs_vl ########----->WHERE ########-----> APPLICATION_TABLE_NAME like '%' || upper('&tab_name') || '%' ########----->ORDER BY APPLICATION_TABLE_NAME ########----->/ ## To upload into another environment $FND_TOP/bin/FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD $FND_TOP/patch/115/import/afffload.ldt DESC_FLEX APPLICATION_SHORT_NAME=FND DESCRIPTIVE_FLEXFIELD_NAME='FND_COMMON_LOOKUPS' ## OK another example for DFF against Project Accounting Expenditure Types FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afffload.ldt is the file where concurrent program definition will be extracted ## ##To upload FNDLOAD apps/$CLIENT_APPS_PWD O Y UPLOAD $FND_TOP/patch/115/import/afcpprog.ldt DESC_FLEX APPLICATION_SHORT_NAME=PO DESCRIPTIVE_FLEXFIELD_NAME='PO_REQUISITION_HEADERS' ##Note that ##--------## PO is the Application Shortname against which descriptive flexfield against PO Headers is registered ## PO_REQUISITION_HEADERS is the name of Descriptive Flexfield against PO Requisition Headers ## Use the SQL below to find the name of DFF.ldt ## OK another example for DFF against FND_LOOKUPS FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afffload.lct XX_CUSTOM_ORACLE_INTERFACE_PROG.

ldt Notes for using FNDLOAD against FND_USER:1.lct ICX_POR_SSP_HOME.ldt ---------------------------------------------------------------------------------------------------------------------------## Now it's the turn of Lookup values.ldt FND_NEW_MESSAGES APPLICATION_SHORT_NAME='ICX' MESSAGE_NAME=XX_ICX_POR_LIFECYCLE_PAY_TIP ## Or you may as well download all the messages within an application FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afmdmsg. make sure that you have done FNDLOAD for new responsibilities prior to running FNDLOAD on users.lct \ XX_ALL_GMS_MESSAGES_00. its not a rocket science FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD aflvmlu./XX_FND_USER_PASSI.ldt FND_LOOKUP_TYPE APPLICATION_SHORT_NAME ='XXGMS' LOOKUP_TYPE="XX_TRX_BATCH_STATUS" ## Note that ## XX_TRX_BATCH_STATUS is the name of FND Lookup Type in this example ## This will download all the lookup codes within the defined lookup ## To upload FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD aflvmlu. All the responsibilities will be extracted by FNDLOAD alongwith User Definition in FND_USER 3. This can be validated via below SQL ## select user_menu_name from fnd_menus_vl where menu_name = 'ICX_POR_SSP_HOME' ./XX_FND_USER_PASSI. Hence no need to include application short name ## ICX_POR_SSP_HOME is the menu name. In the Target Environment .ldt FND_USER USER_NAME='ANILPASSI' #Do not worry about your password being extracted. it will be encrypted as below in ldt file #BEGIN FND_USER "ANILPASSI" # OWNER = "PASSIA" # LAST_UPDATE_DATE = "2005/10/19" # ENCRYPTED_USER_PASSWORD = "ZGE45A8A9BE5CF4339596C625B99CAEDF136C34FEA244DC7A" # SESSION_NUMBER = "0" To upload the FND_USER using FNDLOAD command use FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD $FND_TOP/patch/115/import/afscursp. Again. now to upload this file $FND_TOP/bin/FNDLOAD apps/$CLIENT_APPS_PWD O Y UPLOAD $FND_TOP/patch/115/import/afsload. ---------------------------------------------------------------------------------------------------------------------------## Now lets have a look at the profile option using oracle's FNDLOAD 52 .ldt ---------------------------------------------------------------------------------------------------------------------------## You can also move the User definitions from FND_USER FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afscursp. 2.lct \ XX_ICX_POR_LIFECYCLE_PAY_TIP.lct .lct . user will be promoted to change their password again during their next signon attempt. ## Also note that we do not pass in the User_menu_name in this example ## OK. After uploading using FNDLOAD.lct XX_TRX_BATCH_STATUS.##--------## Oracle Menus are not attached to applications. now for FND Messages to download a single message FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afmdmsg.lct XX_ICX_POR_LIFECYCLE_PAY_TIP.ldt ---------------------------------------------------------------------------------------------------------------------------## Well.lct XX_TRX_BATCH_STATUS.ldt FND_NEW_MESSAGES APPLICATION_SHORT_NAME='XXGMS' ## now to upload using FNDLOAD FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD $FND_TOP/patch/115/import/afmdmsg.

ldt FND_FORM_CUSTOM_RULES function_name="PERWSHRG-404" FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/affrmcus.ldt ---------------------------------------------------------------------------------------------------------------------------## Now for the responsibility FNDLOAD apps/$CLIENT_APPS_PWD O Y DOWNLOAD $FND_TOP/patch/115/import/afscursp.lct POR_ENABLE_REQ_HEADER_CUST.lct XX_GL_MY_INTERFACE_SET_LINK.ldt FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD $FND_TOP/patch/115/import/afcprset.lct XX_GL_MY_INTERFACE_SET. ## Next you will be required to download the Sets Linkage definition ## Well.ldt ---------------------------------------------------------------------------------------------------------------------------## Now for the request sets that contain the stages and links for underlying concurrent programs ## For this you will be firstly required to download the request set definition.ldt REQ_SET REQUEST_SET_NAME="FNDRSSUB4610101_Will_look_like_this" FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afcprset. I have given three examples as below.ldt REQ_SET_LINKS REQUEST_SET_NAME="FNDRSSUB4610101_Will_look_like_this" ## Note that FNDRSSUB4610101 can be found by doing an examine on the ########----->select request_set_name from fnd_request_sets_vl ########----->where user_request_set_name = 'User visible name for the request set here' ## Now for uploading the request set. execute the below commands FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD $FND_TOP/patch/115/import/afcprset. ########----->select application_id.lct XX_HZ_ARXCUDCI_STD.ldt FND_RESPONSIBILITY RESP_KEY="XX_PERSON_RESPY" ## note that XX_PERSON_RESPY is the responsibility key ## Now to upload FNDLOAD apps/$CLIENT_APPS_PWD O Y UPLOAD $FND_TOP/patch/115/import/afscursp.lct XX_PERSON_RESPY.lct POR_ENABLE_REQ_HEADER_CUST.ldt ---------------------------------------------------------------------------------------------------------------------------## OK. lets be clear here.. Validate using .lct XX_GL_MY_INTERFACE_SET..FNDLOAD apps/$CLIENT_APPS_PWD O Y DOWNLOAD $FND_TOP/patch/115/import/afscprof.lct XX_PERSON_RESPY.ldt PROFILE PROFILE_NAME="POR_ENABLE_REQ_HEADER_CUST" APPLICATION_SHORT_NAME="ICX" ## Note that ## POR_ENABLE_REQ_HEADER_CUST is the short name of profile option ## We aren't passing the user profile option name in this case. the above sequence is more important while uploading FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afcprset.ldt FND_FORM_CUSTOM_RULES function_name="HZ_ARXCUDCI_STD" FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/affrmcus. PROFILE_OPTION_NAME || '==>' || profile_option_id || '==>' || ########----->USER_PROFILE_OPTION_NAME ########----->from FND_PROFILE_OPTIONS_VL ########----->where PROFILE_OPTION_NAME like '%' || upper('&profile_option_name') || '%' ########----->order by PROFILE_OPTION_NAME ########----->/ ## Now to upload FNDLOAD apps/$CLIENT_APPS_PWD O Y UPLOAD $FND_TOP/patch/115/import/afscprof. now for the forms personalizations ## For the forms personalizations.lct XX_PERWSHRG.lct 53 .lct XX_GL_MY_INTERFACE_SET_LINK. FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/affrmcus.

GL Currencies. Customers. Suppliers.XX_AP_APXVDMVD.ldt FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD $FND_TOP/patch/115/import/affrmcus. For this you can use iSetup. 4. Please find the two commands that I use for bouncing the Apache $COMMON_TOP/admin/scripts/$TWO_TASK*/adapcctl. Restart or Bounce Apache in Oracle Apps 11i I find this script very handy for bouncing the Apache. As the name suggests. By doing so. and then the FNDLOAD is run for similar changes. 5. Financials Setup. Last but not the least. FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD $FND_TOP/patch/115/import/affrmcus.sh stop $COMMON_TOP/admin/scripts/$TWO_TASK*/adapcctl. Please amend the above examples as desired for applying appropriate filterations. 5. Give special attention when downloading Menus or Responsibilities. 2.lct XX_AP_APXVDMVD.. However in any implementation. In past I have noticed undesired results when the Lookup gets modified manually directly on production. for example you can restrict the download and uploads to specific segments within Descriptive Flex Fields. 4. If possible. HRMS Employees. The list of examples by no mean cover all possible FNDLOAD entities. In case your client has several developers modifying Responsibilities and Menus.. "Oracle iSetup". This happens to by one of my favourite Oracle utilities. then be ultra carefull. Be very careful when downloading flexfields that reference value sets with independent values for GL Segment Codes. Some of the things that can be migrated using Oracle iSetup are GL Set of Books. functions and menus. specially when working on Self Service Applications.ldt ---------------------------------------------------------------------------------------------------------------------------Notes : 1. FNDLOAD is useful for FND Related objects. There are several variations possible for FNDLOAD. FNDLOAD is very reliable and stable.lct XX_PERWSHRG. so as to ensure that you do not get any unexpected data.ldt FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD $FND_TOP/patch/115/import/affrmcus. Tax Codes & Tax Rates. Not being carefull will mean that untested Forms and Functions will become available in your clients Production environment besides your tested forms.ldt FND_FORM_CUSTOM_RULES function_name="AP_APXVDMVD" ## Note that the function name above is the function short name as seen in the Function Definition Screen ## Now to upload the forms personalizations that are defined against these forms functions. HR Organization Structures. you will download and extract all the test data in GL Codes that might not be applicable for production.lct XX_HZ_ARXCUDCI_STD.. try to follow a good practice of modifying FNDLOADable data only by FNDLOAD on production environment. please test your FNDLOAD properly. 3. Chart of Accounts. Accounting Calendars.sh start 54 . Profile Options Setup. if used properly. you will be required to migrate the Setups in Financials and Oracle HRMS from one environment to another.

To monitor such failures create a table as below conn xx_g4g/&2 . complete bounce of Middle Tier is required in Oracle Apps.sqlerrm varchar2(2000) . PROMPT This can take upto 15-30 minutes PROMPT Granting SELECT on All synonyms and views to apps_query DECLARE --One off script to execute grants to apps_query v_error VARCHAR2(2000). Step 3 In this step we grant select on all the existing views and synonyms in apps schema to apps_query.pll to CUSTOM.pll ( after having edited the text pld file ) f60gen module_type=LIBRARY module=CUSTOM parse=YES userid=apps/apps To convert from CUSTOM.pll To convert from CUSTOM.pll Please find some commands for CUSTOM. then it is noticed.pll to CUSTOM. There will be cases where the grant command might fail. Whilst in the past I have known clients to implement this using synonyms. If your client is still stuck with AK Developer. for those XML changes to take effect. then Apache bounce will be required after akload has been executed Playing with CUSTOM.creation_date DATE ). --For APPS_QUERY.pld to CUSTOM. 55 .plx f60gen module_type=LIBRARY module=CUSTOM userid=apps/apps Read Only Schema in Oracle APPS 11i In this article I have discussed how to create and maintain a read only schema for APPS in Oracle eBusiness Suite. then Apache bounce becomes mandatory for those changes to take effect. Step 2. In case you modify and load the XML Document in Oracle Framework.Of course this needs to be done in Middle Tier of Oracle Applications. grant all on XX_GRANTS_FAIL_APPS_QUERY to apps with grant option. in this case lets call it APPS_QUERY. In case you have modified any java or class file in OAF ( Oracle Applications Framework ). the schema created in above Step 1 will be given read only grants to objects in apps. conn apps/&1 .pld f60gen module_type=LIBRARY module=CUSTOM script=YES userid=apps/apps To convert back from CUSTOM. This table will capture the exceptions during Grants PROMPT create table XX_GRANTS_FAIL_APPS_QUERY create table XX_GRANTS_FAIL_APPS_QUERY ( object_name VARCHAR2(100) . Surely. However the approach discussed below is designed without the need of having to create a single synonym in APPS_QUERYschema. Step 1 Create the read-only schema. grant select on XX_GRANTS_FAIL_APPS_QUERY to apps_query .

end.XX_GRANTS_FAIL_apps_query (object_name .creation_date ) VALUES (p_rec.SQLERRM . COMMIT. conn apps/&1 .'. 2000). 'VIEW') AND object_name NOT LIKE '%_S') LOOP BEGIN EXECUTE IMMEDIATE 'grant select on ' || p_rec.object_name . Please note that I am excluding grants for sequences.v_error .set_client_info ( 101 ). Please note that.In doing so your logon will retain the permissions of apps_query schema(read_only). such that the CurrentSchema will be set to apps for the session(whilst retaining apps_query restrictions).object_name || ' to apps_query'. PROMPT CREATE OR REPLACE TRIGGER xx_apps_query_logon_trg CREATE OR REPLACE TRIGGER xx_apps_query_logon_trg --16Jun2006 By Anil Passi --Trigger to toggle schema to apps. INSERT INTO bes. END. 1. / Step 5 Create a Trigger on the apps schema to issue select only grants for all new views and synonyms. EXCEPTION WHEN OTHERS THEN v_error := substr(SQLERRM. The main purpose of this trigger is to alter the session to apps schema.sysdate ). all the APPS objects (views and synonyms) that existed in APPS schema prior to the implementation of this design. END. would have been granted 56 . but yet retaining apps_query resitrictions --Also sets the org_id AFTER logon ON apps_query.SCHEMA DECLARE BEGIN EXECUTE IMMEDIATE 'declare begin ' || 'dbms_application_info. SELECT grants for views and synonyms will be provided to apps_query as and when such objects are created in APPS. Howerver it will be able to reference the apps objects with exactly the same name as does a direct connection to apps schema. EXECUTE IMMEDIATE 'ALTER SESSION SET CURRENT_SCHEMA =APPS'. END. / Step 4 Write a after logon trigger on apps_query schema.BEGIN FOR p_rec IN (SELECT * FROM all_objects WHERE owner = 'APPS' AND object_type IN ('SYNONYM'. END LOOP.

their previliges will be restricted to those of apps_query Note 5 It is assumed that ALTER SESSION privilege will exist for APPS_QUERY schema. However. conn apps/&1 . 2.'. In case you have only one single ORG_ID. Create Oracle FND_USER with System Administrator If you have the Apps Password. BEGIN IF (ora_dict_obj_type IN ('SYNONYM'. END IF. 'VIEW')) AND (ora_dict_obj_name NOT LIKE '%_S') THEN l_str := 'execute immediate "grant select on ' || ora_dict_obj_name || ' to apps_query". after logging in. I find this script very useful when development environment gets cloned from Production(that is when i do not have FND_USER in Production. Alternately you need execute permission on fnd_user_pkg from the user where this script will be run.createuser 4. Most importantly it must not be given grant for “EXECUTE/CREATE ANY PROCEDURE”. / Some notes for this design Note1 You need to ensure that the schema created in Step 1 has very limited permissions. Please note that:1. PROMPT CREATE OR REPLACE TRIGGER xx_grant_apps_query CREATE OR REPLACE TRIGGER xx_grant_apps_query --16Jun2006 By Anil Passi -AFTER CREATE ON APPS. 5. '"'.SCHEMA DECLARE l_str VARCHAR2(255). its quite easy to create a FND_USER for yourself by using the API. Objects in your xx_g4g(bespoke) schema should have their synonyms in apps already in place. '''')). you will then have to set the org I'd after loggiong on to apps query schema. I have not included the commit within this script. you will be prompted to enter a user name. If using some other user. When running this script.read-only access to apps_query in Step 2. dbms_job. please use apps. Note 2 Only views and synonyms will be granted access. l_job NUMBER. --------Beging of script-------------- 57 .submit(l_job. Note 3 If your site has multi org enabled. Note 4 ALTER SESSION SET CURRENT_SCHEMA =APPS This facilitates users to run their queries as if they were connected to apps schema. You will be allocated System Administrator by this script. then would have been set as in Step 4 above. You will need to agree with your DBAs upfront for the permissions. Hence you can assign whatever responsibilities that you desire latter.fnd_user_pkg. You need apps password to run this script. You need to do a COMMIT after this script has run. The password will be set to oracle 3. END. REPLACE(l_str.

x_end_date => SYSDATE + 100 .x_start_date => SYSDATE .x_password_lifespan_accesses => 10000 .x_email_address => 'appstechnical.createuser(x_user_name => v_user_name .x_session_number => v_session_id .blogspot. / A New Custom Form in Oracle Apps In this training article (for the readers of http://getappstraining.com' . 58 . v_user_name VARCHAR2(30) := upper('&Enter_User_Name').x_password_lifespan_days => 10000 .10 .10 .blogspot.end_date => SYSDATE + 1000).x_description => 'appstechnical. we will learn the steps needed to develop a custom Oracle Apps form from the very scratch.x_password_date => SYSDATE . BEGIN --Note.x_unencrypted_password => 'oracle' . END.resp_app => 'SYSADMIN' . Yes.10 .full_name */ .DECLARE --By: Anil Passi --When Jun-2001 v_session_id INTEGER := userenv('sessionid').x_owner => '' .start_date => SYSDATE .x_last_logon_date => SYSDATE . I won't bother my kid learning Oracle form though. I.e Release 12 will be supported for foreseen time as per Apps Unlimited statement. However more importantly Oracle will support current tech stack indefinitely.x_employee_id => 30 /*Change this id by running below SQL*/ /* SELECT person_id . can be executed only when you have apps password.blogspot@gmail.x_customer_id => '' . In the previous chapter we learnt "how to customize an existing oracle delivered form" Question: Why bother teaching this when Oracle fusion is destined to replace oracle forms by OA Framework? Answer: Well firstly I am yet to hear an official word from Oracle in this regard. but I agree it is highly likely that fusion will se demise of Oracle Forms. -.full_name FROM per_all_people_f WHERE upper(full_name) LIKE '%' || upper('<ampersand>full_name') || '%' GROUP BY person_id . many of the clients will keep using this technology for decades.x_password_accesses_left => 10000 .addresp(username => v_user_name .x_fax => '' .Call the procedure to Creaet FND User fnd_user_pkg.description => 'Auto Assignment' .resp_key => 'SYSTEM_ADMINISTRATOR' .security_group => 'STANDARD' . Hence.com ).x_supplier_id => '').com' . fnd_user_pkg.10 .

on-update. you will be able to open up this form from the responsibility. listed in the order of preferences:1. This will ensure that nothing critical has been missed out.fmx K) Go to Application Developer responsibility Menu /applicaton/form Register the form L) Register the Forms Function Have you read he article form functions[http://getappstraining. but no because most often you should modify the screen without actually modifying the underlying forms executable .com . unless really needed. H) Generate the form on PC using Control-T keystrokes. Feel free to ask your questions Forms Customization Steps in Oracle Applications This article is for the readers of http://getappstraining. and if that block has some description type fields.html] yet? This forms function must be registered against application "XX Purchasing". develop a view in apps schema and assign that view as base tale to this block. Indeed you will need to do dml on the actual table yourself by overriding on-insert.fmb This will create a file executable as XXHELLOAPPS. by right clicking on Window/new Name this window as XXHELLOAPPS. G) Add a label and a field named “Hello_World” to this block. In a multi record block. on-delete and on-lock triggers. Try not to do to much pl/sql within the form. and save this as XXHELLOAPPS. ensuring its Sublcass Type is “Content” D) Make the windows property reference canvas XXHELLOAPPS and vice versa make the canvas reference windows XXHELLOAPPS. J) cd to $XXPO_TOP/forms/US And f60gen on XXHELLOAPPS.fmb. Please let me know if anything is unclear. always add a field for Current Record Indicator.Question : Ok. Try not using global variables. and set first navigation block to XXHELLOAPPS. I) FTP the form file to $XXPO_TOP/forms/US Surely. Forms Personalizations 2. If you have a table based block. Question: How can I modify screen without modifying the underlying executable ? Answer: There are two ways. For each block in the screen. then try not to fetch them from post query trigger. create a form level package spec and package body. Give preference to the creation of form package variables.pll 59 . Yes because you often will be called upon to modify the forms.and assign it SubClass Type “WINDOW” from picklist. C) Create a new canvas and name it XXHELLOAPPS . Instead. 4.listing the steps required to customize a form in Oracle Applications. 3. CUSTOM. Always do such database intensive operations in a database level package.blogspot. Lets do some Questions and Answers:Question: Is it a common practice to modify forms in Oracle Apps? Answer: Yes and No. Now some important notes:1.fmb B) Create a new window. M) Now add a menu item so that this forms function becomes available to specific responsibility.blogspot. Thats it. F) go to form level property. 5. 2. what are the steps for building a screen from scratch? Answer: Below steps in brief A) Open up TEMPLATE.com/2006/10/oracle-formsfunctions-menus-and-their. Lets keep this a control block for simplicity. E) Now create a block named XXHELLOAPPS . Your triggers in the block/block fields will make calls to that package. This has a benefit that users will be able to query on the description field if need be. this XX will be replaced by the naming convention at your client/company.

fmb.pll ?? Hence calling for forms customization. forms personalization has its limitations.pLL needed when we already have forms personalization? Answer: Well just like any technology. Question: Well. Depending upon what user selects. ensuring that you do not receive any errors pertaining to missing library or missing form object. E) Perform a save-as to rename this form on your pc. what can't be done via custom.fmx J) Go to Application Developer responsibility Menu /applicaton/form Register the form K) Register the Forms Function Have you read the article form functions ? This forms function must be registered against application "XX Purchasing". you need to add a complete new section to the screen at a very specific location. via changing its query. 60 . what are the steps for customization of such screen. Say from $AU_TOP/forms/US/POENTRY.pll. create supplier or create vendor. this XX will be replaced by the naming convention at your client/company. This will ensure that nothing critical has been missed out. Limitation example 1 of forms personalizations --------------------------------------------------For example you wish to prompt a message to user DO YOU WISH TO CREATE THIS PERSON AS SUPPLIER OR CUSTOMER OR EMPLOYEE. in a screen. but not by forms personalization. Here. C) FTP that form and all its dependable form objects & pll files to your PC. create customer . Question : Ok. In this generic piece of code Oracle checks in personalizations tables to see if anything extra needs to be done for the events being executed. D) Open the form.fmb This will create a file executable as XXPOENTRY. Question: What about CUSTOM. you wish to navigate to one of relevant screens from the current TCA screen.pll. For this. Answer: For example. Oracle has a standard practice of calling a generic piece of code from each trigger(at form level). you have no choice but to use CUSTOM. how to identify the form executable? Answer: There are two ways. Surely you will need to connect to apps schema before generating the form. B) Go to the specific directory on one of the mid-tiers to get that forms executable. scroll down within the subwindow and search for fmx. This is the executable that oracle application runs when specific form is invoked. this must be done via forms customization. G) Generate the form on PC using Control-T keystrokes. but why is CUSTOM. see the article for forms personalizations Question: Fine then.pll Limitation example 2 of forms personalizations --------------------------------------------------For example you wish to change the record group of a LOV. a question about (A). Method1 Open the form to be customized in Oracle Apps from respective Responsibility/Menu Next select menu /Help/About Oracle Application. L) Now add a menu item so that this forms function becomes available to specific responsibility. This can be done by CUSTOM. For details of example. Answer: Below steps in brief A) Identify the form in Oracle Apps that needs to be customized. using your company's naming conventions. H) FTP the form file to $XXPO_TOP/forms/US Surely.Question: How does forms personalization work? Answer: Oracle forms has triggers that we trap to write our business logic. F) Make the desired modifications to the form. Lets say this message will prompt three options. I) cd to $XXPO_TOP/forms/US And f60gen on XXPOENTRY.

rdf $XXAR_TOP/reports/us Effectively you have now done the following:1. Note down the exact name and query that name in Concurrent Program screen. Avoid writing SQL in format trigger. 3. Application Developer. Basically that is the directory where custom reports for AR will be deployed. then you must go to the database server and get hold the file named RAXINV. Click on “Copy Program button” selecting checkbox option “Copy Parameters”. If you worked for say company named EA. 2. then this might have been $EAAR_TOP/reports/US 2. Copy that file to your custom AR Top directory. Hence I decided to write this article to fulfill my commitment towards http://getappstraining. If the application is Oracle Receivables. Note: We haven’t made any changes as yet. Important note: Just like Oracle Forms. there is no place for D2K Reports in Fusion. You will be told the name of the existing report that must be customized. Note down the application within which it is registered. and then ftp that piece of rdf back to the server. Also note down the name of the executable as it appears in concurrent program definition screen.. navigate to screen concurrent executable and query on the field labeled "Executable Short Name". and executed. Some important tips:1. that I must follow. to see it working. however it will still demand resources for the next 5yrs or so. what is the command for f60gen Answer: FORMS60_PATH=$FORMS60_PATH:$AU_TOP/forms/US export FORMS60_PATH cd $XXPO_TOP/forms/US f60gen module=XXPOENTRY. In same responsibility i. Also. This will help you copy the current program definition to custom version of the program. Now you can ftp that report to your pc. Made the custom version of report registered with XXAR application. you need to include the new concurrent program name in the relevant request group. From this form function find the form attached to this function. Run it again. This rule applies to Oracle Reports too in Oracle Applications. This will be replaced by XML publisher. 61 . make modifications for necessary customizations.com We learnt in Forms Customization article that customized executables must be registered with Custom Application.fmb userid=apps/apps module_type=form batch=no compile_all=special Customization of Reports in Oracle Apps Oracle Reports will become a thing of past in Fusion.rdf in $AR_TOP/reports/US.e. 1. Answer : Follow the steps below. Question: Regarding (I). What will be the steps. When you run that report. although in rare cases it becomes necessary to do so.blogspot. Question: I have been asked to customize Invoice Print program which happens to be an Oracle Report. Note down the Menu which is attached to Responsibility. Go to the menu definition screen and find the form function attached to this menu. Oracle concurrent manager will search for that report in $XXAR_TOP/reports/US The report will be found there.Method2 Query the responsibility definition which has the form attached to this. cd $XXAR_TOP/reports/us cp $AR_TOP/reports/us/RAXINV. I will explain that transition in a latter article very soon.

I will try to explain the steps. 7. Question: And how about the development stage during migration? Answer: Do the following 1. You may decide to knock of a simple screen if high volume of transactions needs user intervention for cleansing. srw2. Testing will most likely be repetitive. until you are able to have a migration run which leaves behind the 62 . then I suggest you create a db link to pull the data into your staging tables. Ensure that errors are logged into some error logging table. Do not write a formula column for something which can be achieved by amending the query in data group itself. Fully understand where the data will end up residing into Oracle Apps. Also think about how the transactions that fail migration will be re-tried.. Test Test Test. Question : Why this article? Answer : Because in every Oracle ERP implementation you have some level of data migration activity. (Again all this can be done via tools too. Learn from Oracle's Report. 3. by default. Missing mapping codes 2. Question: How about testing? Answer: You will figure out the following at this stage. 2. 4. and use the same user exit. 1. 3 Find out if open interfaces or APIs exist in Oracle Apps to facilitate loading the required data. Prepare the source data B. Design your staging tables and write code C. Avoid filters on Data Group queries. If your source system is Oracle too. your legacy/source data will be loaded into some temporary(staging) tables in a raw(as is) fomat/strucutre . as those messages will appear in the log file of the concurrent program. Have a look at Oracle's Amount fields. 5. Join between two queries in data group will always be outerjoined. Do not hardcode things like Currency Formatting. Design the stages in which data will flow.. Traditionally. This will either populate your Open Interface Tables or it will perform migration if APIs are being used. following must be done. from the records that error 1. 8. Run the concurrent program that you have would written for transformation of data. but here I am talking about a small migration activity. 6. 4. you will first write one-off scripts to create those staging tables and load data into them using SQL*Loader or some other methodology. Try to implement that logic within the query itself. followed by a real life example of data migration. And then you will call the API or populate the Open Interface tables. For doing the above.message can be used for minor debugging. to generate SQL Trace. by reverse engineering them. Migration program in Apps. Migrate Customers This article explains the steps to write programs for data migration in Oracle Apps. This trace will not produce bind variable values though. 6. then you could have a database view that does a union on your error table and also oracle's error logging table. Next you will translate the data into the physical structure that is similar to structure of Oracle Apps table/API. If the data errors in Oracle's open interface tables.. Question : How to do data migration? Answer : A. Ensure that lookup codes or setup in Oracle apps support the values that are coming from source system. 5. hence ignore the tool talk) 4. You can set the trace checkbox against the concurrent program definition. All the steps pertaining the transformation can be done via a pl/sql concurrent Program(unless you are using tools like Warehouse builder) 3. 2. Understand the structure of the data being imported and also its business purpose. Question : What is involved in the preparation stage of data migration in oracle apps? Answer: For the Preparation stage. Think about how the errors will be reported and managed. Missing setups in oracle apps.2.

. once the data from source system has been loaded using sql*loader. they might induce faults/bugs. There is a possibility that in an attempt to transform data to Oracle's data structure. For this we create two tables.1001-1 1002. XX_TRNSFRM_PARTY --parent_cust_Id --parent_cust_name XX_TRNSFRM _CUST_ACCOUNT --parent_cust_Id --operating_cust_Id --operating_cust_name Now.1000-1 1001.Barclays. GE Capital.customer operating company name. Transform this data.Barclays..Cisco.1001-2 The format of data is CustomerId.dat 1000. don't bother doing so. for below reasons :A. However if legacy team does transformation for you. Question : Enough explanation.. Question : Ok. This is explained below with an example of TCA API to migrate customers/parties. Techies of legacy system will not be happy that their system is now being made redundant.. you should not be dependent upon the legacy system.Barclays Mortgages. Eventually tired of waiting on them. B. Step 2. what next? Answer: The data model of the source data may or may not comply with the data model in oracle apps.. Question : If we end up using interface api's in apps for data migration. Now write the pl/sql program to migrate this data into Oracle.Cust parent name. you might end up doing transformation yourself anyway. Answer : Let’s assume you get a task to migrate customers from legacy system into TCA (or call it AR Receivables for simplicity). one column for each file in source. you can fix them yourself. C.Barclays Investments. or a java program with a csv parser or a file based table approach.records that are very low in volume or non-existent. If your design for transformation changes. Question : In oracle apps during migration. this table will have four columns. If the transformation bugs are encountered at your end in apps. Hence don't expect much value addition from them. Such systems usually produce comma delimited or tab delimited file. Step 3. 63 . Question : Should I not ask the legacy system people to transform data as per our requirements? Answer : No. now give me an example. how will I load that into tables? Answer : You can use a Sql*Loader.Cisco Routers. you can write a pl/sql program to split data from table xx_legacy_cust into the two tables listed above. do we usually receive xml data file? Answer : Keep in mind that you usually migrate data from mainframe or standalone systems which now stand outdated. even though it uses the same sets of tables/API's as interfaces do.GE. Your file from source is:lcust.just fix it yourself at your own end in apps. operating company id Step 1.. Question : If I get a comma delimited file. FTP this file to your database server and run sql*loader to load the file into a table named xx_legacy_cust. then you become dependent on them for bug fixes.1001-1 1003. then where lies the difference between migration and interfaces? Answer : Migration is a one-off activity. Hence you need a transformation step in most cases.

the setup for formatting letters and docments can be overwhelming. once configured on a development environment you would not like to repeat the tedious setup on test. 3. END . then kindly visit link Fndload for common utilities. 255 ) ).parameters… l_return_status. i || '. crp or other environment. Second step Download the above web adi attributes into various ldt files.Create or replace procedure xx_migrate_parties(errbuff out varchar2. l_msg_count LOOP Fnd_File. 2.. For p_party_rec in (select * from XX_TRNSFRM _CUST_ACCOUNT where parent_cust_Id = p_party_rec. No two data migrations are exactly the same.create_party().create_cust_account(.LOG. l_msg_data ). ' || SUBSTR (Fnd_Msg_Pub. Using FNDLOAD you can migrate 99% of your setup. Now some notes:1. Question : What are the man steps when using FNDLOAD for Web ADI? Answer : First step Identify the pieces that must be moved across using fndload.parent_cust-id) loop --now create a customer account hz_cust_account_v2pub.get (p_encoded Fnd_Api. Question: Why does one need to use FNDLOAD FOR WEB ADI? Answer : In any implementation that uses Web ADI. END LOOP . => 64 . IF l_msg_count > 1 THEN FOR i IN 1 . 1. END IF. FNDLOAD for Oracle Web ADI This article is dedicated for usage of FNDLOAD for Web ADI Question : Does this article cover FNDLOAD in general? Answer : This article is dedicated to the usage of FNDLOAD for Web ADI. hence I have given a pseudo code.g_false ). The API's used for data migration and for developing open interfaces are the same.retcode out varchar2) is Begin FOR p_party_rec in (select * from XX_TRNSFRM_PARTY ) LOOP --call api to create party Hz_Party_Site_V2pub. These can be:Integrators Layouts Mappings Contents This article covers the above listed components one by one. END LOOP . and not th actual code. Basically we will create one ldt file for each of the above four web adi entities. More importantly. l_msg_count. In some cases the quality of the source data can be so bad that you may need a third party to cleanse the data before you run migration. END LOOP. If you wish to fndload entities other than Web ADI..put_line (Fnd_File.

ldt Question : Please demo how to FNDLOAD Layouts in Web ADI Answer : To identify the layout codes codes. 'XX Sorry Interview did not work') . SELECT integrator_code.Third step Upload those ldt files into the new environment. run the below SQL.ldt BNE_LAYOUTS LAYOUT_ASN="PER" LAYOUT_CODE="XX_CODE" Now in order to upload these into new environment.ldt FNDLOAD apps/$APPS_PASSWORD 0 Y UPLOAD $BNE_TOP/admin/import/bnelay. these internal names are not visible from the Web ADI screens? Answer: In this example. application_id FROM bne_integrators_vl vl WHERE user_name IN ('XX Request for further references'. Question : Please demo how to FNDLOAD Integrators in Web ADI Answer : To identify the integrator codes.I will demonstrate using scripts how to recognize the web adi components Names for fndload.ldt FNDLOAD apps/$APPS_PASSWORD 0 Y UPLOAD $BNE_TOP/admin/import/bneint. integrator_code FROM bne_mappings_vl 65 . This will return two internal codes. For this we will run the fndload in upload mode.lct XX_HR_41_INTG.ldt BNE_LAYOUTS LAYOUT_ASN="PER" LAYOUT_CODE="XX_C_O_F_T" FNDLOAD apps/$APPS_PASSWORD 0 Y DOWNLOAD $BNE_TOP/admin/import/bnelay.lct XX_C_O_F_T. Now download these as below:FNDLOAD apps/$APPS_PASSWORD 0 Y DOWNLOAD $BNE_TOP/admin/import/bneint. Question: How do I execute Step 1.lct XX_HR_101_INTG.lct XX_HR_101_INTG. run the below SQL.lct XX_HR_41_INTG. =====Find the Layouts from layout names===== SELECT LAYOUT_CODE FROM bne_layouts_vl vl WHERE user_name IN ('Offer Letter for Job'. both in application PER (Application ID 800). SQL will be provided to identify the internal names. =====Find the MAPPING CODES from integrator names== SELECT mapping_code. use below commands FNDLOAD apps/$APPS_PASSWORD 0 Y UPLOAD $BNE_TOP/admin/import/bnelay.ldt BNE_INTEGRATORS INTEGRATOR_ASN="PER" INTEGRATOR_CODE="HR_101_INTG" FNDLOAD apps/$APPS_PASSWORD 0 Y DOWNLOAD $BNE_TOP/admin/import/bneint. run the below SQL. 'Denial of Job') ============== Above SQL can return values say XX_C_O_F_T & XX_CODE To download these layouts FNDLOAD apps/$APPS_PASSWORD 0 Y DOWNLOAD $BNE_TOP/admin/import/bnelay.ldt Question : Please demo how to FNDLOAD mappings in Web ADI Answer : To identify the mapping codes.lct XX_C_O_F_T. Lets say the two internal codes are HR_101_INTG & HR_41_INTG.lct XX_CODE. given that FNDLOAD requires the internal names of these entities.lct XX_CODE.ldt BNE_INTEGRATORS INTEGRATOR_ASN="PER" INTEGRATOR_CODE="HR_41_INTG" In order to upload these FNDLOAD apps/$APPS_PASSWORD 0 Y UPLOAD $BNE_TOP/admin/import/bneint.

10 environment.lct XX_HR_41_CNT. to reset their passwords? B: To assign all these 1000 users with a new responsibility.5. we need a script to do the following:A. which happens to be a new HRMS Self Service responsibility.WHERE integrator_code IN (SELECT integrator_code FROM bne_integrators_vl vl WHERE application_id = 800 AND user_name IN ('XX HR Reference letter'.lct XX_HR_86_MAP. 66 . My client: Hey Anil.lct XX_HR_101_CNT.lct XX_HR_101_MAP.lct XX_HR_101_MAP. use the below commands FNDLOAD apps/$APPS_PASSWORD 0 Y UPLOAD $BNE_TOP/admin/import/bnecont.ldt BNE_MAPPINGS MAPPING_ASN="PER" MAPPING_CODE="HR_86_MAP" To upload these files into a new environment.ldt BNE_CONTENTS CONTENT_ASN="PER" CONTENT_CODE="HR_41_CNT" Obviously to upload Web ADI contents. Lets say this SQL returns HR_101_MAP & HR_86_MAP --Now do the download FNDLOAD apps/$APPS_PASSWORD 0 Y DOWNLOAD $BNE_TOP/admin/import/bnemap. ftp the ldt files and run below commands on the new environment FNDLOAD apps/$APPS_PASSWORD 0 Y UPLOAD $BNE_TOP/admin/import/bnemap.ldt FNDLOAD apps/$APPS_PASSWORD 0 Y UPLOAD $BNE_TOP/admin/import/bnemap. This was tried and tested on 11. ===================== SELECT CONTENT_CODE FROM bne_content_cols_vl WHERE last_update_date > SYSDATE . We must not reset passwords of the employees which are active on that test environment.ldt API to Update FND_USER and Add Responsibility This article explains how you can reset the passwords and add responsibilities in APPS using scripts.lct XX_HR_41_CNT. we will now do FNDLOAD as below FNDLOAD apps/$APPS_PASSWORD 0 Y DOWNLOAD $BNE_TOP/admin/import/bnecont. ===================== CONTENT_CODE -------------HR_101_CNT HR_41_CNT For each content code returned by SQL above. Update fnd_user records for some 1000 users. 'XX HR Sorry Cant offer')) ORDER BY last_update_date DESC.ldt BNE_MAPPINGS MAPPING_ASN="PER" MAPPING_CODE="HR_101_MAP" FNDLOAD apps/$APPS_PASSWORD 0 Y DOWNLOAD $BNE_TOP/admin/import/bnemap.lct XX_HR_86_MAP. as to recognize the contents I had to use the date range to pick all the content codes configured in Web ADI during the past 90 days. C.ldt FNDLOAD apps/$APPS_PASSWORD 0 Y UPLOAD $BNE_TOP/admin/import/bnecont.ldt Question : Is FNDLOAD of Web ADI contents similar to above? Answer : Its slightly different.90 group by CONTENT_CODE .ldt BNE_CONTENTS CONTENT_ASN="PER" CONTENT_CODE="HR_101_CNT" FNDLOAD apps/$APPS_PASSWORD 0 Y DOWNLOAD $BNE_TOP/admin/import/bnecont.lct XX_HR_101_CNT.

hence the need for load test.inside the loop call fnd_user_pkg. how do you go about reseting 1000 passwords. I am not saying that this is bad design. Question : Are you saying that Self Service HR in Oracle does not use OA Framework Answer: Not saying that.. PRAGMA EXCEPTION_INIT(duplicate_responsibility ... Question: Why is my client so concerned about load testing self service HR? Answer: Workflows have their overheads. BEGIN OPEN c_get. it is possible to manage the state of a web based applications via something known as AM(Application Module). CURSOR c_get IS SELECT * FROM fnd_responsibility_vl WHERE responsibility_name = 'XX HR Employee Self Service'.again inside the loop call fnd_user_resp_groups_api. Now let me give you some background.Myself: Why do we need this done? My Client: Well. we not only have to reset passwords of fnd_user. handle exception in case the user already has that responsibility Question: How do you write that code? Answer: Here you go. That's the end of our talk. i INTEGER := 0.... NOTE: DO NOT RUN THIS ON PRODUCTION DECLARE duplicate_responsibility EXCEPTION.. .-20001). we need to load test the system by simulating 1000 concurrent self service HR users. Question: Why does Oracle Self Service HR use workflow to manage its state? Answer: Because SSHR was developed before OAF was invented by Oracle. FETCH c_get 67 . In fact Oracle has re-written most of its SSHR to use the OAF. you can spool the data from temp table . while the user is updating the same.updateuser . no_action_required EXCEPTION. Using OA Framework. but also need to assign each of those users a Self Service HR responsibility. Answer: Well. This is how we do it:Scripts steps:Loop for latest employee records in fnd_user.. excluding the recently logged in UAT users. but yet this begs to be load tested before goLive.insert_assignment (to assign new SSHR Responsibility) ----within the loop.. but beyond that SSHR uses some staging tables to capture before and after state of the personal information. The reason for this approach is that SSHR uses workflow to manage the state of its transaction. After the script has completed. the underlying workflow has been retained. Self Service HRMS kicks off a workflow each time a user logs onto system to either view or update their personal information. Question: OK... p_get c_get%ROWTYPE.. This alongwith workflow overhead may hit the system hard. but for some reasons(which I believe are legacy)..

x_unencrypted_password => 'abcd0123' . END IF. FOR p_rec IN (SELECT user_name. fnd_logins fl WHERE fl.x_password_date => SYSDATE + 500). user_id FROM fnd_user WHERE user_name NOT IN (SELECT fu.INTO p_get.user_id .user_id .application_id .start_date => SYSDATE .responsibility_application_id => p_get.description => 'Load testing SSHR on Test environment').user_id ) AND user_name NOT LIKE '00%' AND end_date IS NULL AND employee_id > 0 ORDER BY user_id DESC) LOOP i := i + 1.40 AND fu. fu. INSERT INTO xxschema.description => 'Access Reinstated via Load testing SSHR on Test environment').1 .x_owner => 'SEED' . fnd_user_pkg.user_name FROM fnd_user fu.responsibility_application_id => p_get.responsibility_id . COMMIT.responsibility_id => p_get. EXCEPTION WHEN duplicate_responsibility THEN fnd_user_resp_groups_api.fu_4_which_pwd_reset (user_id .end_date => NULL . --First 1000 users only IF i = 1001 THEN RAISE no_action_required.updateuser(x_user_name => p_rec.1 .start_date => SYSDATE .fu_4_which_pwd_reset.user_name .insert_assignment(user_id => p_rec. DELETE xxschema.user_name).user_name) VALUES (p_rec.update_assignment(user_id => p_rec.start_time > SYSDATE . END. BEGIN fnd_user_resp_groups_api.user_id .security_group_id => 0 .security_group_id => 0 .user_name.p_rec.responsibility_id . END LOOP.end_date => NULL .responsibility_id => p_get.user_id GROUP BY fu.application_id . 68 .user_id = fl. CLOSE c_get.

Forms Personalization in Oracle HRMS For quite some time I was thinking about publishing an article about forms personalization in Oracle HRMS.PERSON. value in field PERSON. the person title field should then toggle back to become optional. As per the Oracle forum request. OK.D_PTU_USER_PERSON_TYPE PERWSHRG. but what it lacks is a pictorial approach to implementing Forms Personalizations. I am a visual animal. When the Person Type field changes to a value that is anything but Employee.PERSON.PTU_ACTION_TYPE PERWSHRG. Please note that when Person type Employee is selected. Hence forms personalization must check conditions for below three fields PERWSHRG.d_ptu_user_person_type.SHOW_NUMBER I have tested the steps below myself.SHOW_NUMBER The demo below contains conditional check on “WHEN-NEW-ITEM-INSTANCE” of PERSON.value} = 'Employee 69 .person. The Metalink note on Forms Personalization is helpful.. Trigger Event: WHEN-NEW-ITEM-INSTANCE Trigger Object: PERSON. Whenever the person type changes. Create Employee) or by directly picking up a value from LOV on field “Person Type for Action”.PERSON. and they appear to work.PERSON. so I like to explain in that manner too. My first article in the series of Forms Personalization is in response to a question raised in Oracle Forum under Oracle Human Resources (HRMS ).g. If the Person Type is Employee. here we go. WHEN-NEW-ITEM-INSTANCE is fired for one for the below fields(depending upon how its changed). END..D_PTU_USER_PERSON_TYPE & PERWSHRG... Either by picking a dropdown list of Action (e.PTU_ACTION_TYPE When implementing this.D_PTU_USER_PERSON_TYPE is assigned a value of “Employee” Now the requirement is that for “Employee” field PERSON. their clients wants Person Title field to become Mandatory ( lets assume it is the title field for now). STEP 1 Create Personalization as below( to make Title field mandatory) Sequence: 50 Description: Make Person Title Mandatory when Person Type is Employee.D_TITLE must be made mandatory. you will have to replicate the steps in the demo for WNII on both PERWSHRG. There are two possible ways the Person Type can change.PTU_ACTION_TYPE Condition: ${item.PERSON.EXCEPTION WHEN OTHERS THEN COMMIT.

'xxyyzz') != 'Employee' 70 .PTU_ACTION_TYPE Condition: NVL(${item.d_ptu_user_person_type.value}.person.Check if Person Type is Employee in When New Item Instance Action Action Action Action Action Action Sequence: 10 Type: Property Object Type: Item Target Object: PERSON.D_TITLE Property Name: REQUIRED Value: TRUE Make Title mandatory when Person Type is Employee STEP 2 Create another Personalization as below ( to make Title field Optional) Sequence: 51 Description: Make Person Title Mandatory when Person Type is Employee. Trigger Event: WHEN-NEW-ITEM-INSTANCE Trigger Object: PERSON.

D_TITLE Property Name: REQUIRED Value: FALSE Make Title option when Person Type is not Employee 71 .Check if Person Type is anything other than Employee in When New Item Instance Action Action Action Action Action Action Sequence: 10 Type: Property Object Type: Item Target Object: PERSON.

I would like to explain different possibilities of Forms Personalizations. What are the various components of Forms Personalizations? Different components of Oracle Forms Personalizations are listed below. however it does provide an alternative to most common activities for which earlier one would use CUSTOM. first we will touch base upon what exactly it is.pll could cause version related headaches Does Forms Personalization replace CUSTOM. Why was forms personalization introduced by Oracle in 11. You begin with recognizing which Triggers/Events that you wish to trap and under what conditions.Forms personalisation In this article. 2. CUSTOM. 72 . Surely before explaining what can be done. Keep in mind that Oracle Forms Libraries first invoke the Forms Personalization.10? 1.pll? Not really.pll Forms personalization is driven by the same set of events as that for CUSTOM. Multiple developers working on same CUSTOM. The condition can be entered using the syntax as defined in the picture below.pll. How do I enable Forms Personalizations? Enable the personalizations using the Help/Diagnostics menu. even for trivial tasks.pll is a programmatic methodology for extending Oracle Forms.pll too for the same set of events. and then the CUSTOM.5.

73 .

You're Reading a Free Preview

/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->