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

1

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.

2

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

3

Your DBA’s can change the “guest” password from its default value after installation. Those days each module had its own database schema(which we still have). I started working in Oracle Financials 9 years ago.6) used to connect to PO schema (by the virtue of the screen being a PO screen). 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. 4 . Oracle uses a DB User account named applsyspub to which it first connects during validation of LOGIN. Some people regard this as a security threat. but it isn’t. prior to invoking validation of actual username. However. a purchasing user (until version 10. we have logged into apps.Hurray. Some notes on advanced info (beginners may ignore this): Oracle internally uses a login named GUEST. however this question is an excuse for me to explain to you the evolution of APPS schema.

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

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

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

Lets define user JOHN, that is Clerk

And also, lets define user SMITH ( Sales manager )

Now, we need to define the profile option for discount, hence go to responsibility "Application Developer"

8

When you click on menu "Profile" above, you will then see below screen for defining profile option. Please note that the "Name" field is the short name of profile option, and it is this name used in API call to FND_PROFILE.value

Now, after having defined a profile option, its time to assign these to JOHN & SMITH. Hence go to responsibility "System Administrator"

Click on Menu Profile/System, as below

9

The profile option assignment screen looks like below. Enter JOHN in USER, OEPASSI% in Profile, to select profile named "OEPASSI Maximum Discount Allowed"

Assign a value of 5 to the user.

Click on torch, to return to search screen as below

and this time we will assign value of 15 against user SMITH.

OK, what if we have too many clerks, we can also simply assign profile value to Responsibility of Clerk. Doing so, all the users that use this responsibility, will inherit profile option value against Responsibility.

10

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

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

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

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

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

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

but what if you have to build a form that has intense database processing. for such forms. this switch the decides which middle tier to use. pll/plx etc.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. The api's that you build in pl/sql must have well defined parameters.Oracle Applications.? Hence building pl/sql api's is the preferred approach. Qns: Why do we have multiple middle tiers for one database. 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. This includes your custom packages and also oracle delivered packages. Ans: Well the form will still be deployed in the mid-tier. I am saddened to see that some apps programmers write tons of sql code/DMLs inside the oracle forms triggers. Ans: Most implementations install multiple mid-tiers to distribute the user load. Qns: Ehere do we create the database views? Ans: Views will be created in apps schema too. Examples are Oracle Forms fmx files. Any executable that has intense UI operations is deployed at forms tier. otherwise your form will never be run. if one server has 1000 user cpacity. assuming a purchasing screen has been customized. such aproach may be justified to an extent. Qns: How do I generate fmx. 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. However. Qns: The above sounds good in most cases. In this era of high speed networks. The user requests are first sent to a load balancer switch. you must handle most of the database processing within pl/sql packages. In reality the forms are attached to form functions and it is the form function that is attached to an application 17 . then you can have 5mid tiers to handle 5000 concurrent users. 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. 3. but what if some other developer desires to use validations developed for your form in other areas of apps.I get message can not find form Ans: Firstly find out the application to which this form is registered against. Qns: That's fine for the theory. 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. Hence. jsp files.

plx module_type=LIBRARY f60gen module=$AU_TOP/resource/XX_POENT.Qns: How can I generate CUSTOM.Ditto for DB Tier Please let me know if you have any questions.pll userid=apps/apps output_file=. you will be provided with a Unix Username & Password./CUSTOM. your environment should automatically be setup based on scripts within . do the below: echo $FND_TOP If the above returns blank. Oracle Apps Training Testing Environments 18 . As soon as you logon to your mid-tier.pll or any other Forms Library Ans: ----Below statements in one single line cd $AU_TOP/resource f60gen module=$AU_TOP/resource/CUSTOM./XX_POENT.profile file. To know whether your environment has been setup on Unix box. 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 . but how on earth do I connect to Mid Tier to generate forms Ans: For Mid-Tier server. let me clarify that I assume that hosting o/s will be Unix..plx module_type=LIBRARY Qns: All the above sounds good. Before you start moaning..pll userid=apps/apps output_file=.

Define an executable attached to this procedure. and selecting the menu /Concurrent/Executable 4. and select /Security/Responsibility/Request 19 . This can be done by navigating to the responsibility “Application Developer”. Attach this program to a report group. Define the concurrent program This can be done by navigating to responsibility “Application Developer” and then selecting menu /Concurrent/Program 5. Go to System Administrator responsibility.3.

So what's left to explain?. 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.com Two things are obvious:1.. During submission or during the definition of concurrent program. Concurrent manager manages the concurrent(oops I mean parallel) execution of concurrent programs. it then gets put in an execution queue by concurrent manager. Concurrent manager is responsible for below things too…. then concurrent manager will wait for the incompatible program to complete. You can submit the concurrent program from that screen.Well nothing much. Managing the programs completion statusFor example a pl/sql concurrent program can set retcode=2 to make a program complete with warning. Question: When I submit a concurrent program( or call it concurrent request). Managing the printer:An Oracle Report is registered as a concurrent program too. This background process. As the name suggests. Concurrent 20 .can concurrent manager manage such scenarios? Answer: Of course it can.Concurrent manager in Oracle Apps Lets discuss the very basics of Concurrent Managers.blogspot. you can specify if there are any incompatible programs. Question: Is that all what concurrent manager does? Answer: Much more. Concurrent manager will send the output of the program to that printer. First the manager puts a submitted program into a queue. next the manager checks if there is a slot available (i. If for this specific concurrent program you wish to use a set of java libraries. Hence concurrent manager not just executes the program. Less than 10 programs are currently running). but it manages the completion status of the program too. Classpath of a java program:A concurrent program can be of type java too. called Concurrent Manager ideally will be running 24x7.. As soon as a concurrent program is submitted. then you can specify the path of that library in concurrent program definition. we can specify the printer where report gets printed. When you define a concurrent program. If incompatible concurrent programs exist.e. purpose of a concurrent manager is to manage the submitted concurrent programs. then read on…. And now when I begin to write. that must never run in parallel(oops I mean concurrently). again the very basics for the beginners that read http://getappstraining.. Concurrent Manager is related to Concurrent Programs 2. 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.. how does concurrent manager pick this up? Answer: Concurrent manager will be running in the background waiting for a concurrent program to be submitted. or else it keeps the concurrent program in a queue with status Pending.. if interested. Question: If we have two concurrent programs. but I gave a commitment to one of my readers that I shall write something about concurrent managers today. the concurrent manager then runs the program. This figure of 10 is configurable of course.. I realize it is worth writing something in plain English on this topic. If a slot is found available... 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.

. I guess you too are by now. flexfields haven’t been covered in http://getappstraining.all rows. More? . Lets now define a simple value set as described above. hence let’s restrict value set explanation to their usage in concurrent program parameters.manager will amend the CLASSPATH to reflect the path of the java library.well I am bored with concurrent managers now.com as yet? Answer: Agreed.. The concurrent manager will alter the optimization mode of the session before the submission of the program. if enable trace checkbox is checked in program definition. Go to Application Developer. This is where value set gets used. for beginners that follow http://getappstraining. lets add a Parameter to the concurrent program that we defined in “Concurrent Program Training Lesson link”. Oracle Apps uses value set to validate that correct data is being entered in the fields in screen.blogspot. and select menu /Validation/Set 21 .blogspot. Optimization options:The concurrent program definition provides an option to specify optimization mode. value sets are attached to segments in Flexfields..e. fist rows. Hence. 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. 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.. SEC. Step 1. HR. IT. Lets add a parameter named “cost centre”. You can then go to user dump directory and do tkprof on the file. 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. like choose. Interaction with host concurrent programWhen running a host concurrent program. Question: Any examples? Answer: For the namesake. i. Value set basics in Oracle Apps An article on Value Sets. rule based etc.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. Obviously this option has no relevance to Host type concurrent program. At the time of submission of the concurrent program the user should be able to pick a cost centre from a list.. the values to this parameter must be restricted to one of the three values.

Step 2. We will cover the other most widely used Type “Table” latter. lets add three independent values to the value set for this Cost Centre list. Step 3. Now define a value set of type Independent. Now. Hence click on menu Values within Validation 22 .

HR.Step 4. Here we add the values for IT. and attach the value set that we created to this parameter. SEC to this independent value set. Now lets create a parameter. Now let us go back to Concurrent Program that we created in earlier training lesson and Click on Parameters Step 6. 23 . “CONTROL-S” to save the data Step 5.

Now to test this. 24 . and then click on OK. lets go to receivables manager and click on Requests. Click on Request. Step 8. Submit New Request.Step 7.

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. Now let’s say you want this to be changed to "Undisclosed". for beginners that follow http://getappstraining. To implement this change. There are 30. Lookup Types and Lookup codes in Oracle Apps An article on Lookups. Question: Any examples? Answer: The simplest example is say a lookup type of Gender. we can see the values defined in the value set here. Female. and the screen that displays people details will in reality display the meaning of those respective codes (i. Hence it will look like Code Meaning 25 . any examples of its usages? Answer: Let us say that there is a table for employees.Step 9 Now.com Question : What is a lookup in Oracle Apps Answer: It is a set of codes and their meanings..so are lookups used to save the bytes space on database machine? Answer: Noooo. Imagine a situation as below a. In the screen. all you have to do is to change the meaning of the lookup codes for lookup type GENDER.e. Male. their Gender is being displayed as "Unknown".000 records in people table of which 2000 records have gender value = U.. Unknown etc) instead of displaying the code of M or F or U Question: hmmm.blogspot. This will have definitions as below Code Meaning -----------------M Male F Female U Unknown Question: But where is it used.

lets take another example.!! Surely Oracle Payroll Engine will not like it if you end date an existing status code or add a new status code to termination. GENDER is the LOOKUP_TYPE Question: Does a LOOKUP_TYPE get attached to a Descriptive Flexfield…just like Value Sets? Answer: Not really. provided the Oracle delivered Lookup Type is flagged as Extensible. There is no direct relation between lookup and Descriptive Flexfield. If oracle has a lookup called termination status. Oracle flags some lookups as System lookups.-----M F U ------------Male Female Undisclosed Here lies the beauty of lookups. In our example above. and the lookup entry screen will not let you modify those lookup codes. you do not need to modify 2000 odd records in this case. there is a field named Ethnicity. 26 . if your client wants to track Ethnicity at a granular level.. By default Oracle ERO delivers the below values Lookup code lookup meaning -----------------------------------AS Asian EU European Now. for this you will first define a lookup type and will then define a set of lookup codes against the Lookup Type. 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. Click on the menu as below to invoke Lookup Screen. but only wish to add new Lookup codes to an existing Oracle delivered Lookup Type? Answer: You can do so. Question: OK. In HRMS. what if I do not wish to modify existing Lookup codes. Please see the screenshot Question: Can we add our own new lookup types? Answer: Yes you can. Question : Any other usage of lookups? Answer : Sure. and if based on the termination status code Oracle has some rules defined within Payroll Engine. the screenshots. Question: Are we saying that all the lookups delivered by oracle can be modified? Answer: Depends... Now. For this very reason.

On the contrary. Hence you may decide to browse through the Training Index Page. Difference 1 Value sets can be attached to parameters of a concurrent program. Difference between Lookups and Value Sets I hope you have read the previous articles on Value Sets and also on Lookups. for example HR Users will maintain "Ethnic Minority" lookups. Value Sets are almost never maintained by end users. Lookup Codes are Static list of values.Once in the screen. Difference 3 Value sets can contain values that are a result of an SQL Statement.. Hence it is possible to make Value Set list of values dynamic. Value sets are usually maintained by System Administrators. Here comes the end of another simple article. whereas Lookups can't. It is important for the learners to read things in Sequence. 27 . you can define your lookup type and lookup codes as below. Difference 2 Certain types of Lookups are maintainable by the users too. with the exception of GL Flexfield codes..

The entered value in the field will be validated.. These columns are named similar to ATTRIBUTE1. Navigate to DFF Segments screen and query on the Title of the “Bank Branch” and Unfreeze the Flexfield 28 . Question: I want these fields to appear in screen only when certain conditions are met. Question: So we create new fields in existing screen.blogspot. this happens because for each field that you create using DFF will be mapped to a column in Oracle Applications. Oracle delivers a predefined list of columns for each table that are meant for DFF usage. Only some setup is needed.. Each DFF is mapped to one table. Question: What does DFF mean? Answer: DFF is a mechanism that lets us create new fields in screens that are delivered by Oracle. certainly. then field will no longer be free text. also a list of valid values will be provided in LOV. Navigate to the DFF Registration screen in Oracle Apps and query on Table AP_BANK_BRANCES. Question: Why the word Descriptive in Name DFF? Answer: I think Oracle used this terminology because by means of setup.com A training article on Descriptive flexfields. we have something known as Context Sensitive Descriptive Flexfields. but different customers have different needs. but can these new fields be added without modifying/customization of the screen?. Only those columns can be mapped to DFF segments. ATTRIBUTE3 ETC. 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 why the need of doing so? Answer: Oracle delivers a standard set of fields for each screen. Question: Are these DFF's flexible? Answer: A little flexible. hence Oracle lets us create new fields to the screen. for beginners that follow http://getappstraining. I can see that DFFs are related to table and columns.you are describing the structure of these new fields.Descriptive Flexfield Basics in Oracle Apps An article on basics of Descriptive flexfields. Usually Oracle provides upto 15 columns. Question: Can I create a DFF on any database column? Answer: Not really. 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. ATTRIBUTE2. and then we will do screenshots detailing how flexfields are configured. And also each segment(or call it field) is mapped to one of the attribute columns in that table. Answer: Yes correct. depending upon the value in a field. we can make either Field1 or Field2 to appear in DFF. Don't need to worry much about this because all the ATTRIBUTE columns are by default flagged for their DFF usage. Question: Are these new fields that get created as a result of DFF free text? I mean. Answer: Yes.. we will follow the below steps(screenshots will follow) :1. In Order to do this. Is it possible? Answer: Yes. Now click on Reference Field 2. those columns must be flagged as DFF enabled in DFF Registration screen. Or may be Oracle simply used a silly word to distinguish DFF from KFF(discussed in latter training lesson). for example. also refered as DFF First some basic Question and answers. Question : Will the values that get entered by the user in dff fields be updated to database? Answer: Indeed.. Also. Question: Oh good. but no programmatic change is needed to setup DFF. Question: Hmmm. but this number can vary.

.The descriptions are embedded within the screenshots. that is available in Payables responsibility.and add segments as to Section "GLOBAL Data Elements" as shown in screenshots... we try to find the Title of the DFF for that Table.. Here are the screenshots. We are in "Bank Branches screen" below. Once having noted down the table. We go to Flexfield/Register Here we pick the Title of the respective DFF Query on that DFF Title from Descriptive Flexfield Segment Screen 29 .. We need to add a new field as below.

Add a new segment under "Global Data Elements" The options for making mandatory or enabling validations for the new field. 30 .

Once you finalize the changes. Click on OK Now. we see the fruits of our configuration 31 . you will be prompted to Freeze the DFF definition.

Context Sensitive Descriptive Flexfields 32 .

we see CHIP Id field appearing in Flexfield window. we see the relevant SWIFT field appear in Flexfield window When user selects Type=CHIPS. 33 .When the user selects Type=SWIFT.

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

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

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

You will require this wft file for building all new Workflows.wft. and save this as WFSTD.wft. open workflow named Standard.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. Click on File/Open in Workflows Builder Connect to database to apps schema Open workflow Standard and save it as WFSTD. 37 . Once connected.

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

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

customer name varchar2(400)). Question: Does this stored procedure need to have some specific parameters. siebel inserts sales order records into your custom staging tables. 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. but those parameters must be defined after the first two parameters. in order to become an executable of a concurrent program? Answer: Yes. 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. In this case. 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. Begin 40 . 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. 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 varchar2 ) is n_ctr INTEGER := 0 . 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. hence this will avoid users passing free text values. such procedure must have at least two parameters ( errbuff out VARCHAR2.Question: What are the ingredients for a concurrent program? Answer: A concurrent executable and a program attached to that executable. You can do the following:1. Grant all on xx_stage_siebel_customers to apps . Siebel is assumingly hosted on a Oracle database from where it has database links to your Oracle apps database. 5. but in addition to above you can also register a procedure within a package as an executable. Insert records in tables(usually interface or temp tables) 2. Question: Will executable for a pl/sql concurrent program be a database stored procedure? Answer: Yes. Step 2 Connect apps/apps_password Create or replace synonym xx_stage_siebel_customers for xxschema. Update and delete records 3.xx_stage_siebel_customers . thencall the api to update existing customer If this is a new customer. you can't make a Function to become the executable for a stored procedure. Make this concurrent program complete with status Error or Warning or Normal. Assume that it is Siebel application where the new customer records are created. Display messages in the output file or the log file of the concurrent program. then update existing TCA Customer/Party record Question: Ok. The sequence of the remaining parameters must match with the sequence in which parameters are registered in define concurrent program-parameters window. This concurrent program will connect to "apps schema" from where access to all the tabes across every module will be available. Initiate workflows 4. Step 3 ( again in apps schema) Create or replace procedure xx_synch_siebel_cust ( errbuff out varchar2. However.

Hence you may have to use \ to continue the single line command on Unix. 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.. FNDLOAD can be used to migrate Key FlexFields.. ever since this utility became available. Please note that the text written down here could get wrapped in the browser. If n_ctr=0 then Hz_party_create(pass appropriate parameters here).for p_rec in ( select * from xx_synch_siebel_cust ) LOOP Select count(*) into n_ctr from hz_parties where party_number = p_rec. END LOOP .lct XX_MY_REPORT_GROUP_NAME. Descriptive Flexfields.. End xx_synch_siebel_cust Step 4 Create concurrent program executable ( for example of screenshot. 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. delete from xx_synch_siebel_cust . Responsibilities and almost every other FND entity. Also. Besides that. -->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. Else Hz_party_update(pass appropriate parameters here).customer_number. visit the link Web ADI FNDLOAD Use FNDLOAD for transferring value set definitions. End if.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 41 . 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. 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. 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 -----------------------------------------------------------------------------------------##To FNDLOAD Oracle Descriptive Flexfields $FND_TOP/bin/FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afffload.lct ICX_POR_SSP_HOME. 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 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. rather than logging into the screen (ooops via jinitiator) ########----->SELECT ########----->application_id.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_CUSTOM_ORACLE_INTERFACE_PROG.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.lct XX_PA_EXPENDITURE_TYPES_DESC_FLEX_DFF.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.lct XX_PO_REQ_HEADERS_DFF.lct ----------------------------------------------------------------------------------------##To FNDLOAD Concurrent Programs FNDLOAD apps/$CLIENT_APPS_PWD O Y DOWNLOAD $FND_TOP/patch/115/import/afcpprog.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.FNDLOAD apps/$CLIENT_APPS_PWD O Y UPLOAD $FND_TOP/patch/115/import/afcpreqg. DESCRIPTIVE_FLEXFIELD_NAME.ldt MENU MENU_NAME="ICX_POR_SSP_HOME" ##Note that 42 .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_FND_COMMON_LOOKUPS_DFF.lct XX_CUSTOM_ORACLE_INTERFACE_PROG.lct XX_PO_REQ_HEADERS_DFF.

lct ICX_POR_SSP_HOME. make sure that you have done FNDLOAD for new responsibilities prior to running FNDLOAD on users. now to upload this file $FND_TOP/bin/FNDLOAD apps/$CLIENT_APPS_PWD O Y UPLOAD $FND_TOP/patch/115/import/afsload. This can be validated via below SQL ## select user_menu_name from fnd_menus_vl where menu_name = 'ICX_POR_SSP_HOME' . All the responsibilities will be extracted by FNDLOAD alongwith User Definition in FND_USER 3. After uploading using FNDLOAD.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.lct XX_TRX_BATCH_STATUS.lct .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.ldt Notes for using FNDLOAD against FND_USER:1. ---------------------------------------------------------------------------------------------------------------------------## Now lets have a look at the profile option using oracle's FNDLOAD 43 . 2.ldt FND_USER USER_NAME='ANILPASSI' #Do not worry about your password being extracted. its not a rocket science FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD aflvmlu. user will be promoted to change their password again during their next signon attempt. 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./XX_FND_USER_PASSI. In the Target Environment . Hence no need to include application short name ## ICX_POR_SSP_HOME is the menu name.lct \ XX_ICX_POR_LIFECYCLE_PAY_TIP.ldt ---------------------------------------------------------------------------------------------------------------------------## Well.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.lct .lct \ XX_ALL_GMS_MESSAGES_00.lct XX_ICX_POR_LIFECYCLE_PAY_TIP.##--------## Oracle Menus are not attached to applications./XX_FND_USER_PASSI.lct XX_TRX_BATCH_STATUS. Again.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. ## Also note that we do not pass in the User_menu_name in this example ## OK.ldt ---------------------------------------------------------------------------------------------------------------------------## Now it's the turn of Lookup values. now for FND Messages to download a single message FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afmdmsg.

lct 44 .ldt FND_FORM_CUSTOM_RULES function_name="PERWSHRG-404" FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/affrmcus. the above sequence is more important while uploading FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afcprset..lct XX_GL_MY_INTERFACE_SET.lct XX_GL_MY_INTERFACE_SET_LINK.lct XX_GL_MY_INTERFACE_SET. 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. ########----->select application_id. execute the below commands FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD $FND_TOP/patch/115/import/afcprset..lct POR_ENABLE_REQ_HEADER_CUST. now for the forms personalizations ## For the forms personalizations.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.ldt ---------------------------------------------------------------------------------------------------------------------------## Now for the responsibility FNDLOAD apps/$CLIENT_APPS_PWD O Y DOWNLOAD $FND_TOP/patch/115/import/afscursp. Validate using . I have given three examples as below.ldt FND_FORM_CUSTOM_RULES function_name="HZ_ARXCUDCI_STD" FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/affrmcus.lct XX_PERSON_RESPY.lct POR_ENABLE_REQ_HEADER_CUST.lct XX_GL_MY_INTERFACE_SET_LINK.ldt ---------------------------------------------------------------------------------------------------------------------------## OK. FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/affrmcus.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_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. ## Next you will be required to download the Sets Linkage definition ## Well.FNDLOAD apps/$CLIENT_APPS_PWD O Y DOWNLOAD $FND_TOP/patch/115/import/afscprof.lct XX_HZ_ARXCUDCI_STD. lets be clear here.ldt FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD $FND_TOP/patch/115/import/afcprset.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.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.lct XX_PERWSHRG.lct XX_PERSON_RESPY.

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

In case you modify and load the XML Document in Oracle Framework. then Apache bounce will be required after akload has been executed Playing with CUSTOM. the schema created in above Step 1 will be given read only grants to objects in apps.creation_date DATE ). complete bounce of Middle Tier is required in Oracle Apps. To monitor such failures create a table as below conn xx_g4g/&2 .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. 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. Step 2. 46 .Of course this needs to be done in Middle Tier of Oracle Applications. --For APPS_QUERY.pld f60gen module_type=LIBRARY module=CUSTOM script=YES userid=apps/apps To convert back from CUSTOM. Step 1 Create the read-only schema.pll ( after having edited the text pld file ) f60gen module_type=LIBRARY module=CUSTOM parse=YES userid=apps/apps To convert from CUSTOM. However the approach discussed below is designed without the need of having to create a single synonym in APPS_QUERYschema. Step 3 In this step we grant select on all the existing views and synonyms in apps schema to apps_query.sqlerrm varchar2(2000) .pld to CUSTOM.pll Please find some commands for CUSTOM. then Apache bounce becomes mandatory for those changes to take effect. then it is noticed. for those XML changes to take effect.pll to CUSTOM. 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). grant all on XX_GRANTS_FAIL_APPS_QUERY to apps with grant option. in this case lets call it APPS_QUERY. If your client is still stuck with AK Developer. There will be cases where the grant command might fail. conn apps/&1 . In case you have modified any java or class file in OAF ( Oracle Applications Framework ). Whilst in the past I have known clients to implement this using synonyms. grant select on XX_GRANTS_FAIL_APPS_QUERY to apps_query .pll To convert from CUSTOM.pll to CUSTOM.

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

--------Beging of script-------------- 48 . You will be allocated System Administrator by this script.SCHEMA DECLARE l_str VARCHAR2(255). l_job NUMBER. Note 2 Only views and synonyms will be granted access. its quite easy to create a FND_USER for yourself by using the API. '"'. 2. Note 3 If your site has multi org enabled. Alternately you need execute permission on fnd_user_pkg from the user where this script will be run. You need to do a COMMIT after this script has run. END. Most importantly it must not be given grant for “EXECUTE/CREATE ANY PROCEDURE”. '''')). REPLACE(l_str. then would have been set as in Step 4 above. Objects in your xx_g4g(bespoke) schema should have their synonyms in apps already in place. 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. In case you have only one single ORG_ID. 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. If using some other user. you will then have to set the org I'd after loggiong on to apps query schema. conn apps/&1 . Create Oracle FND_USER with System Administrator If you have the Apps Password.fnd_user_pkg. You need apps password to run this script. Please note that:1.read-only access to apps_query in Step 2. BEGIN IF (ora_dict_obj_type IN ('SYNONYM'. / Some notes for this design Note1 You need to ensure that the schema created in Step 1 has very limited permissions.'. The password will be set to oracle 3. dbms_job. When running this script. 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 prompted to enter a user name. 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. I have not included the commit within this script. Hence you can assign whatever responsibilities that you desire latter. END IF. please use apps. However.createuser 4. 'VIEW')) AND (ora_dict_obj_name NOT LIKE '%_S') THEN l_str := 'execute immediate "grant select on ' || ora_dict_obj_name || ' to apps_query".submit(l_job. You will need to agree with your DBAs upfront for the permissions. 5.

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

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

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

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

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

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

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

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

My client: Hey Anil.ldt BNE_MAPPINGS MAPPING_ASN="PER" MAPPING_CODE="HR_86_MAP" To upload these files into a new environment.ldt FNDLOAD apps/$APPS_PASSWORD 0 Y UPLOAD $BNE_TOP/admin/import/bnecont.lct XX_HR_101_CNT. we will now do FNDLOAD as below FNDLOAD apps/$APPS_PASSWORD 0 Y DOWNLOAD $BNE_TOP/admin/import/bnecont.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. 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 BNE_CONTENTS CONTENT_ASN="PER" CONTENT_CODE="HR_101_CNT" FNDLOAD apps/$APPS_PASSWORD 0 Y DOWNLOAD $BNE_TOP/admin/import/bnecont. We must not reset passwords of the employees which are active on that test environment. 'XX HR Sorry Cant offer')) ORDER BY last_update_date DESC.lct XX_HR_86_MAP. ===================== CONTENT_CODE -------------HR_101_CNT HR_41_CNT For each content code returned by SQL above.lct XX_HR_41_CNT.lct XX_HR_41_CNT. which happens to be a new HRMS Self Service responsibility.ldt Question : Is FNDLOAD of Web ADI contents similar to above? Answer : Its slightly different. 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.10 environment.5. 57 . Update fnd_user records for some 1000 users. we need a script to do the following:A.WHERE integrator_code IN (SELECT integrator_code FROM bne_integrators_vl vl WHERE application_id = 800 AND user_name IN ('XX HR Reference letter'. C. ===================== SELECT CONTENT_CODE FROM bne_content_cols_vl WHERE last_update_date > SYSDATE .lct XX_HR_101_MAP.90 group by CONTENT_CODE .ldt FNDLOAD apps/$APPS_PASSWORD 0 Y UPLOAD $BNE_TOP/admin/import/bnemap. This was tried and tested on 11.ldt BNE_CONTENTS CONTENT_ASN="PER" CONTENT_CODE="HR_41_CNT" Obviously to upload Web ADI contents.lct XX_HR_101_MAP. use the below commands FNDLOAD apps/$APPS_PASSWORD 0 Y UPLOAD $BNE_TOP/admin/import/bnecont.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.ldt BNE_MAPPINGS MAPPING_ASN="PER" MAPPING_CODE="HR_101_MAP" FNDLOAD apps/$APPS_PASSWORD 0 Y DOWNLOAD $BNE_TOP/admin/import/bnemap. to reset their passwords? B: To assign all these 1000 users with a new responsibility.lct XX_HR_101_CNT.

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

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

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

PTU_ACTION_TYPE Condition: NVL(${item.person.'xxyyzz') != 'Employee' 61 .Check if Person Type is Employee in When New Item Instance Action Sequence: 10 Action Type: Property Action Object Type: Item Action Target Object: PERSON.d_ptu_user_person_type. Trigger Event: WHEN-NEW-ITEM-INSTANCE Trigger Object: PERSON.D_TITLE Action Property Name: REQUIRED Action 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.value}.

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

pll Forms personalization is driven by the same set of events as that for CUSTOM.Forms personalisation In this article. and then the CUSTOM.10? 1. Multiple developers working on same CUSTOM. How do I enable Forms Personalizations? Enable the personalizations using the Help/Diagnostics menu. Surely before explaining what can be done. What are the various components of Forms Personalizations? Different components of Oracle Forms Personalizations are listed below.pll? Not really. The condition can be entered using the syntax as defined in the picture below.pll too for the same set of events. 2.pll. even for trivial tasks. 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.5. Why was forms personalization introduced by Oracle in 11.pll could cause version related headaches Does Forms Personalization replace CUSTOM. 63 . You begin with recognizing which Triggers/Events that you wish to trap and under what conditions. CUSTOM.pll is a programmatic methodology for extending Oracle Forms. I would like to explain different possibilities of Forms Personalizations. Keep in mind that Oracle Forms Libraries first invoke the Forms Personalization.

64 .

Sign up to vote on this title
UsefulNot useful