Sunday, 9 October 2016

Steps to Create a Master-Detail Form

STEP-1 : Open Oracle Forms Builder and Delete Defaults

1) Open Oracle Forms Builder, When Forms Builder starts, an empty form is  automatically created named Module1. Select Forms and open Template.fmb from  your Developer Suite installed directory (for me it’s: D:\DevSuiteHome_1\forms) and  then save it as ‘XX_MasterDetail.fmb’ in same directory.

2) Delete the default Data Blocks (BLOCKNAME, DETAILBLOCK), Canvases    (BLOCKNAME), Windows (BLOCKNAME) and then Click save. By default, Forms  saves files in the \forms directory of your Developer Suite installation. You may want to save it in a different directory; if desired, you can create a new directory  called MyForms in which to save the custom forms.

Fig : Before Deleting form Defaults

Fig : After Deleting form Defaults

STEP-2 : Creating Windows and Canvases

1)   Let’s first create a window. To create a window, select the Windows node in the Object  Navigator, then click Create (‘+’ sign on the left toolbar).
2)    Once the window is create then assign the proper properties as below :

Name                        : XX_MASTER_DETAIL_WIN
Subclass Information : WINDOW
Title                          : Department-Employees


3)    Now let’s create a content canvas. To create canvas, select the Canvases node in the Object Navigator, then click Create (‘+’ sign on the left toolbar).
4)    Assign the following properties to the newly created canvas.
Name                          : XX_MASTER_DETAIL_CAN
Canvas Type               : Content
Subclass Information : CANVAS
Window                      : XX_MASTER_DETAIL_WIN


5)    Now go to Window (XX_MASTER_DETAIL_WIN) and assign a Primary Canvas for it as below.


6)    Go to form level ‘PRE_FORM’ trigger and modify the code i.e. write your window name as first window.
Similarly, got to APP_CUSTOM (Package Body) and write your window name in place of <your first window>.

Fig : Pre-Form Trigger Code

Fig : App_Custom(Packae Body) Code

STEP-3 : Building Data Blocks

We have to create one master and another details block for master block. Here XX_Departments_Blk is master block and XX_Employees_Blk is details block.

-- Building Master-Block and it’s Layout

1)    Select the Data Blocks node in the Object Navigator, then click Create (‘+’ sign on the left toolbar).


2)    Immediately, the window for the new Data Block will pop up. Select “Use the Data Block wizard” and click OK.


3)    Select “table or view” as your data block type, and click Next.


4)   Click on browse button then immediately a pop up window will open for database connection. Enter valid credentials and connect to database.


5)  Select Departments table (XX_DEPT) and click Refresh,then all department columns will appear under Available Columns list. Click on double right arrow to move all columns under data block items. Then clink Next.


6) On click of ‘Next’ the next navigation window will be for creating master-detail relationship but as XX_Departments_Blk block is master block so no need to create relationship for this block. Thus Click Next.

Rename Data Block Name as ‘XX_Departments_Blk’, Click Next.


7)    Select Create the data block, then call Layout Wizard and click Finish.


Once you click Finish for Data Block Wizard then a new Layout Wizard window will open where you can assign canvases for your data block items and design the layout as tabular or form.

8)    Select Canvas as ‘XX_MASTER_DETAIL_CAN’ and click Next.


9) Drag all your display items from Available Items section to Displayed Items    section and click Next.


10) Check all your Prompt, Width, and Height. If you want to alter Prompt, Width, and  Height then alter it and then click Next.


11) Select the display layout i.e. either Form or tabular. But as Departments is my  master section so I will select form layout to display single record for it. Thus select  Form and click Next.


12) Give
Frame Title              : Departments
Records Displayed  : 1
Click Next and then click Finish.



By now successfully you have designed the Data Block and assigned data block items to corresponding canvas. Now it’s time to arrange data block items on canvas as you want.

Once alignment of items on canvas is done then let’s assigns Subclass Information for blocks and items of blocks.

13) Select ‘XX_DEPARTMENTS_BLK’ and provide subclass ‘BLOCK’. 


14) For all items DEPTNO, DNAME and LOC of ‘XX_DEPARTMENTS_BLK’ block provide subclass information as ‘TEST_ITEM’. 


15) Select frame of ‘XX_MASTER_DETAIL_CAN’ canvas assign subclass information as ‘FRAME_RECT’. 


Now our Master-Block and its Layout is ready. Hence, let’s start with Child-Block.

--Building Child-Block and it’s Layout 

1)    Follow steps 1-4 of ‘Building Master-Block and it’s Layout’.
2)    Select Employees table (XX_EMP) and click Refresh,then all employee columns will appear under Available Columns list. Click on double right arrow to move all columns under data block items. Then clink Next.


As Employees is our child block so we have to create master-detail relationship for it. Thus, next step is creating master-detail relationship.

3)    Remove the check sign from the check button beside “Auto join data block”. Then click on create relationship button.


4)    Select “based on a join condition” as a relation type then click OK.


5)    Select Department table as a related data block then click OK.


6)    Select the name of the column in the Employee table under Detail item (FK name: DEPTNO), and its name in the Department table under the Master item (PK name: DEPTNO). Check the join condition if it’s correct then Check the Auto-join data blocks, click next.


7)    Rename Data Block Name as ‘XX_Employees_Blk, Click Next.


8)    Select Create the data block, then call Layout Wizard and click Finish.


Once you click Finish for Data Block Wizard then a new Layout Wizard window will open where you can assign canvases for your data block items and design the layout as tabular or form.
9)    Select Canvas as ‘XX_MASTER_DETAIL_CAN’ and click Next.


10) Drag whichever items you want to display from Available Items section to Displayed Items section and click Next.


11) Check all your Prompt, Width, and Height. If you want to alter Prompt, Width, and Height then alter it and then click Next.

12) As Employees is details section i.e. for one master (Department) there can be many      details (Employees) records thus select Tabular layout and click Next.


13) Give
                Frame Title             : Employees
                Records Displayed : 10
               Click Next and then click Finish.


14) Assigns Subclass Information for blocks and items of blocks as done for master    block (Refer Steps 14,15,16 of ‘Building Master-Block and it’s Layout’).

Finally your form layout should look like below –


Save your work and compile the form.
There should not be any error if you have followed all the steps correctly… :)

Congratulations!!!
You have successfully designed a Master-Detail form. Now register your form in Oracle Apps and run it. You will get an output window as : 


Note : When you will create Master-Details relationship you can see few triggers (ON-            POPULATE-DETAILS,ON-CHECK-DELETE-MASTER) will get                                     automatically added for master (XX_DEPARTMENTS_BLK) block and a                        relationship will get created (XX_DEPARTMENTS__XX_EMPLOYEES_B).



If we will change the Delete Record Behavior property, the triggers will automatically change accordingly.
1
. Non-Isolated :( Triggers are automatically generated under the master data block)
a) ON-POPULATE-DETAILS
b) ON-CHECK-DELETE-MASTER
2. Cascading
 :( Triggers are automatically generated under the master data block)
a) ON-POPULATE-DETAILS
b) PRE-DELETE
 
3. Isolated :( Triggers are automatically generated under the master data block)
a) ON-POPULATE-DETAILS


What does the above three properties mean basically?

Non-Isolated : Prevents deletion of master record if detail record is present.

Cascading : Deletes the detail record once master record is deleted.


Isolated : Only deletes the master record.

HAPPY  LEARNING...!!!










Sunday, 25 September 2016

Steps to Develop Oracle Apps Custom Form

Form Name                  :  XX_Sample.fmb
Deployed Application  :  Order Management
Responsibility              :  N01 OM Access


STEP 1: COPYING FILES FROM THE SERVER

a) Copy TEMPLATE.fmb file from $AU_TOP/forms/US folder to a local directory.      Also download APPSTAND.fmb file and place it in your form directory (for me its  D:\DevSuiteHome_1\forms).

b) Copy All PL/SQL Libraries from $AU_TOP/resource/US folder (one time only).  Download all the .pll and .plx files to your form directory (for me its    D:\DevSuiteHome_1\forms).

STEP 2: DESIGN THE FORM IN ORACLE FORMS BUILDER

a) Remove the Defaults

              >Open Oracle Forms Builder
              >Open the form TEMPLATE.fmb
              >Rename the form (ex XX_SAMPLE)
               >Delete the followings from object navigator.
                      >Go to Data Blocks and delete BLOCKNAME, DETAILBLOCK
                      >Go to Windows and delete BLOCKNAME
                      >Go to Canvases and delete BLOCKNAME



b) Create a new Window and rename it (ex XX_SAMPLE_WIN). Open the property  palate, assign Subclass Information as Window.
To open the property palate select the object and press F4.

NOTE: Assign ‘Subclass Information’ for each and every object you create.



c) Create a new Content Canvas and rename it (ex XX_SAMPLE_CAN). Provide ‘Subclass Information’ as Canvas and attach it to the new Window (XX_SAMPLE) via Property Palate.
Subclass Information for Content Canvas ->  CANVAS
Subclass Information for Stacked Canvas ->  CANVAS_STACKED
Subclass Information for Tab Canvas        ->  TAB_CANVAS


d) Create a new Data block using Data Block Wizard and name it (ex XX_DEPT_BLK). Provide ‘Subclass Information’ as Block. Also provide Subclass Information for all block items (i.e. for  DEPTNO,DNAME,LOC).


e) Modify the PRE-FORM Trigger

  >Go to triggers --> PRE-FORM
  >Original Code:                   
-----------------------
FND_STANDARD.FORM_INFO(‘$Revision: 120.0 $’, ‘Template Form’, ‘FND’,
‘$Date: 2005/05/06 23:25  $’, ‘$Author: appldev $’);
 app_standard.event(‘PRE-FORM’);
 app_window.set_window_position(‘BLOCKNAME’, ‘FIRST_WINDOW’);
                      
  >Modified Code:
 ------------------------                     
  FND_STANDARD.FORM_INFO(‘$Revision: 1.0 $’, ‘XXARCUST_1’,’CUST_FORM’,
  ’$Date: 2010/01/06 16:25  $’, ‘$Author: Laxya $’);
   app_standard.event(‘PRE-FORM’);

    app_window.set_window_position(‘XX_SAMPLE_WIN′, ‘FIRST_WINDOW’);

               > Compile the code and Save it.

f) Modification for Program unit

             > Go to APP_CUSTOM*(Package Body)
             >Type your First window name in place of <your first window>
             > Compile the code

STEP 3: DEPLOY THE FORM IN THE SERVER

                         > Upload your .fmb file to the server.

STEP 4: CREATE THE .fmx FILE IN THE SERVER IN DESIRED TOP

>Compile command in UNIX R12

#For R12
$ORACLE_HOME/bin/frmcmp_batch module=$HOME/laxya/XX_SAMPLE_EMP.fmb userid=<username>/<password>  output_file=/$ONT_TOP/forms/US/XX_SAMPLE_EMP.fmx module_type=form  compile_all=special

#For R11i
$ORACLE_HOME/bin/f60gen module=$HOME/laxya/XX_SAMPLE_EMP.fmb userid=<username>/<password>  output_file=$ONT_TOP/forms/US/XX_SAMPLE_EMP.fmx module_type=form  compile_all=special

STEP 5: REGISTERING THE FORM IN ORACLE APPS

a) Registering the FORM in Oracle Apps

> Go to Application Developer  —> Application —> Form
                        > Give the details:
                         FORM                  : XX_SAMPLE(name of the custom form) 
                         APPLICATION   : Order Management
                         User Form Name : XX_SAMPLE FORM
                         Description          : Sample form
                        > save

b) Registering the FORM to a form function

                        > System Administrator —->Application —-> Function
                        > Give the details:
                         Form                          : XX_SAMPLE
                         Function                    : XX_SAMPLE
                         APPLICATION         : Order Management
                         Properties —> Type  : Form
                         User Function Name : XX_SAMPLE Function
                        > save

c) Finding the menu to which the above form function is to be attached. Again the menu is attached to a responsibility. So we have go in the reverse order to find the menu name.
      > System Administrator —->Security —-> Responsibility —->Define
      > Press F11
      > Responsibility Name: N01%OM%Acc% (searching for N01 OM Access )
      > Press Ctrl + F11

     > This things will come in the form
                Responsibility Name: N01 OM Access
                Application: Order Management (will come automatically )

     >Take the Menu name   —> ONT_SUPER_USER - India
                      
d) Attaching the function to a Submenu of the above Main menu

                        > System Administrator —->Application —> Menu
                        > Press F11
                        >User Menu Name : ONT_SUPER_USER - India
                         > Press Ctrl+F11
                        > Create a new
                        > Prompt : Sample Form (It will display in the navigator)
                        >Function: XX_SAMPLE (Attach the function to the submenu XX Custom)
                        > save
                        >One request has been submitted to recompile your menus in the database
e) Viewing the request submitted in the background to recompile the menus to attach the function
                        > Go to View——–>Requests———>Find
                        >The status should be :Compiled  Normal

STEP 6: VIEWING THE FORM IN ORACLE APPLICATION

                        >Go to Oracle apps front end.
                        >Login with username and password
                        >Go to N01 OM Access —> XX Custom —> Sample Form


ENJOY LEARNING!