Monday, 27 February 2012

OAF Developer Gudes

OAF Developer Guide R12

OAFramework Tutorial

OA FrameWork Developer Gude


Useful Tags in Xml Publisher Publisher Reports

xml publisher tags
=======================
1. Sort Tag :> "sort:VOUCHER_NUM;'ascending';data-type='number'"

2. Row Column Highlighting :> "if@row:position() mod 2=0"

3. Creation of page total Elements : "add-page-total:TotalFieldName;'element'"

4. Displaying Page Total: "show-page-total:TotalFieldName;'Oracle-number-format'"

5. Re grouping: "for-each-group:BASE Group;Grouping Element" , "for-each:current-group(); GROUPING-ELEMENT"

6. Last Page Only : "start@last-page:body" "end body"

7. Variable Declaration : :variable name="lpp" select="number(5)"

8. Assigning Value to Variable : "xdoxslt:set_variable($_XDOCTX, 'variable name', value)"

9. Get Value from Variable : "xdoxslt:get_variable($_XDOCTX, 'variable name')"

10. MICR font can be linked by moving it to a UNIX directory and referencing the location in the Template

11. Extended SQL and XSL Functions : xdofx:expression

12. Dynamic Data Column header : split-column-header:group element name

13 Dynamic Data Column Data : split-column-data:group element name

OAF Interview Questions

OA Framework Interview Questions
1) What is BC4J and what are all the components of BC4J?
Business Components for Java is JDeveloper's programming framework for building multitier database applications from reusable business components. Such applications typically consist of:
• A client-side user interface written in Java and/or HTML.
• One or more business logic tier components that provide business logic and views of business objects.
• Tables on the database server that store the underlying data.
Components of BC4J:
• Entity Object - EO encapsulates the business logic and rules. EO’s are used for Inserting, Updating and Deleting data. This is used for validating across the applications.
• View Object - View object encapsulates the database query. It is used for selecting data. It provides iteration over a query result set. VO’s are primarily based on EO’s. It can be used on multiple EO’s if the UI is for update.
• Application Module - Application Modules serve as containers for related BC4J components. The pages are related by participating in the same task. It also defines the logical data model and business methods needed.
2) What is an EO?
EO encapsulates the business logic and rules.EO’s are used for Inserting, Updating and Deleting data. This is used for validating across the applications. We can also link to other EO’s and create a Association object.
3) What is an VO?
View object encapsulates the database query. It is used for selecting data. It provides iteration over a query result set.VO’s are primarily based on Eo’s. It can be used on multiple EO’s if the UI is for update. It provides a single point of contact for getting and setting entity object values. It can be linked together to form View Links.
4) What is an AO?
An association object is created where we link EO’s. For example take the search page where we link the same EO to form a association between the manager and employee. Every employee should have a manager associated. But if it President then no there is no manager associated. This is a perfect example to understand the AO.
5) What is an VL?
A view link is an active link between view links. A view link can be created by providing the source and destination views and source and destination attributes. There are two modes of View link operation that can be performed. A document and Master/Detail operation.
6). What is UIX?
UIX is an extensible, J2EE-based framework for building web applications. It is based on the Model-View-Controller (MVC) design pattern, which provides the foundation for building scalable enterprise web applications.
7). VO is located in the View Layer in MVC which is responsible for presenting the data to the user.
9) Which package should include EO and AO.
The EO and AO will be present in the schema.server package.
10) What is the difference between inline lov and external lov.
Inline lov is a lov which is used only for that particular page for which it was created and cannot be used by any other page.
External lov is a common lov which can be used by any page. It is a common component for any page to use it. It can be used by giving the full path of the lov in the properties section “External LOV” of the item.
11) what is a Javabean?
JavaBeans is an object-oriented programming interface that lets you build re-useable applications or program building blocks called components that can be deployed in a network on any major operating system platform.
12) What is query Bean?
QueryBean is used to execute and return the results of a query on behalf of the QueryPortlet application.
13) what is the difference between autocustomization criteria and result based search?
Results based search generates search items automatically based on the columns on the results table.
In Autocustomization search we need to set what all fields are required to display as a search criteria.
14) what is MDS?
MDS is MetaData Service. When a web page is broken into small units like buttons,fields etc they are stored in a database. These are not stored as binary files but as data in tables. The data are present in JDR tables. MDS provides service to store & return page definitions. MDS collects those definitions in components/fields in a meaningful manner to build a page.
15) What is XML?
XML is a markup language for documents containing structured information.
Structured information contains both content (words, pictures, etc.) and some indication of what role that content plays (for example, content in a section heading has a different meaning from content in a footnote, which means something different than content in a figure caption or content in a database table, etc.).

16) What is the difference between customization and extension?
Customization is under direct user control. The user explicitly selects between certain options. Some customization examples include:
Altering the functionality of an application
Altering existing UI
Altering existing business logic

Extension is about extending the functionality of an application beyond what can be done through personalization. Some extensibility examples include:

Add new functional flows
Extend or override existing business logic
New application/module
New page
New attribute
Extend/Override defaults & validations

17) What is Personalization?
Personalization enables you to declaratively tailor the UI look-and-feel, layout or visibility of page content to suit a business need or a user preference. Some personalization examples include:
• Tailor the order in which table columns are displayed.
• Tailor a query result.
• Tailor the color scheme of the UI.
• Folder Forms
• Forms Personalization
• Oracle Application Framework (OAF)

20) What is rootAM?
The application module which is associated with the top-level page region (the pageLayout region) is root application module.

21) Why Should we give retainAM=Y?
The AM should be retained whenever you are navigating away from a page and when you know that there is a possibility to come back to the page again and data is to be retained. Example : Any navigation link that opens in a new page or any navigation which has a back button to come back to the initial page.
The AM should not be retained for two independent pages, especially if they have common VOs which fetch different result sets. In such cases, retaining the AM may not remove the cache of VOs and so the result may not be as expected.

22) What is the significance of addBreadCrumb=Y
The basic intention of the breadcrumb is to let the user know of the navigation path he took to reach the current page.

23) How do you find right jdev patch for your oracle application version.
Search in oracle.metalink.com as Jdev with OA Extension.

24) What are the tools you had used for decompiling java class?
Jad is one of the tool for decompiling the java class

Friday, 3 February 2012

Join Conditions Between Modules used in Oracle apps

KEY JOINS

GL AND AP
GL_CODE_COMBINATIONS AP_INVOICES_ALL
code_combination_id = acct_pay_code_combination_id
GL_CODE_COMBINATIONS AP_INVOICES_DISTRIBUTIONS_ALL
code_combination_id = dist_code_combination_id
GL_SETS_OF_BOOKS AP_INVOICES_ALL
set_of_books_id = set_of_books_id

GL AND AR
GL_CODE_COMBINATIONS RA_CUST_TRX_LINE__GL_DIST_ALL
code_combination_id = code_combination_id

GL AND INV
GL_CODE_COMBINATIONS MTL_SYSTEM_ITEMS_B
code_combination_id = cost_of_sales_account


GL AND PO
GL_CODE_COMBINATIONS PO_DISTRIBUTIONS_ALL
code_combination_id = code_combination_id


PO AND AP
PO_DISTRIBUTIONS_ALL AP_INVOICE_DISTRIBUTIONS_ALL
Po_distribution_id = po_distribution_id

PO_VENDORS AP_INVOICES_ALL
vendor_id = vendor_id

PO AND SHIPMENTS
PO_HEADERS_ALL RCV_TRANSACTIONS
Po_header_id = po_header_id

PO_DISTRIBUTIONS_ALL RCV_TRANSACTIONS
Po_distribution_id = po_distribution_id

SHIPMENTS AND INVOICE
RCV_TRANSACTIONS AP_INVOICE_DISTRIBUTIONS_ALL
RCV_TRANSACTION_ID = RCV_TRANSACTION_ID


PO AND INV
PO_REQUISITION_LINES_ALL MTL_SYSTEM_ITEMS_B
item_id = inventory_item_id
org_id = organization_id

PO AND HRMS
PO_HEADERS_ALL HR_EMPLOYEES
Agent_id = employee_id

PO AND REQUISITION
PO_DISTRIBUTIONS_ALL PO_REQ_DISTRIBUTIONS_ALL
req_distribution_id = distribution_id


SHIPMENTS AND INV
RCV_TRANSACTIONS MTL_SYSTEM_ITEMS_B
Organization_id = organization_id

INV AND HRMS
MTL_SYSTEM_ITEMS_B HR_EMPLOYEES
buyer_id = employee_id

OM AND AR
OE_ORDER_HEADERS_ALL RA_CUSTOMER_TRX_LINES_ALL
TO_CHAR( Order_number) = interface_line_attribute1
OE_ORDER_LINES_ALL RA_CUSTOMER_TRX_LINES_ALL
TO_CHAR(Line_id) = interface_line_attribute6

OE_ORDER_LINES_ALL RA_CUSTOMER_TRX_LINES_ALL
reference_customer_trx_line_id = customer_trx_line_id

OM AND SHIPPING
OE_ORDER_HEADERS_ALL WSH_DELIVARY_DETAILS

HEADER_ID = SOURCE_HEADER_ID

OE_ORDER_HEADERS_ALL WSH_DELIVARY_DETAILS
LINE_ID = SOURCE_LINE_ID
AP AND AR (BANKS)
AR_CASH_RECEIPTS_ALL AP_BANK_ACCOUNTS
REMITTANCE_BANK_ACCOUNT_ID = ABA.BANK_ACCOUNT_ID
AP AND AR
HZ_PARTIES AP_INVOICES_ALL

PARTY_ID = PARTY_ID

OM AND CRM
OE_ORDER_LINES_ALL CSI_ITEM_INSTANCES(Install Base)

LINE_ID = LAST_OE_ORDER_LINE_ID
Table Name: Po_Requisition_Headers_All A
Column Names Table Name Column Name
A. REQUISITION_HEADER_ID PO_REQUISITION_LINES_ALL REQUISITION_HEADER_ID
A. TYPE_LOOKUP_CODE PO_DOCUMENT_TYPES DOCUMENT_SUBTYPE
A. PREPARER_ID PER_PEOPLE_F PERSON_ID
A. ORG_ID MTL_SYSTEM_ITEMS ORGANIZATION_ID
A. ORG_ID MTL_ORGANIZATIONS ORGANIZATION_ID
Table Name: Po_Requisition_Lines_All B
Column Names Table Name Column Name
B .REQUISITION_HEADER_ID PO_REQUISITION_HEADERS_ALL REQUISITION_HEADER_ID
B .REQUISITION_LINE_ID PO_REQ_DISTRIBUTIONS_ALL REQUISITION_LINE_ID
B .LINE_TYPE_ID PO_LINE_TYPES LINE_TYPE_ID
B .ITEM_ID MTL_SYSTEM_ITEMS INVENTORY_ITEM_ID
B .ORG_ID MTL_SYSTEM_ITEMS ORGANIZATION_ID
Table Name: Po_Requisition_Distributions_All C .
Column Names Table Name Column Name
C .REQUISITION_LINE_ID PO_REQUISITION_LINES_ALL REQUISITION_LINE_ID
C .DISTRIBUTION_ID PO_DISTRIBUTIONS_ALL REQ_DISTRIBUTION_ID
C .SET_OF_BOOKS_ID GL_SETS_OF_BOOKS SET_OF_BOOKS_ID
C .CODE_COMBINATION_ID GL_CODE-COMBINATIONS CODE_COMBINATION_ID
Table Name: Po_Distributions_All D .
Column Names Table Name Column Name
D .PO_LINE_ID PO_LINES PO_LINE_ID
D .REQ_DISTRIBUTION_ID PO_REQ_DISTRIBUTIONS_ALL DISTRIBUTION_ID
D .PO_DISTRIBUTION_ID AP_INVOICE_DISTRIBUTIONS_ALL PO_DISTRIBUTION_ID
Table Name: Po_Headers_All E .
Column Names Table Name Column Name
E .PO_HEADER_ID PO_LINES PO_HEADER_ID
E .PO_HEADER_ID RCV_SHIPMENT_LINES PO_HEADER_ID
E .VENDOR_ID PO_VENDORS VENDOR_ID
E .AGENT_ID PER_PEOPLE PERSON_ID
E .TYPE_LOOK_UP_CODE PO_DOCUMENT_TYPES DOCUMENT_SUBTYPE
Table Name: Po_Lines_All F.
Column Names Table Name Column Name
F.PO_HEADER_ID PO_HEADERS PO_HEADER_ID
F.PO_LINE_ID PO_DISTRIBUTIONS_ALL PO_LINE_ID
F.ITEM_ID MTL_SYSTEM_ITEMS ITEM_ID
Table Name: Rcv_Shipment_Lines G.
Column Names Table Name Column Name
G.PO_HEADER_ID PO_HEADERS PO_HEADER_ID
G.SHIPMENT_HEADER_ID RCV_SHIPMENT_HEADERS SHIPMENT_HEADER_ID
Table Name: Ap_Invoices_All H.
Column Names Table Name Column Name
H. INVOICE_ID AP_INVOICE_DISTRIBUTIONS_ALL INVOICE_ID
Table Name: Oe_Order_Headers_All I.
Column Names Table Name Column Name
I.HEADER_ID OE_ORDER_LINES HEADER_ID
I.SOURCE_HEADER_ID WISH_DELIVERY_DETAILS SOURCE_HEADER_ID
I.PRICE_LIST_ID QP_LIST_HEADERS_TL LIST_HEADER_ID
I.ORG_ID MTL_ORGANIZATIONS ORGANIZATION_ID
I.SALESREP_ID JTF_RS_SALESREPS SALESREP_ID
I.ORDER_TYPE_ID OE_TRANSACTION_TYPES TRANSACTION_TYPE_ID
I.ORDER_SOURCE_ID OE_ORDER_SOURCES ORDER_SOURCE_ID
I.ACCOUNTING_RULE_ID RA_RULES RULE_ID
I.PAYMENT_TERM_ID RA_TERMS TERM_ID
I.SOLD_TO_ORG_ID HZ_CUST_ACCOUNTS CUST_ACCOUNT_ID
I.SHIP_FROM_ORG_ID MTL_PARAMETERS ORGANIZATION_ID
I.SHIP_TO_ORG_ID HZ_CUST_SITE_USES_ALL SITE_USE_ID
Table Name: Oe_Order_Lines_All J.
Column Names Table Name Column Name
J.LINE_TYPE_ID OE_TRANSACTION_TYPES_TL TRANSACTION_TYPE_ID
J.INVOICING_RULE_ID RA_RULES RULE_ID
Table Name: Hz_Parties K.
Column Names Table Name Column Name
K.PATY_ID HZ_CUST_ACCOUNTS PATY_ID
K.CUST_ACCOUNT_ID OE_ORDER_LINES SOLD_TO_ORG_ID
Table Name: Hz_Party_Sites_All L.
Column Names Table Name Column Name
L.PATY_ID HZ_PARTIES PATY_ID
L. LOCATION_ID HZ_LOCATIONS LOCATION_ID
Table Name: Wsh_delivery_details M.
Column Names Table Name Column Name
M.SOURCE_HEADER_ID OE_ORDER_HEADERS SOURCE_HEADER_ID
M.DELIVERY_DETAIL_ID WSH_DELIVERY_ASSIGNMENTS DELIVERY_DETAIL_ID
M.DELIVERY_ID WSH_NEW_DELIVERIES DELIVERY_ID
M.INVENTORY_ITEM_ID MTL_SYSTEM_ITEMS INVENTORY_ITEM_ID
Table Name: RA_CUSTOMER_TRX_ALL N.
Column Names Table Name Column Name
N.CUSTOMER_TRX_ID AR_RECEIVABLE_APPLICATIONS_ALL APPLIED_CUSTOMER_TRX_ID
N.TERM_ID RA_TERMS TERM_ID
N.CUSTOMER_TRX_ID RA_CUST_TRX_LINE_GL_DIST CUSTOMER_TRX_ID
Table Name: AR_CASH_REC EIPTS_ALL O.
Column Names Table Name Column Name
O.CASH_RECEIPT_ID AR_RECEIVABLE_APPLICATIONS_ALL CASH_RECEIPT_ID
O.SET_OF_BOOKS_ID GL_SETS_OF_BOOKS SET_OF_BOOKS_ID

Thursday, 2 February 2012

Oracle Reports Script and Join Conditions of Tables

SELECT   ROWNUM "SL NO",
                prha.segment1 "PR NO",
                prha.creation_date "PR CREATION DATE",
               (prla.quantity*prla.unit_price) "PR VALUE",
               msib.inventory_item_id "MATERIAL CODE",
               msib.description "MATERIAL DESCRIPTION",
               prla.quantity "QTY",
               prla.unit_meas_lookup_code "UOM",
               prha.authorization_status "PR APPROVAL STATUS",
               pha.segment1 "PO NO",
               pha.creation_date "PO DATE",
               (pla.quantity*pla.unit_price) "PO VALUE"
FROM     po_requisition_headers_all prha,
              po_requisition_lines_all prla,
              mtl_system_items_b msib,
              po_headers_all pha,
              po_req_distributions_all prda,
              po_distributions_all pda,
              po_lines_all pla,
              hr_operating_units hou
WHERE prha.requisition_header_id=prla.requisition_header_id
AND       prha.org_id=msib.organization_id
AND       msib.inventory_item_id=prla.item_id
AND       prla.requisition_line_id=prda.requisition_line_id
AND       prda.distribution_id=pda.req_distribution_id
AND       pda.po_line_id=pla.po_line_id
AND       pla.po_header_id=pha.po_header_id
AND       hou.name=:Operating_Unit
AND       TRUNC(prha.creation_date)  BETWEEN NVL(:From_Creation_Date,to_date                                                   (prha.creation_date,'DD-MON-RR')) AND NVL(:To_Creation_Date,to_date
              (prha.creation_date,'DD-MON-RR'))
AND       msib.inventory_item_id BETWEEN NVL(:From_Material_Code,msib.inventory_item_id)
              AND NVL(:To_Material_Code,msib.inventory_item_id)

List of PR's Converted to PO

select  ROWNUM "SL NO",
           prha.segment1 "PR NO",
           prha.creation_date "PR CREATION DATE",
           prha.approved_date "PR APPROVAL DATE",
           msib.inventory_item_id "MATERIAL CODE",
           msib.description "MATERIAL DESCRIPTION",
           prla.quantity "QTY",
           prla.unit_meas_lookup_code "UOM",
           pha.segment1 "PO NO",
           pha.creation_date "PO_CREATION_DATE",
           pha.approved_date "PO APPROVAL DATE",
           aps.vendor_name "SUPPLIER_NAME",
           papf.full_name "BUYER NAME",
          (prla.quantity*prla.unit_price) "PR VALUE",
          (pla.quantity*pla.unit_price) "PO VALUE"     
FROM  po_requisition_headers_all prha,
            po_requisition_lines_all prla,
            po_req_distributions_all prda,
            po_distributions_all pda,
            mtl_system_items_b msib,
            po_headers_all pha,
            ap_suppliers aps,
            per_all_people_f papf,
            po_lines_all pla,
            hr_operating_units hou 
WHERE  prha.requisition_header_id=prla.requisition_header_id
AND        prla.requisition_line_id=prda.requisition_line_id
AND        prda.distribution_id=pda.req_distribution_id
AND        pda.po_header_id=pha.po_header_id
AND        prla.item_id= msib.inventory_item_id
AND        msib.organization_id=prha.org_id
AND        pha.vendor_id=aps.vendor_id
AND        pha.agent_id=papf.person_id
AND        pha.po_header_id=pla.po_header_id
AND        hou.name=:Operating_Unit
AND        TRUNC(prha.creation_date) BETWEEN NVL(:From_Creation_Date,to_date
              (prha.creation_date,'DD-MON-RR')) AND NVL(:To_Creation_Date,to_date
              (prha.creation_date,'DD-MON-RR'))
AND       msib.inventory_item_id BETWEEN NVL (:From_Material_Code,msib.inventory_item_id)
             AND NVL (:To_Material_code, msib.inventory_item_id)     
AND   aps.vendor_name=:Vendor
AND   papf.full_name=:Buyer

List of Rejected PR's

select   ROWNUM "SL NO",
           prha.segment1 "PR NO",
           prha.creation_date "PR CREATION DATE",
           prha.approved_date "PR APPROVAL DATE",
           msib.inventory_item_id "MATERIAL CODE",
           msib.description "MATERIAL DESCRIPTION",
           prla.quantity "QTY",
           prla.unit_meas_lookup_code "UOM" ,
           prla.unit_price "UNIT_VALUE",
           (prla.quantity*prla.unit_price) "TOTAL VALUE",
           plla.need_by_date,
           papf.full_name "REQUESTOR",
           pha.vendor_site_id "REQUESTOR AT SITE"     
FROM po_requisition_headers_all prha,
           po_requisition_lines_all prla,
           po_req_distributions_all prda,
           po_distributions_all pda,
           mtl_system_items_b msib,
           po_headers_all pha,
           po_line_locations_all plla,
           per_all_people_f papf,
           hr_operating_units hou
WHERE prha.requisition_header_id=prla.requisition_header_id
AND     prla.requisition_line_id=prda.requisition_line_id
AND     prda.distribution_id=pda.req_distribution_id
AND     pda.po_header_id=pha.po_header_id
AND     prla.item_id=msib.inventory_item_id
AND     msib.organization_id=prha.org_id
AND     pha.po_header_id=plla.po_header_id
AND     pha.agent_id=papf.person_id
AND     hou.name=:Operating_Unit
AND    TRUNC(prha.creation_date) BETWEEN NVL(:From_Creation_Date,to_date
           (prha.creation_date,'DD-MON-RR')) AND NVL(:To_Creation_Date,to_date
           (prha.creation_date,'DD-MON-RR'))
AND     msib.inventory_item_id BETWEEN NVL (:From_Material_Code,msib.inventory_item_id)
            AND NVL (:To_Material_code, msib.inventory_item_id)
AND   papf.full_name=:Requestor                                    
                                  

PR's Converted to RFQ

select  ROWNUM "SL NO",
           prha.segment1 "PR NO",
           prha.creation_date "PR CREATION DATE",
           prha.approved_date "PR APPROVAL DATE",
           msib.inventory_item_id "MATERIAL CODE",
           msib.description "MATERIAL DESCRIPTION",
           prla.quantity "QTY",
           prla.unit_meas_lookup_code "UOM",
           pha.segment1 "RFQ NO",
           pha.creation_date "RFQ CREATION DATE"    
FROM po_requisition_headers_all prha,
           po_requisition_lines_all prla,
           po_req_distributions_all prda,
           po_distributions_all pda,
           mtl_system_items_b msib,
           po_headers_all pha,
           hr_operating_units hou
WHERE prha.requisition_header_id=prla.requisition_header_id
AND     prla.requisition_line_id=prda.requisition_line_id
AND     prda.distribution_id=pda.req_distribution_id
AND     pda.po_header_id=pha.po_header_id
AND      prla.item_id= msib.inventory_item_id
AND      msib.organization_id=prha.org_id
AND      hou.organization_id(+)=pha.org_id
AND      hou.name=:Operating_Unit
AND      TRUNC(prha.creation_date) BETWEEN NVL(:From_Creation_Date,to_date
            (prha.creation_date,'DD-MON-RR')) AND NVL(:To_Creation_Date,to_date
            (prha.creation_date,'DD-MON-RR'))
AND      msib.inventory_item_id BETWEEN NVL (:From_Material_Code,
             msib.inventory_item_id) AND NVL (:To_Material_code, msib.inventory_item_id)
            
                                        


Oracle Apps HRMS Interview Questions

1. Important Tables in HRMS
Per_all_people_F,
per_person_types,
per_person_type_usages,
per_addresses,
per_contact_Relationships,
per_periods_of_service
Per_all_assignments_f,
per_pay_groups,
per_jobs,
per_job_Definitions,
per_grades,
per_grade_definitions,
hr_all_positions,
hr_all_position_definitions,
hr_all_locations,
pay_all_payrolls_F
pay_element_entry_values_F,
pay_element_entries_F,
pay_elements_links_F,
pay_element_types_F

2. Key Flexfields (KFFs) in HRMS
Job KFF,
Grade KFF,
People Group KFF,
Position KFF,
Cost Allocation KFF,
Comptence KFF

3.What are Date Track Tables? 
Every update in the Table, we will save the change in the form of a Record to provide the facility to find the information at any point of time.

These tables are post fixed by _F

4. What are secured Views?
The Views which do not have the _all to be said as secured views.
Per_all_people_F
per_people_f
per_all_assignemtns_f
per_assignments_f
pay_all_payrolls_F
per_payrolls_f

5. The differece between both secured views and non secured views is :
1.Secured views display information only for the current period
2.Unsecured views is used to get the information from the entire rows

6. APIs in HRMS
API are used in HR to insert the data into the Base tables. As its very secured system, the user does nothave the facility to copy the data directly into the Base tables.When we write the inbound interfaces / use WebAdI, the systems will use the APIs to store the data into system.The API are published by oracle with number of parameters.The different types of parameters are IN / INOUT / OUT.Of these parameters few are mandatory, with out which the process wont complete.Generally when we use API we give data for : Object Version Number, Effective Date, P_Validate

HR_EMOYEE_api ex: hr_employee_api.create_employee
hr_PERSON_api
hr_organization_api Ex: hr_organization_api.create_organization
hr_applicant_apI
hr_assignment_api

7. What are the reports which you have done in HR?
HR PAYROLL COSTING :
This report is used to display the information about the employees, the assignements which were given to the employees along with the payroll details including the Hours Paid, Salary, NI, Pension, Car Allowances and Other Allowances.


Imported Supply Purchase Order

SELECT         DISTINCT pva.segment1 "VENDOR CODE",
                    plla.ship_to_organization_id,
                    pha.po_header_id,
                    hla.inventory_organization_id,
                    pva.VENDOR_NAME,
                    pvsa.address_line1,
                    pvsa.address_line2,
                    pvsa.city,
                    pvsa.state,
                    pvsa.ZIP "PINCODE",
                   (PVC.first_name|| pvc.last_name) "SUPPLIER's CONTACT PERSON",
                       PVSA.phone "Mobile No./Phone No. ",
                        PVC.fax "FAX NO. ",
                   PVC.email_address "EMAIL ID ",
                  (pha.segment1||'/'||pha.revision_num) "PO/REV No",
                  (pra.release_num||'/'||pha.revision_num) "Rel/REV No.",
                  prha.segment1 "PR NO.",
                  papf.full_name "BUYER NAME ",
                  hla.address_line_1 "ADDRESS LINE 1 ",
                  hla.address_line_2 "ADDRESS LINE 2",
                  hla.LOCATION_CODE,
                  hla.town_or_city "CITY /STATE",
                  hla.telephone_number_1 "PHONE NO./FAX NO. ",
                  rownum "SL NO.",
                  msib.segment1 "ITEM_CODE",
                  pla.item_description,
                  plla.quantity "SHIPMENT QTY",
                  pla.UNIT_MEAS_LOOKUP_CODE "UOM",
                  plla.NEED_BY_DATE "NEED BY DATE ",
                  pha.currency_code "CURRENCY",
                  pla.unit_price "UNIT BASIC PRICE",
                 (pla.unit_price * plla.quantity) "TOTAL BASIC PRICE",
                 pla.po_header_id,
                 msib.organization_id,
                 plla.tax_name "SEA WORTHY PACKING",
                 pha.fob_lookup_code "DELIVERY TERMS",
                 pha.freight_terms_lookup_code "MODE OF TRANSPORT",
                 trm.name "PAYMENT TERMS",
                 papf.full_name,
                 jcvs.CST_REG_NO "CST NO.",
                 jcvs.VAT_REG_NO "VAT/ TIN NO.",
                 jcvs.EC_CODE "ECC NO.",
                 (fdt.title||fdt.description ) "ATTACHMENT",
                 hou.NAME "OPERATING UNIT"
FROM        po_headers_all pha,
                 po_releases_all pra,
                 ap_suppliers pva,
                 ap_supplier_sites_all pvsa,
                 ap_supplier_contacts pvc,
                 per_all_people_f papf,
                 po_line_locations_all plla,
                 po_distributions_all pda,
                 po_req_distributions_all prda,
                 po_requisition_lines_all prla,
                 po_requisition_headers_all prha,
                 hr_locations_all hla,
                 po_lines_all pla,
                 mtl_system_items_b msib,
                    JAI_CMN_VENDOR_SITES JCVS,
                 hr_operating_units  hou,
                ap_terms_tl trm,
                fnd_documents_tl fdt,
                fnd_attached_documents fad
WHERE  pha.po_header_id= pra.po_header_id
AND        pva.vendor_id= pvsa.vendor_id
AND       pvc.vendor_site_id= pvsa.vendor_site_id
AND       pha.org_id=pvsa.org_id(+)
AND       pha.agent_id=papf.person_id
AND       pha.po_header_id=plla.po_header_id
AND      plla.ship_to_location_id=hla.location_id
AND      plla.po_line_id=pla.po_line_id
AND       pla.item_id=msib.inventory_item_id(+)
AND      msib.organization_id=hla.inventory_organization_id

AND 
     jcvs.vendor_site_id(+)=pvsa.vendor_site_id
AND      hou.organization_id(+)=pha.org_id
AND      pda.line_location_id(+)=plla.line_location_id
AND      pra.po_release_id(+)=pda.po_release_id
AND      prda.distribution_id=pda.req_distribution_id
AND      prla.requisition_line_id=prda.requisition_line_id
AND      prha.requisition_header_id=prla.requisition_header_id
AND      trm.term_id=pha.terms_id
AND      fad.pk1_value(+) = TO_CHAR(pha.po_header_id)
AND      fdt.document_id (+)=fad.document_id
AND      pva.segment1 BETWEEN NVL(:FROM_VENDOR_CODE,pva.segment1)  
                AND NVL(:TO_VENDOR_CODE,pva.segment1)
AND     pha.currency_code<>'INR'
    


APIL payments Invoice using Vendor

SELECT   pha.segment1 "PO_NO" ,
               pha.creation_date "PO_DATE",
               pv.vendor_name,
                  SUM(pla.quantity) "PO_QTY",
               rsh.receipt_num "GRN_NO",
               rt.transaction_date "GRN_DATE",
                   SUM(plla.quantity_received) "RECEIVED_QTY",
                    SUM(plla.quantity_accepted) "ACCEPTED_QTY",
               SUM(aila.quantity_invoiced) "INVOICED_QTY",
               aia.amount_paid "PAYMENT_AMT",        
               apt.name "PAYMENT_TERMS",
               apsa.due_date "PAYMENT_DATE",
               aca.payment_method_code "PAYMENT_MODE",
                    DECODE(aca.payment_method_code,'CHECK',aca.check_number,
                    'NETTING',aca.check_number) "CHECK_NUMBER",
                  DECODE(aca.payment_method_code,'CHECK',aca.check_date,
                    'NETTING',aca.check_date) "CHECK_DATE"      
FROM     po_headers_all pha,
               po_lines_all pla,
               po_line_locations_all plla,
               po_distributions_all pda,
               po_vendors pv,
               rcv_transactions rt,
               rcv_shipment_headers rsh,
               rcv_shipment_lines rsl,
               ap_invoices_all aia,
               ap_invoice_lines_all aila,
               ap_invoice_distributions_all aida,
               ap_invoice_payments_all aipa,
               ap_payment_schedules_all apsa,
               ap_checks_all aca,
               ap_terms apt,
               mtl_system_items_b msib,
               org_organization_definitions ood
WHERE  pha.po_header_id=pla.po_header_id
AND        pla.po_line_id=plla.po_line_id
AND        plla.line_location_id=pda.line_location_id
AND        pv.vendor_id=pha.vendor_id
AND        rsh.shipment_header_id=rsl.shipment_header_id
AND        pda.po_distribution_id=rsl.po_distribution_id
AND        rsl.shipment_line_id=rt.shipment_line_id
AND        aia.invoice_id=aila.invoice_id
AND       aia.invoice_id=aida.invoice_id
AND       aipa.invoice_id(+)=aia.invoice_id
AND       aia.invoice_id=apsa.invoice_id
AND       aipa.check_id=aca.check_id(+)
AND       apt.term_id=aia.terms_id
AND       pla.item_id=msib.inventory_item_id(+)
AND       ood.organization_id(+)=msib.organization_id
AND       rt.transaction_id=aida.rcv_transaction_id
AND      TRUNC(rt.transaction_date) BETWEEN NVL(:FROM_RECEIPT_DATE,to_date
         (rt.transaction_date,'DD-MON-RR')) AND NVL(:TO_RECEIPT_DATE,to_date
         (rt.transaction_date,'DD-MON-RR'))
AND      pv.vendor_name=NVL(:VENDOR_NAME,pv.vendor_name)   
AND      aca.payment_method_code='CHECK'
GROUP BY pha.segment1,
                  pha.creation_date,
                  pv.vendor_name,
                  rsh.receipt_num,
                  rt.transaction_date,
                  aia.amount_paid,
                  apt.name,
                  apsa.due_date,
                  aca.payment_method_code,
                  aca.check_number,
                  aca.check_date



List of Open PO

SELECT     pha.segment1 "PO_NO",
               pha.creation_date "PO_CREATION_DATE",
               aps.segment1 "VENDOR_CODE",
               msib.segment1 "MATERIAL_CODE",
               msib.description "MATERIAL_DESCRIPTION",
               plla.need_by_date,
               pla.unit_meas_lookup_code "UOM",
               plla.quantity "PO_QTY",
                SUM(plla.quantity_received) "RECEIVED_QTY",
                   SUM(plla.quantity_accepted) "ACCEPTED_QTY",
                   SUM(plla.quantity_rejected) "REJECTED_QTY",
              (plla.quantity-plla.quantity_received) "BALANCE_QTY_TO_BE_RECEIVED"
FROM      po_headers_all pha,
              po_lines_all pla,
              po_line_locations_all plla,
              po_distributions_all pda,
              mtl_system_items_b msib,
              ap_suppliers aps
WHERE pha.vendor_id=aps.vendor_id
AND     pha.po_header_id=pla.po_header_id
AND     pla.po_line_id=plla.po_line_id
AND     pla.item_id=msib.inventory_item_id
AND     pha.org_id=:ORGANIZATION
AND     TRUNC (pha.creation_date) BETWEEN NVL (:FROM_RECEIPT_DATE,TO_DATE
         (pha.creation_date,'DD-MON-RR'))AND NVL (:TO_RECEIPT_DATE,TO_DATE
         (pha.creation_date,'DD-MON-RR'))                    
AND     pha.vendor_id=:VENDOR
AND     pha.segment1='7015'
GROUP BY    pha.segment1,
                  pha.creation_date,
                  aps.segment1,
                  msib.segment1,
                  msib.description,
                  plla.quantity,
                  plla.need_by_date,
                  pla.unit_meas_lookup_code,
                  plla.quantity,
                  plla.quantity_received,
                  plla.quantity_accepted,
                  plla.quantity_rejected,
                  plla.quantity,
                  plla.quantity_received

Value Sets

Value Set: Value set is nothing but list of values with validations which will be
used to to restrict the user without entering the invalid data in the Parameters

we will use value sets in two locations.
                1)Concurrent Progam parameters
                    2)Flexfields
NONE:
----
We are not providing any LOV, we can apply some format conditions as per that
conditions user should enter the data

Notes: 1)Once we create the Value set we can not Delete if we would like to delete
         we have to release the value set from the all the concurrent program
      parameters then only we can delete.
  2)Value set name is case sensitive
  3)Once we create Value set we can use for multiple Program parameters.

Navigation:
-----------
System administrator => Application=>Validation=>set=>
Enter value set name
   format type
   max size
Select validation type = "None" to create None type of Value sets.

Independent:
------------

When we would like to provide list of values to the user then we will go for selection
of Independent value set.where we will provide LOV.
User must select the Value from the list otherwise values are not accepted.

Open the Value set form create value set by selecting the validation type=Independnent
Goto Values screen enter the value set name , Select Find Buttion
enter the values whatever we would like to display as LOV.
attach the value set to the Parameter.

Note:1)Once we enter the values we can not delete instead of that we can disable by
      selecting the Enabled check box
         or Effective Dates.
Dependent value Set:
====================
This is another LOV which will be used to displays the
list of values which are depending on the previous parameter value.

Before going to create Dependent first we have to create Independent
then we have to create Dependent

First parameter will be Independent
Second parameter will be Dependent.

Note:Without Independent we can not create Dependent Value set.

Country    IND
    US
    UK
City   Banglore    Chennai     Delhi     Mumbai  Pune
       Chikago  California      Anderson
       London   Hungrant

1)We have to create Independent value set and enter the values.
2)Create Dependent value set attach independent and then enter values.


Job      Manager
      Developer
      Programmer

Position   Delivery Manager   Project manager Financce manager
       Software Developer Test Developer
       Trainee  Fresher
Navigation:
==========
1)Open the Value set form create Value set by selecting the validation type =Independent
2)Open the Values screen enter the VAlues .
3)Open the value set form enter Dependent value set by select validation type=Dependent
 Select the Button called Edit Information button enter the Independent value set
4)open the values form  enter the Dependent value set=>Find
  enter the values based on the Independent values.

Table Value set :
=================

Table value set will be used to displays the list of values from the
oracle apps base tables.
we have to give the table name and column name which will automatically
displays the values.

Note: If values are not stored in the database table then we have to
      go for Independent  value set.
      If values are there in the table then we will create table value
      set.

1.Open the value set form Select  validation type as table select the
   button called Edit Information enter table name and column name
   in the value field
2.Use where/Order By clause to implement Where/Order By clause.
3.Use Additional Columns field to displays extra columns for reference
  purpose.
4.Use the ID column to pass the ineternally other columns data
  for ex displaying username to the user and pass userID internally.
5.If multiple tables are required then enter the table names in the
  table name field with alias name and enter the Join Condition in the
  Where clause field.

6.If we know the table name we can find the Table application name from
  Application Developer responsibility
Application Developer => Application => Database => table
Query the records based on the table Name.

OAF Interview Questions


  1. What is an EO?
    a. Map to a database table or other data source
    b. Each entity object instance represents a single row
    c. Contains attributes representing database columns
    d. Fundamental BC4J object through which all inserts/updates/deletes interact with the database
    e. Central point for business logic and validation related to a table
    f. Encapsulates attribute-level and entity-level validation logic
    g. Can contain custom business methods

    2. What is a VO?
    a. Represent a query result
    b. Are used for joining, filtering, projecting, and sorting your business data
    c. Can be based on any number of entity objects
    d. Can also be constructed from a SQL statement


    3. What are the methods in controller?
    ProcessRequest and processformrequest

    4. What is a Controller?
    Controller is the java file and can be associated to a complete OAF page or to a specific region.
    There are several tasks you will do routinely in your code.
    � Handle button press and other events
    � Automatic queries
    � Dynamic WHERE clauses
    � Commits
    � JSP Forwards
    The logic for accomplishing all these tasks is written in controller

    5. When is the processRequest method called?
    PR method is called when the page is getting rendered onto the screen


    6. When is processFormRequest method called?
    PFR method is called when we perform some action on the screen like click of submit button or click on lov


    7. What is extension?
    Extension is when you take an already existing component ex an OAF page or a region and then add some more functionality to it without disturbing the original functionality.


    8. What is personalization?
    Oracle Apps Framework has an OA Personalization Framework associated with it so that you can personalize any OAF page in an Oracle E-business Suite application without changing the basic or underlying code of that OA Framework page, Oracle Application Framework makes it very easy to personalize the appearance of the page or even the personalization of data displayed on to an OA Framework page.

    9. What are levels of personalization?
    1. Function Level
    2. Localization Level
    3. Site Level
    4. Organization Level
    5. Responsibility Level
    6. Admin-Seeded User Level
    7. Portlet Level
    8. User Level
  2. 1) What is BC4J?

    Business Components for Java is JDeveloper's programming framework for building multitier database applications from reusable business components. These applications typically consist of:

    • A client-side user interface written in Java and/or HTML.
    • One or more business logic tier components that provide business logic and views of business objects.
    • Tables on the database server that store the underlying data.

    2.What are all the components of BC4J?
  3. Following are the components of BC4J:

  4. Entity Object - EO encapsulates the business logic and rules. EO’s are used for Inserting, Updating and Deleting data from the database table. E0 is also used for validating the records across the applications.

  5. View Object - View object encapsulates the database query. It is used for selecting data. It provides iteration over a query result set. VO’s are primarily based on EO’s. It can be used on multiple EO’s if the UI is for update.

  6. Application Module - Application Modules serve as containers for related BC4J components. The pages are related by participating in the same task. It also defines the logical data model and business methods needed.

    2) What is an EO?
    EO encapsulates the business logic and rules.EO’s are used for Inserting, Updating and Deleting data. This is used for validating across the applications. We can also link to other EO’s and create a Association object.

    3) What is an VO?
    View object encapsulates the database query. It is used for selecting data. It provides iteration over a query result set.VO’s are primarily based on Eo’s. It can be used on multiple EO’s if the UI is for update. It provides a single point of contact for getting and setting entity object values. It can be linked together to form View Links.

    4) What is an AO?
    An association object is created where we link EO’s. For example take the search page where we link the same EO to form a association between the manager and employee. Every employee should have a manager associated. But if it President then no there is no manager associated. This is a perfect example to understand the AO.

    5) What is an VL?
    A view link is an active link between view links. A view link can be created by providing the source and destination views and source and destination attributes. There are two modes of View link operation that can be performed. A document and Master/Detail operation.

    6). What is UIX?
    UIX is an extensible, J2EE-based framework for building web applications. It is based on the Model-View-Controller (MVC) design pattern, which provides the foundation for building scalable enterprise web applications.

    7). Where the VO is located in the MVC architecture?
    VO is located in the View Layer in MVC which is responsible for presenting the data to the user.

    9) Which package should include EO and AO.
    The EO and AO will be present in the schema.server package.

    10) What is the difference between inline lov and external lov.
    Inline lov is a lov which is used only for that particular page for which it was created and cannot be used by any other page.

  7. External lov is a common lov which can be used by any page. It is a common component for any page to use it. It can be used by giving the full path of the lov in the properties section “External LOV” of the item.

1) what is a Javabean?
JavaBeans is an object-oriented programming interface that lets you build re-useable applications or program building blocks called components that can be deployed in a network on any major operating system platform.

2) What is query Bean?
QueryBean is used to execute and return the results of a query on behalf of the QueryPortlet application.

3) what is the difference between autocustomization criteria and result based search?
Results based search generates search items automatically based on the columns on the results table.
In Autocustomization search we need to set what all fields are required to display as a search criteria.

4) what is MDS?
MDS is MetaData Service. When a web page is broken into small units like buttons,fields etc they are stored in a database. These are not stored as binary files but as data in tables. The data are present in JDR tables. MDS provides service to store & return page definitions. MDS collects those definitions in components/fields in a meaningful manner to build a page.

5) What is XML?
XML is a markup language for documents containing structured information.
Structured information contains both content (words, pictures, etc.) and some indication of what role that content plays (for example, content in a section heading has a different meaning from content in a footnote, which means something different than content in a figure caption or content in a database table, etc.).

6) What is the difference between customization and extension?
Customization is under direct user control. The user explicitly selects between certain options. Using customization a user can:
    Altering the functionality of an application
    Altering existing UI
    Altering existing business logic

Extension is about extending the functionality of an application beyond what can be done through personalization. Using extension we can:

    Add new functional flows
    Extend or override existing business logic
    Create New application/module
    Create New page
    Create New attribute
    Extend/Override defaults & validations

7) What is Personalization?
Personalization enables you to declaratively tailor the UI look-and-feel, layout or visibility of page content to suit a business need or a user preference. Using Personalization we can:

    • Tailor the order in which table columns are displayed.
    • Tailor a query result.
    • Tailor the color scheme of the UI.
    • Folder Forms
    • Do Forms Personalization
   
8)Can you extend every possible Application Module?
Answer: No..Root AM cannot be extended.

9) What is rootAM?
The application module which is associated with the top-level page region (the pageLayout region) is root application module.

10) Why can’t Root AM be extended?
 
The root AM is loaded first and after that the MDS Substitutions are parsed.
Hence ROOT AM gets loaded even before the time the substitutions definition from MDS layer get worked out. 

Obviously, the root am cant substitute itself, hence it can't be extended