Friday 31 March 2017

Comparison Between Apps 11i and Release12

In this document we will compare TOPS in apps 11i and release12(R12). Let's have a look at the technology stack using both release 11i and 12.


Oracle ebusiness-suite release 12 technology stack



Database :
Database Version using in 11i (11.5.9 & 11.5.10) was 9i where in  Release 12 it is 10g R2 (10.2.0.2) and for Release12.1.2 it is using database 11.1.0.7




Application Tier:
Tech Stack in Application Tier consist of iAS(1.0.2.2.2) & Developer 6i (Forms & Reports
8.0.6) but in Applications R12 it is built on Fusion Middleware (10g Web Server and 10g Forms & Reports)

Sub component in Application Tier:
        HTTP Server or Web Server in R12 is Version 10.1.3 which is built on Apache version 1.3.34. In apps 11i it is Version 1.0.2.2.2 built on Apache Version 1.3.19
        Jserv in apps 11i is replaced by OC4J (mod_jserv is replaced by mod_oc4j) 
        Forms Version 6i in Apps 11i is replaced by Forms 10.1.2.0.2 in R12 
        Reports Version 6i in Apps 11i is replaced by Reports 10.1.2.0.2 in R12 
        JDBC version is changed from version 9 in apps 11i to version 10.2.0 in Apps R12 
        modplsql or mod_pls is removed from Apps R12  
        Java processes use JDK/JRE version 1.5.0 in R12 against JDK version 1.3.1 or
1.4.2 in Apps 11i  




Monday 27 March 2017

Oracle Apps R12 Architecture

The Application Tier :

In Release 12, the application tier contains Oracle Application Server 10g (OAS10g). Three servers or service groups comprise the basic application tier for Oracle Applications: 
        Web services 
The Web services component of Oracle Application Server processes requests received over the network from the desktop clients. 


        Forms services 
Forms services in Oracle Applications Release 12 are provided by the Forms listener servlet or Form Socket mode, which facilitates the use of firewalls, load balancing, proxies, and other networking options. 
        Concurrent Processing server 
Processes that run on the Concurrent Processing server are called concurrent requests. When you submit such a request, either through HTML-based or Forms-based Applications, a row is inserted into a database table specifying the program to be run. A concurrent manager then reads the applicable requests in the table, and starts the associated concurrent program.


Database Tier :
The database tier contains the Oracle database server, which stores all the data maintained by Oracle Applications.

R12 EBS Directory Structure


Techstack Components :
DB_TIER
        10.2.0.2 RDBMS ORACLE_HOME
APPL-TIER
        10.1.2 C ORACLE_HOME / FORMS ORACLE_HOME (8.0.6 ORACLE HOME as in
R11i)
        10.1.3 Java ORACLE_HOME/OC4J ORACLE_HOME (iAS ORACLE_HOME as in
R11i)
INSTANCE_TOP : Each application tier has a unique Instance Home file system associated


Application Directory Structure :-


ORACLE EBS R12 ORACLE_HOMES :-



Sunday 26 March 2017

RICE components

Mostly an oracle apps technical consultant will be working on RICE components.
R--Reports
I--Interfaces
C--Conversions
E--Extensions(Forms personalization)

Reports:
For suppose I'm running a business named 'vnk' which is wide spread across the globe.Now,I want to know how my business is running across the globe.I will ask a tech guy(oracle apps technical consultant) to develop a report.In that report I ask him to simply print the details of profit or loss,of every branch of my business across the world.He(tech guy) will come up with the report to me then I will come to know whether my company is running fine or not.Thereby, I can take necessary decisions to run my business fine.
Clearly we have seen that report will be developed by technical person,who must know the report building.
We build a report using sql,pl/sql.So,if your are strong in sql,pl/sql then its not a big deal to learn the report building.Its enough to learn the report developer tool.

Conversion:
As I said earlier I'm running a 'vnk' business(which is fictious).Suppose I,m using excel sheets to store the data.Now I want to install oracle apps(E-Business Suite) in my company. So,What ever data that is present in my excel sheets must also be present in my oracle apps tables(A table is a collection of rows and columns).Now I ask a tech guy to write a code such that my excel sheet data will get into oracle apps base tables.Then that tech guy will use 'conversion' to get the data from the legacy system(in our case it is excel sheet) into oracle apps base tables.

Interfaces:
Interfaces are similar to conversions.Conversion is a one-time process where as Interface is on-going process every now and then.We run interfaces daily or periodically.
Interfaces are of two types
1)Inbound Interface
2)Outbound Interface
Inbound Interface:Transferring the data from the legacy system(in our case it is excel sheet) into the Oracle apps base tables.
Outbound Interface:Transferring the data from the Oracle apps base tables into the legacy system(It might be any of these SAP,Peoplesoft etc).

Extensions:
Extensions are nothing but persionalizing the forms.In oracle e-business suite we have some where around 5000 to 6000 forms.In my 'vnk' business i want to customise the po(purchase order) form of the oracle apps then i ask the tech guy to do that.He will use form builder tool to do that.

Thursday 23 March 2017

Who Columns in Oracle Apps

WHO Columns (with eg) that are commonly used in Oracle apps are:
  • Created_by - User Id.
  • Created_date - SYSDATE.
  • Last_update_date - SYSDATE.
  • Last_updated_by - User ID.
  • Last_update_login - Login ID.
  • Request_id  - Conc request id.


We derive values for who columns by below seeded functions.

Created_by := fnd_profile.value('USER_ID')

Creation_Date := SYSDATE

last_update_Date := SYSDATE

last_updated_by := fnd_profile.value('USER_ID')

last_update_login := fnd_global

request_id  := fnd_global.conc_request_id

Query to find the Request Group for Concurrent program

Following query finds the associated request group and the application module name (Payables, Receivables, etc.) for a concurrent program.

In this example, I used "Active Users" as concurrent program name. With a little modification to the query, you can find concurrent request set name also.


SELECT cpt.user_concurrent_program_name     "Concurrent Program Name",
       DECODE(rgu.request_unit_type,
              'P''Program',
              'S''Set',
              rgu.request_unit_type)        "Unit Type",
       cp.concurrent_program_name           "Concurrent Program Short Name",
       rg.application_id                    "Application ID",
       rg.request_group_name                "Request Group Name",
       fat.application_name                 "Application Name",
       fa.application_short_name            "Application Short Name",
       fa.basepath                          "Basepath"
  FROM fnd_request_groups          rg,
       fnd_request_group_units     rgu,
       fnd_concurrent_programs     cp,
       fnd_concurrent_programs_tl  cpt,
       fnd_application             fa,
       fnd_application_tl          fat
 WHERE rg.request_group_id       =  rgu.request_group_id
   AND rgu.request_unit_id       =  cp.concurrent_program_id
   AND cp.concurrent_program_id  =  cpt.concurrent_program_id
   AND rg.application_id         =  fat.application_id
   AND fa.application_id         =  fat.application_id
   AND cpt.language              =  USERENV('LANG')
   AND fat.language              =  USERENV('LANG')

   AND cpt.user_concurrent_program_name = 'Active Users';

Tuesday 21 March 2017

AuditTrail in Oracle Applications

AuditTrail is a way of keeping track of changes made to important data in Oracle Application tables. AuditTrail keeps a history of the following:
1. What changed?
2. Who changed it?
3. When did the change take place?

This can be done on a row-by-row basis or on individual columns of a table.

 Steps to Setup AuditTrail


If we want to setup auditTrail, then we need to follow the below steps 

Step 1. Logon to the Applications as the sysadmin user and select the System Administrator responsibility.

Step 2. Make sure APPLSYS has select privileges on SYS.DBA_TABLES.
For example, if you are auditing the PA_PROJECTS_ALL table, use the following SQL statement to verify this:
select TABLE_NAME from SYS.DBA_TABLES
where TABLE_NAME like 'PA_PROJECTS_ALL';

Step 3. Now we need to define auditgroups: It is required to group the tables that we need to audit since auditing is enabled on an audit groups basis.
           
Navigation: Security -> AuditTrail -> Groups

Step 4. Now define audit installations: In order to be able to audit across application installations, you must specify the Oracle ID's whose tables you wish to audit. At this point, you will need to specify the list of columns from the table you want audited.

Navigation: Security -> AuditTrail -> Install

Step 5. Run the "AuditTrail Update Tables" report from the submit request form to   enable auditing.

Navigation: Requests -> Run -> select a single request



What does actually the "AuditTrail Update Tables" report do internally?

·       Creates shadow tables with a name of the first 26 characters of the audit table and a "_A" suffix. The columns will have the same data types as those of the audited table. The program also creates views _AC# and _AV# on the shadow table to facilitate the access of data. The "#" in the view name represents a number, and can be any number depending on how many views are needed to access the data. The _AC# view contains the current state of the data at the time of query from the join of the shadow table and the table audited. The _AV# view contains the same data as the shadow table plus the current value of the rows. Basically, the _AC# view contains the current status of the audited table with the unchanged columns filled-in with the unchanged values. The shadow table has special columns in addition to the columns we specified to be audited:


AUDIT_TIMESTAMP(DATE): Keeps track of date(HH:MI:SS) and time when auditing was done.

AUDIT_TRANSACTION_TYPE (VARCHAR2(1)): This column has the information of what type of transaction was conducted on the table, I for "INSERT", U for "UPDATE", D for "DELETE" or C for "CURRENT".

AUDIT_USER_NAME (VARCHAR2(100)): The Oracle Application UserID if changes are made from the forms or Oracle ID if changes are made from SQL*PLUS.

AUDIT_TRUE_NULLS (VARCHAR2(250): Delimited list of column names that were changed from NULL actually.
AUDIT_SESSION_ID(NUMBER): ID for the session.

AUDIT_COMMIT_ID (NUMBER): ID for the COMMIT.

PRIMARY KEY: The combined columns primary key value for the table audited. This is not a special column but the actual value of the primary key for the table.

Creates the after event, transaction level database triggers on the tables in your audit group. Database triggers can be created based on timing events, such as "BEFORE" or "AFTER" a DATA MANUPULATION LANGUAGE (DML) activity on the table. In other words, it could be an "INSERT", "UPDATE" or "DELETE" activity on the table that could be the triggering event that causes the creation of a corresponding trigger. Triggers are created either at a "ROW"

or "TRANSACTION" level, raising the total number of triggers that can be created on a table to 12 (3*2*2). It is this after event transaction type triggers that get created by the "AuditTrail Update Table" report during this process. The names of these triggers start with the first 26 characters of the name of the table being audited, plus an _AI,_AU or _AD, which stand for after insert, after update or after delete triggers respectively. These triggers call the procedures _AIP,_AUP, or _AID which are also created by this program. These procedures save the old data rows from the audited table into the shadow table. 



Monday 20 March 2017

Checking status of all the Concurrent Managers from backend.

There are two ways you can check the concurrent managers running in Oracle apps server.

1. From Oracle Apps Front End :-

Below is the navigation to check currently running concurrent managers in the server:
System Administrator >> Concurrent : Manager >> Administer.

2. Query to get the info of all the concurrent managers running in the Oracle apps DB:-

SELECT DECODE (
          CONCURRENT_QUEUE_NAME,
          'FNDICM', 'Internal Manager',
          'FNDCRM', 'Conflict Resolution Manager',
          'AMSDMIN', 'Marketing Data Mining Manager',
          'C_AQCT_SVC', 'C AQCART Service',
          'FFTM', 'FastFormula Transaction Manager',
          'FNDCPOPP', 'Output Post Processor',
          'FNDSCH', 'Scheduler/Prereleaser Manager',
          'FNDSM_AQHERP', 'Service Manager: AQHERP',
          'FTE_TXN_MANAGER', 'Transportation Manager',
          'IEU_SH_CS', 'Session History Cleanup',
          'IEU_WL_CS', 'UWQ Worklist Items Release for Crashed session',
          'INVMGR', 'Inventory Manager',
          'INVTMRPM', 'INV Remote Procedure Manager',
          'OAMCOLMGR', 'OAM Metrics Collection Manager',
          'PASMGR', 'PA Streamline Manager',
          'PODAMGR', 'PO Document Approval Manager',
          'RCVOLTM', 'Receiving Transaction Manager',
          'STANDARD', 'Standard Manager',
          'WFALSNRSVC', 'Workflow Agent Listener Service',
          'WFMLRSVC', 'Workflow Mailer Service',
          'WFWSSVC', 'Workflow Document Web Services Service',
          'WMSTAMGR', 'WMS Task Archiving Manager',
          'XDP_APPL_SVC', 'SFM Application Monitoring Service',
          'XDP_CTRL_SVC', 'SFM Controller Service',
          'XDP_Q_EVENT_SVC', 'SFM Event Manager Queue Service',
          'XDP_Q_FA_SVC', 'SFM Fulfillment Actions Queue Service',
          'XDP_Q_FE_READY_SVC', 'SFM Fulfillment Element Ready Queue Service',
          'XDP_Q_IN_MSG_SVC', 'SFM Inbound Messages Queue Service',
          'XDP_Q_ORDER_SVC', 'SFM Order Queue Service',
          'XDP_Q_TIMER_SVC', 'SFM Timer Queue Service',
          'XDP_Q_WI_SVC', 'SFM Work Item Queue Service',
          'XDP_SMIT_SVC', 'SFM SM Interface Test Service')
          AS "Concurrent Manager's Name",
       max_processes AS "TARGET Processes",
       running_processes AS "ACTUAL Processes"
  FROM apps.fnd_concurrent_queues
 WHERE CONCURRENT_QUEUE_NAME IN
          ('FNDICM',
           'FNDCRM',
           'AMSDMIN',
           'C_AQCT_SVC',
           'FFTM',
           'FNDCPOPP',
           'FNDSCH',
           'FNDSM_AQHERP',
           'FTE_TXN_MANAGER',
           'IEU_SH_CS',
           'IEU_WL_CS',
           'INVMGR',
           'INVTMRPM',
           'OAMCOLMGR',
           'PASMGR',
           'PODAMGR',
           'RCVOLTM',
           'STANDARD',
           'WFALSNRSVC',
           'WFMLRSVC',
           'WFWSSVC',
           'WMSTAMGR',
           'XDP_APPL_SVC',
           'XDP_CTRL_SVC',
           'XDP_Q_EVENT_SVC',
           'XDP_Q_FA_SVC',
           'XDP_Q_FE_READY_SVC',
           'XDP_Q_IN_MSG_SVC',
           'XDP_Q_ORDER_SVC',
           'XDP_Q_TIMER_SVC',
           'XDP_Q_WI_SVC',
           'XDP_SMIT_SVC');

Creating READ ONLY schema in Oracle Applications

I will show you how to create a custom schema which will be clone of apps schema but will have read only access to all the objects in apps schema.

Sometimes, some of your developers might ask you access for “apps” schema. In Production environments, its not at all recommended to give “apps” access to developers as they may screw up the code. However if they can be granted read only access if management approves this.
To do so, we need to create an additional schema which will be having only read only access to all the objects owned or accessed by “apps”. Please find below the detailed procedure of creating such a “read only apps schema”.
step 1: Connect as sysdba and create the database user to be used for apps read only schema.
bash $ sqlplus "/ as sysdba"

SQL > create user appsro identified by appsro default tablespace APPS_TS_TX_DATA;

SQL> grant connect, resource to appsro;

SQL> grant create synonym to appsro;

SQL> exit;
step 2: Connect as APPS user and run the SQL commands:
bash $ sqlplus apps/******

SQL>set head off

SQL> set newpage none

SQL> set pagesize 9999

SQL> spool create_synonyms.sql

SQL> select 'create synonym ' || OBJECT_NAME || ' for ' || OWNER ||'.' ||OBJECT_NAME || ';' from all_objects where OWNER not in ('SYS','SYSTEM') and OBJECT_NAME not like '%/%' and OBJECT_TYPE in ('TABLE','VIEW','SYNONYM');

SQL> spool off

SQL> spool grant_select.sql

SQL> select 'grant select on '|| OWNER ||'.' ||OBJECT_NAME || ' to appsro;' from all_objects where OWNER not in ('SYS','SYSTEM') and OBJECT_NAME not like '%/%' and OBJECT_TYPE in ('TABLE','VIEW','SYNONYM');

SQL> spool off

SQL> exit;
step 3:
– connect as sysdba :
bash $ sqlplus "/as sysdba"

SQL> @grant_select.sql

SQL> exit;
step 4:
– connect as appsro
bash $ sqlplus appsro/appsro

SQL> @create_synonyms.sql

SQL> exit;
You are done. Now your users can use “appsro” schema to have the read only access to Apps Data.

Saturday 18 March 2017

Compile Form fmb and pll files in Oracle Apps R12

Commands to be used to compile Form plls and Form fmbs in Oracle apps :-


Form FMB Compile :-

Place fmb file in AU top (It could be custom top where you keep your custom fmb files based on your organization standards)

Command :-
frmcmp_batch userid=apps/apps_pwd module=$AU_TOP/forms/US/MY_FILE.fmb output_file=$AU_TOP/forms/US/MY_FILE.fmx module_type=form batch=yes compile_all=special


Form PLL Compile :-

Place fmb file in AU top (It could be custom top where you keep your custom pll files based on your organization standards)

Command:-
frmcmp_batch module=$AU_TOP/resource/CUSTOM.pll userid=apps/apps_pwd output_file=$AU_TOP/resource/CUSTOM.plx module_type=LIBRARY batch=yes compile_all=special

Friday 17 March 2017

Order Status Code at the Line and Header Level

order to cash process steps can be listed as below :-

  • Enter the Sales Order
  • Book the Sales Order
  • Launch Pick Release
  • Ship Confirm
  • Create Invoice
  • Create the Receipts either manually or using Auto Lockbox ( In this article we will concentrate on Manual creation)
  • Transfer to General Ledger
  • Journal Import
  • Posting

Below are the stages order goes through :-


Enter order --> Book Order --> Pick Release --> Pick Slip --> Confirm Shipment -> Generate Invoice --> Customer follow up --> Receipt --> [Final Reconciliation]

The header information is stored in OE_ORDER_HEADERS_ALL and the line information in OE_ORDER_LINES_ALL when the order is entered. The column called FLOW_STATUS_CODE is available in both the headers and lines tables which tell us the status of the order at each stage.


You can get the details of all the statuses by query below:-


SELECT * 
FROM fnd_lookup_values 
WHERE lookup_type = 'LINE_FLOW_STATUS' 
AND language = 'US'

Steps in Details :-

1. Order Entry

This is first stage, when the order is entered in the system; it creates a record in order headers and Order Lines table.


Enter header details: Once you enter details on the order header and save it or move it to lines, record goes to one table OE_ORDER_HEADERS_ALL 
FLOW_STATUS_CODE = ENTERED, 

BOOKED_FLAG = N),

Primary key=HEADER_ID 

No record exists in any other table for this order till now.


Enter Line details for this order: Enter different item numbers, quantity and other details in line tab. When the record gets saved, it goes to one table. Order header details will be linked with line details by order HEADER_ID. 

OE_ORDER_LINES_ALL

FLOW_STATUS_CODE = ENTERED, 

BOOKED_FLAG = N, 

OPEN_FLAG = Y 

Primary key= LINE_ID

2. Order Booking

This is next stage, when Order is booked then the Flow status changed from Entered to Booked.At this stage, these below table get affected. 


OE_ORDER_HEADERS_ALL (FLOW_STATUS_CODE as BOOKED, BOOKED_FLAG updated to Y) 
OE_ORDER_LINES_ALL (FLOW_STATUS_CODE as AWAITING_SHIPPING, BOOKED_FLAGupdated Y)
WSH_DELIVERY_DETAILS (DELIVERY_DETAIL_ID is assigned here, RELEASED_STATUS ‘R’ ready to release, LINE_ID comes as SOURCE_LINE_ID) 
WSH_DELIVERY_ASSIGNMENTS (DELIVERY_ASSIGNMENT_ID is assigned for DELIVERY_DETAIL_ID present in WSH_DELIVERY_DETAILS, DELIVERY_ID remains blank till this stage)

In shipping transaction form order status remains "Ready to Release".

At the same time, Demand interface program runs in background And insert into inventory tables MTL_DEMAND, here LINE_ID come as a reference in DEMAND_SOURCE_LINE

3. Reservation

This step is required for doing reservations SCHEDULE ORDER PROGRAM runs in the background and quantities are reserved. Once these programs get successfully get completed.


MTL_DEMAND andMTL_RESERVATIONS table get updated. LINE_ID gets updated in DEMAND_SOURCE_LINE_ID in both the tables.

4. Pick Release

Pick Release is the process of putting reservation on on-hand quantity available in the inventory and pick them for particular sales order.

Pick release can be done from 'Release Sales Order' form or 'Pick release SRS' program can be scheduled in background. In both of these cases all lines of the order gets pick released depending on the Picking rule used. If specific line/s needs to be pick release it can be done from 'Shipping Transaction form. For this case Pick Release is done from 'Release Sales Order' form with Pick Confirm=NO.
Once pick release is done these are the tables get affected:

· If step 3 is not done then MTL_RESERVATIONS gets updated now.

· WSH_NEW_DELIVERIES (one record gets inserted with SOURCE_HEADER_ID= order header ID, STATUS_CODE=OP =>open)

· WSH_DELIVERY_ASSIGNMENTS (DELIVERY_ID gets assigned which comes from WSH_NEW_DELIVERIES)

· WSH_DELIVERY_DETAILS (RELEASED_STATUS ‘S’ ‘submitted for release’)

· MTL_TXN_REQUEST_HEADERS

· MTL_TXN_REQUEST_LINES (LINE_ID goes as TXN_SOURCE_LINE_ID)

· (move order tables. Here request is generated to move item from Source (RM or FG) sub-inventory to staging sub-inventory)

· MTL_MATERIAL_TRANSACTIONS_TEMP (link to above tables through MOVE_ORDER_HEADER_ID/LINE_ID, this table holds the record temporally)

· MTL_SERIAL_NUMBERS_TEMP (if item is serial controlled at receipt then record goes in this table)

· MTL_SERIAL_NUMBERS (enter value in GROUP_MARK_ID )

*In shipping transaction form order status remains "Released to Warehouse" and all the material still remains in source sub-inventory. We need to do Move Order Transaction for this order. Till this no material transaction has been posted to MTL_MATERIAL_TRANSACTIONS


5. Pick Confirm/ Move Order Transaction

Items are transferred from source sub-inventory to staging Sub-inventory. Here material transaction occurs.

Order line status becomes 'Picked' on Sales Order and 'Staged/Pick Confirmed' on Shipping Transaction Form.


MTL_MATERIAL_TRANSACTIONS_TEMP (Record gets deleted from here and gets posted to MTL_MATERIAL_TRANSACTIONS)
OE_ORDER_LINES_ALL (FLOW_STATUS_CODE ‘PICKED’ )
MTL_MATERIAL_TRANSACTIONS (LINE_ID goes as TXN_SOURCE_LINE_ID)
MTL_TRANSACTION_ACCOUNTS
WSH_DELIVERY_DETAILS (RELEASED_STATUS becomes ‘Y’ => ‘Released’ )
WSH_DELIVERY_ASSIGNMENTS
MTL_ONHAND_QUANTITIES
MTL_SERIAL_NUMBERS_TEMP (record gets inserted after putting details for the item which are serial controlled at 'Sales order issue')
MTL_SERIAL_NUMBERS (record gets inserted after putting details for the item which are serial controlled at 'Sales order issue')

* This step can be eliminated if we set Pick Confirm=YES at the time of Pick Release

6. Ship Confirm

Here is the ship confirm interface program runs in background. Data removed from 


WSH_NEW_DELIVERIES. The items on the delivery shipped to customer at this stage
OE_ORDER_LINES_ALL (FLOW_STATUS_CODE ‘shipped’) 
WSH_DELIVERY_DETAILS (RELEASED_STATUS ‘C’ ‘Shipped’, SERIAL_NUMBER if quantity is ONE)
WSH_SERIAL_NUMBERS (records gets inserted with the DELIVERY_DETAIL_ID reference, only in case of shipped quantity is two or more)
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
MTL_SERIAL_NUMBERS_TEMP (records gets deleted from this table)
MTL_SERIAL_NUMBERS (Serial number stauts gets updated CURRENT_STATUS=4 , 'Issued out of store')

7. Enter Invoice

After shipping the order, order lines are eligible to transfer to RA_INTERFACE_LINES_ALL. Workflow background engine picks those records and post it to RA_INTERFACE_LINES_ALL. This is also called Receivable interface, this mean information moved to accounting area for invoicing details. Invoicing workflow activity transfers shipped item information to Oracle Receivables. At the same time records also goes in the table RA_INTERFACE_SALESCREDITS_ALL which hold details of sales credit for the particular order


RA_INTERFACE_LINES_ALL (interface table into which the data is transferred from order management) Then Autoinvoice program imports data from this table which get affected into this stage are receivables base table. At the same time records goes in
RA_CUSTOMER_TRX_ALL (CUST_TRX_ID is primary key to link it to TRX_LINES table and TRX_NUMBER is the invoice number)
RA_CUSTOMER_TRX_LINES_ALL (LINE_ATTRIBUTE_1 and LINE_ATTRIBUTE_6 are linked to order number and LINE_ID of the orders)

8. Complete Line

In this stage order line level 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”)