Académique Documents
Professionnel Documents
Culture Documents
ERP
ORACLE APPLICATIONS
Reference books
DDL Commands
DML Commands
TCL Commands
Quarries, Sub Quarries
Operators
PL/SQL
Reference books by author Scott Urman
Cursors
Trigger
Packages, Procedure, Functions
Forms 6i
Reference books by Evan Baris
Canvases types functionality
Property Classes
Visual attributes
Programe Units
Record Group
Triggers Sequences
Form functions like call form
Reports 6i
Variables like Bind, Lexical
Columns - like Summery, Placeholder, Formula
Report Triggers 6 types and sequence
Format Triggers and Validate triggers
Layout objects
o Frame
o Repeat frame
o Anchor
o Boilerplate
R
I
C
E
Reports
Interfaces
Conversion
Extensions
Reports 6i
Programs, SQL, PL/SQL
Programs, SQL, PL/SQL
Forms 6i
I)
Types of Projects
a. Implementation Project: Client will be using another software to
maintain the business solutions.
Now the client wants to have Oracle
Applications package to capture the data. That time we will start setups,
data conversions, gap analysis, functions document preparation from the
scratch. - first time
Old System
New System
Cobal
Fox Pro
Oracle Apps
Migration
Manufacturing Modules
(Customization and
Integration)
New Version
11.5.9 or 11.5.10
Version
10.7
Version
10.7
11.0.3
11.5.3
11.5.4
11.5.5
11.5.6
11.5.7
11.5.8
11.5.9
11.5.10
Database
Oracle 7
Oracle 8
Oracle 9i
Oracle 9i
Oracle 9i
Oracle 9i
Oracle 9i
Oracle 9i
Oracle 9i
Oracle 10g
GUI
Forms 4.5, Reports 2.5
Forms 6i, Reports 6i
Forms 6i, Reports 6i
Forms 6i, Reports 6i
Forms 6i, Reports 6i
Forms 6i, Reports 6i
Forms 6i, Reports 6i
Forms 6i, Reports 6i
Forms 6i, Reports 6i
Forms 6i, Reports 6i, Java, JDeveloper
II)
Types of Modules
Module: Module is nothing but one application it contains forms, reports and
programs which are related for specific business functionality.
Example: PO Module This will be used to capture purchasing information like
suppliers, their contact details, supplying material, unit price and discounts and so
on.
ERP
Financial
AP Accounts
Payable
Manufacturing
PO Purchase
Order
HRMS
People
AR Accounts
Receivables
FA Fixed Assets
Inv Invoicing
Payroll
CRM
Customer
Relationship and
Management
Tele Services
WIP Work in
Process
BOM Bills of
Materials
OM Order
Management
Production
Benefits
Service Contract
Mobile Process
CM Cash
Management
GL General
Ledger
PA Project
Accounting
MRP Schedules
Enquiring
III)
Modules Integration :
WIP
Production
Supplier
Inventory
BOM
MRP Scheduling
PO
QA
Testing
AP
GL
AR
HRMS
FA
CM
OM
Sales, Shipping
Number
MDO 50
MDO 70
MDO120
Name
Functional Design Document
Technical Design Document
Migration Document
Prepared by
Functional Consultant
Technical Consultant
Technical Consultant
CVO40
Functional Consultant
CVO 60
Support
CR Document
Technical Consultant
Technical Consultant
NOTE:
Migration Document is two types
1) Installation Process: Installation Stages or three types development, testing,
production. If any of the form or report is developed, when it is moving from one
instance to another instance, to be moved all the components of that. Example
functions, procedure, packages etc. This process will be done by DBA.
2) Execution Process: In this the execution of the form or report with a screen
shoot to be specified along with the functionality
CR Document:
The document tell about the request made by the client, it could be very small change
like single filed to be added or deleted to the form or procedure to be deleted.
Windows (Client)
FTP
FTP
Linux (Server)
Windows (Client)
APPL_TOP
CUS_TOP
PO_TOP
AP_TOP
GL_TOP
11.5.0
11.5.0
11.5.0
11.5.0
INV_TOP
11.5.0
AR_TOP
11.5.0
Forms
Reports
SQL
PL/SQL
BIN
Mesg.,
Out
Admin
US
US
.SQL
.outfile
Admin
script
..rdf
C Prog
.java
.ctl
.shell
script
.msg
..fmx
.proc
.func
.pkg
.pkgsc
.pks
Custom_ TOP:
Custom top will be created by customer (client) for the custom development and
customizations. At least one custom top is required for every client. We can
have multiple custom tops also as per the requirements
NOTE:
1) We are not suppose to develop are customize the product tops like AP, AR, GL, PO
2) If oracle applies the patches (scripts) against the application the script will over right
both developments and customization whatever we have done. That is the reason
we will us custom top. Oracle will not touch the custom top and it will not provide any
type of support.
US Folder:
This folder is language specific by default American English language will be
implemented. If we want to have multiple languages we can implement in Oracle
Applications by specifying different folders. This folder is only applicable for
Forms and Reports because both are GUI objects.
Select * from FND_LANGUAGE where installed_flag in (B, I)
Flag B - Base language,
Flag I - Installed language,
Flag D - Disable language
11.5.0 Folder:
This oracle application release name based on the release it will be specified
10.7
10.7
11.0.3
11.0.3
11.5.3
11.5.4
11.5.0
11.5.5
11.5.6
11.5.7
11.5.8
11.5.9
11.5.10 11.5.10
Cheque
Buyer
GL
PO
Monitor
IBM
1745/-
Stockpet
Invoice
Schema
PO
Schema
AP
Schema
HRMS
Schema
INV
APPS
AR
AP
HRMS
APPS Schema:
This one of the Schema in Oracle Applications database it contains only
synonyms. It has got access other schema database objects
PO Schema:
It contains only PO Objects like PO Tables Indexes, Sequences, and views and
materialized views and so on. It will connect to PO Schema we can access only
PO objects. We cant access other schema database objects.
NOTE
We are not suppose to create tables in apps schema, we will create the tables in
custom schema then we will provide grants to apps schema
While development of forms, reports, programs we will always connect to apps
schema in oracle applications.
AOL Application Object Library
Yellow Color Mandatory Fields, White Color Optional Fields, Gray Color Read Only
Effective Dates : From To
Some of the records we cant delete in Oracle applications instead of the we will
effective dates From and To to enable or disable the record.
Who columns in Oracle Applications
Ever Database table contains following Colums.
CRETED_BY
CREATION_DATE
LAST_UPDATED_BY
LAST_UPDATED_DATE
LAST_LOGIN_DATE
User Id
System date
User ID
System Date
System date
When we create
When we Updated
Login system date
When we go to Record History option we can find all the who columns
Help Record History
Executables
.rdf
.sh
.sql
.proc, .fun, .pck
.C
.proC
.ctl
.prl
Reports
Unix Shell Script
SQL
PL/SQL
C Programe
ProC
Sql * loader
Perl
10
Concurrent Programe
Is nothing but instances of execution file along with parameter and incompatible
programs
We can register 11 types of executable as Concurrent Programe
Advantages
o We can execute multi language programmes as Concurrent Programe
o When we run Concurrent Programe we can utilize 100% local machine
hardware capacity
o We can change the Concurrent Programe output based on employee
profile
o We can submit only Request
o We can schedule the Concurrent Programe as per client requirement.
Report Registration
1) Develop the report (.rdf) as per client requirement by using Reports 6i Builder
2) Move the report from the local machine in to the server
a. CUS_TOP\11.5.0\reports\US .rdf (or)
b. PO_TOP\11.5.0\reports\US .rdf
3) Select System Administrator
a. Create Executable
b. Executable name
c. Application Name
d. Execution Method
e. Report (.rdf) file name
4) Create Concurrent Programe and attach
a. Executable
b. Parameters
c. Incompatibilities
5) Create Request group and attach Concurrent Programe
6) Create Responsibility
a. Request Group Concurrent Programe
b. Data Group Collection of User IDs
c. Menu Collection of forms
7) Create user attach Responsibility to the user
8) User will select the responsibility and go to SRS (Standard Request Submission)
window submit the request
Executable => Concurrent Programme => Request Group => User=> SRS
Note: For Single Executable we can have different concurrent programs with different
parameters
To create simple report with below SQL statement
Select User_ID, User_name, Trunc(creation_date) from fnd _user
11
Executable:
After moving .rdf in to the server, we will crate executable by specifying execution
name execution method and application name.
Concurrent Programe:
After creation of executable we will create concurrent Programe by attaching
executable, if parameters are there we will attach parameter if incompatibility
programs are there we will add those programs , for single executable we create
multiple concurrent programs with different parameters.
Request Group:
After creation of concurrent program we must add the programme to the request
group. Request Group is nothing but collection of Concurrent Programs and
Reports.
Responsibility:
It is level of authority where we will combine Data Group, Request Group and
Menu. Request Group is optional menu and data group is mandatory.
Data Group:
Data Group is nothing but collection of applications names and Oracle User
Names based on this Username data will be retrieved from database.
Menu:
Menu is nothing but collection of functions (forms) and submenus.
Create a simple report using below query
Select * from PO_VENDORS
Vendor_ID, Vendor_Name, Creation_Date
Navigation
Executable Window - Concurrent=>Programme=>Executable
Concurrent Programem Window - Concurrent=>Programme=>Define
Request Group Security=>Responsibility=>Request
Responsibility Security=>Responsibility=>Define
User Security=>User=>Define
SRS Window View Menu => Requests
To find out output file path and log file path we will write the below select
statement
Select logfile_name, outfile_name from fnd_concurrent_requests
Where Request_ID =
;
12
13
Value Set: values set is nothing but list values. It will be used to validate values
while entering the parameters.
Token: Token is one the filed wile be used to map concurrent Programe
parameters with report builder find variable. We will enter the find variable name
in the toke field so that parameters will be passed to the find variable.
Required check box: By using this check box we cant make the parameters
mandatory or optional
Enabled Check Box: By using this we can enable or disable the parameter.
Display Check Box: By using this we can hide or display the parameters in SRS
window.
Range Option: While defining the from and to parameters if we wanted to accept
values in accession order menus from values is low and to value is high we will
select the options called low and high.
Default Types: If we are hiding the parameters user cant enter the values that
time we can pass default values by using default type and default value filed.
SRS Window Copy Button: This will be used to find out recent Concurrent
Programe list with parameters in SRS Window.
Default Types
14
When we are hiding the parameter in SRS windows user cant enter the values that time
we can pass values internally by using defaults types.
1) Constant: If we want to pass constant values as default then we will select
default type constant and we will specify the values in default value field.
2) Current Date: System Date
3) Current Time: System Time
4) Profile: By using the profile option we can pass user profile values as default
5) SQL Statement: When we want to pass select statement to rest as default
values that time we will select default types as SQL statement and write the
select statement in the default values filed. Select statement should not return
more then one value.
6) Segment: When we wanted to pass previous parameter values as default to the
next parameter then we will use segment, select default type as segment give
the parameter name in the default values field.
Report Builders
Data Model
Select User_ID, User_name, Trunc(creation_date) from fnd_user;
Layout Model
Object Navigator
User Parameters
1) P_From_Date - Date - Input Mask
2) P_To_Date Date Input Mask
3) P_Title Character 100
Data Model
Select User_ID, User_name, Trunc(creation_date) from fnd_user
Where trunc (creation_date) between: P_From_Date and: P_To_Date
Create a Summery Column
Count of UserIDs
Oracle Applications
To register the parameter
P_From_Date Values Set FND_DATE
Default Values.
P_From_Date Current Date
P_To_Date Current Date
15
P_Title Constant
To hide parameter To Uncheck the Display Check box in bottom of the form
To write SQL Statement Min and Max creation Date
Select MIN(TRUNC(CREATION_DATE)) FROM FND_USER
Select MAX(TRUNC(CREATION_DATE)) FROM FND_USER
Default values type SQL Statement option
Default Value field SQL Statement
Segment
Default Type as Segment Option
Default Values Specify the previous parameter
VLUES SETS - Application Validation Set
Value set is nothing but list of values with validation. It will restrict the user to enter valid
values. These are 8 types.
1) NONE : When we write maintain some format conditioning NO LOV
Emp NO:
=> Only nos. 0 9
=> 35 to 7856
=> 45 to 0045
2) INDEPENDENT: Yes LOV user must select values from the list
3) DEPENDENT: Yes LOV The value which will depend upon the previous
parameter
Country Code:
City Code:
i.e. based on the selection of country code lov city code lov will change
16
1) NONE a. When we want to restrict the user to enter the values based on some
conditions then we will use NONE type. Here no list of values user
manually will enter the value based on the conditions values will be
accepted.
b. Enter the values set name select format type enter the minimum size
select validation type as NONE.
c. Once the value set is created we can use it for any concurrent program
either single time or multiple times.
d. Once the value set is created we cant delete if value if value set is being
used by concurrent program if we want to delete release from the
concurrent program then we can delete by using delete option.
2) INDEPENDENT
a. Provide the values to the user either number or character creates the
independent value set to enter the values for the value set ApplicationValidation-Values
b. If we want to provide list values to the user we will go for selecting
independent values set type user must select the values from the list.
c. Open the value set for an enter value set name select format type and
select validation type as Independent.
17
d. Copy the value set name go to values screen enter the values set name
and click Find enter the values in the values field save the transactions
attach value set to concurrent program.
e. Once the values are inserted in to the list we cant delete instead of
deletion we can disable by using enable check box or effective date from
and to.
3) DEPENDENT
a. Dependent value set is nothing but another LOV but values will be
changing based on the previous Independent value set.
b. When we are creating dependent we must have 2 parameters
1)Independent 2) Dependent
c. Open the value set form create Independent value set go to values from
enter the values.
d. Open the values set form create dependent value set by selecting
validation type as dependent.
e. Select edit information button attach Independent value set what ever we
have created.
f. Copy the value set name go to values screen click on find button enter
the values based on the Independent value.
India
US
UK
Hyderabad
Mumbai
Chennai
Bangalore
Newyork
Newjersy
California
London
Paris
4) TABLE
Select user_name, user_id, creation_date
From FND-USER
Where row num < 20
Order by User_name desc
a. If values are available in database table then we will go for using table
value set, we will give the table name and column name system will
retrieve the values from the database table.
b. Open the value set form and give the value set name select validation
type is table click edit information button.
c. Enter the table name, column name in the value field.
d. Enter the where clause order by clause in the text item called where order
by.
e. Use the additional column field to display extra columns data in LOV, we
have to use alias name while specifying additional columns.
f. Table Application : It is a optional field based on the table name we can
find out table application name.
g. Go to Application Developer Responsibility
Application=>Database=>Table query the records based on table name.
18
I - Installed languages
B - Base language
D - Disabled language
CDate
Application Name
Executable
Executable Method
When the width of the report is more we have chose the style of the output in
Concurrent program window BACS instead of A4.
Query
Select fcp.user_concurrent_program_name,
Trunc(fcp.creation_date) CDate,
fav.application_name,
fev.executable_name,
fl.meaning
19
from
fnd_concurrent_programs_vl
fnd_application_vl
fnd_executables_form_v
fnd_lookups
fcp.application_id
fcp.EXECUTABLE_ID
fl.lookup_type
fcp.execution_method_code
where
and
and
and
fcp,
fav,
fev,
fl
=
fav.application_id
=
fev.EXECUTABLE_ID
='CP_EXECUTION_METHOD_CODE'
=
fl.lookup_code&p_lexical
Parameters:
Lexical parameter to change the query dynamically.
Bind parameter to be register before Oracle applications.
If title parameter is null i.e. if user doesnt pass the value to the title parameter
Format trigger.
Begin
If :P_Title is NULL then
Return (True)
Else
Return (False)
End if
End
If parameters were not passed to the :P_From_Date and :P_To_Date report should
display all the records.
After Parameter Form Trigger
Begin
If :P_From_Date is NULL and :P_To_Date is NULL then
:P_lexical:=
Else
:P_lexical:= and Trunc(fcp.creation_date)
between :P_From_Date and :P_To_Date
End if
End.
================
Exercise
From User ID, To User ID, From Date, To Date
Title
User_ID
User_Name CDate
Responsibility
Application
Name
Security
Group
From
Date
To
Date
20
SELECT USER_ID,
USER_NAME,
TRUNC(CREATION_DATE) CDATE
FROM FND_USER
WHERE USER_ID BETWEEN :P_FROM_ID AND :P_TO_DATE
Detail Level
SELECT FU.USER_ID,
FRV.RESPONSIBILITY_NAME,
FAV.APPLICATION_NAME,
FSG.SECURITY_GROUP_KEY,
TRUNC(FRG.START_DATE) FROMDATE,
TRUNC(FRG.END_DATE) TODATE
FROM FND_USER FU,
FND_USER_RESP_GROUPS
FRG,
FND_RESPONSIBILITY_VL
FRV,
FND_APPLICATION_VL
FAV,
FND_SECURITY_GROUPS_VL
FSG
WHERE FU.USER_ID
=
FRG.USER_ID
AND FRG.RESPONSIBILITY_ID
=
FRV.RESPONSIBILITY_ID
AND FRV.APPLICATION_ID
=
FAV.APPLICATION_ID
AND FRG.SECURITY_GROUP_ID =
FSG.SECURITY_GROUP_ID
Steps to develop a report
Data Model Data link to be given between both the quarries.
Adjust the margin and comeback to main page
Report width to be increased - 13 135
Select the main from and other frames expand variable
Place all the text fields.
Take the repeating frame and source to master query
o Put all the fields which are related to master query and what ever are
needed.
Take another repeating frame and place that on the first repeating frame and
source to detail query.
o Put all the fields which are related to details query and what ever are
needed.
Select all the fields and no fill and no line
Define the User parameters P_From_ID and P_To_ID
Applications
o Create the table value set for select the parameters
21
USER EXIT
Start
End
Parameter
form
Query
Layout
Start
End
Parameter
form
Query
Layout
3GL
User Exit
It is one of the predefined program in Reports 6i will be used for stop the report
execution process for sometime and transfer the control to the 3rd Generation Language
get the data and completes the remain execution process.
22
1) FND SRWINIT: We will use this user exit in the before report trigger. It will
initialize user profile values according to that profile values data will be retrieved
from database.
SRW.USEREXIT(FND SRWINIT)
2) FND SRWEXIT: We will call this user exit from ater report rigger to freeze the
memory which is occupied by user profile values.
SRW.USEREXIT (FND SRWEXIT)
3) FND FLEX SQL
4) FND FLEX IDVAL
5) FND FORMATCURRENCY
Purchase
Documents
Quotation
Purchase Order
Receipts
AP Interface
Requisition
o Internal
o Purchase
RFQ
o Standard
o Bid
o Catalog
Quotation
o Standard
o Bid and Catalog
INV Interface
Purchase Order
o Standard
o Planned
o Contract
o Blanket
Receipts
o Direct Delivery
o Standard Receipt
o Inspection Required.
1) Item Creation
a. Open the user from in System Administrator Responsibility attach the
responsibility called Inventory, Vision Operations(USA)
b. Open the Items from - Items Master Item enter, system will show the
organization list, select the organization vision operations, enter the item name
and description.
c. Go to Inventory tab check the check box called Inventory Item.
d. Go to purchasing tab check the check box called purchased and save the
transactions.
e. We can assign the item to the multiple organization by selecting tool menu
Organization assignment option check the check box called assigned.
Select * from ORG_ORGANIZATION_ DEFINETIONS
- Organizatio_ID is primary key column
Select * from MTL_SYSTEM_ITEM_S
Where sgment1=Keyboad
- Inventory_item_ID - Organizatin_ID
- Composite Primary Key
Select MSI.SEGMENT ITEM
OOD.ORGANIZATION_NAME
From MTL_SYSTEM_ITEM_B MSI
ORG_ORGANIZATION_DEFINETIONS OOD
Where MSI.ORGANIZATION_ID
=
OOD.ORGANIZATION_ID
And MSI.SEGMENT1
=
KEYBOARD
2) Supplier Creation
a. Select the responsibility called Purchasing, Vision Operations(USA)
b. Open the suppliers form - Supply Base Suppliers press enter
c. Enter the suppliers name and save the transaction and we will get supplier
number select status button enter site address select contact tab enter contact
details and save
Select * from PO_VENDORS where SEGMENT1=5080
- VENDOR_ID Primary Key
Select * from PO_VENDOR_SITESM_ALL where VENDOR_ID=1010
- VENDOR_SITE_ID Primary Key
Select * from PO_VENDOR_CONTACTS
where VENDOR_SITE_ID= 2215
- VENDOR_CONTACT_ID Primary Key
3) Buyer Creation:
a. Attach the Responsibility called HRMS Management; Open the Employee form
(N) HRMS Manager People Enter and Maintain.
b. Select new button enter employee name and Date of Birth, select action as
creation employment chose the option called buyer and save the transaction.
Select * from PER_ALL_PEOPLE_F
Where EMPLOYEE_NUMBER = 893
PERSON_ID is Primary Key column
c. Go to system administrator create user name attach employee name in the filed
called Person and save the transaction.
Select FU. USER_NAME,
PPF.FULL_NAME
From FND_USER
FU,
PER_ALL_PEOPLE_F
PPF
Where FU.USER_NAME
= 20USER
And FU.EMPLOYEE_ID = PPF.PERSON_ID
d. Copy the employee name go to purchasing application open the Buyers form
attach to the Buyers list - Setup Personnel Buyers and enter.
Select * from PO_AGENTS
This contains only Buyer list and primary key is AGEN_ID
PO PROCESS
1) Requisition: It is one of the purchasing document will be crated by employers when
ever they required goods or services or training, we will find 2 types of requisitions.
a. Internal Requisition: This will be created, when we receiving the materials from
other organizations(Branches)
b. Purchase Requisition: This will be created, when we are receiving the materials
from outside means suppliers.
c. We will enter the requisition information at 3 levels i.e. Headers, Lines,
Distributions.
d. One header will be there at least one line multiple line we create for every line at
least one distribution or multiple distributions will be there.
e. Open the requisitions form Requisitions Requisitions and enter.
f. Select the requisition type at header level enter item details at line level (item
Name, quantity, price and need by date) select bistributions buttion enter
distribution details like quantity and account details and save the transactions.
g. Select approve button press OK system will send the document for approval.
h. Go to requisition number select find button, it will show requisition approved
status.
Select * from PO_REQUISITON_HEADERS_ALL
Cancel the Requisition: Open the requisition summery form enter requisition
number select find button go to tools menu select option called Control and
chose the option as cancel requisition.
We can find out requisition history by using tools menu option called view action
history.
Select * from PO-ACTION_HISTORY
Where OBJECT_ID = REQUISITION_HEADER_ID
Select PAH.ACTION_CODE
PDF.FULL_NAME
From PO_ACTION_HISTORY
PAH
PER_ALL_PEOPLE_F
PPF
Where OBJECT_ID = 11459
And PAH.EMPLOYEE_ID = PPF.PERSON_ID
AUTO CRATE OPTION : This is one of the feature application to create RFQ or
PO documents automatically based on the approved requisition document.
i. Create requisition and approve it
ii. Open the auto create form select clear button enter requisition number
select find button which will display requisition then details
iii. Select the line by checking the checkbox select action as create,
document types as RFQ
iv. Select automatic button click the create button whichwill create RFQ
document will selected requisition lines and displays RFQ No.
g. QUOTATION : - RFQs and Quotation Quotation and enter
i. We will receive the quotations from suppliers against the RFQ either by
fax or email we will enter those quotation details manually in the system
to make the quote analysis and future purpose.
ii. Quotation tables: One we create the quotation from front end data will be
stored in the RFQs tables only by column type_lookup_code=quotation.
= 500
=QUOTATION
4) Purchase Orders : It is one of the purchasing document at the time of purchasing from
the supplier we will create this document by specifying terms and conditions and
shipping details distribution details and so on. We have 4 types of Purchase Orders
a.
b.
c.
d.
Standard
Planned
Blanket
Contract
(N) Open the purchase order form Purchase Orders-Purchase Orders and enter
select PO type and suppliers information enter the line level details like Items quantity
price and so on.
Select shipments button enter shipping location details quantity promice date, need by
date and so on select distribution button enter distribution details and save the
transactions.
Select approve button system will submit the document for approvals.
Copy the PO number and go to purchase or summary form enter PO number select find
button.
To cancel the purchase order go the tools menu control option.
Tools menu copy document to create the same document.
Auto Create
o By using Auto Create option we can create purchase orders automatically from
approved requisition by selecting document type as Purchase order.
PHA.COMMENTS
When ever company would like to have the agreement with supplier that time first we will
create Blanket Agreement, when ever we require materials we will go for releasing the
purchase orders.
Open the purchase order form select Blanket Purchase agreement and enter the details
and approve the purchase order.
Select releases form either blanket PO Number and Item quantity details select
distributions button enter distribution details, select approve button for approvals.
Match Approval
2 way
PO Qty 100
3 way
PO Qty 100
4 way
PO Qty 100
Invoice Qty 80
Receipt Qty 80
Receipt Qty 80
Invoice Qty 80
Invoice Qty 50
Invoice Qty 50
At the time of creation Purchase Order in the shipments, release we will specify the
Match approval option.
Two way matching is nothing but company purchase order quantity, price with Invoice
price.
Three way matching is nothing but comparing 3 documents Purchase Order, Receipt
and Invoice.
Four ways Matching is nothing but company PO receipt inspection and Invoice
documents.
Receipt Documents
1. Standard
3 Way
2. Direct Delivery 2 way
3. Inspection Required 4 way
It is one of the purchasing document will be created while receiving the materials form
the suppliers we have 3 types of receipt.
Navigation Receiving Receipts and enter.
Create the purchase order and approve it open the receipts from enter PO Number,
select find button, system will show the PO Line details, check the check box save to
transactions, system write automatically generate Receipt number
Select Receipt_Num
From RCV_shippment_headers
Where shipment_header_id IN (Select shipment_header_id
From rcv_shpment_lines
Where PO_header_id IN( Select Po_Header_ID
From PO_heaer_all
Where segment1=3452))
AND
AND
AND
PHA.BILL_TO_LOCATION_ID
PHA.VENDOR_SITE_ID
PHA.VENDOR_ID
= H2.LOCATION_ID
= PVS.VENDOR_SITE_ID
= PV.VENDOR_ID
LINE QUERY
SELECT PLA.PO_HEADER_ID,
MSI.SEGMENT1 ITEM,
MSI.DESCRIPTION ITEMDESC,
MC.SEGMENT1||','||MC.SEGMENT2 CATEGORY,
PLA.UNIT_PRICE
PRICE
FROM PO_LINES_ALL
PLA,
MTL_SYSTEM_ITEMS_B
MSI,
MTL_CATEGORIES
MC
WHERE PLA.ITEM_ID = MSI.INVENTORY_ITEM_ID
AND PLA.ORG_ID = MSI.ORGANIZATION_ID
AND
PLA.CATEGORY_ID = MC.CATEGORY_ID
Purchase Order Interview Questions.
1) What is the Flow of Purchasing Module
2) Where the types of Requisition and table
3) Types of Purchase orders and tables
4) What is the different between standard PO and Blanket PO
5) We have created a Item but which is not available in the pO what will be the problem
6) What are the types of Match approvals
7) What are the Receipt types
8) When we enter a Blanket Release data where it will be stored
9) If give the requisition no how to find out corresponding PO Numbers
10) If give the PO Number how to find out corresponding Receipt Numbers
11) What is Auto Create and Advantage
12) In which table we can find out
i) Shipped Quantity
ii) Received Quantity
iii) Canceled Quantity
13) Can we create Purchase order directly without
i) Requisition,
ii) RFQ
iii) Quotation
14) Can we have the Receipt without Purchase order
15) What are the tables for RFQ, Quotation, Purchase Order
10
Begin
Space for Control Statements like IF
LOOP s
Procedure, Function and Package Calling
DBMS_OUTPTU.PUT_LINE - ----- we will not use this function.
FND_FILE.PUT_LINE(FND_FILE.LOG, Write message || Variable name)
FND_FILE.PUT_LINE(FND_FILE.OUT, Write message || Variable name)
Exception
When Others then
FND_FILE.PUT_LINE(FND_FILE.LOG, Write message || Variable name)
End <Procedure Name>
ErrorBuf: While registering the procedure in concurrent Programe we are suppose define
errorbuf out parameter, which will give the error messages in the log file if any occurs in the
procedure.
Retcode: It returns the status of concurrent program either 0-Normal, 1-Warnining, 2-Error
API Application Programe Interface FND_FILE: API is nothing but Application
Programming Interface, instead of DBMS_OUTPUT package we will use FND_FILE.LOG to
write in the log file, FND_FILE.OUTPUT to write in the output file.
NOTE: We can register procedure or package procedure as concurrent Programe to do some
DML validation and some other programming logic, we cant register function as concurrent
Programe.
11
Registration Steps
Develop the procedure and compile, specification of the procedure will be stored in the
Database.
Select System Administrator Responsibility - Crate executable with execution method
as PL/SQL Stored Procedure
Create concurrent Programe and attach Executable, Parameters, and
Incompatibilities.
Create the Request Group and the Concurrent Programe
Attach the Request Group to the Responsibility
Attach Responsibility to the User
User submit Request from SRS window
Simple Example
Create or Replace Procedure EX20( Errorbuf out Varchar2,
Retcode out Varchar2) as
L_no number(8) default 1000,
L_Name Varchar2(100) Default Mr. Rajan Bhatnagar,
Begin
FND_FILE.PUT_LINE(FND_FILE.LOG, Write message || L_no)
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, Write message || L-Name)
Exception
When Other then
FND_FILE.PUT_LINE(FND_FILE.LOG, Error has occurred during the execution)
End EX20
Procedure with parameters
Develop a Procedure which will take two parameters
1. Vendor ID
2. New Vendor Name
System should find weather vendor ID is exist or not if it exists it should update the Vendor
Name.
Create or Replace Procedure VEN_UPDATE20(
12
L_Flag:=E;
When TOO_MENY_ROWS then
FND_FILE.PUT_LINE(FND_FILE.LOG, There multiple records in the table)
L_Flag:=E;
End;
If L_flag:= Y then
Update PO_VENDORS SET VENDOR_NAME=V_NAME
Where Vendor_id=V_ID;
Commit
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, vendor name changed )
Endif;
Exception
WHEN OTHERS then
FND_FILE.PUT_LINE(FND_FILE.LOG, Error occurred while updating)
End VEN_UPDATE20;
While registering the procedure, if we have user defined parameter we are suppose to
define those parameter at the time of registering concurrent program, select parameter
button enter sequence number parameter name attach value sets if required attach
default types.
Token filed will be disabled for procedures, it is enabled for only reports because report
builder find variable may or may not be in the sequence order but procedures variable or
permits will be always in the same sequence. First parameter values will be passed to
the first variable second parameter values will be second variable and so on
Exercise
Develop a procedure to transfer the following details in to the Temporary Table.
Create Table Quotation_temp(
Qno
Qtype
Cdate
Buyer
BillTo
ShippTo
Currency
Number(8),
Varchar2(10),
Date
Varchar2(100),
Varchar2(100),
Varchar2(100),
Number);
Program will accept one parameter supplier name LOV Vendor Name Internally
Vendor_ID should pass
Based on the Vendor_id find the Quotation Details and load in the temp tables;
NOTE:
13
1.
2.
3.
4.
14
empno
Ename
JDate
Deptno
Sale
Comm
Tax
Number(8),
Varchar2(100),
Date,
Number(8),
Number(8),
Number(8),
Number(8) );
Develop the control file like as follows and save it with extension .ctl
Load Data
Infile C:\20\load\emp.txt
Insert into table emp_details
Fields terminated by ,
(
Empno,
Ename,
JDate,
Deptno,
Sale,
Comm,
Tax
);
Go to Command Prompt select following path
o D:\Oracle\proddb\8.1.7\bin>
Execute the control file with SQLLDR Command
SQLLDER SCOTT/TIGER@PROD
Control = C:\20\LOAD\EMP.CTL
To find path to execute the SQLLDR command is HOST Command from SQL prompt
which will shows the path where we can execute control file
o Select * from v$parameter.
Control File
INSERT - Table should be empty New records will be inserted.
APPEND New records will be add for existing records
TRUNCATE It will delete existing records and inserts new records from the file.
.csv file (Comma Separated Valu)
If data in excel sheet we can save that file as .csv file.
If any string contains commas we will enclosed this will in double quotation in the control file we
will specify the following statement syntax
15
In control file itself we can specify the data and at the time of insertion we specify the specify the
condition and we can also specify the discard file pat in control file it self - for example
LOAD DATA
Infile *
Discardfile C:\emp_rejected.dis
Truncate Into table emp_details
When deptno=20
(
Empno
position(1:5),
Ename
position(6:15),
16
Jdate
Deptno
Sal
Commn
Tax
position(16:26),
position(27:28),
position(29:33),
position(34:36),
position(37:39))
Begin Data
Fsfsd fgdfdsf
Fsfsfsf fdfdsfsd gsfsdfg gdgd
Along with the SQLLDR command we can also use the few commands like as bellow
LOAD Will be used to load the first N records
SQLLDER username/password@Hoststring Load=10
SKIP TO skip the first n records
SQLLDER username/password@Hoststring skip=10
ROWS It will be used to issue the commit after insert Nrecords for every 10 records internally
auto commit will happen
SQLLDER username/password@Hoststring rows=10
INIT.ORA file contains the default values for the commit point
17
When deptno:=
(
Deptno Position(17:18),
Dname Position(19:25))
Register Control file as Concurrent Program
1.
2.
3.
4.
5.
6.
7.
Develop the control file and move the both data file and control file in the server
CUS_TOP\11.5.0\BIN\ .CTL
Create executable by seleting the execution method as SQL*Loader
create concurrent Program attach executable, Parameters
Attach the concurrent program to the Request Group
Attach the Request group to the Responsibility
Attach Responsibility to the user will submit the request form SRS window.
Example
Create the table in APPS Schema
Create table MTL_ITEMS(
Item
ItemDesc
ItemCost
ItemTax
BasicCost
Varchar2(10),
Varchar2(100),
Number(8),
Number(8),
Number(8))
Basic Cost to the calculated field in the Control file i.e. ItemCost ItemTax
Development of Control file
Load Data
Infile *
Insert into Table MTL_ITEMS
Fields Terminated by , Optionally Enclosed by
Trailing NULLcols
(
Item,
Item Desc,
ItemCost,
ItemTax,
BasicCost (:Itemcost - :Itemtax))
Begin Data
Fdfdsf sgdfg fgdgdgds dgdgdgd gfgdgd hgdghdg
Fdfdsf sgdfg fgdgdgds dgdgdgd gfgdgd hgdghdg
Move the .ctl file in the Inventory top i.e. BIN Directory
And register the control file with applications.
Go to System Administrator and register with the applications and concurrent program
and method should be SQL * Loader
Data file pat can changed dynamically
o Infile &1
o We muse use the 1` degit
18
We are allowed to submit only one parameter that should be data file path
SQL * Plus
Empno,
Ename ,
JDate FILLER,
Deptno);
19
User_id
User_name
Cration_Date
&3
format
Format
Format
Format
9999999999
A25
A11
A50
Submission of Concurrent Program from Back End because, sometimes we dont have
the access to the front end.
Executable
Concurrent Program
Request Group
SRS
We need to use the Application Programe Interface details in 115devg.pdf 21 chapter
FND_PROGRAM.EXECUTABLE
FND_PROGRAM.REQUEST
FND_PROGRAM.PARAMETER
FND_PROGRAM.REQUEST_GROUP
FND_PROGRAM.ADD_TO_GROUPSubmission of CP from Back End
Executable
Concurrent Program
Attach Parameter
Create Request Group
Add Concurrent Program R.G
20
SQL
PL/SQL
Report Report Triggers
Forms Form Trigger
FND_REQUEST.SUBMIT_REQUEST( ) - It will be used to submit the Request from Back end.
Sample Program
Declare
l_request_id number(10);
Begin
Fnd_global.apps_initialize ( user_id,
Resp_id
Resp_appl_id);
l_request_id:= Fnd_request.submit_request (
PO,
Users Information Script,
User Desc,
,
FALSE,
1000,
1200,
Email_address);
Commit;
If l_request_id is != 0
Fnd_file.Put_line (Fnd_file.log Program successfully submitted Request ID is ||
l_request_id);
Else
Fnd_file.Put_line (Fnd_file.log Program not successfully submitted);
Endif;
Exception
When other then
Fnd_file.Put_line (Fnd_file.log Error occurred during the program submission);
End;
NOTE: If we are submitting concurrent program from the Form Trigger we are suppose to pass
the 100 parameter. If parameter are not defined, still we are suppose to pass NUL values
Fnd_user
Fnd_responsibility_vl
Fnd_application_vl
- responsibility_key
- application_name
21
1. As soon as possible: This is default option whenever we submit the request it will
submit the as soon as possible
2. Once: It will submit the rest only once for future date.
3. Periodically: WE can specify the from_date and to_date to submit program periodically
no of. Days months, hours, minutes and so on.
4. Specific Days: If we want submit concurrent program in the specific days we write
select this option
5. Save this Schedule: This check box will be used to save the schedule and apply same
schedule to other concurrent programs by selecting the button called Apply save
schedule
NOTE: After schedule the Concurrent program we can also cancel by selecting the cancel
button.
PROFILES
Profile is one the changeable option it will change the way of application execution, when we
crate user in oracle applications we will design the profile values for ever user by selecting any
of this level.
Profile levels
User Responsibility Application Site
1. Site Level: Site is the lowest profile level when we install Oracle Applications by default
values will be assigned at this level, site level values will be applicable for all the users.
2. Application Level: If we want to assign profile value to the specific application users
then we will select this level specify the application name and assign the value,
application level profile value will over write site level values.
3. Responsibility Level: We will select the responsibility name assign the profile value,
this is applicable only for the users, who are having access to the specified
responsibility. Responsibility will overwrite the both application and site level values.
Most of the profile will setup at responsibility level because it will be creating
responsibility for ever position in the organization we will also assign the profile values
based on position.
4. User Level: We will select the user name and assign the profit value this is only for
specific user which we have specified at will over write responsibility, application and site
level values.
Definition
Application: It is collection of forms, reports and programs which are related for specific
business functionality
22
Responsibility: It is also collection of forms, reports and programs which are related for specific
position in the organization.
Navigation
Application Developer Profile - press enter
We will find profile name and validation access levels, weather we can visible the values
or we can update the values.
Based on the access level we will go to system administrator open the profile form
assign the profile values.
Navigation
System Administrator Profile System Press Enter
Select profile name and profile level by default site select find button, it will shows profile
values at 4 levels
Important Profiles:
1. GL Set of Books Name: It is one of the GL application profile, set of books is nothing
but collection of currency, calendar, and chart of accounts. We will assign this profile
values at responsibility level based on this currency and calendar and accounts will get
change.
2. MO: Operating Unit: This will be used to setup user operating unit name which
operating unit user is working, when ever user login to the system by using this profile.
System will understand the user operating unit (Branch Name)
3. HR: Business Group: This profile will give the user business group which group user is
working.
4. HR: User_Type: This profile will give the user employment type which user is
Permanent, Contract or consultant will be identified.
USER_ID
USER_NAME
RESP_NAME
RESP_ID
RESP_APPL_ID
All these are user personal profile values for user will be there whenever we create it contains
the values. We cannot change the values.
GL: St of Books
Currency
23
Calendar
Chart of Account
Select Currency_code
Period_set_name
Chatof_account_id
Name
From gl_set_of_books
18user
19User
20User
Currency
Calendar
Accounts
SOBName
Vision Operations(USA)
Vision Swedan
Vison Itely
USD
SEK
ITL
Go to Systems Administrator and open the profile form and select the profile name and assign
the values.
When we assign set of books to the user based on the that set of book name currency,
calendar and accounts structure will be changed
Create there different users go to systems administrator assign the profile values, select
user level enter user name and profile name select find futon and assign the user level
values.
Login with the user name select GL responsibility open the Journals form, Journals
Entry and press enter we will find the different currencies in currucy filed
24
User Name
:
Responsibility Name :
Set Of Books Name :
Supplier Name
Supplier ID
PO
Type
Date
Query
Select PHA.SEGMENT1
PHA.TYPE_LOOKUP_CODE
TRUNC(PHA.CREATION_DATE)
PHA.CURRENCY_CODE
From PO_HEADERS_ALL PHA
Where VUNDER_ID=&PO_VENDOR_ID
Currency
PONUMBER,
TYPE,
CDATE,
CURRENCY
25
Develop the procedure and register as Concurrent program and user submit the request form
SRW window system should capture the dynamically and inserts in to the temp table
:X:= FND_PROFILE.VALUE(ORG_ID)
Select name from HR_OPERATING_UNITS Where organization_id=:x
Chapter 15, 115devg.pdf
FAQs
1.
2.
3.
4.
5.
What is profile
What are the profiles you have come across in your experience
Profile levels in sequential order
How to get profile value from Backend
How to pass profile values as default in parameter
Default Types
Constant
Segment
SQL
Profile
- Concurrent Programe window Parameter
At the time of defining parameter select default type as profile and give the profile
name in the default values field.
26
Multi Org
Multi Org is nothing but implementing multiple organization under single oracle APPS
implementation. We will define the multi org levels like follows:
Business Group
Set of Books
Legal Entity
Operating Unit
Inventory Organization
Sub inventories
Stock Locations
Items
Business Group: It represents the highest level in the organization structure, it can be a major
division or operating company or consolidated enterprises, Business Group secure human
recourses information. Example: When we request list of employees assigned to the business
group where organization is a part
Set Of Books: It is a financial reporting entity it uses particular functional currency, chart of
accounts and accounting calendar, Oracle General Ledger application secures this transaction
information like, journal entries, balances, we will use the Set of Books to capture these financial
information.
Legal Entity: it is a legal company for which we prepare physical or tax reports and we will
submit company flanking sheet to Government.
Operating Unit: It is an organization where company is going to do the main business
operations like sales, purchasing payments, receiving and son, it may be a sales office or
27
division or department, operating unit information will be secured by following applications like
PO, AP, AR, OM, CM
Inventory Organization: It is an organization for which we will track Inventory transactions and
balances, Inventory Organization means warehouse, distribution center, manufacturing plants
and sales offices, the following application secures information by Inventory organization
-
Oracle Inventory
Bills of Material
Work in process
Enginering
Capacity
MRP and so on
Data Secure: We can assign users to the particular organization when ever user
logon to the application then we can get the data access, which is related to their
organization
We can sell the products from one legal entity and ship the products from
another level entity that time we can easily create financial transactions.
We can receive the good from the suppliers in any Inventory organization.
Example: A branch employee will create the PO then we can rece4ive the
material in B branch Inventory organization but these two organization should be
defined under same set of books.
28
Column
ORG_ID
Text
Select * from po_header_all
where org_id=client_info
PO_LINES_ALL
ORG_ID
AP_INVOICES_ALL
ORG_ID
AP_CHECKS_ALL
ORG_ID
OE_ORDER_HEADERS_ALL ORG_ID
Multi Org table contains multiples organization data. This table names are goint to end
with _all and this table contains common column called org_id
Whenever user login to the systems by using MO:OPERATING UNIT profile, systems
will understand user operating unit code (ORG_ID)
Multi Org views These are created based on, multi org table having the where clause
like where org_id=client_info. If we are using multi org views in the RICE components,
we will get the data from the database which is related for the user organization. Ex:
PO_HEADERS, PO_LINES, AP_INVOICES, AP_CHECKS, OE_ORDER_HEADERS
CLIENT_INFO: It is one of the RDBMS variable, it contains user operating unit code
(org_id) whenever user login to the application
o Select * from hr_operating_units (you can get all the branch codes)
To create Operating units navigation
o HRMS Responsibility Work Structures - Organization Description
In before report trigger we will write SRW.USER_EXIT(FND SRWINIT) it will initialize
the user profile values (MO:OPERATING UNIT)
Create 3 users, assign to them different branches by using MO:Operating Unit profile and
develop the report, use the multi org tables and register it as concurrent program and submit
from SRS window form 3 users we will get all the operating units data in the output instead of
multi table, use multi org view. Submit request from SRS. It will display the output which is
related for user organization. If we are not using the user exit (FND SRWINIT) system will not
initialize user profile values including MO operating Unit profile that time, client_info variable
values is null.
In SQL & PL/SQL We need to use API
SQL> select count(*) from PO_HEADERS_ALL
2777 POs are created form multiple organizations
29
SQL> select count(*) from PO_HEADERS output 0 becoz system doesnot know the branch
working for which branch
SQL> Begin
FND_CLIENT_INFO.SET_ORG_CONTEXT(204)
END;
SQL> select count(*) from PO_HEADERS - Now it is showing the 1645 Pos fro branch 204
Begin
FND_CLIENT_INFO.SET_ORG_CONTEXT(FND_PROFILE.VALUE(ORG_ID)
END
It will retrieve User ORG_ID value
Table shows details about the Multi Org structure table
Organization
Name
Table
Profile
Business Group HRFV_BUSINESS_GROUPS HR:Business Group ID
Set Of Books
GL_SET_OF_BOOKS
GL:Set of Books Name
Legal Entity
HR_LEGAL_ENTITIES
Operating Unit
HR_OPERATING_UNITS
MO:Operating Unit
Inventory
Organization
SubInventory
Stock Locations
Items
ORG_ORGANIZATION_
DEFINITIONS
MTL_SECONDARY_
INVENTORIES
MTL_ITEM_LOCATIONSQ
MTL_SYSTEM_ITEMS
Column
BUSINESS_GROUP_ID
ORG_ID
MFG_ORGANIZATION_ID ORGANIZATION_ID
Requstions
RFQ
Quotations
PO
PO Receipts
While developing or customizing the RICE component we will be using Multiorg views.
We are not supposed to use the Multi org tables.
By suing the following select statement we can find whether multi org is implemented
successfully or not
o Select multi_org_flag, release name from fnd_product_groups
Multi_org_flag Releasename
Y
11.5.7
Y Implemeted successfully (Business Group, I.E., Set of Books, operating Unit,
Inventory organziaiton)
30
ORG_ID: It is at operating unit level it we will find this common column in all the table at
operating unit level like
o PO_REQUESITION_HEADERS_ALL
o PO_HEADERS_ALL
o PO_DISTRIBUTION_ALL
NOTE: But PO receipts functionality will come at Inventory organization level. Because
we are crating receipt means we are receiving the goods from supplier. We will be
receiving the material at Inventories (stories, gowdans ) only. Example:
RCV_SHIPMENT_HEADERS table is not having the _ALL it is not having ORG_ID
column
ORGANIZATION_ID:
It is at Inventory Organization level we will find all the
manufacturing tables column this ORGANIZATION_ID column including PO Receipts
Tables
o MTL_SYSTEM_ITESM_B
o WIP_ENTITITES
o BOM_RESOURCES
o BOM_DEPARTMENT
PO_VENDORS
is not having _ALL
PO_VENDORS_SITES_ALL is having
_ALL
Supplier is global we can access from any organization
Supplier site is organization specific and we create site based on the user ORG_ID sites will
retrieved.
FAQs
1. What is application hierarchy or Multi org flow?
2. What is Business Group?
3. What is legal entity and operating unit
4. What is meant by multi org table
5. What are module will come at operating unit level
6. Will PO Receipt will come tat Operating Unit level or Inventory Organization level?
7. What is difference between OR_ID and ORGANIZATION_ID?
8. Why there is no _ALL for PO_VENDORS table?
9. How to implement multi org in reports?
10. How to populate ORG_ID from SQL prompt?
11. What is meant by Client_info?
12. When user login in to the system how the system will identify user operating unit?
31
Flex Fields
Flex Field is nothing but a normal field but it is a ore flexible in the application either to extend
the form functionality or to capture the key information
We have 2 types of flex fields in oracle applications
1. Descriptive Flex Fields , 2. Key Flex Fields
1. Descriptive Flex Fields: DFF will be used to capture extra information from the end
user without changing form code and without altering database table
a. We will use the attribute column while working with DFF
b. We will find all the DFF in Application Developer Responsibility
i. N Flex Filed Descriptive Register
c. To find DFF in form PO Requisition Form
d. Customization of DFF
i. Open the form in application (PO, AP) we will find the fields which are
enclosed with [ ] it is nothing but a DFF we can enable this DFF by using
Application Developer Responsibility
ii. Find the DFF title from following navigation
1. Help Menu Diagnostics Examine and enter password as apps
and Block name $Descriptive Flex field$ we will find the list of
DFFs
in
the
fields
select
Field:
PO_REQ_HDR_DESCRIPTIVE_F4 we will find the DFF in the
value fields Value: Requisition Header (Oracle Purchasing)
iii. Copy the value go to Application Developer
1. N Flex field Descriptive Segments and enter and press F11
enter the title Ctrl + F11
iv. Un check the checkbox called Freeze Flex field definition select segments
button enter the column names select attribute column and value set and
save the transactions.
v. Check the check box called Freeze Flex Field Definition click on compile
button internally system will submit concurrent program (Flex field view
Generation) to compile flex field it will generate one flex field view to
capture the data.
vi. The view name will be database table name _DFV
vii. Go to the form where DFF is attached, place the cursor, it will open DFF
form enter the data save it go to backend query the records.
Select Attribute3
Buyertype,
Attribute9
Buyerlocaton,
Attribute13
Last Date
From PO_REQUISITION_HEADER_ALL
Where segment1=15467
viii. Create the value set in system administrator; attach the value set at the
time of creating DFF column name in the value set field.
ix. We can make the DFF column is optional or mandatory by selecting
required check box in the segments form.
32
Item Quantity
Reserved Qty
Purchasable Item
Item Attributes
Inventory Item
Customer Item
Production Item
xi. Global Data Elements: While defining the context field we will enter the
context field values based on the value we can change the DFF structure
if we want to define any field globally we will select option called Global
Data elements, select se4gments enter the details.
1. Once we use the attribute column in Global Data elements it will
not be available for the context field values.
2. Key Flex Field : These will be used capture key information which is in the code
language for every code there will be a specific meaning in the application we will find all
the KFF s in the Application Developer Responsibility. Navigation Flex field Key
Register and enter we can find the structure in the segments form Navigation Flex Field
Key Segments and press enter when we enter the data in KFF it will be stored in
segments columns we will find segments column around 30 based on the requirement.
Differences between DFF and KFF
33
DFF
DFF will be used to capture EXTRA 1.
Information
Attribute columns will be used
2.
We can register MAX DFF
3.
1.
2.
3.
4.
5.
6.
KFF
KFF will be used to capture KEY
Information
Segment columns will be used
We have 29 built in KFF we are not
suppose to create new KFF
KFF we can define rules to capture
valid data
WE have no Context field
DFF codes will be stored in segments
KFF description will be stored in
FND_FLEX_VALUES tables.
Staructure Column
CHART_OF_ACCOUNTS_ID
No
No
No
LOCATION_STRUCTURE_I
No
no
STRUCTURE_ID
ORGANIZATION_ID
ORGANIZATION_ID
34
Accounting KFF is nothing but Chart of accounts in the set of books when ever we
assign the profile (GL: Set of Books Name) to the user based on the this profile system
will assign Accounting KFF to the User.
*******
Set of Books
o Currency
o Calendar
o Chat of Account
*******
Select Name,
Currency_code
Currency
Period_set_name
Calendar
Chat_of_account_id ChartOfA/C
From GL_SET_OF_BOOKS
*******
16USER
GL:SET OF BOOKS
Vision Operation(USA)
17USER
GL:SET OF BOOKS
Vision Italy
18USER
GL:SET OF BOOKS
Vision Belgium
*******
USD
ITL
BEL
101(5)
50173(4)
50714(6)
Structure Column
While defining the KFF we will find structure column field if it is null value then KFF has
got only one structure, if there is a structure column that will find multiple structure, open
the segments form query the records based on KFF title, we will find structure details
For Accounting KFF structure column is CHART_OF_ACCOUNTS_ID
And we will get all the structure details from this table GL_CHARTS_OF_ACCOUNTS.
All the accounting KFF transaction will be stored in the data based table called
GL_CODE_COMBINATIONS
Developing the Reports on KFF - Process
1) Call the user ext from before report trigger
SRW.USER_EXIT ( 'FND SRWINIT');
2) Call another User Exit from After Report Trigger
SRW.USER_EXIT ('FND SRWEXIT');
3) Define the following parameters
1) P_CONC_REQUEST_ID
2) P_FLEXDATA
3) P_STRUCT_NUM segment1||'\n'||segment2||'\n'||segment3||'\n'||.......||'\n'||segment30
= "GL#"
= ":P_STRUCT_NUM"
35
APPL_SHORT_NAME
OUTPUT
MODE
DISPLAY
= "SQLGL"
= "P_FLEXDATA"
= "SELECT"
= "ALL");
36
&P_FLEXDATA C_FLEXDATA,
GCC.LAST_UPDATE_DATE
GL_CODE_COMBINATIONS GCC
CHART_OF_ACCOUNTS_ID = :P_STRUCT_NUM;
6) Take the Formula column and place it in query and edit the PL/SQL editor
function CF_DATAFormula return Char is
begin
SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA);
SRW.USER_EXIT('FND FLEXIDVAL
CODE
= "GL#"
NUM
= ":P_STRUCT_NUM"
APPL_SHORT_NAME
= "SQLGL"
DATA
= ":C_FLEXDATA"
VALUE
= ":CF_DATA"
MODE
= "SELECT"
DISPLAY
= "ALL"
IDISPLAY
= "ALL"');
RETURN(:CF_DATA);
end;
function CF_DESCFormula return Char is
begin
SRW.REFERENCE(:P_STRUCT_NUM);
SRW.REFERENCE(:C_FLEXDATA);
SRW.USER_EXIT('FND FLEXIDVAL
CODE
= "GL#"
NUM
= ":P_STRUCT_NUM"
APPL_SHORT_NAME
= "SQLGL"
DATA
= ":C_FLEXDATA"
37
DESCRIPTION
MODE
DISPLAY
IDISPLAY
RETURN(:CF_DESC);
end;
= ":CF_DESC"
= "SELECT"
= "ALL"
= "ALL"');
7) Go to layout model design the report and register with Oracle Applications and submit from
the user SRS form
SRW.REFERENCE( ) : It we are using bind variable in source column the user exit we will
refer to get the latest values for variable and source column
Changing the structure number dynamically:
KFF structure number is nothing but chat of accounts ID, if we know the user set of
books name we can find out chart of Accounts ID.
Set of books name is one of the user profile by using FND profile API we can get from
report triggers
Go to before report trigger declare the local variable write the following API
o L_name varchar2 (100)
o L_name:=fnd_profile.value(GL_SET_OFBKS_NAME);
Write the following select statement to get the structure number based on the set of
books name
Select
INTO
From
Where
Chart_of_account_id
:P-STRUCT_NUM
GL_SET_OF_BOOKS
name=L_name;
Develop the report on PO Module and display the charge account in PO Distributions Form
Line Level
Dist Level
ReqNO
Type Cdate Lineno
Item ItemDesc
DistNo
ChargeA/C
FAQ in Flex Fields
1. What is FLEX FIELD?
2. What is KFF
3. In you experience what are the KFF you have come across?
4. Have u created any KFF? NO
5. Have u created any DF? Yes
6. What is FND FLEX SQL and FND IDVAL?
7. What is SRW REFERENCE?
8. What are parameters we suppose to pass for FND FLEXIDVAL?
9. How to change structure number dynamically?
10. What are the KFF are there in Inventory module?
11. Is there any KFF in PO? NO
12. Where the KFF data will be stored? Segments
13. Where the DFF data will be stored? Attributes
14. What in Attribute_Category?
38
Form
Executable
Concurrent
Programe
Function
Data Group
Menu
Request Group
Responsibility
User
39
Group of submenus and functions, enter menu name sequence no, prompt, attach user
function name in the function field, copy the user menu name, go to responsibility form in
system administrator attach in the menu field
Select the responsibility we will find the form in object navigator window.
Form Setup
First step
AU/11.5.0/FORM/US
Copy the files in to resource folder like Templete.fmb and appstand.fmb
Second Step
40
Table registration
Note: connect to custom top (wip) --wip/wip@prod
1) create table custom_vendors
2) grant all on custom_vendors to apps;
3) conn apps/apps@prod
4) create public synonym custom_vendors for po.custom_vendors;
5) exec ad_dd.register_table ('po','custom_vendors','t', 8, 10, 90);
Exec Ad_dd.register_table(
p_appl_short_name
p_tab_name
p_tab_type
p_next_extent
p_pct_free
p_pct_used
)
,
,
,
,
,
41
Flexfield (dff,kff)
Note :
If we are registering table by using AD_DD package we can utilize following functions
1) Who columns
2) Flex fields
3) Multi org
4) Profile, Table Value set creation and so on.
Create Table wip_item_details(
Item
Varchar2(50),
ItemDesc
Varchar2(100),
ItemDate
Date,
ItemLoc
Varchar2(50),
Item Category
Varchar2(50),
ItemCost
Number(9),
Created_By
Number(9),
Creation_Date
Date,
Last_Update_By
Number(9),
Last_update_date
Date,
Attribute_Category Varchar2(100),
Attribute1
Varchar2(100),
Attribute2
Varchar2(100),
Attribute3
Varchar2(100),
Attribute4
Varchar2(100),
Attribute5
Varchar2(100))
Grant all on WIP_ITEM_DETAILS to APPS;
Conn APPS/APPS@PROD;
Create Public Synonym WIP_ITEM_DETAILS for WIP.WIP_ITEM_DETAIS
Table type contains three values
T Table, V View, S Synonym
Exec AD_DD.REGISTER_TABLE (WIP,WIP_ITEM_DETAILS,T,0,10,90)
EXEC AD_DD.REGISTER_COLUMN
(WIP,WIP_ITEM_DETAILS, ITEM,1,VARCHAR2,50,N,Y);
All the columns to be registered
42
Go to the field properties, change the property called list of values Enable_List_Lamp
Create the trigger called KeyListVal at Item level call the following API
o Calender.show()
It is available in the library called APPDAYPK.PLL
Develop the form with master table by using template.fmb (Primary Key must be
selected)
Crate detailed data block after selecting the column click next futon, can check the check
box called Auto join data blocks, select the button called create relationship, select radio
button called based on join condition.
Select Primary Key from Master Item, reference key from detail Item, system will
automatically create join condition and select finish button.
At the time of selection layout style select tabular format and select number of records to
be displayed in the layout.
43
Attach property classes and save the .Ffmb generate .FMX move in to the custom top.
Practice development
PO_HEADERS_ALL
PO_header_id, PO_NO, type, Cration_Date
POLINE_ALL
Po_heder_id, item_desc, quantity, Unit_price,
Line_total(quantity*unitprice)
Manual Development of Form
Crate a table in WIP
Item, Item_Desc, Item_date, Item_loc.
44
) THEN
'WIP_ITEMS10',
=>
'DFF_TEXT',
=>
'WIP',
=>
'WIPDFF'
);
END IF;
END DFF_PROC;
END;
Note:
FNDSQF library will support for all the flex field APIS like
FND_DESC_FLEX.DEFINE
FND_FLEX.EVENT
FND_KEY_FLEX
Function Security:
For single form creation of multiple functions at the time of creation function passing the
parameter which will change the form functionality.
Develop a form register in application developer at the time of creation function pass the
parameter called QUERYONLY=YES
Attach the functions to menu and menu to responsibility and responsibility to the user.
NOTE: At the time of crating function select form tab pass the parameter in the field
called parameter
APPS
FND_FUNCTION.EXECUTE( )
OPEN_FORM built-in
Opens the indicated form. Use OPEN_FORM to create multiple-form applications, that
is, applications that open more than one form at the same time.
45
NEW_FORM built-in
Exits the current form and enters the indicated form. The calling form is terminated as
the parent form. If the calling form had been called by a higher form, Form Builder
keeps the higher call active and treats it as a call to the new form. Form Builder
releases memory (such as database cursors) that the terminated form was using.
Form Builder runs the new form with the same Runform options as the parent form. If
the parent form was a called form, Form Builder runs the new form with the same
options as the parent form.
CALL_FORM built-in
Runs an indicated form while keeping the parent form active. Form Builder runs the
called form with the same Runform preferences as the parent form. When the called
form is exited Form Builder processing resumes in the calling form at the point from
which you initiated the call to CALL_FORM.
46
At the time of creating responsibility we will attach menu by default all the submenus and
functions will be available if we want to hid we will go to Menu Exclusion tab in
Responsibility form select type as function or menu and give the function name or menu
name in the name field.
Forms Customization
Two Ways
1) Download .fmb from au_top\11.5.0\Forms\resource\US
2) Custom.pll
a. When_new_form_instance
b. When-new-block-instance
c. When-new-record-instance
d. When-new-item-instance
e. When-Validate-record
f. Special
g. Zoom
If we want to customize standard oracle forms will going to use custom.pll by using this we can
customize few events in the form. This custom.pll is available in the au_top resource folder
1)
2)
3)
4)
5)
47
Form Name
: Help About Oracle Applications
Block Name
: Help Diagnostics examine
Minimum
: Amount
Hide the filed
When form is opened (When-new-form-instance)
varchar2(30) := name_in('system.current_form');
varchar2(30) := name_in('system.cursor_block');
Zoom Trigger
Zoom event will be used to call the another forms from Oracle standard forms, by default zoom
will be disabled for the form, first we have to enable, the \we will go for execution.
48
Open the Custom.pll got the function call zoom available and creat the following code in
the place of Real Code Starts here
form_name varchar2(30) := name_in('system.current_form');
block_name varchar2(30) := name_in('system.cursor_block');
begin
if (form_name = 'POXRQERQ' and block_name = 'PO_REQ_HDR') then
return TRUE;
else
return FALSE;
end if;
Go to the event procedure and write the following code in the place of Real Code Starts
Here
form_name
varchar2(30) := name_in('system.current_form');
block_name varchar2(30) := name_in('system.cursor_block');
Begin
if (event_name = 'ZOOM') then
if (form_name = 'POXRQERQ' and block_name = 'PO_REQ_HDR') then
fnd_function.execute(function_name=>'PO_POXRQVRQ',
open_flag => 'Y');
end if;
end if;
Ave the custom.pll and compile this execute the custom.pll
Copy both .pll and .plx in to the resource folder (Close the applications before copying in
to the respective top)
FAQs:
1) What are the steps we will follow for the form development
2) What are the libraries are available in TEMPLETE.FMB?
3) How to register table and primary key?
4) Why do we need to register the table
5) How t o implement who columns?
6) How to attach a calendar?
7) How to call another form from the standard forms?
8) How to implement DFF in the forms?
9) What are the events we can use in custom.pll?
10) What is meant by zoom?
11) We cant copy the CUSTOM.PLL in to the server when applications is opened?
a. In oracle applications all the forms are developed by TEMPLETE.FMB including
Navigator. So that, that time CUSTOM.PLL IS being used by the application we
can not update the library.
12) When we are working in the project we are not able to close all the users application
that time how to copy in to server.
49
a. We will be having the link file (crated by DBA), we will copy in to that path only
we have to logout and login then we can find the customization effects.
13) How to generate .fmx and .plx in LINIX operating system
a. In windows we will use CTRL + T
b. In linix we will use F60GEN command
F60GEN MODULE=TEST.FMB
USERNAME/PASSWORD@HOST
F60GEN MODULE=CUSTOM.PLL TYPE=LIBRARY USERNAME/PASSWORD@HOST
14) In which top we will execute this F60GEN command
a. IN AU_TOP\11.5.0\FORMS\US
INTERFACES
Interface is nothing but a program will be used to transfer the data from flat files to database
table or from database table to flat files with validations. WE have two types of Interfaces like
Inbound Interface Outbound Interface.
Inbound Interface
It will be used to upload the data from legacy system into Oracle Applications base table
Note: Legacy system is nothing but other applications which is used by client like SAP, JAVA,
Mainframe so on.
Example: In implementation project we can implement forms and report so that users can enter
the data after implementation but the previous data will be available in the legacy system we
need to bring that data in to Oracle Applicatoins with validations.
Usage: SQL*Loader, .txt, .ctl, .dis, .bad, .log
Outbound Interface
It will be used to extract the data from Oracle Applications base tables in to flat files
Example: Client is using to applications one is for financial and another one is for
manufacturing, we have to transfer manufacture data in to financial applications, so that we can
generate the Invoices in financial applications.
Usage: UTL_FILE_PACKAGE
UTL_FILE.FOPEN()
- Crate / Open file
UTL_FILE.PUT_LINE()
- Transfer the data in to file
UTL_FILE.FCLOSE() - Close file
Exercise OUTBOUND INTERFACE
We can generate flat file only in specified directory - to find directory list
Select * from V$PARAMETER Where NAME like %UTL_%
Or
INIT.ORA file contains the information about active directory list.
50
pha.segment1
Pha.type_lookup_code
Trunc( pha.creation_date)
Ppf.full_name
From po-headers_all
PHA
Per_all_people_f
PPF
Where PHA.type_lookup_code
AND PHA.agent_id
l-id
PoNum,
POType,
CDate,
Buyer
=
=
STANDARD
ppf.person_id;
UTL_FILE.FILE_TYPE
Begin
l_id := UTL_FILE.FOPEN(d:\........................, PO_ORDERS.TXT, W)
For c2 in c1 loop
Utl_file.Put_line (l_id, c2, PoNum
C2.POType
C2. CDate
C2.Buyer);
||$||
||$||
||$||
End loop;
UTL_FILE.FCLOSE(L_ID);
End PO_Informaton;
Inventory Outbound Interface
Requirement Fields - Item, itemid, itemdesc, uom, name, id , category
CREATE OR REPLACE procedure INV_Out(
f_id in number,
t_id in varchar2) as
cursor c1 is select
msi.segment1 item,
msi.inventory_item_id Itemid,
msi.description itemdesc,
51
msi.primary_uom_code Uom,
ood.organization_name name,
ood.organization_id id,
mc . segment1||','||mc.segment2 Category
from
mtl_system_items_b
msi,
org_organization_definitions ood,
mtl_item_categories
mic,
mtl_categories
mc
where
msi.organization_id
= ood.organization_id
and msi.inventory_item_id = mic.inventory_item_id
and msi.organization_id = mic.organization_id
and mic.category_id
= mc.category_id
and msi.purchasing_item_flag = 'Y'
and msi.organization_id between f_id and t_id;
x_id utl_file.file_type;
l_count number(5) default 0;
begin
x_id:=utl_file.fopen('d:\oracle\proddb\8.1.7\plsql\temp','invoutdata.dat','W');
--select * from v$parameter where name like '%utl_file%'
for x1 in c1 loop
l_count:=l_count+1;
utl_file.put_line(x_id,x1.item ||'-'||
x1.itemid ||'-'||
x1.itemdesc||'-'||
x1.uom ||'-'||
x1.name ||'-'||
x1.id ||'-'||
x1.category );
end loop;
utl_file.fclose(x_id);
Fnd_file.Put_line(Fnd_file.output,'No of Records transfered to the data file :'||l_count);
Fnd_File.Put_line(fnd_File.Output,' ');
Fnd_File.Put_line(fnd_File.Output,'Submitted User name '||Fnd_Profile.Value('USERNAME'));
Fnd_File.Put_line(fnd_File.Output,' ');
Fnd_File.Put_line(fnd_File.Output,'Submitted Responsibility name
'||Fnd_profile.value('RESP_NAME'));
Fnd_File.Put_line(fnd_File.Output,' ');
Fnd_File.Put_line(fnd_File.Output,'Submission Date :'|| SYSDATE);
Exception
WHEN utl_file.invalid_operation THEN
fnd_file.put_line(fnd_File.log,'invalid operation');
utl_file.fclose_all;
WHEN utl_file.invalid_path THEN
fnd_file.put_line(fnd_File.log,'invalid path');
utl_file.fclose_all;
WHEN utl_file.invalid_mode THEN
fnd_file.put_line(fnd_File.log,'invalid mode');
utl_file.fclose_all;
WHEN utl_file.invalid_filehandle THEN
52
fnd_file.put_line(fnd_File.log,'invalid filehandle');
utl_file.fclose_all;
WHEN utl_file.read_error THEN
fnd_file.put_line(fnd_File.log,'read error');
utl_file.fclose_all;
WHEN utl_file.internal_error THEN
fnd_file.put_line(fnd_File.log,'internal error');
utl_file.fclose_all;
WHEN OTHERS THEN
fnd_file.put_line(fnd_File.log,'other error');
utl_file.fclose_all;
End INV_Out;
53
Inbound Interface
Flat File
.bad or .dis
SQL* Loader
PL/SQL Block
Standard Program
Base Tables
Process Steps:
1) Stage Table Cration
2) Control file development
3) PL/SQL Program
4) Submit Standard Program
Inbound interface will be used to upload the data from legacy system in to Oracle
applications base tables.
We will receive the flat file from the client then we will create staging table upload the
data from flat file in to stage table.
Develop the PL/SQL program to validate the data weather it is valid or not, if it is
valid we will insert in to interface table, if it is not valid we will insert in to error table.
Once the data is available in interface table submit the standard program from SRS
window, and we will transfer the data from interface table to base tables.
Note
o
o
GL
Staging table is required because the flat file structure may or may not be
compatibles with base table structure.
Interface table is required to make the pre validation and populate dynamic
records.
PO
AP
AR
OM
HRM
54
Journals
Currency
Conversi
on
Daily
Conversi
on Rates
Requisitions
RFQ
Quotations
Purchase
Orders
Invoices
Payments
Customers
Invoices
Receipts
Sales
Orde
rs
GL Interface
SQL* Loader
PL/SQL Block
GL_Interface
GL Execution
Report
Journal Import
GL_JE_HEADERS, GL_JE_LINES,
GL JE BATCHES
CLASS 42
GL_INTERFACE_TABLE
STATUS: This column will accept any string but we will always insert standards string called
new it indicates that we are brining new data in to General Ledge Applications.
SET_OF_BOOKS_ID: We have to enter the appropriate set of books ID, it should be valid set
of books id is available in GL_SETS_BOOKS table it is valid, otherwise i8t is invalid.
USER_JE_SOURCES_NAME: We have to enter the journal sources name for the transaction
we can find all the valid source names in the tabled called GL_JE_SOURCES.
USER_JE_CATEGORY_NAME: WE have to find out weather journal category is available in
the GL_JE_CATEGORIES table. It is is available then we will insert, otherwise we will reject.
CURRENCY_CODE: We have to enter the valid currency code in FND_CURREINCES table
we can find out weather it is valid or not.
Emp
55
ACCOUNTING_DATE and CREATION_DATE: Both columns will accept valid date but that
date should be less than or equal to System date.
CREATED_BY: WE have to enter valid user_id from FND_USER table we can identify weather
it is valid user_id or not.
PERIOD_NAME: We have to enter valid period name and period should be in the open status
from GL_PERIODS table we can find out weather it is valid period or not, from
GL_PERIOD_STATUS table we can find out period is in the open status or not.
ENTERED_DR and ENTERED_CR: Both columns will accept positive number Debit and credit
amount, both debit and credit should be equal otherwise account will be imported as suspense
account.
GROUP_ID: WE will enter unique group number while importing from interface table to base
table it will be used as parameter.
CTUAL_FLAG: This column will accept single character either A or B or E a- Actual
amounts, B- Budget Amounts, E- Encumbrance Amounts
AP
AR
GL_JE_HEADERS
GL_JE_LINES
GL_JE_BATCHES
INV
GL INTERFACE
FA
CM
F FIELS
Reference 1
Reference 2
Reference 3
Reference 4
Reference 5
Reference 11 to 20
Chart_of_accounts_id
Transationc_date
Je-Batch_id
Je_header_id
Batch Name
Batch Description
Dont Enter any value
Journal Entry Name
Journal Entry Description
Dont enter any values.
Dont enter any values.
Dont enter any values.
Dont enter any values.
Dont enter any values.
56
Process Steps:
1) We have received flat file from client
2) We have created Staging table as per flat file structure
3) Developed Control file and uploaded data
4) Developed PL/SQL Program to upload the data from stage into interface table
i. declare Cursor
ii. open cursor
iii. Validate each record
iv. If no invalid record then insert into interface table.
5) Run the journal import from GL => Journal => Import => Run
i. Give the two parameters 1)Source 2)Group ID
6) Open the Output if status is 'SUCEESS' then take Request ID.
7) open Journal Enter screen Query the records based on the %requestid% As
batch Name - Select Review journal button we can see the journal detailed
transaction
8) If we want correct the journals we can correct from Journal=>Import=>Correct
9) If we want delete the journals we can delete from Journal=>Import=>Delete
Temporary Table Creation
Create Table GL_INT_TEMP (
STATUS
Varchar2(10),
SET_OF_BOOKS_ID Number(8),
ACCOUNTING_DATE,
Date,
CURRENCY
Number(8),
DATE_CREATED
Date,
CREATED_BY
Number(8),
ACTUAL_FLAG
Varchar2(1),
CATEGORY
Varchar2(10),
SOURCE
Varchar2(10),
CURR_CONVERSION
Number(8),
SEGMENT1
Varchar2(100),
SEGMENT2
Varchar2(100),
SEGMENT3
Varchar2(100),
SEGMENT4
Varchar2(100),
SEGMENT5
Varchar2(100),
ENTERED_DR
Number(8),
ENTERED_CR
Number(8),
ACCOUNTED_DR
Number(8),
ACCOUNTED_CR
Number(8),
GROUP_ID
Number(8) );
57
Control File Creation To transfer the data from flat file to staging table.
LOAD DATA
INFILE *
INSERT INTO TABLE GL_INT_TEMP
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(STATUS,
SET_OF_BOOKS_ID,
ACCOUNTING_DATE,
CURRENCY,
DATE_CREATED,
CREATED_BY,
ACTUAL_FLAG,
CATEGORY,
SOURCE,
CURR_CONVERSION,
SEGMENT1,
SEGMENT2,
SEGMENT3,
SEGMENT4,
SEGMENT5,
ENTERED_DR,
ENTERED_CR,
ACCOUNTED_DR,
ACCOUNTED_CR,
GROUP_ID)
BEGINDATA
"NEW",1,"11-AUG-2002","USD","11-AUG2002",1318,"A","Inventory","JETFORMS","Corporate","01","000","1410","0000","000",555,555,5
55,555,66
"NEW",1,"11-AUG-2002","USD","11-AUG2002",1318,"A","Inventory","JETFORMS","Corporate","01","000","1410","0000","000",554,554,5
54,554,66
"NEW",1,"11-AUG-2002","USD","11-AUG2002",1318,"A","Inventory","JETFORMS","Corporate","01","000","1410","0000","000",321,321,3
21,321,66
"NEW",1,"11-AUG-2002","USD","11-AUG2002",1318,"A","Inventory","JETFORMS","Corporate","01","000","1410","0000","000",431,431,4
31,431,66
"NEW",1,"11-AUG-2002","SGD","11-AUG2002",1318,"K","Inventory","JETFORMS","Corporate","01","000","1410","0000","000",1500,1500
,1500,1500,66
"NEW",1,"11-AUG-2002","EUR","11-AUG2002",1318,"A","Inventory","JETFORMS","Corporate","01","000","1410","0000","000",1600,1600
,1600,1600,66
58
Creation of PL/SQL procedure to transfer the data from staging table to interface table
after validation.
CREATE OR REPLACE PROCEDURE GL_IN_PRO(
IS
-- cursor declaration
CURSOR gl_cur IS
SELECT
status ,
set_of_books_id ,
accounting_date ,
currency ,
date_created ,
created_by ,
actual_flag ,
category
,
source ,
curr_conversion ,
segment1 ,
segment2
,
segment3
,
segment4
,
segment5
,
entered_dr
,
entered_cr
,
accounted_dr ,
accounted_cr ,
group_id
FROM GL_INT_TEMP;
l_currencycode
VARCHAR2(25);
l_set_of_books_id
NUMBER(3);
l_flag
VARCHAR2(2);
l_error_msg
VARCHAR2(100);
l_err_flag
VARCHAR2(10);
l_category
VARCHAR2(100);
L_USERID
NUMBER(10);
BEGIN
DELETE FROM gl_interface;
COMMIT;
FOR rec_cur IN gl_cur LOOP
l_flag:='A';
l_err_flag:='A';
--This PL/SQL Block will do the currency validation
--end of the currency validation
--Category Column Validation
BEGIN
SELECT USER_JE_CATEGORY_NAME
INTO l_CATEGORY
FROM GL_JE_CATEGORIES
WHERE USER_JE_CATEGORY_NAME = REC_CUR.Category;
59
EXCEPTION
WHEN OTHERS THEN
l_category:=NULL;
l_flag:='E';
l_error_msg:='Category does not exist ';
END;
Fnd_File.put_line (Fnd_File.LOG,'Inserting data into the Interface TABLE'||L_FLAG);
--End Category Column Validation
--User ID column validation
BEGIN
SELECT USER_ID
INTO L_USERID
FROM FND_USER
WHERE USER_ID = REC_CUR.created_by;
EXCEPTION
WHEN OTHERS THEN
L_userid:=NULL;
l_flag:='E';
l_error_msg:='User ID does not exist ';
END;
Fnd_File.put_line (Fnd_File.LOG,'Inserting data into the Interface TABLE'||L_FLAG);
--End of Created_by OR UserID column Validation
--Set of books Validation
BEGIN
SELECT set_of_books_id
INTO l_set_of_books_id
FROM GL_SETS_OF_BOOKS
WHERE set_of_books_id=rec_cur.set_of_books_id;
EXCEPTION
WHEN OTHERS THEN
l_set_of_books_id:=NULL;
l_flag:='E';
l_error_msg:='set of Books ID does not exist ';
END;
Fnd_File.put_line (Fnd_File.LOG,'Inserting data into the Interface TABLE'||L_FLAG);
-- End Set of books Validation
--Status Column validation
/* BEGIN
IF rec_cur.status = 'NEW' THEN
l_flag:= 'A';
ELSE
l_flag:= 'E';
Fnd_File.put_line (Fnd_File.LOG,'Status column has got invalid data');
END IF;
END;*/
BEGIN
SELECT currency_code
INTO l_currencycode
FROM fnd_currencies
WHERE currency_code=rec_cur.currency
AND currency_code='USD';
60
EXCEPTION
WHEN OTHERS THEN
l_currencycode:=NULL;
l_flag:='E';
l_error_msg:='currency code does not exists';
END;
Fnd_File.put_line (Fnd_File.LOG,'Inserting data into the Interface TABLE'||L_FLAG);
Fnd_File.put_line (Fnd_File.LOG,'Inserting data into the Interface TABLE'||L_FLAG);
--End of Actual Flag Column validation
IF l_flag!='E' THEN
Fnd_File.put_line (Fnd_File.LOG,'Inserting data into the Interface TABLE');
INSERT INTO gl_interface(status,
set_of_books_id,
accounting_date,
currency_code,
date_created,
created_by,
actual_flag,
user_je_category_name,
user_je_source_name,
user_currency_conversion_type,
segment1,
segment2,
segment3,
segment4,
segment5,
entered_dr,
entered_cr,
accounted_dr,
accounted_cr,
group_id)
VALUES
(rec_cur.status ,
rec_cur.set_of_books_id ,
rec_cur.accounting_date ,
rec_cur.currency ,
rec_cur.date_created ,
rec_cur.created_by ,
rec_cur.actual_flag ,
rec_cur.category
,
rec_cur.source ,
rec_cur.curr_conversion
,
rec_cur.segment1 ,
rec_cur.segment2 ,
rec_cur.segment3 ,
rec_cur.segment4 ,
rec_cur.segment5 ,
rec_cur.entered_dr ,
rec_cur.entered_cr ,
rec_cur.accounted_dr ,
rec_cur.accounted_cr ,
61
rec_cur.group_id);
END IF;
l_flag:=NULL;
l_error_msg:=NULL;
END LOOP;
COMMIT;
END GL_IN_PRO;
PO Flat File
.bad or .dis
SQL* Loader
PL/SQL Block
PO_HEADERS_INTERFACE
PO_LINES_INTERFACE
PO_INTERFACE
_ERROR
Standard Program
PO_HEADERS_ALL
PO_LINES_ALL
PO_LINE_LOCATIONS_ALL
PO_DISTRIBUTIONS
PO_HEADERS_INTEFACE
Column Name
VENDOR_ID
VENDOR_SITE_ID
VENDOR_CONTACT_ID
AGENT_NAME
ORG_ID
DOCUMENT_LOOKUP_CODE
CREATION_DATE
CURRENCY_CODE
SHIP_TO
62
BILL_TO
PO_LINES_INTERFACE
Column Name
LINE_NUM
LINE_TYPE
ITEM
ITEM_ID
ITEM_DESCRIPTION
ITEM_CATEGORY
ITEM_UOM
QUANTITY
UNIT_PRICE
NEED_BY_DATE
PROMISED_DATE
SHIP_TO_ORG_ID
SHIP_TO_LOCAITONS
ORG_ID
HR_LOCATIONS
Pre Requisites
1)
2)
3)
4)
5)
6)
Process Steps
1)
2)
3)
4)
63
64
BEGINDATA
1,1,2,2,"Goods","AS54999","Sentinel Standard Desktop Rugged",2155,"Ea",10,120,"M1","Adelaide",45
1,2,3,3,"Goods","75100005","Colour Cartidge",6076,"Ea",11,111,"M1","Adelaide",55
1,3,4,4,"Goods","AS54999","Sentinel Standard Desktop Rugged",2155,"Ea",1,1400,"M1","Adelaide",65
2,4,5,1,"Goods","AS54999","Sentinel Standard Desktop Rugged",2155,"Ea",222,234,"M1","Adelaide",105
Procedure for Insertions of data from Interface tables to Base tables after validating.
CREATE OR REPLACE PROCEDURE PO_Int1(Errbuf OUT VARCHAR2,
Retcode OUT VARCHAR2) AS
CURSOR c1 IS SELECT * FROM PO_HEADER_TABLE;
CURSOR c2 IS SELECT * FROM PO_LINE_TABLE;
l_vendor_id number(10);
l_item
varchar2(150);
l_flag varchar2(4) default 'A';
l_msg
varchar2(200);
l_site_code varchar2(100);
l_curr_code varchar2(10);
l_org_id number(6);
BEGIN
DELETE FROM PO_HEADERS_INTERFACE;
DELETE FROM PO_LINES_INTERFACE;
COMMIT;
FOR x1 IN c1 LOOP
BEGIN
SELECT vendor_id
INTO l_vendor_id
FROM po_vendors
WHERE vendor_name = x1.VENDOR_NAME;
-- AND ORG_ID = Fnd_Profile.Value('ORG_ID');
EXCEPTION
WHEN OTHERS THEN
l_flag
:= 'E';
l_vendor_id := 0;
l_msg
:= 'Vendor id is Not in SYSTEM';
END;
--Vendor Site code Validation
/* begin
select vendor_site_code
into l_site_code
from po_vendor_sites_all
where vendor_site_code = x1.vendor_site_code;
EXCEPTION
WHEN OTHERS THEN
l_flag
:= 'E';
65
l_site_code := 0;
l_msg
:= 'Vendor Site Code is Not in SYSTEM';
END;*/
--End of Site Code Validation
--Currency Code Validation
Begin
select currency_code
into l_curr_code
from fnd_currencies
where currency_code = x1.CURRENCY_CODE;
EXCEPTION
WHEN OTHERS THEN
l_flag
:= 'E';
l_curr_code := 0;
l_msg
:= 'Currency Code is Invalid';
END;
--End of te Currency Validation
--Operating Unit ID Validation
Begin
select organization_id
into l_org_id
from hr_operating_units
where organization_id = x1.org_id;
EXCEPTION
WHEN OTHERS THEN
l_flag
:= 'E';
l_org_id
:= 0;
l_msg
:= 'Invalid Organization ID';
END;
--End of the ORG ID Validation
IF l_flag != 'E' THEN
INSERT INTO po_headers_interface
(
INTERFACE_HEADER_ID
,BATCH_ID
,ACTION
,ORG_ID
,DOCUMENT_TYPE_CODE
,CURRENCY_CODE
,AGENT_NAME
,VENDOR_NAME
,VENDOR_SITE_CODE
,SHIP_TO_LOCATION
,BILL_TO_LOCATION
,creation_date
,APPROVAL_STATUS
,APPROVED_DATE
,FREIGHT_TERMS
)
VALUES
(
66
x1.INTERFACE_HEADER_ID
,x1.batch_id
,x1.action
,x1.org_id
,x1.document_type_code
,x1.CURRENCY_CODE
,x1.AGENT_NAME
,x1.VENDOR_NAME
,x1.VENDOR_SITE_CODE
,x1.SHIP_TO_LOCATION
,x1.BILL_TO_LOCATION
,SYSDATE-10
,x1.APPROVAL_STATUS
,SYSDATE
,x1.FREIGHT_TERMS
);
end if;
END LOOP;
FOR x2 IN c2 LOOP
l_flag := 'A';
--Item Validation
begin
select segment1
into l_item
from mtl_system_items_b
where segment1
= x2.item
AND ORGANIZATION_ID = fnd_profile.value('ORG_ID');
exception
when others then
l_flag
:= 'E';
l_vendor_id := 0;
l_msg
:= 'Item is not valid Item';
END;
--End of the Item Validation
if l_flag != 'E' then
INSERT INTO PO_LINES_INTERFACE
(
INTERFACE_LINE_ID
,INTERFACE_HEADER_ID
,LINE_NUM
,SHIPMENT_NUM
,LINE_TYPE
,ITEM
,ITEM_DESCRIPTION
,item_id
,UOM_CODE
,QUANTITY
,UNIT_PRICE
,SHIP_TO_ORGANIZATION_CODE
,SHIP_TO_LOCATION
,NEED_BY_DATE
67
,PROMISED_DATE
,list_price_per_unit
)
VALUES
(
x2.INTERFACE_LINE_ID
,x2.INTERFACE_HEADER_ID
,x2.LINE_NUM
,x2.SHIPMENT_NUM
,x2.LINE_TYPE
,x2.ITEM
,x2.ITEM_DESCRIPTION
,x2.item_id
,x2.UOM_CODE
,x2.QUANTITY,
X2.UNIT_PRICE,
X2.SHIP_TO_ORGANIZATION_CODE,
X2.SHIP_TO_LOCATION,
X2.NEED_BY_DATE,
X2.PROMISED_DATE,
X2.LIST_PRICE_PER_UNIT);
END IF;
END LOOP;
COMMIT;
END PO_INT1;
Conversion
Conversion is one of the program which will be used to upload the data from legacy system in to
oracle applications, base tables, one time data transfer like
Customer Conversion
Supplier Conversion
Employee Conversion
Items Conversion and so on
Differences between Inbound Interface and Conversion
Inbound Interface
Conversion
It is schedule concurrent process which will One time data transfer
be executed multiple times
WE will not be knowing the flat file volume
We will be knowing the exact flat file
volume
We need to handle the all the expected We do not need to know all the exceptions
exceptions
Error Reports and sending email alerts, if It is not required we have to upload all the
any error occurs
records and close.
Enhancement or customization projects
Implementation, Migrations or up-gradation
projects we will find.
68
Request Set
It is nothing but collection of concurrent programs and report, which will be used to
submit more than one program at a time from SRS windows
Executable
Concurrent
Programe
Request Set
Request Group
Responsibility
User
SRS
Navigation Concurrent Set and enter - Select Request Set Wizard button, select
sequentially or parallel option, enter request set name and enter concurrent programs
select finish button.
69
Accounts Payables
Procure to Pay Cycle
GL
AP
PO
Requisition
Invoices
RFQ
Payments
Transfer to GL
Quotation
PO
Receipts
Types of Invoices
1)
2)
3)
4)
5)
Standard
For all the normal payments we will crate this.
Prepayment - Advance Payment to the supplier based on the requirement.
Credit Memo - If supplier give the discount - for negative amount
Debit Memo - If company is going to deduct the amount - for negative amount
With holding tax if supplier is not recognized, the on be half of the supplier company
will pay the tax.
6) PO Default
- We will give the PO number according to that it will generate the
Invoices.
7) Recurring Invoices WE will generate the Invoices multiple times for fixed supplier, fixed
amount, fixed duration.
8) Expense Report Employee expenses
9) Quick Match 2 Way, 3 Way, 4 Way
10) Mixed Invoice Miscellaneous expenses
After creating the invoice we have to do the 3 steps
1) Validate Invoice with Distribution lines Invoice Amount = Distribution Amount
2) Approve Invoice
3) Create Accounting Transactions.
70
Creating Invoice
Payables, Vision Operations (USA)
Tools View Accounting
AP_INVOICES_ALL
AP_INVOICES-DISTRIBUTIONS_ALL
Creating accounting transactions these data will be stored in the following tables.
AP_AE_HEADERS
AP_AE_LINES
NOTE: WE can give same number to other invoice number for other suppliers.
Open the Invoice form N-Invoices-Entry-Invoices select Invoice type supplier data enter
Invoice number and amount.
Select distributions button and enter the distribution details save the transactions.
Compare Invoice table and distribution total
Select actions button check the checkbox called approve to get the Invoice approval
Select actions button check the check box called crate accounting, it will crate invoice
accounting transactions.
Select tools menu view accounting option to find the accounting entries.
Distribution Set:
(N) Setup Invoices Distribution Set and press enter It will be used to generate the
invoice distributed automatically. AT the time of creating invoices we will attach
distribution set which will distribute the amounts
Tables
o AP_DISTRIBUTION_SETS_ALL
o AP_DISTRIBUTION_SETS_LINES_ALL
After creation of invoice we have to submit the transfer program called Paybles
transfer to General Ledger.
o Copy the Invoice data, go to SRS window select the following program
Payables Transfer to General Ledger
From Date
To Date
o After completion of this program system will automatically submits the Journal
Import program to transfer in the GL Base Tables.
o Copy the Request ID of Journal Import program go to GL application
o Open the journal enter screen and enter %Request Id% in the batch filed which
will shows the Invoice date
o Select the Review Journal button which will displays the invoices detailed
transactions.
71
Process Steps
1) AP Table
a. AP_INVOICES_ALL
b. AP_INVOICES_DISTRIBUTIONS_ALL
2) Payables transfer to General Ledger
3) Select * from GL_INTERFACE
4) Journal import program
a. GL_JE_BATCHES
b. GL_JE_LINES
c. GL_HEADERS
5) Positing Journals
a. Select * form GL_BALANCES.
Payment in Payables
1) Quick - System will automatically generate check
2) Refund Refund Approval payments
3) Manual Cash or check
Crate the Invoice validate approve it and crate accounting transactions, select payments
from (N) Payments Entry Payments and enter select Payment type, Bank Account
Name, Document as check system will automatically generate check number enter
supplier details, select the button called enter invoices select invoice number save the
transactions.
Select actions button, check the check box called crate accounting to create accounting
transactions, select tools menu, view accounting option, it will displays accounting debit,
and credit transactions, select the button called payment overview it will give complete
payment details.
72
AP_TERM_LINES
Expense Report
AP_EXPENSE_REPORTS_HEADERS_ALL
AP_EXPENSE_REPORTS_LINES_ALL
Recurring Invoices
AP_RECURRING_PAYMENTS_ALL
ORACLE INVENTORY
Items
Item Transactions
Item Locations
Item Quantities
Item Attributes
Assign Organizations
Assign to categories
Define lot / serial no
Define revisions
Unit of Measure
Sub Inventory Transfer
Miscellaneous Transfer
Move Orders
Inter Organization Transfer
Inventory
Sub Inventory
Stock locations
Items on Hand Qty
Items Resserved Qty
Item Available Qty
Item Attributes
Purchasable
Inventory
WIP Item
Customer
Stackable
Items
Items Defining Master Items
ORG-ORGANIZATIONS_DEFNINITIONS
MTL_SYSTEM_ITEMS_B
To Assign the Multiple Organizations (N) Tools -> Organization
To Revisions Tools - > Revision
MTL_ITEM_REVISOINS - Inventory_item_id and Org_id
To know quantity MTL_ONHAND_QUANTITIES
Do PO Cycle -
Open the Items form, enter Item name and description select the tabs and check the
check box called Inventory items, and Purchased Item - Go to tools menu select option
73
called organization assignment to assign the item to the organization. Select Revision
option to create Item revisions.
Open the on hand quantity form enter Item name select find button, it will give item
quantity and details report.
Once we create item quantity will be zero we have to purchase from suppliers or we
have to receive from other organizations.
Select PO Applications create requisitions purchase order and receipt copy the receipt
number to Inventory applications, open the receiving transaction form (N) Transactions
Receiving Receiving Transactions ----- Enter the receipt number select find button
check the check box save the transactions.
o MTL_SECONDARY_INVENTORIES
o MTL_ITEM_LOCATIONS
o MTL_ITEM_CATEGORIES
o MTL_CATEGORIES
o MTL_MATERIAL_TRANSACTIONS
o MTL_MATERIAL_ACCOUNTS
o MTL_TRANSACTION_ACCOUNTS
(N) Setup Organization- Sub inventories and press enter
o WE can transfer the Item form one sub Inventory to another sub inventory by
using sub inventory transfer
o MTL_TRANSACTION_TYPES
o MTL_MATERIAL_TRANSCATIONS
o MTL_TRANSACTION_ACCOUNTS
Other Tables
o MTL_PARAMETERS Contains both Master and child organization
o FINANCIAL_SYSTEM_PARAMETERS Financial setup details
o CST_ITEM_COST Item cost Details
o CST_ITEM_COST_TYPES
o ITEM_LOT_SERIAL_NUMBERS
o MTL_LOT_NUMBERS
o MTL_SERIAL_NUMBER
o MTL_UNITS_OF_MEASURE
Order Management
Enter Sales Order
Book Order
Customer Confirmation
Pick release
Ship confirm
Auto Invoice
After Pick Release if the goods are not available again PO cycle we have to follow
74
Drop Shipping : Sales and Purchase the materials without having the Inventory
Client
Supplier
Customer
(N) Orders & Returns Sales Orders and data 2 levels headers and lines header level
customer Information customer ship to bill to and sales person other tax details, select
line items tab enter the Item, quantity, price and other details select the button called
book order to book the sale orders select availability button it will gives the Item available
on hand reserved quantity details select ATP details button it will give the available to
promise date details.
Select actions button to cancel the sales order to calculate the tax and to keep the sales
orders on hold and release the hold and so on.
o OE_ORDER_HEADERS_ALL
o OE_ORDERS_LINES_ALL
(N) Shipping Release Sales Orders Release shipments and enter the, and the enter
sales order number select the button called concurrent, it will submit the concurrent
program to release the sales order it picks Items from Inventory tables and user in to
deliver tables.
Once the Items are released, we will confirm the materials packing, then we will give the
shipping date (N) shipping Transaction and enter
o RA_CUSTOMER_TRS_ALL
o RA_CUSTOMER_TRS_LINES_ALL
o WSH_DELIVER_DETAILS
o OE_ORDER_LINES_ALL
o OE_ORDER_HEADER_ALL
o WSH_NEW_DELIVERS.
OTHERs
Concurrent programs Incompatibilities
It is nothing but not compatible for other programs we will select this button we will list
out the programs which are not compatible.
Run Alone check box: By using this check box we can make the program is incompatible
for all other concurrent programs.
Copy to Button: By using this button we can create new concurrent program including
the parameters and incompatible programs.
75
We want to pass KFF data as a parameter to the executable then we will use validation
type as paid select edit information button. Pass the parameters like applications short
name KFF CODE, Structure number and so on
o Example: GL_SRS_LEDGER_FLEXFIELD
$FLEX$
It will be used to retrieve the previous parameter value in to the next parameter values
set
o : $FLEX$.Previous Value set name
$PROFILE$
To Get the front end the table value set where clause from backend we will
o Fnd_profile.value
o Fnd_profile.get
o Select segment1, org_id from PO_HEADERS_ALL
WHERE ORG_ID=$PROFILE$.ORG_ID