Sunday, May 10, 2009

ORACLE INFORMATION

INTERFACE DETAILS

CUSTOMERS UPLOAD USING INTERFACE:
RA_CUSTOMERS_INTERFACE_ALL
RA_CUSTOMER_PROFILES_INT_ALL
RA_CONTACT_PHONES_INT_ALL
RA_CUSTOMER_BANKS_INT_ALL
RA_CUST_PAY_METHOD_INT_ALL
----------------------------------------------------
HZ_PARTIES
HZ_PARTY_SITES
HZ_CUSTOMER_PROFILES
HZ_CUST_SITE_USES_ALL
HZ_CUST_ACCT_SITES_ALL
HZ_CUST_ACCOUNTS
HZ_CUST_ACCT_RELATE_ALL
HZ_LOCATIONS

CUSTOMER UPLOAD USING API:
-- Creation of Customer Account and Party using API
HZ_CUST_ACCOUNT_V2PUB.create_cust_account
-> Check whether the customer account exist for the above party_id
-- To create a location
HZ_LOCATION_V2PUB.create_location
-> Check whether the given city, county, state combination is valid
-> Check whether the location already available
-- To create a party site using party_id and location_id
-- which were created from the earlier steps
HZ_PARTY_SITE_V2PUB.create_party_site
-> Checking Party Site already present in the system
-- To create an account site using cust_account_id and party_site_id
HZ_CUST_ACCOUNT_SITE_V2PUB.create_cust_acct_site
-> Checking Customer site already Present
-- To create an account site use using cust_acct_site_id
HZ_CUST_ACCOUNT_SITE_V2PUB.create_cust_site_use
-> Checking Site Use already exist
-> get the payment term id from ra_terms table
` -> get the sales rep id from ra_salesreps table
-> get the territory_id from ra_territories table
-> Check primary site already exist for the SHIP_TO site
-> Create Profile amounts only if site is BILL_TO
-> get the customer account id to create relationship
-> Get the cust account profile id to create customer profile amounts
-> create customer profile amounts
HZ_CUSTOMER_PROFILE_V2PUB.create_cust_profile_amt
-- Creation of Contact Points
-- 1. Create Person
-- 2. Create relation contact-org between the person and org
-- 3. Create a contact point at customer level/Address level
-- (Here the contact point is created at customer level and
-- PHONE, EMAIL has been added to the contact point)
HZ_PARTY_V2PUB.create_person
-- Create a relation cont-org to the contact and the customer
HZ_PARTY_CONTACT_V2PUB.create_org_contact
-- Create a contact point at customer level using the create role
HZ_CUST_ACCOUNT_ROLE_V2PUB.create_cust_account_role
-- Create a contact PHONE / EMAIL for the above contact point
HZ_CONTACT_POINT_V2PUB.create_contact_point



VENDOR INTERFACE:
AP_SUPPLIERS_INT
AP_SUPPLIER_SITES_INT
AP_SUP_SITE_CONTACT_INT
--------------------------------------------
PO_VENDORS
PO_VENDOR_SITES_ALL
PO_VENDOR_CONTACTS

VENDOR AND SITE LEVELS
--Validation for SHIP TO and BILL TO LOCATION ID
-- Validation for SHIP and BILL TO for vendors
-- Validation for TERM_ID for vendors
-- Validating the VAT CODe
-- Validating invoice Currency codes of vendors
-- Validating Payment Currency codes vendors
--Validating the vendor type lookup code
--Validating the Minority group lookup code
--Validating the pay group lookup code
--Validating the FREIGHT_TERMS_LOOKUP_CODE_V
--validating FOB_LOOKUP_CODE_V

CONTACTS LEVEL
--Validation for Vendor
--Validation for Site

TAX RATES INTERFACE:
AR_TAX_INTERFACE
-----------------------------------------
AR_LOCATION_VALUES
AR_LOCATION_RATES


ITEM MASTER INTERFACE:
MTL_SYSTEM_ITEMS_INTERFACE
-------------------------------------
MTL_SYSTEM_ITEMS_B
--validating for NULL Item Description
--validating Template (mtl_item_templates)
--Validating for Item Already Existing in Base Table (mtl_system_items_b)
--validating for Buyer (po_agents_v)
--validating for Planner (mtl_planners)
--validating for Cost Of Sales Account (gl_code_combinations_kfv)
--validating for Sales Account (gl_code_combinations_kfv)


ITEM CATEGORIES INTERFACE:
MTL_ITEM_CATEGORIES_INTERFACE
-----------------------------------------
MTL_ITEM_CATEGORIES
--validating For Item Not Present in Base Table (mtl_system_items_b)
--validating for NULL MANUFACTURER
--validating for NULL PRODUCT_GROUP
--validating for NULL TYPE
--validating for NULL Sub Type
--validating For MANUFACTURER, PRODUCT_GROUP, TYPE, SUB_TYPE Combination in Base Table (mtl_categories_b)

PRICE LIST API:
QP_PRICE_LIST_PUB.PROCESS_PRICE_LIST
-----------------------------------------------
QP_LIST_HEADERS
QP_LIST_LINES
--Validating For Item is Present in Base Table (mtl_system_items_b)
--Deriving Concatenated Category Segment For the Given Inventory Item ID (mtl_categories_b_kfv)
--Validating For Dynamic Formula is Present in Base Table (qp_price_formulas_tl)


STOCK LOCATORS API:
INV_LOC_WMS_PUB.CREATE_LOCATOR
-----------------------------------------------------------
MTL_ITEM_LOCATIONS
--Combination is already Exists (mtl_item_locations_kfv)
--Sub Inventory is not exists (mtl_secondary_inventories)




PURCHASE ORDER INTERFACE:
PO_HEADERS_INTERFACE
PO_LINES_INTERFACE
PO_DISTRIBUTIONS_INTERFACE
------------------------------------------------
PO_HEADERS_ALL
PO_LINES_ALL
PO_LINE_LOCATIONS_ALL
PO_DISTRIBUTIONS_ALL
-- populating Project information from mapping table
-- Project ID population (pa_projects_all)
-- Task ID population (pa_tasks)
-- Get Mapping Values for charge account, accrual account and Varaiance account
-- getting the requestor info (per_all_people_f)
-- Populating New Deliver to location from mapping table
-- Populating New Ship to location from mapping table
-- Populating New Bill to location from mapping table





GOODS RECEIPTS INTERFACE:
RCV_HEADERS_INTERFACE
RCV_TRANSACTIONS_INTERFACE
-----------------------------------------------------------
RCV_SHIPMENT_HEADERS
RCV_SHIPMENT_LINES
RCV_TRANSACTIONS
-- Checking PO is exists are not
-- Receipt is Already in Interface Table (rcv_headers_interface)
-- getting mapped inv org (mtl_parameters)
-- fetching Vendor, Site, Ship to location and Agent_Id from PO (po_headers_all)
-- getting employee/person name (per_all_people_f)
-- Fetching new ship to lotion code part (hr_locations_all)
-- Fetching new deliver to location code part (hr_locations_all)


AR INVOICES INTERFACE:
RA_INTERFACE_LINES_ALL
RA_INTERFACE_SALESCREDITS_ALL
---------------------------------------------------------
RA_CUSTOMER_TRX_ALL
RA_CUSTOMER_TRX_LINES_ALL
RA_CUST_TRX_LINE_GL_DIST_ALL
RA_CUST_TRX_LINE_SALESREPS_ALL
-- Validation for transaction type (RA_CUST_TRX_TYPES)
-- derive_cust_trxtype_id (ra_cust_trx_types)
-- validate_trx_amount is null
-- validate_tax_code (ar_vat_tax)
-- derive_term_id (ra_terms)
-- derive_salesrep_id (ra_salesreps)
-- derive_orig_system_customer_id (hz_cust_accounts)
-- derive_orig_system_address_id (hz_cust_acct_sites, hz_cust_site_uses)



AP INVOICES INTERFACE:
AP_INVOICES_INTERFACE
AP_INVOICE_LINES_INTERFACE
----------------------------------------------------
AP_INVOICES_ALL
AP_INVOICE_DISTRIBUTIONS_ALL
AP_INVOICE_PAYMENTS_ALL
-- duplicate_inv_check (ap_invoices)
-- get_vendor_details (po_vendors, po_vendor_sites)
-- get_term_id (ap_terms_tl)
-- get_ccid (gl_code_combinations)
-- check for invoice number is null
-- check for invoice net amount is null
-- check for invoice date is null


AR RECEIPTS (AUTO LOCK BOX):
AR_INTERIM_CASH_RECEIPTS_ALL
----------------------------------------------------
AR_CASH_RECEIPTS_ALL
-- Batch Name Validation (ar_batches)
-- Currency Code Validation (fnd_currencies)
-- Bill Customer / Address Validation (hz_cust_acct_sites, hz_cust_site_uses, hz_cust_accounts)


FIXED ASSETS
FA_MASS_ADDITIONS
--------------------------
FA_ADDITIONS
-- Validation for Location KFF (fa_locations)
-- Validation for Categories KFF (fa_categories)
-- Validation for Expense Account KFF (gl_code_combinations)



SALES ORDER IMPORT:
OE_HEADERS_IFACE_ALL
OE_LINES_IFACE_ALL
------------------------------------------
OE_ORDER_HEADERS_ALL
OE_ORDER_LINES_ALL
WSH_DELIVERY_DETAILS
Headers:
-- Code FOR SOLD TO ORG ID (hz_cust_accounts)
-- Code For Bill To From Orig System Reference (hz_cust_acct_sites, hz_cust_site_uses)
-- Code For Order Type (oe_order_types_v)
-- Code For Sales Rep (ra_salesreps_all)
-- Code For Payment Term (ra_terms)

Lines:
-- Item not exists in Price list for Item (qp_list_lines_v, mtl_system_items)


CUSTOMER ITEM CROSS REFERENCE INTERFACE:
MTL_CI_INTERFACE
MTL_CI_XREFS_INTERFACE
------------------------------
MTL_CUSTOMER_ITEMS
MTL_CUSTOMER_ITEM_XREFS
--validating for NULL Customer Number
--validating Duplicate Customer Number, Cross Reference Combination In Staging Table
--validating Duplicate Item Number, Customer Number, Cross Reference Combination In Staging Table
--validating for Item (mtl_system_items_b)
--validating for Customer (ra_customers)



BOM INTERFACE:
BOM_BILL_OF_MTLS_INTERFACE
BOM_INVENTORY_COMPS_INTERFACE
--------------------------------------------
BOM_BILL_OF_MATERIALS
BOM_INVENTORY_COMPONENTS
--validating for NULL Assembly Item
--Validating for Assembly Item Is Existing in Base Table (mtl_system_items_b)
--Validating for Component Item Is Existing in Base Table (mtl_system_items_b)


ON HAND QUANTITIES INTERFACE:
MTL_TRANSACTIONS_INTERFACE
---------------------------------------
MTL_ONHAND_QUANTITIES_DETAIL
--validating for NULL Item Number
--validating for NULL SubInventory
--validating For Item Not Present in Base Table (mtl_system_items_b)
--validating For NULL OnHand Quantity
--validating For Zero OnHand Quantity
--Validating For Unit Of Measure (mtl_units_of_measure)
--Validating For SubInventory (mtl_secondary_inventories)
--Validating For Distribution Account (gl_code_combinations_kfv)
--Validating For Locators (mtl_item_locations_kfv)
--Validating For Transaction Type (mtl_transaction_types)



PURCHASE REQUISION INTERFACE:
PO_REQUISITIONS_INTERFACE_ALL
PO_REQ_DIST_INTERFACE_ALL
--------------------------------------------------
PO_REQUISITION_HEADERS_ALL
PO_REQUISITION_LINES_ALL
PO_REQ_DISTRIBUTIONS_ALL







REPORT DEVELOPMENT/CUSTOMIZATION

CREDIT MEMO
Optio Report will be using Oracle reports to capture the information and will print the output with business logo and required format.
1. Pull standard Invoice Print Selected Invoices report
2. Add seven fields in the standard report and save as custom NAE Credit Memo Invoice Print Selected Invoices report.
Fields
1. Warehouse location – Should appear to the right of Amount in the line item section.
2. Customer collector – Should appear to the right of salesperson.
3. Item No. – Should appear to the left of Description.
4. UOM (unit of measure) – Should appear to the right of Description.
5. Sales tax – Should appear below Invoice discount.
6. Amount subject to sales tax – Should appear below sales tax. This amount is the total of Line Item Amounts where tax code is not Exempt.
7. Amount exempt from sales tax – Should appear below Amount subject to sales tax. This amount is the total of Line Item Amounts where tax code is Exempt.
8. Customer Item No. (From Customer Cross Reference table) – Should appear to the right of Item Number. (8/18/05)
9. Invoice Discount – Should appear below tax summary by tax name. (8/18/05)

ORACLE INFORMATION


1. What is Mutating? How will you resolve it?

"Mutating" means "changing". A mutating table is a table that is currently being modified by an update, delete, or insert statement. When a trigger tries to reference a table that is in state of flux (being changed), it is considered "mutating" and raises an error since Oracle should not return data that has not yet reached its final state.

Avoiding the mutating table error is fairly easy. We must defer processing against the mutating or constrainng table until an AFTER trigger. We will consider two cases:

  • Hitting the ORA-4091 in an INSERT trigger or an UPDATE trigger where you only need access to the :new values
  • Hitting the ORA-4091 in a DELETE trigger or an UPDATE trigger where you need to access the :old values

  1. What is PL/SQL table and its syntax? What is Index by Binary Integer?

An associative array (or INDEX-BY table) that can be indexed by NUMBER or VARCHAR2. Elements are retrieved using number or string subscript values. Unlike with data tables, PL/SQL tables are stored in memory. PL/SQL Tables are sparse and elements are unordered.

First I can declare a type as a collection type as follows:-

            create or replace type jpl_row as object(
                        id                      number, 
                        description          varchar2(40)
            );
            /
            
            create or replace type jpl_array as table of jpl_row;
            /

So I have a type which is an array of objects. I can now populate a variable of this type with code of the following form:

            declare
                        my_table            jpl_array:= jpl_array();
            begin
                        my_table := jpl_array(
                                     jpl_row(3,'Desc 3'),
                                     jpl_row(1,'Desc 1'),
                                     jpl_row(2,'Desc 2')
                        );          
            end;
            /

  1. What are the Mandatory Parameters in PL/SQL Procedure in Apps. What is the use of it?

Mandatory Parameters are “Errorbuf” and “Retcode”.

Errorbuf for Generating the error message of the concurrent program.

Retcode for Generating the status of the concurrent program.

0 – Success 1 – Warning 2 – Error

  1. How do you develop new form in Apps?

1. Open Template.fmb and Appstand.fmb

2. Remove the Default datablock, Canvas and Window

3. Create New Window and Canvas

4. Set Window’s Primary Canvas as New Canvas

5. Set Canvas Window Property as New Window

6. Create New Datablock

7. Modify the code in PRE-FORM (change the template.fmb file name in header) and WHEN-NEW-FORM-INSTANCE triggers (change the as New Window)

8. Apply the “SUBCLASS” Property for all the objects Module, Window, Canvas and all the data block objects

  1. What are all triggers fire when we Commit, Query and Update a record?

Commit - ON SAVE

Query -

Update -

  1. What are the statuses of record level in forms?

Forms statuses

1. from QUERY to CHANGED

2. from NEW to INSERT

  1. What are all PLLs we attach in a form and what is APPDAYPK library?

1. APPCORE.pll

2. APPCORE2.pll

3. APPDAYPK.pll

4. APPFLDR.pll

5. FNDSQF.pll

6. GLOBAL.pll

  1. How do you display message in forms?

Two Types:

First Method:

    1. Difine Message in Application
    2. Set Message (FND_MESSAGE.SET_MESSAGE)
    3. Show Message (FND_MESSAGE.SHOW)

Second Method:

1. Display Message Direct form the form

FND_MESSAGE.SET_STRING(‘Message’)

FND_MESSAGE.SHOW

  1. When we select a query what exceptions we raise?

NO-DATA-FOUND, TOO-MANY-ROWS

  1. How do you pass data from one form to another form?

Through Parameters we will pass data from one form to another form

  1. What is the difference between Open_Form and Call_Form?

OPEN FORM:

To programmatically open another form, execute the OPEN_FORM built-in procedure:

OPEN_FORM('stocks');

By default, Form Builder immediately activates the opened form and sets focus in the form's first navigable item. To explicitly specify this default behavior, include the optional ACTIVATE parameter:

OPEN_FORM('stocks', activate);

When you open a form with ACTIVATE specified, Form Builder ignores (and never executes) any trigger statements that follow the call to OPEN_FORM.

If you do not want Form Builder to place focus in the opened form, include the NO_ACTIVATE parameter:

OPEN_FORM('stocks', no_activate);

When you open a form with NO_ACTIVATE specified, Form Builder executes any trigger statements that follow the call to OPEN_FORM after the opened form has been loaded into memory and its initial start-up triggers (if any) have been fired.

CALL FORM:

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.

Syntax

PROCEDURE CALL_FORM

(formmodule_name VARCHAR2,

display NUMBER,

switch_menu NUMBER,

query_mode NUMBER,

data_mode NUMBER,

paramlist_name VARCHAR2);

  1. What is the difference between Database block and Control block?

Database Block represents the fields map to database.

Control Block represents the fields like Buttons etc.


  1. How do you setup Set of Books in GL?

1. Creating the Value Sets for the Segments

2. Creating the Structure for KFF (Accounting Flexfiled)

3. Entering Values for Value Sets

4. Defining Period Type

5. Define Accounting Calendar

6. Define Currency

7. Define SOB using (Chart of Accounts, Accounting Calendar and Currency)

  1. After giving update statement how do you know that how many records are updated?

SQL%ROWCOUNT

  1. What is Multi-Org and its structure?

Business Unit ->

Legal Entity ->

SOB ->

Item Master Organization ->

Operating Unit->

Inventory Organizations ->

Sub Inventory ->

Locator ->

Row, Rack, Bin etc.

  1. What are user-exits and where do we use it in reports?

SRWINIT

SRWEXIT

FORMAT_CURRENCY

  1. What is mandatory parameter in reports? Do we need to register this parameter in Apps?

P_CONC_REQUEST_ID, Registration is not required in Apps

  1. How do you pass parameters in Apps?

In the concurrent program we need to register the parameters.

  1. How do you display message in Reports and where it will display?

SRW.MESSAGE(Number, ‘Message’)

The message will display in Log file

Friday, May 1, 2009

Oracle Order Management (OM)

The process flow for Internal Orders

Internal orders normally start with creation of requisitions in Oracle Purchasing (which is created as Internal Sales Orders) .


Once the requisitions created from the MRP and Inventory modules, the Requisition Import program must be run in order to move records from the requisition interface tables to the historical


PO_REQUISITION_HEADERS_ALL,

PO_REQUISITION_LINES_ALL

and PO_REQ_DISTRIBUTIONS_ALL.


Now next is to create internal requisitions from Purchasing module.When each requisition is approved, data will be inserted into the MTL_SUPPLY table. When the items on the requisition are stocked in inventory, the supply data can be viewed from the inventory form called Item Supply/Demand.


Once the Internal Requisition is approved, a user should run Create Internal Sales Orders (from a Purchasing responsibility) to load the internal sales orders interface tables called in Order Entry.


After the Creation of Internal Sales Orders has completed, a Import Orders concurrent program need to run from an Order Management.


at this stage, Oracle order Workflow will process the internal sales order using the workflow definition listed for the Transaction Type definition in Order Management. When the workflow completes the Shipping Network is checked to see if the Transfer Type between the source and destination organization is In transit or Direct.


You can use Oracle Order Entry/Shipping to define order cycles, approvals and holds.
Internal Requisitions use the Account Generator, which automatically builds account distributions. You can specify only one accounting distribution per inventory sourced line.


This internal requisition process provides the features needed to define your inter- organization shipping network. For transfers between two organizations, you can specify whether to use in transit or direct shipments. You can also require internal requisitions for transfers between specific organizations.





The Data Flow for Internal orders

Understanding data flow for “Standard Order”



August 5th, 2007 by Anand Print-Friendly Version Email This Post
Last week, got a mail from one of reader who requested for providing data flow of standard orders and Return Orders. So,here are the information for data flow. Normally standard sales order can be split into nine sub steps , which jointly carried out by some module like INV,OM, Pricing, Shipping and AR. Lets take each sub steps with data flow conditions. These are based out of the flow which is available in 11.5.10.2.


1. Order Entry


This is first stage when Order in enter in system.When the order is entered it basically create a record in order headers and Order Lines table.
· oe_order_headers_all (Here the flow_status_code as entered)
· oe_order_lines_all (flow_status_code as entered) ( order number is generated)


2.Order Booking


This is next stage , when Order which is entered in step 1 is booked and Flow status changed from Entered to Booked.At this stage , these table get affected.
· oe_order_headers_all (flow_status_code as booked ,booked_flag updated)
· oe_order_lines_all (flow_status_code as awaiting shipping, booked_flag updated)
· wsh_new_deliveries (status_code OP open)
· wsh_delivery_details (released_status ‘R’ ready to release)
Same time, Demand interface program runs in background And insert into inventory tables mtl_demand


3. Reservation


This step is required for doing reservations SCHEDULE ORDER PROGRAM runs in the background and quantities are reserved.Once this program get successfully get completed , the mtl_reservations table get updated.


4. Pick Release


Ideally pick release is the process which is defined in which the items on the sales order are taken out from inventory.
Normally pick release SRS program runs in background . Once the program get completed these are the table get affected:
· oe_order_lines_all (flow_status_code ‘PICKED’ )
· wsh_delivery_details (released_status ‘S’ ‘submitted for release’ )
· mtl_txn_request_headers
· mtl_txn_request_lines(move order tables.Here request is generated to move item from saleble to staging sub inventory)
· Mtl_material_transactions_temp (link to above tables through move_order_header_id/line_id





5.Pick Confirm


Items are transferred from saleble to staging Subinventory.
mtl_material_transactions
mtl_transaction_accounts
wsh_delivery_details (released_status ‘Y’‘Released’ )
wsh_delivery_assignments


6.Ship Confirm


Here ship confirm interface program runs in background . Data removed from wsh_new_deliveries
· oe_order_lines_all (flow_status_code ‘shipped’)
· wsh_delivery_details (released_status ‘C’ ‘Shipped’)
· mtl_transaction_interface
· mtl_material_transactions(linked through Transaction source header id)
· mtl_transaction_accounts
· Data deleted from mtl_demand,mtl_reservations
· Item deducted from mtl_onhand_quantities


7.Enter Invoice


This is also called Receivables interface, that mean information moved to accounting area for invoicing details.
· Invoicing workflow activity transfers shipped item information to Oracle Receivables.
· ra_interface_lines_all (interface table into which the data is transferred from order management)T
· Then Autoinvoice program imports data from this
· Table which get affected into this stage are recievables base table.
o ra_customer_trx_all (cust_trx_id is primary key to link it to trx_lines table and trx_number is the invoice number)
o ra_customer_trx_lines_all (line_attribute_1 and line_attribute_6 are linked to header_id (or order number) and line_id of the orders)


8.Complete Line


In this stage order line leval table get updated with Flow status and open flag.
· oe_order_lines_all (flow_status_code ‘shipped’, open_flag “N”)


9.Close Order


This is last step of Order Processing . In this stage only oe_order_lines_all table get updated.
These are the table get affected in this step.
· oe_order_lines_all (flow_status_code ‘closed’,open_flag “N”)
These are the typically data flow of a order to cash model for a standard order
Understand “Drop Shipment” in Order Management?
Order Management allows you to enter drop-ship sales orders as well as standard sales orders.
It means you can receive orders for items that you do not stock or for which you lack sufficient inventory, and have a supplier provide the items directly to your customer.

The best can be described as:
These are the following activity takes place when you have drop shipment
Supplier
Warehouse Item
Ship order
Shipment notification
Order Entry
Enter customer
Enter order
Demand order (optional)
Cancel order (optional)
Close order
Purchasing
Create and send Purchase Order
Enter shipment notification in system
Receivables
Create invoice
Collection of payment
Receipt
hence, drop ship order items ship directly from a supplier to the customer of the order processing company. A purchase requisition, then a purchase order, is generated to notify the supplier of the requirement. After the supplier ships the order, it notifies Purchasing to enter this information in the Purchasing module.
What are the advantages of Drop Shipment Orders?
These are the benefits:
No inventory is required
Reduced order fulfillment processing costs
Reduced flow times
Elimination of losses on non-sellable goods
Elimination of packing and shipping costs
Reduced inventory space requirements
Reduced shipping time to your customer
Allows you to offer a variety of products to your customers




How to understand the dataflow for Drop shipment Orders?
To understand, here are the processes divided in sub process and the underline activity is highlighted here:
Here are the Details as per Mark

1.Order Entry


Here the activity is entering process where oe_order_headers_all (flow_status_code as entered) oe_order_lines_all . The order is booked as DROP SHIP


2. Order Booking


3. The Purchase Release program passes information about eligible drop-ship order lines to Oracle Purchasing.The interface table which gets populated ispo_requisitions_interface_all


4. After Purchase Release has completed successfully, run Requisition Import in Oracle Purchasing to generate purchase requisitions for the processed order lines.


The Requisition Import program reads the table po_requisitions_interface_all validates your data, derives or defaults additional information and writes an error message for every validation that fails into the po_interface_errors table.The validated data is then inserted into the requisition base tables


po_requisition_headers_all,

po_requisition_lines_all,

po_requisition_distributions_all.


Then use autocreate PO fuctionality to create purchase orders and then perform receipts against these purchase orders


7. After the goods are successfully received invoices for vendors are created in accounts payables as in normal purchase orders.


8. Invoices are generated for customers In account receivables.


9. oe_order_lines_all (flow_status_code ’shipped’, open_flag “N”)


10. oe_order_lines_all (flow_status_code ‘closed’, open_flag “N”)


Hope this is great help to understand the flow.

Monday, April 20, 2009

AOL FAQ'S

QUESTIONS & ANSWERS
-------------------
1. What resources are provided for developing applications which will be
integrated into Oracle Applications Release 11?

Answer
------
a. The Oracle Applications Developer's Guide Release 11 and the Oracle
Applications User Interface Standards Release 11.

b. The AU_TOP/forms/US/TEMPLATE.fmb for developing a new form.

c. The AU_TOP/forms/US/APPSTAND.fmb contains standard property classes
for your runtime platform.

d. The AU_TOP/resource/FNDSQF.pll contains routines for Flexfields,
Function Security, User Profiles, Message Dictionary.

e. The AU_TOP/resource/APPCORE.pll contains standard User Interface routines.

f. The AU_TOP/resource/APPDAYPK.pll contains the Calendar Widget routines.

g. The AU_TOP/resource/CUSTOM.pll for adding custom code which affects Oracle
Applications forms without changing Oracle Applications code.

h. The AU_TOP/resource/GLOBE.pll allows Oracle Applications developers to
incorporate global or regional features into Oracle Applications forms
without modifying the base Oracle Applications forms. Globe calls routines
JA, JE, and JL libraries.

i. The AU_TOP/resource/JA.pll called from Globe and contains Asia/Pacific code.

j. The AU_TOP/resource/JE.pll called from Globe and contains EMEA
(Europe/Middle East/Africa) code.

k. The AU_TOP/resource/JL.pll called from Globe and contains Latin America code.

l. The AU_TOP/resource/VERT.pll allows Oracle Applications developers to
incorporate vertical industry features (for automotive, consumer packaged
goods, energy, and other industries) into Oracle Applications forms
without modifying the base Oracle Applications forms.

m. Oracle Developer/2000 Server Release 1.6.1.

NOTE: All FMB and PLL files must be migrated to your desktop if you intend to
develop and integrate custom applications into Oracle Applications
Release 11.

2. What are the supported versions of Forms and Reports used for developing
on Oracle Applications Release 11?

Answer
------
a. The following supported versions are provided in Developer/2000
Release 1.6.1:

i. Forms 4.5

ii. Reports 2.5


3. How do I compile and/or generate an Oracle Applications form?

Answer
------
a. UNIX

cd $AU_TOP/forms/US

f45gen module=FNDSCAUS.fmb userid=APPS/APPS output_file=
/appl/v1100000/fnd/11.0.28/forms/US/FNDSCAUS.fmx module_type=form
batch=no compile_all=special

b. Windows NT

cd F:\applr11\au\11.0.28\forms\US

f45gen32 userid=APPS/APPS module=FNDSCAUS.fmb output_file=
applr11\fnd\forms\US\FNDSCAUS.fmx module_type=form batch=no
compile_all=special


4. How do I open, compile and/or generate a custom Oracle Applications form on
my desktop?

Answer
------
a. To port the AU_TOP/forms/US and AU_TOP/resource files to your Windows
desktop:

i. Make copies of all required files.
ii. Replicate the AU_TOP directory structure on your desktop.
iii. Move the files to their appropriate AU_TOP/forms/US for FMB and
AU_TOP/resource for PLL.
iv. Include the AU_TOP/forms/US and AU_TOP/resource directories in
your FORMS45_PATH.
v. Open, compile and/or generate forms.

NOTE: The FORMS45_PATH is specified either in your Registry or oracle.ini.
NOTE: It may sometimes be necessary to convert FMB -> FMT and PLL -> PLD before
porting from a Unix platform to your desktop.

5. How do I add a CUSTOM_TOP to Oracle Applications?

Answer
------
a. Replicate an existing Oracle Applications product directory structure
underneath your APPL_TOP:

APPL_TOP
|
XXCUS_TOP
|
bin------forms-----html-----lib-----log-----mesg-----out-----reports
| |
US US


b. Make sure all the permissions on the files and directories are the same
as the other product directories.

c. Add the full path to this CUSTOM_TOP to your APPLSYS.env ( Source your
APPLSYS.env) or your Windows NT Registry:

UNIX: /u01/oracle/apps/vd11/xxcus/11.0.28

Windows NT: D:\oa\appltst\vd11\xxcus\11.0.28

d. Login to Oracle Applications using the System Administrator or Application
Developer Responsibility.

e. Navigate: Application -> Register and add your new CUSTOM_TOP to Oracle
Applications.

Application Short Name Basepath Description
-------------------------------------------------------------------------------
Custom Application XXCUS XXCUS_TOP Custom Application

f. Shutdown and restart your Internal Concurrent Manager (ICM) so that the
concurrent manager will recognize the change to the environment that was
made to the APPLSYS.env and Registry.


-----------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------



AOL Concurrent Requesting / Submission issues
---------------------------------------------


How do I submit a concurrent request from PL/SQL?

Use FND_REQUEST.SUBMIT_REQUEST
Example: req_id := FND_REQUEST.SUBMIT_REQUEST('FND', 'FNDSCARU');
Note that this can only be called from a concurrent program
See the Coding Standards for parameter details



Why does the "to start" date of my concurrent request default to 24 hours in the past?
(From the Concurrent Processing FAQ)


The short story:


If you get Patch 387798, then this behavior can be turned on and off using
the profile "Concurrent:Multiple Time Zones".


The long story:


This behavior is a temporary fix until we can build time zone
support into the product in a future release.


If the profile "Concurrent:Request Start Time" is set, then we default
the "to start" date of a request to that value. Otherwise we assume
that the user wants the request to start as soon as possible.


Problems occur when the user is in a time zone that is ahead of the time
zone in which the concurrent managers are running. Say a user submits
her request in a field office in the Eastern time zone at 9:00, so
we default the requested start date to 9:00. But now the concurrent
managers are at HQ in California, so user's request will run at 9:00
Pacific time, 12:00 Eastern. In order to default requests to start as soon as
possible, we submit them to start 24 hours before their request date.
This covers the worst case time zone difference.



How do I submit a request with CONCSUB that has a null parameter?
Use '""' as the null parameter.
(Single quote, double quote, double quote, single quote)



How can users submit requests with CONCSUB without giving them the APPS password?
Try this:


1. As the applmgr user, create a shell script that runs CONCSUB
Either hardcode the parameters for the report, or pass them in as parameters to the
script.
2. Change the permissions on this script to 700. Now no one can read this script and get
the password.
3. Create another script that calls the first script. Pass parameters along if you need
to.
4. Change the permissions on this script to 6755. Now any user can execute and read
the second script, which calls the first one. Have the users run this script to submit
their requests without knowing the password.


Note that this assumes your system handles setuid shell scripts properly.
A small C program that does the same thing should work on systems that don't.



How can I write to a file from a PL/SQL concurrent program? DBMS_OUTPUT doesn't seem to work?
File I/O from PL/SQL concurrent programs is not supported in Release 10.
DBMS_OUTPUT will not work. This is documented in the AOL Reference manual.
In Release 11, a package called FND_FILE was introduced to support this. You can use this
package to write to files.
(The UTL_FILE package does work in Release 10, but this is not supported)



Why does my periodic report show the same date every day it runs?
Since you are using Release 10, you will have this problem with periodic
reports. Once a request is submitted, the
parameters are written to a table, and remain the same for all resubmissions.
In Release 11, you have the option to increment the date parameters on
resubmission. You check the box on the form when
submitting your request, and each date parameter will be incremented by
the amount of the resubmission interval.
For example, if you submit a report that has a date parameter, and you
set the value to be 01-JAN-99, and you have the
request resubmitted every 7 days, the parameter will be incremented by 7
days every time.



When I choose to notify a user after completing a concurrent request, where do the user names come from and how is the message sent?
The List of Values for notifying users of a completed concurrent request
comes from the WF_ROLES view. The notifications are actually Workflow notifications
and are sent out using the WF_NOTIFICATIONS package.

AOL Customization FAQs

AOL Customization FAQs
----------------------

When will a New version of flint60 be released?

flint60 is a developer/development tool. Since flint60 can change at any time,
the most current flint60 will always obsolete all prior releases. In other
words, the development standards implemented in the most current flint60 are the
standards to which everyone using flint60 must adhere.



How do I register a custom concurrent program?

Step 1: Register a concurrent program executable
Navigate to the Define Executable form (AOL Reference manual pg 9-84)
This determines the type of program being run,
ie an Oracle Report, a C program, a shell script etc.
Fill in the executable name, application and execution method.
For the Execution File, fill in just the filename. The concurrent manager will
look in the appropriate directory under the application's top directory.
For spawned programs, the file must be in the bin directory, for Oracle Reports the
rdf file must be in the srw directory.
For PLSQL concurrent programs, put the name of the stored procedure.


Step 2: Define the concurrent program
Navigate to the Define Concurrent Program form (AOL Reference manual pg 9-87)
This form links a concurrent program to the executable you just defined, as well as
defines the programs parameters, incompatibilities, and other options.


Enter the concurrent program name, application, short name and description.
Check Standard Submission if you want to be able to submit this program from the
Standard Report Submission form.
Enter the name of the executable you defined and any report information if necessary.
Also define any parameters your program needs here and any incompatibilities.


Step 3: Add the concurrent program to a Report Group
First you will need to find the name of the Report Group to use.
Go to Security->Responsibility and query the responsibility you want to run the program with.
It should show a Report Group name. Query this name in Security->Responsibility->Report
Add your new program to the list of available programs. Now when you go to submit
a request with this responsibility, you will be able to submit your custom program.



How do I compile a custom C program?

Spawned programs:
Step 1: Write the code
Self-explanatory
Step 2: Compile the source
You must use the makefile under $FND_TOP/usrxit
Use: make -f $FND_TOP/usrxit/Makefile program.o
We do not support using any other makefile
Step 3: Link the program
This part is a little tricky. You need to create a custom makefile for this step.
Use $FND_TOP/lib/sample.mk as a starting point. Copy this file to the lib directory
under your applications top directory. Rename it .mk (ie fnd.mk, gl.mk etc)
Modify this file according to the directions in it. Basically you need to add a target
and build commands for your executable.
Next, use adrelink to link the executable:
adrelink force=y ranlib=y "shortname programname"
Step 4: Register the program as in the above question


Immediate programs:
Just don't do it.



How do I run a shell script as a concurrent program?

1: Write the script and call it .prog
Place the script under the bin directory under your applications
top directory.
For example, call the script CUSTOM.prog and place it under
$CUSTOM_TOP/bin
2: Make a symbolic link from your script to $FND_TOP/bin/fndcpesr
For example, if the script is called CUSTOM.prog use this:
ln -s $FND_TOP/bin/fndcpesr CUSTOM
This link should be named the same as your script without the .prog
extension
It should be in the same directory as the script.
3: Register a concurrent program as described above, using an execution
method of 'Host'
Use the name of your script without the .prog extension as the name
of the executable
For the example above, you would use CUSTOM
4: Your script will be passed at least 4 parameters, in $1 through $4
These will be: orauser/pwd, userid, username, request_id
Any other parameters you define will be passed in $5 and higher.
Make sure your script returns an exit status.
5: If your script returns a failure exit status but the concurrent
manager does not report the error (shows it as still running normal)
apply Patch 442824


Why do my PLSQL stored procedure concurrent programs error out with: 'Invalid number of
arguments'?

See pg. 9-79 of the AOL Reference manual.
PLSQL concurrent programs must have 2 OUT arguments defined.
RETCODE is used to return the error status
ERRBUF is used to return an error message
Note that you do not need to define these arguments in the Define Arguments form,
only in the procedure itself.


Why do I get the following error when trying to download a menu:

"APP-FND-01564: ORACLE error 6550 in afpodbinit"

Try running FNDSLOAD using apps as the username:

FNDSLOAD apps/ 0 Y LOCAL test.txt DOWNLOAD menu_name

Tuesday, February 17, 2009

RMA (Return) Order Cycle


RMA (Return) Order Cycle

RMA Defined:


•Permission for a customer to return lines.

•Oracle Order Management allows you to authorize the return of your sales orders as well as sales made by other dealers or suppliers, as long as the items are part of your item master and price list.

Standard Return Flow:




Typical RMA Business Processes:


•RMA with credit only

–Your company issues a credit without the customer returning the product.

–Accept returns for credit by applying credits to original invoices or creating on account credits.

•RMA with receipt and credit

–Customer returns a product and receives credit.

•RMA with receipt and no credit

–Your customer returns a product you sent to them on a trial basis or at no charge, therefore they receive no credit.

Other RMA Types:


•RMA with repair

–Your customer returns a damaged product. Your company repairs and returns the product to the customer.

•RMA with replacement

–Your customer returns a product and your company sends a replacement product rather than issuing a credit.

•Returned item fails inspection

–Customer returns product, company inspects product and rejects it. Company scraps product or sends product back to customer.

•Trade in

–Return line on the same order as the product that the customer is purchasing.

Accounting Impact:


•During receipt of RMA in Receiving InventoryReceiving Inventory Dr.COGS Cr.

•During receipt into SubinventoryMaterial Dr.Receiving Inventory Cr.

•During generation of Credit MemoRevenue a/c Dr. to Receivables a/c Cr.

Tables that get updated:


•OE_ORDER_HEADERS_ALL

•OE_ORDER_LINES_ALL

•RCV_SHIPMENT_HEADERS

•RCV_SHIPMENT_LINES

•RCV_TRANSACTIONS

•RA_INTERFACE_LINES

•RA_CUSTOMER_TRX_LINES_ALL

•RA_CUSTOMER_TRX_ALL

Friday, January 16, 2009

RUNNING SHELL SCRIPT IN ORACLE


RUNNING SHELL SCRIPT IN ORACLE



It’s simple!!Especially with 10g,
it is even more simpler.
Here is an example:

Step 1: Create a shell script and grant execute priv to oracle user.

I created a simple one:bash-3.00$ cat /tmp/test.sh#!/usr/bin/kshecho "Test succeeded `date`" >> /tmp/test.log

Note: Do not forget to start your shell script with the shell you are using.

>> #!/usr/bin/ksh should be present in your shell script otherwise, the job will fail with ORA-27369 job of type EXECUTABLE failed with bash-3.00$ chmod 755 /tmp/test.sh

Step 2: Create the job:Remember user doing the following should have “CREATE JOB” privilege.

SQL> BEGIN
2 DBMS_SCHEDULER.CREATE_JOB
(3 job_name => 'TEST_SHELL',
4 job_type => 'EXECUTABLE',
5 job_action => '/tmp/test.sh',
6 start_date => sysdate,
7 repeat_interval => 'FREQ=MINUTELY; INTERVAL=1', /* every one hour */
8 enabled => TRUE,
9 comments => 'Testing shell script from Oracle');
10 END;
11 /PL/SQL procedure successfully completed.

Step 3: Check if the job is running:

bash-3.00$ cat /tmp/test.logTest succeeded Wed Jan 31 01:02:23 PST 2007Test succeeded Wed Jan 31 01:03:23 PST 2007Test succeeded Wed Jan 31 01:04:23 PST 2007

FROM ORACLE TO UNIX SHELL ENVIRONMENT


HOW TO PASS A VALUE FROM ORACLE TO UNIX SHELL ENVIRONMENT VARIABLE


Though its too trivial, but I thought its not a bad idea to put it here to help the newbies.

Following information can be of help when you want to store a table record or some computation in a shell variable.

env_variable=`sqlplus username}/{password} <<>
set echo off verify off feed off termout off pages 0
{{SELECT STMT}};
exit
EOF`

For example:

-bash-3.00$ DB_USED=`sqlplus -s "/ as sysdba" <<>
set echo off verify off feed off termout off pages 0

> select sum(tot.bytes/1024-sum(nvl(fre.bytes,0))/1024)/3.8>
from dba_free_space fre,
> (select tablespace_name, sum(bytes) bytes>
from dba_data_files> group by tablespace_name) tot,> dba_tablespaces tbs>
where tot.tablespace_name = tbs.tablespace_name>
and fre.tablespace_name(+) = tbs.tablespace_name>
group by tbs.tablespace_name, tot.bytes/1024, tot.bytes> /> exit> EOF`

-bash-3.00$ echo $DB_USED4189795.79This technique can be used in various places where you need to pass a value from Oracle to Unix shell environment.



HOW TO RENAMED MATERIALIZED VIEW? ORA-32318


Now - this is what you call a long break .. almost a year.

Well - The personal life has been rocking all during last year and I have good news to share, I'm a proud father of a cute little girl.

We are still searching a name for her.

That is some relief in Hindu religion that we can take up to some days before finalizing the name of baby.

I hope to be more punctual in writing my experiences here on the blog.

Today, I have something on materialized views.

How to rename them?Last week, I had this requirement to rename a materialized view and initial search on how to the same landed me on to ORA32318.

ORA-32318: cannot rename a materialized view

Cause: Renaming a materialized view or its base table is not supported.

Action: Do not rename the base table of a materialized view.

Now, this is what I dont expect Oracle to do.

when rename of table is possible, then why not rename of mat view possible?

If any one knows a logical reason, please share.Anyways, I gave it a further thought on how to accomplish this and an idea struck me.I'm giving the information of our system but with changed names.DB1 - where base table exists - 10.2.0.2DB2 - where mview exists - 10.2.0.2T1 - name of the table on DB1M1 - name of the mview - Fast/Incremental refresh on demandNow as discussed the requirement is to convert M1 to M2, with least down-time (at least for selects).Here is some test setup scripts:On DB1:

SQL> create table t1 as select * from all_objects;Table created.

SQL> alter table t1 add primary key (object_id);

Table altered.

SQL> create materialized view log on t1;

Materialized view log created.On DB2:

SQL> create materialized view m1 refresh fast on demand as select * from t1@db1;

- db1 is database linkMaterialized view created.

SQL> select count(*) from m1;

COUNT(*)----------62551Now steps to change the name:

Step1: On DB1- Stop DML/DDL activities on the base table T1Step2: On DB2- Refresh the M1 mview to ensure that there are no changes in there, so we can plan to change the name.

- Create another table with new name. This new name should be the name of mview intended.

SQL> create table m2 as select * from m1;

Table created.>> Well this can help you in moving non-partition base-table/mview to partitioned base-table/mview

Step3: On DB2Create new materialized view using "prebuilt" option.

SQL> create materialized view m2 ON PREBUILT TABLE REFRESH fast on demand as select * from T1@DB1;

Materialized view created.

Step4: On DB2Drop the old materialized view.

SQL> drop materialized view m1;

Materialized view dropped.

Thats it!Now to check if thats working.

Delete few rows on t1@db1

SQL> delete from t1 where object_id in (2,3);

2 rows deleted.

SQL> commit;

Commit complete.

>> And now refresh the new mview.

SQL> exec dbms_mview.refresh('M2')

PL/SQL procedure successfully completed.

>> Check the no of rows:SQL> select count(*) from m2;COUNT(*)----------62549Finally check the way oracle refreshed this mview.

SQL> select LAST_REFRESH_TYPE from user_mviews where MVIEW_NAME='M2';

LAST_REF
------------
FAST

Well that's just a confirmation :)

Note: I havent tested other functionalities of this test.

So please do a thorough testing of this code before pushing into production database system.BTW - we are doing the same.

View My Stats