Infolinks

Thursday 24 May 2012

ERP2


56
INTERFACES:
It is nothing but a program; it will be used to transfer the data from flat file to data
base table or from data base table to flat file. Two types of interfaces given below.
1. Outbound Interface
2. Inbound Interface
Outbound Interface: it will be used to transfer the data from oracle apps base table to
legacy system flat file. We will develop a concurrent program, which is pl/sql procedure.
Inside of that we will use UTL_FILE package to generate the flat file.
UTL_FILE: it is one of the pl/sql package, which will be used to transfer the data from
oracle data base table to flat files or from flat files to oracle data base tables. But we will
use sql loader to transfer data from flat file to data base tables .
By using following 3 functions we will generate flat file
1. Declare the file pointer to find out file location.
UTL_FILE.FILE_TYPE;
2. To open or create file.
UTL_FILE.FOPEN(‘PATH’,’FILENAME’,’W’);
3. To transfer data into file
UTL_FILE.PUT_LINE(FILE POINTER, COLUMN NAME);
4. To close file
UTL_FILE.FCLOSE(FILE POINTER);
STEPS:
1. Develop the pl/sql program.
2. Define the cursor to get the data from the data base tables.
3. Open the cursor and open the file by using UTL_FILE package.
4. Transfer the data from cursor variable into flat files by using UTL_FILE.
5. Close the file by using UTL_FILE package.
6. Register the program as concurrent program.
7. This program is scheduled at SRS window.
Ex: Create or replace procedure inventoryout (errbuf out varchar2,
Retcode out varchar2) as
Cursor cur_inv is select inventory_item_id,organization_id,segment1,
description from mtl_system_items_b;
Outpointer utl_file.file_type;
Begin
Outpointer:=utl_file.fopen('c:\temp','inventoryflat.txt','w');
-- To get the path:
-- Select value from V$parameter where name like ‘utl_file_dir’;
For c in cur_inv

57
loop
Utl_file.put_line(outpointer,c.inventory_item_id||'-'||c.organization_id||'-'||
c.segment1 ||'-'||c.description);
end loop;
utl_file.fclose(Outpointer);
exception
when others then
fnd_file.put_line(fnd_file.log,'error while generating flat file');
end inventoryout;
UTL_FILE EXCEPTIONS:
1. UTL_FILE.INVALID_OPERATION
2. UTL_FILE.INVALID_PATH
3. UTL_FILE.INVALID_MODE
4. UTL_FILE.INVALID_FILEHANDLE
5. UTL_FILE.READ_ERROR
6. UTL_FILE.INTERNAL_ERROR
INIT.ORA: This file contains the accessible directories list.
Inbound Interface or Conversion: it will be used to upload the data from legacy
system flat file to oracle apps base table. For this we will use SQL LOADER program and
pl/sql program.
Ex: -- To load data from flat file to Tables using SQLLDR
-- Writing the Control File CS_CTL.CTL
LOAD DATA
INFILE ‘C:\CHAITU_CS.CSV’
BADFILE ‘CS_BAD.DAT’ -- Naming the BAD FILE
DISFILE ‘CS_DISC.DAT’ -- Naming the DISCARD FILE
INSERT INTO TABLE CS_0016
FIELDS TERMINATED BY ‘,’
TRAILING NULCOLS
(
COL1,
COL2,
COL3
)
-- SQLLDR SYNTAX
CMD> SQLLDR APPS/APPS@PROD CONTROL = CS_CTL

58
SQL Loader: This is a CUI (Character User Interface) Tool, which is used to load data
from flat files to tables. We have to feed control file to the SQL Loader this control file
contains information about the flat file and into which table needs to be loaded.
Syntax:
LOAD DATA
INFILE <FILENAME>
[INSERT / REPLACE / TRUNCATE / APPEND]
INTO TABLE <TABLENAME>
FIELDS TERMINATED BY ‘ , ’
OPTIONALLY ENCLOSED ‘ “ ‘
TRIALING NULLCOLLS
WHERE ---[CONDITION]
Filler Clause: The filler clause is used to skip one column data in the flat file.
Ex: -- Example using all functions in the control file
-- Create a Table ABC with 4 cols
Create table ABC(Col1 number,
Col2 varchar2(10)
Col3 number,
Col4 varchar2(10),
Col5 varchar2(10),
Col6 date);
-- Table Created
-- Create the Control File with the name mycontrol.ctl
LOAD DATA
INFILE ‘C:\NEW.CSV’
INSERT
INTO TABLE ABC
(COL1, Sequencename.nextval, _ getting the sequence number
COL2, “upper(:col2)”
COL3, constant ‘ABC’ _ it fills the each row with the constant value
COL4, NULLIF COL4= ‘EX’ _ if there is no value then it is filled with the
COL5, FILLER, _ to skip the column
COL6, “to-date(:col4, ‘dd-mm-yyyy’)); _ to print the date.
After completion of the control file save it as .ctl extension and to execute the control file
go to the command prompt in UNIX or WINDOWS use the following syntax.

59
Syntax:
Prompt> SQLLDR USERNAME/PASSWORD@HOSTNAME
CONTROL = CONTROL FILE NAME
[DIRECT = TRUE / FALSE [DEFAULT]
SKIP = NUMBER
ROWS = NUMBER
ERRORS = NUMBER]
Ex: -- Executing the control file mycontrol.ctl
--Prompt> SQLLDR USERNAME/PASSWORD@HOSTNAME
CONTROL = mycontrol.ctl
In the execution there are more options, which are stated below. And those options
we give after the CONTROL in the SQLLDR are optional according to our requirement we
will use them.
Conventional Path: It is the default path which will create insert statements and it will
insert data into table method is very slow. Here the auto commit will be carried for every
64 records.
Direct Path: This will be used when ever the volume of data is high. It will make the
entire data into set of blocks and it will create one insert statement for each block and
insert data into tables. This method is very fast also parallel loading will be working while
working with direct path. By default it will be false.
Skip: Used to skip the rows from flat file while loading the data into tables.
Rows: In conventional path the commit will happen for every 64 records by default if we
want to make it to 1000 EX: ROWS = 1000
Errors: This indicates that how many no of errors can be tolerated while loading data
into tables. The default value is 50.
As a part of the execution the SQLLDR creates three files according to the output type
those are given below.
1. Bad File: Which will be created whenever there are records, which are rejected
while inserting into the table from the flat file?
2. Discard File: It will be created whenever there are records which are not
satisfying the filtering criteria specified in the where clause of the control file.
3. Log File: This file contains the complete information of data it will be created at
all times when ever we fire SQLLDR.

60
Conversion: Conversion is a preimplementation load which will transfer the data from
the legacy system to the oracle apps system. After the completion of load we will drop
all the objects which we have used for the conversion.
Conversion Process:
1. We will get the flat file to convert, based on the flat file we will generate the
temporary file and by using SQLLDR we transfer data from flat file to temporary
table.
2. Create staging table, which is replica of interface table provided by oracle.
3. Develop a package which have different program units for validation and moving to
interface tables
4. Run the validation procedure to validate the data which has been loaded into
staging table. Use extra cols in a staging table ERRFLAG and MESSAGETEXT that
are used to identify valid and invalid records with respective error messages.
5. We transfer the successful records into interface table and change the ERRFLAG
status from V(Validated) to M(Moved)
· ERRFLAG _ E _ ERROR
· ERRFLAG _ V _ VALIDATED
· ERRFLAG _ M _ MOVED
6. As we are working with open interface we will run the import program provided by
oracle used to pull the data from interface table and load into base table.
7. If any records got failed while importing these will exist under oracle defined errors
tables.
Conversion Process (Brief):
1. Based on the flat file provided write the control file to transfer the data into staging
tables.
2. Validate the data that has been loaded into staging tables.
3. Insert the validated records into interface tables.
4. This is an open interface we run the import program to import the data into base
tables.
Interface: Interface is a post implementation load which will be helpful to import the
data after golive.
EX: ARLOCKBOX interface
The object that we have developed for this interface will be registered in the oracle
applications.

61
Types of Interfaces: There are two types of interfaces.
1. Open Interface.
2. Custom Interface.
Open Interface: Open interface is nothing but it provides interface tables and import
programs to import data into base tables.
Customer Interface: Whenever oracle has not provided any import programs or API to
import data into base tables we call it as a custom interface.
Interface Process:
1. Based on the flat file w e will develop the control file and insert the data into
staging table.
Note: Place the control file in the bin directory of your custom application directory.
2. Register that in oracle 11i applications by taking execution method as
SQL * LOADER we develop the packages which will be having procedures like
validate the staging table, moving the validated data to the interface tables, run
import program after that register that package in oracle 11i applications
Note: While transferring the data into base tables we pass three extra cols those are given
below.
_ Process_flag (Number)
_ Transaction_type (Varchar2)
_ Set_process_id
Process_flag: To check the status of the row which we fetched into the table. We pass
different values that indicate the status of the row those are given below.
_ 1 _ To be process
_ 2 _ Import Success
_ 3 _ Error
_ 4 _ Validation Under Process
_ 7 _ Validation Successful.
Transaction_type: This is used to identify which transaction was done those are CREATE,
UDATE.
Set_process_id: It is used to split the no. of becords to use memory correctly without
getting any SGA MEMORY error.
Note: We can’t load more than one organization records at a time. First we have to load the
master organization and then child organization.
62
Item Conversion:
1. We transfer the data from flat file to the staging table.
2. Validate the data, which has been loaded into the staging table.
_ Check the ITEM_NUMBER is existing or not.
_ Check whether the ORG_CODE is existing or not.
_ Description should not be NULL
_ Template name should be validated from MTL_ITEM_TEMPLATES table.
_ Validate the PLANNERS_CODE from MTL_PLANNERS table.
_ Validate the HAZARDS_CLASS from PO_HAZARD_CLASSES table.
3. After doing the above validation if the record got successfully validated we will set
the record status to ‘V’ else ‘E’ with appropriate error message.
4. Transfer the validated data from staging to interface table.
(MTL_SYSTEMS_INTERFACE).
5. As we are working with open interface we will run the standard concurrent program
to import the data from interface table to base table. Before running this import
program we have to set the organization to which we are loading the items. The
program will ask for six parameters. The navigation is Import _ Import Items in
the Inventory responsibility.
All Organizations: If we go with YES it will load the same item into all organizations else
it will load into a specific organization.

63
Validate Items: If this is YES then import program revalidate the data existing in the
interface table.
Process Items: If this is YES after validation it will load the validated records into
MTL_SYSTEM_ITEMS_B table.
Delete Processed Rows: If this is yes the successfully imported records will be deleted
from the interface table.
Process Set(NULL for ALL): This is the only parameter which is not mandatory. What
ever value will be provided compared with the SET_PROCESS_ID column in the
MTL_SYSTEMS_ITEM_INTERFACE table. The main purpose of this table is to make or
spread the data into batch which makes import easy. If we provide NULL for the
irrespective of SET_PROCESS_ID then it will pull all the records for the process.
Create or Update Items: If it is 1 it will check the records in the interface table whose
transaction type is CREATE and pull those records for import. If we provide 2 it means
we are trying to UPDATE the existing items. So it will pull the records whose transaction
type is UPDATE.
_ After the submission of the request and when it got completed to identify the load
status of records check with the PROCESS_FLAG column in the
MTL_SYSTEM_ITEMS_INTERFACE. We discuss the different status of the process
flag in the above discussion.
General Errors:
_ The general error that occur when we are dealing with the Item Conversions that
is Master-Child Conflict this error will occur when ever we are trying to load
child org with out loading to the master.
_ Items cannot have pick the components = “YES” when ever the MRP planning
method is not defined.
Note:
_ To find the records which got erroredout and their proper messages oracle provided
MTL_INTERFACE_ERRORS table. The join between this interface table and error table is
TRANSACTION_ID.
_ To set the master items to the child organizations also then we have to go with the
Master Items then retrieve the item and go with the Organization Assignment button on
the top left side.

64
Conversion Script for Item Load:
/*-------------------------------------------------------------------------------------------------
BIAS TECHNOLOGIES INC, INDIA
File Name : CS_item_load_structures.sql
Author : PHANI BHUSHAN REDDY
Created Date : 03-june-06
Version : 1
Purpose : The Purpose of this script is to create the temporary table(s)
Version Modified By Modified Date Purpose
---------------------------------------------------------------------------------------------------
1.1
-------------------------------------------------------------------------------------------------*/
-- Temporary Table
DROP TABLE CS_ITEM_LOAD_TEMP;
CREATE TABLE CS_ITEM_LOAD_TEMP
(
ITEM_NUMBER VARCHAR2(30)
,DESCRIPTION VARCHAR2(240)
,TEMPLATE_NAME VARCHAR2(30)
,ORG_CODE VARCHAR2(10)
);
-- Staging Table
CREATE TABLE CS_ITEM_LOAD_STG
AS
SELECT *
FROM MTL_SYSTEM_ITEMS_INTERFACE
WHERE 1=0;
ALTER TABLE CS_ITEM_LOAD_STG
ADD
(VALID_STATUS VARCHAR2(3)
,ERR_MSG VARCHAR2(4000)
);

65
/*-------------------------------------------------------------------------------------------------
BIAS TECHNOLOGIES INC, INDIA
File Name : CS_item_load.ctl
Author : PHANI BHUSHAN REDDY
Created Date : 03-june-06
Version : 1
Purpose : The Purpose of this control file is to import
Data from flat file to table.
Version Modified By Modified Date Purpose
---------------------------------------------------------------------------------------------------
1.1
-------------------------------------------------------------------------------------------------*/
LOAD DATA
INFILE 'C:\ITEM_DATA.CSV'
INSERT INTO TABLE CS_ITEM_LOAD_TEMP
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED '"'
TRAILING NULLCOLS
(ITEM_NUMBER,
DESCRIPTION,
TEMPLATE_NAME,
ORGANIZATION_CODE
)
Note: This is the Control file using the SQLLDR we execute the control file to move the data from
flat file to staging table.

66
/* ------------------------------------------------------------------------------------------------
BIAS TECHNOLOGIES INC, INDIA
File Name : CS_item_load_pkg.sql
Author : PHANI BHUSHAN REDDY
Created Date : 03-june-06
Version : 1
Purpose : the puruose of this package is to import items data.
Move_to_staging
this procedure is used to insert records
from temp table into staging table
Validate_staging
This procedure is used to validate the date which has
been moved to staging table. The valid records
having the valid_status to 'V' other wise 'E'.
Move_to_iface
The record which through with the validations
(valid_status ='V') will be transferred to interface
table(MTL_SYSTEM_ITEMS_INTERFACE).
Version Modified By Modified Date Purpose
---------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------*/
--Package Specification
CREATE OR REPLACE PACKAGE CS_item_load_pkg
AS
PROCEDURE move_to_staging;
PROCDURE validate_staging;
PROCEDURE move_to_iface;
END CS_item_load_pkg;

67
--Package Body
CREATE OR REPLACE PACKAGE BODY CS_item_load_pkg
AS
-- Procedure to move_to_staging
PROCEDURE move_to_staging
IS
i number;
BEGIN
-- Inserting data into staging table
INSERT INTO CS_item_load_stg
(
segment1 -- item_number
,description -- description
,template_name -- template_name
,organization_code -- org_code
,set_process_id
)
SELECT
item_number
,description
,template_name
,org_code
,1
FROM
CS_item_load_temp;
DBMS_OUTPUT.PUT_LINE(' Total Reocrd(s) inserted '|| SQL%ROWCOUNT );
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(' ERROR => ' || SQLERRM);
END move_to_staging;
--Procedure to validate the data
PROCEDURE validate_staging
AS
l_err_flag number:=0;
l_err_msg varchar2(1000);
l_count number;
CURSOR c is select a.rowid row_id , a.SEGMENT1, A.DESCRIPTION, a.template_name ,
a.organization_code
from CS_item_load_stg a
where nvl(VALID_STATUS,'T') in ('T','E');
BEGIN
FOR c_rec in c
LOOP
BEGIN
--- Initialize the variables
l_err_flag := 0;
l_err_msg := NULL;

68
--Validate the item number
l_count := 0;
select count(*) into l_count
from MTL_SYSTEM_ITEMS_B
where segment1 = c_rec.segment1;
IF l_count > 0 THEN
l_err_flag := 1;
l_err_msg := '**Invalid Item number ';
END IF;
-- Validate the Description
if c_rec.description is null then
l_err_flag := 1;
l_err_msg := l_err_msg || '**Invalid Description ';
END IF;
--Validate the Template Name
l_count := 0;
select count(1) into l_count
from mtl_item_templates
where template_name = c_rec.template_name;
IF l_count = 0 then
l_err_flag := 1;
l_err_msg := l_err_msg || '**Invalid Template name ';
END IF;
--Validate the Organization Code
l_count := 0;
select count(1) into l_count from org_organization_definitions
where organization_code = c_rec.organization_code;
if l_count = 0 then
l_err_flag := 1;
l_err_msg := l_err_msg || '**Invalid Organization code ';
end if;
-- check the valid status to update the row status
if l_err_flag = 1 then
update CS_item_load_stg
set valid_status ='E'
,err_msg = l_err_msg
where
rowid = c_rec.row_id;
else
update CS_item_load_stg
set valid_status ='V'
where

69
rowid = c_rec.row_id;
end if;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END LOOP;
dbms_output.put_line(' Validatin completed successfully ');
END validate_staging;
--PROCEDURE
PROCEDURE move_to_iface
AS
i number;
BEGIN
insert into mtl_system_items_interface
(
segment1
,description
,template_name
,organization_code
,process_flag -- hard coding to 1
,transaction_type -- hard code to CREATE
,set_process_id
)
SELECT
segment1
,description
,template_name
,organization_code
,1
,'CREATE'
,1
from CS_item_load_stg
where valid_status ='V';
dbms_output.put_line(' Total Record(s) inserted ' || sql%rowcount);
exception
when others then
dbms_output.put_line( ' Error => '|| sqlerrm);
END move_to_iface;
END CS_item_load_pkg;

70
Item Categories:
1. Convert the data from flat file to staging table.
2. Validate the data which has been loaded into staging.
_ Validate the ITEM_NUMBER whether it exists or not from
MTL_SYSTEM_ITEMS_B table.
_ Validate the organization from ORG_ORGANIZATION_DEFINITIONS
_ Validate the CATEGORY_SET from MTL_CATEGORY_SETS_B and
MTL_CATEGORY_SET_TL.
_ Validate the CATEGORY_CODE from MTL_ITEM_CATEGORIES_INTERFACE
table.
3. As we are working with open interface we have to run this import
ITEM_CATEGORY_ASSIGNMENTS program to import assignment data from
interface table (MTL_ITEM_CATEGORIES).
Transaction Types:
Create: Create used to create new item category assignment.
Delete: Delete used to delete the default category assignments.
Update: This is a new transaction type come up with the 11.5.10 version of oracle
applications. Instead of delete or create the new assignments we can update default
category value or category code.
Note: The validation process for the item categories script was given below as the step by step
process.
Customer Items: Customer items are the items how the customer will identify our
items.
Items Relationship: Item relationship which is used to maintain some relationships
with item, with relationship types, with related substitute and service.

71
Conversion Script for Item Categories:
/*-------------------------------------------------------------------------------------------------
BIAS TECHNOLOGIES INC, INDIA
File Name : CS_create_structures.sql
Author : PHANI BHUSHAN REDDY
Created Date : 03-june-06
Version : 1
Purpose :
Used to create the table structures.
Version Modified by Modified Date Purpose
---------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------*/
DROP TABLE CS_ITEM_CAT_LOAD_TEMP;
CREATE TABLE CS_ITEM_CAT_LOAD_TEMP
(
ITEM_NUMBER VARCHAR2(30)
,ORG_CODE VARCHAR2(10)
,CAT_SET_NAME VARCHAR2(30)
,CAT_CODE VARCHAR2(20)
);
DROP TABLE CS_ITEM_CAT_LOAD_STG;
CREATE TABLE CS_ITEM_CAT_LOAD_STG
AS
SELECT * FROM MTL_ITEM_CATEGORIES_INTERFACE
WHERE 1=0 ;
ALTER TABLE CS_ITEM_CAT_LOAD_STG
ADD
( VALID_STATUS VARCHAR2(10)
, ERR_MSG VARCHAR2(2000)
);

72
/*-------------------------------------------------------------------------------------------------
BIAS TECHNOLOGIES INC, INDIA
File Name : CS_sqlldr.ctl
Author : PHANI BHUSHAN REDDY
Created Date : 03-june-06
Version : 1
Purpose :
Used to create the table structures.
Version Modified by Modified Date Purpose
---------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------*/
LOAD DATA
INFILE ‘C:\ITEM_CAT_DATA.CSV'
INSERT
INTO TABLE CS_ITEM_CAT_LOAD_TEMP
FIELDS TERMINATED BY ','
(
ITEM_NUMBER
,ORG_CODE
,CAT_SET_NAME
,CAT_CODE
)
Note: This is the Control file using the SQLLDR we execute the control file to move the data from
flat file to staging table.

73
/*-------------------------------------------------------------------------------------------------
BIAS TECHNOLOGIES INC, INDIA
File Name : CS_ITEM_CAT_LOAD_PKG.pks
Author : PHANI BHUSHAN REDDY
Created Date : 03-june-06
Version : 1
Purpose :
Package Specification
-------------------------------------------------------------------------------------------------*/
CREATE OR REPLACE PACKAGE CS_ITEM_CAT_LOAD_PKG
AS
-- Procedure to transfer the data from Temp table to Staging table
PROCEDURE move_to_staging;
-- Procedure to validate the data
PROCEDURE validate_data;
-- Procedure to Transfer the validated data from staging to interface table
PROCEDURE move_to_iface;
END CS_ITEM_CAT_LOAD_PKG;
--Package Body
CREATE OR REPLACE PACKAGE BODY CS_ITEM_CAT_LOAD_PKG
AS
-- Procedure to transfer the data from Temp table to Staging table
PROCEDURE move_to_staging
IS
BEGIN
insert into CS_item_cat_load_stg
(ITEM_NUMBER -- ITEM NUMBER
,ORGANIZATION_CODE -- ORG_CODE
,CATEGORY_SET_NAME -- CAT_SET_NAME
,CATEGORY_NAME -- CAT_CODE
,SET_PROCESS_ID -- HARDCODE TO 1
)
SELECT
ITEM_NUMBER
,ORG_CODE
,CAT_SET_NAME
,CAT_CODE
,1
FROM CS_ITEM_CAT_LOAD_TEMP;
DBMS_OUTPUT.PUT_LINE(' Total Number of Record(s) Inserted '
||sql%rowcount);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(' ERROR => '|| SQLERRM);
END move_to_staging;

74
--Procedure to Validate the Data
PROCEDURE validate_data
IS
l_err_flag number ;
l_err_msg varchar2(2000);
l_count number;
Cursor c is select a.rowid row_id
,a.item_number
,a.category_set_name
,a.category_name
,a.organization_code
from
CS_item_cat_load_stg a
where
nvl(valid_status,'T') in ('T','E');
BEGIN
FOR c_rec in C
loop
l_err_flag := 0;
l_err_msg := NULL;
l_count := 0;
-- Validate the Item Number
select count(1) into l_count
from mtl_system_items_b msi,
ORG_ORGANIZATION_DEFINITIONS ood
where
msi.organization_id = ood.organization_id
and ood.organization_code = c_rec.organization_code
and msi.segment1 = c_rec.item_number;
if l_count = 0 then
l_err_flag := 1;
l_err_msg := ' ** Item not existed ';
end if;
-- Validate the category set name
l_count := 0;
select count(1) into l_count
from mtl_category_sets
where category_set_name = c_rec.category_set_name;
if l_count = 0 then
l_err_flag := 1;
l_err_msg := l_err_msg || ' ** Category Set name is not valid ';
end if;
--Validate the Category Code
l_count := 0;
select count(1) into l_count
from mtl_categories mc,
mtl_category_sets mcs
where
mcs.category_set_name = c_rec.category_set_name
and mc.segment1 = c_rec.category_name;
if l_count = 0 then

75
l_err_flag := 1;
l_err_msg := l_err_msg || ' ** Category name is not valid ';
end if;
if l_err_flag = 1 then
update CS_item_cat_load_stg
set err_msg = l_err_msg,
valid_status = 'E'
where rowid = c_rec.row_id;
else
update CS_item_cat_load_stg
set valid_status ='V'
where rowid = c_rec.row_id;
end if;
end loop;
DBMS_OUTPUT.PUT_LINE(' Total Number of Record(s) Validated '
||sql%rowcount);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(' Error => '|| sqlerrm);
END validate_data;
-- Procedure to Transfer the validated data from staging to interface table
PROCEDURE move_to_iface
is
begin
insert into mtl_item_categories_interface
(
item_number
,organization_code
,category_set_name
,category_name
,set_process_id
,process_flag
,transaction_type
)
select
item_number
,organization_code
,category_set_name
,category_name
,1
,1
,'CREATE'
from
CS_item_cat_load_stg
where valid_status ='V';
DBMS_OUTPUT.PUT_LINE(' Total Record(s) inserted '|| Sql%rowcount);
exception
when others then
dbms_output.put_line(' error => ' || sqlerrm);
end move_to_iface;
END CS_ITEM_CAT_LOAD_PKG;

76
Item Attachments:
Flat file contains the data like item_number, organization_id, document_category,
datatype, sequence, attachment.
Validations:
_ Validate the Item is exists with respective organization or not.
_ Validate the document category from FND_DOCUMENT_CATEGORIES_TL.
_ Validate the datatype from FND_DOCUMENT_DATATYPES.
_ Validate the Sequence which should not be NULL
As there are no interface tables we will load the validated data to the base tables
directly. For that we have to write the procedure.

77
/*-------------------------------------------------------------------------------------------------
BIAS TECHNOLOGIES INC, INDIA
File Name : BIAS_ITEM_ATTCH.pks
Author : PHANI BHUSHAN REDDY
Created Date : 03-june-06
Version : 1
Purpose :
Package Specification and Package Body.
-------------------------------------------------------------------------------------------------*/
-- PACKAGE SPECIFICATIONS: BIAS_ITEM_ATTCH
CREATE OR REPLACE PACKAGE BIAS_ITEM_ATTCH AS
PROCEDURE MOVE_TO_STAGING;
PROCEDURE VALIDATE_STAGING;
PROCEDURE LOAD_TO_BASE;
END BIAS_ITEM_ATTCH;
-- PACKAGE BODY: BIAS_ITEM_ATTCH
CREATE OR REPLACE PACKAGE BODY BIAS_ITEM_ATTCH AS
--PROCEDURE MOVE_TO_STAGING
PROCEDURE MOVE_TO_STAGING
AS
BEGIN
INSERT INTO BIAS_ITEM_ATTCH_STG
(
ITEM_NUMBER,
ORGANIZATION,
DOCUMENT_CATEGORY,
DATA_TYPE,
ATTACHMENT
)
SELECT
ITEM_NUMBER,
ORGANIZATION,
DOCUMENT_CATEGORY,
DATA_TYPE,
ATTACHMENT
FROM
BIAS_ITEM_ATTCH_TEMP A
WHERE
NOT EXISTS(
SELECT 1 FROM BIAS_ITEM_ATTCH_STG B
WHERE
A.ITEM_NUMBER = B.ITEM_NUMBER AND
A.ORGANIZATION = B.ORGANIZATION);

78
DBMS_OUTPUT.PUT_LINE('ROW(S) INSERTED'|| SQL%ROWCOUNT);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERROR: '|| SQLERRM);
END MOVE_TO_STAGING;
-- PROCEDURE TO VALIDATE_STAGING
PROCEDURE VALIDATE_STAGING
AS
L_VALID_ROW NUMBER;
L_ERR_MSG VARCHAR2(1000);
L_COUNT NUMBER;
L_ITEM_ID NUMBER;
L_ORG_ID NUMBER;
L_CATEGORY_ID NUMBER;
L_DATATYPE_ID NUMBER;
CURSOR C1 IS SELECT A.ROWID ROW_ID, A.* FROM
BIAS_ITEM_ATTCH_STG A WHERE NVL(A.STATUS,'T')='T';
BEGIN
FOR C IN C1
LOOP
L_VALID_ROW:=0;
L_ERR_MSG:=NULL;
-- VALIDATE ITEM TO ORGANIZATION
BEGIN
SELECT A.INVENTORY_ITEM_ID, B.ORGANIZATION_ID
INTO L_ITEM_ID, L_ORG_ID
FROM MTL_SYSTEM_ITEMS_B A,
ORG_ORGANIZATION_DEFINITIONS B
WHERE
A.ORGANIZATION_ID =B.ORGANIZATION_ID AND
B.SEGMENT1 = C.ITEM_NUMBER AND
B.ORGANIZATION_CODE = C.ORGANIZATION;
EXCEPTION
WHEN OTHERS THEN
L_VALID_ROW:=1;
L_ERR_MSG:='INVALID ITEM NUMBER TO ORGANIZATION';
END;
---VALIDATE DOCUMENT_CATEGORY
BEGIN
SELECT CATEGORY_ID INTO L_CATEGORY_ID
FROM FND_DOCUMENT_CATEGORIES_TL
WHERE USER_NAME = C.DOCUMENT_CATEGORY;
EXCEPTION
WHEN OTHERS THEN
L_VALID_ROW:=1;
L_ERR_MSG:=L_ERR_MSG || ' INVALID DOCUMENT_CATEGORY';
END;

79
--VALIDATE DATATYPE
BEGIN
SELECT DATATYPE_ID INTO L_DATATYPE_ID
FROM FND_DOCUMENT_DATATYPES
WHERE USER_NAME=C.DATA_TYPE;
EXCEPTION
WHEN OTHERS THEN
L_VALID_ROW:=1;
L_ERR_MSG:=L_ERR_MSG || ' INVALID DATA_TYPE';
END;
IF L_VALID_ROW=1 THEN
UPDATE BIAS_ITEM_ATTCH_STG
SET STATUS='E',
ERR_MSG=L_ERR_MSG
WHERE ROWID=C.ROW_ID;
ELSE
UPDATE BIAS_ITEM_ATTCH_STG
SET STATUS='V',
CATEGORY_ID=L_CATEGORY_ID,
DATA_TYPE_ID=L_DATATYPE_ID,
ITEM_ID=L_ITEM_ID,
ORGANIZATION_ID=L_ORG_ID,
WHERE ROWID=C.ROW_ID;
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERROR: ' || SQLERRM);
END VALIDATE_STAGING;
---PROCEDURE LOAD_TO_BASE
PROCEDURE LOAD_TO_BASE(P_ITEM_NUMBER IN VARCAHR2 DEFAULT NULL)
AS
CURSOR C1 IS SELECT A.ROWID ROW_ID, A.* FROM BIAS_ITEM_ATTCH_STG A
WHERE STATUS='V' AND
A.ITEM_NUMBER=NVL(P_ITEM_NUMBER,A.ITEM_NUMBER);
L_DOC_ID NUMBER;
L_ATT_DOC_ID NUMBER;
L_MEDIA_ID NUMBER;
L_ERR_MSG VARCHAR2(255);
BEGIN
FOR C IN C1
LOOP
BEGIN
SELECT FND_DOCUMENTS_S.NEXTVAL INTO L_DOC_ID FROM DUAL;
INSERT INTO FND_DOCUMENTS
(
DOCUMENT_ID,
DATATYPE_ID,
CATEGORY_ID,
CREATION_DATE,
CREATED_BY,
LAST_UPDATED_DATE,
LAST_UPDATED_BY,
SECURITY_TYPE,

80
PUBLISH_FLAG,
USAGE_TYPE
)
VALUES
(
L_DOC_ID,
L_DATATYPE_ID,
L_CATEGORY_ID,
SYSDATE,
1007919,
SYSDATE,
1007919,
1,
'Y',
'O'
);
SELECT FND_DOCUMENTS_SHORT_TEXT_S.NEXTVAL INTO L_MEDIA_ID FROM DUAL;
INSERT INTO FND_DOCUMENTS_TL
(
DOCUMENT_ID,
CREATION_DATE,
LAST_UPDATE_DATE,
LAST_UPDATED_BY,
LAST_UPDATE_LOGIN,
LANGUAGE,
SOURCE_LANG,
MEDIA_ID
)
VALUES
(
L_DOC_ID,
SYSDATE,
-1,
SYSDATE,
-1,
-1,
'US',
'US',
L_MEDIA_ID
);
SELECT FND_ATTACHED_DOCUMENTS_S.NEXTVAL INTO L_ATT_DOC_ID FROM DUAL;
INSERT INTO FND_ATTACHED_DOCUMENTS
(
ATTACHED_DOCUMENT_ID,
DOCUMENT_ID,
CREATION_DATE,
CREATED_BY,
LAST_UPDATE_DATE,
LAST_UPDATED_BY,
LAST_UPDATE_LOGIN,
SEQ_NUM,
ENTITY_NAME,
AUTOMATICALLY_ADDED_FLAG,
PK1_VALUE,
PK2_VALUE
)
VALUES

81
(
L_ATT_DOC_ID,
L_DOC_ID,
SYSDATE,
-1,
SYSDATE,
-1,
-1,
2,
'MTL_SYSTEM_ITEMS',
'N',
C.ORGANIZATION_ID,
C.ITEM_ID
);
INSERT INTO FND_DOCUMENTS_SHORT_TEXT
(
MEDIA_ID,
SHORT_TEXT
)
VALUES
(
L_MEDIA_ID,
C.ATTACHEMENT
);
COMMIT;
UPDATE BIAS_ITEM_ATTCH_STG
SET STATUS='P'
WHERE
ROWID=C.ROW_ID;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERROR: ' || SQLERRM);
ROLLBACK;
L_ERR_MSG:='ERROR: '||SQLERRM;
UPDATE BIAS_ITEM_ATTCH_STG
SET STATUS='E',
ERR_MSG=L_ERR_MSG
WHERE
ROWID=C.ROW_ID;
END;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('ERROR: ' || SQLERRM);
END LOAD_TO_BASE;
END BIAS_ITEM_ATTCH;

82
Some Important Tables in Different Modules: Inventory (INV)
MTL_SYSTEM_ITEMS_B MTL_CATEGORY_SETS_B
MTL_ITEM_CATEGORIES MTL_SECONDARY_LOCATORS
MTL_RELATED_ITEMS MTL_ONHAND_QUANTITIES
CST_ITEM_COST MTL_PARAMETERS
Order Management (OM):
OE_ORDER_HEADERS_ALL OE_ORDER_LINES_ALL
OE_ORDER_HOLDS_ALL OE_TRANSACTION_TYPES_TL
WSH_DELEVERY_DETAILS WSH_NEW_DELEVERIES
WSH_DELEVERY_ASSIGNMENTS
Account Receivables (AR):
RA_CUSTOMER_TRX_ALL RA_CUSTOMER_TRX_LINES_ALL
RA_CUSTOMER_TRX_TYPE_ALL RA_CUSTOMER_TRX_LINE_GL_DIST_ALL
RA_CUSTOMERS RA_TERMS
HZ_PARTIES HZ_PARTY_SITES
HZ_CUST_ACCOUNTS HZ_CUST_ACCOUNT_SITES_ALL
HZ_LOCATIONS HZ_CUST_SITE_USES_ALL
HZ_CONTACT_POINTS HZ_CUST_CONTACT_POINTS
Quality Pricing (QP):
QP_LIST_HEADERS_ALL QP_LIST_LINES
QP_PRICING_ATTRIBUTES QP_QUALIFIERS
QP_PRICING_PHASES
Purchase Order (PO):
PO_REQUISITION_HEADERS_ALL PO_REQUISITION_LINES_ALL
PO_REQ_DISTRIBUTIONS_ALL PO_HEADERS_ALL
PO_LINES_ALL PO_DISTRIBUTIONS_ALL
PO_VENDORS PO_VENDOR_SITES_ALL
PO_VENDOR_CONTACTS PER_ALL_PEOPLE_F
General Ledger(GL):
GL_PERIODS GL_JE_BATCHES
GL_INTERFACE GL_JESOURCES
GL_JE_HEADERS GL_SET_OF_BOOKS
GL_JE_LINES
Note: These are some of the tables we use regularly in the modules and there are many more to
view them all according to the module vise. Apply this query in SQL or TOAD.
SQL> SELECT TABLE_NAME FROM ALL_TABLES WHERE TABLE_NAME LIKE ‘OE%ALL’
_ This query retrieves the tables from the OM module start with OE If we want to retrieve from
the other modules apply the same query changing the where condition.

83

84

85

86

87

88
Purchase Order Flow: Whenever employee requires materials he will create the
requisition. After requisition is approval RFQ(Request For Quotation) will be created. This
RFQ will be sent to multiple suppliers. After that we will receiving the quotation from
supplier then company will do the quote analysis, one quotation will be selected as
purchase order will send this PO to the supplier, as per PO terms & conditions supplier
will supply the material while receiving the material we will create the document called
the receipt. After the creation of receipt AP & Inventory Interfaces will be affected, which
are going to update both AP & Inventory Modules. The given below is the representation
of the PO Flow.
Requisition: We have two types of requisitions
_ Internal and
_ Purchase
Internal Requisition: Internal Requisition will be created whenever we are receiving
the material from another organization in the company.
Purchase Requisition: Purchase Requisition will be created whenever company is
purchasing material from suppliers.
Requisition information will be entered in 3 Levels
1. Headers
2. Lines and
3. Distributions
Creating Requisition: The navigation for the Requisition screen is given below.
1. Go With Purchasing, Vision Operations(USA) Responsibility.
2. Go with Requisitions _ Requisitions Navigation.
3. Then we will get the screen as given below. Enter the fields item, quantity that
represent how much you required to purchase and what you want to purchase.
4. This is one-to-many Relationships, after completion of the document, select
Approve Button, then requisition will be sent for the approval.

89
Catalog Screen: By using this Catalog Button we can attach the predefined Requisition
templates from the requisition template list.
Select Catalog Button, select requisition template and Select Find Button and list
of items which are required and click the button select.

90
Distributions: When ever we click on the Distributions button on the Requisitions
window then we will get this distributions window
Approval Screen: When we click on the Approve button on the Requisition Screen we
will get this window. Here we will check the Submit for Approval check box then click on
Ok button.
5. After Completion of the approval we will select form called Requisition
Summary.
Then we will get the alert box as our requisition has been submitted. Then click on ok.

91
Requisition Summary: To Check whether the requisition is approved or not we will go
with the navigation Requisitions _ Requisitions Summary then we will get the
screen given below enter the requisition number and press find button.
Requisition Headers Summary: Whenever we press the find button we will get the
window given below. Here our current requisitions number 5646 Approval status is
approved.
Note: Once the Requisition is approved then only we will go for RFQ.

92
If you want to cancel the requisition, then select Tools from menubar the navigation is
Tools _ Control then select the option called Cancel Requisition and mentions the
reason for canceling.
Creating Requisition Number Manually:
Go With navigation Set up _ Organizations _ Purchasing Options and go to
Numbering Tab

93
The Tables that effect Requisitions are:
1. Header level Information -> PO_REQUISITION_HEADERS_ALL
Select * from PO_REQUISITION_HEADERS_ALL where segment1=’5646’
--requisition_header_id=56635.
Here segment1 is the Requisition Number. And REQUISITION_HEADER_ID.
2. Line Level Information-> PO_REQUISITION_LINES_ALL
Select * from PO_REQUISITION_LINES_ALL where
requisition_header_id=56635;
--requisition_line_id = 60546 60547
3. Distribution Level Information -> PO_REQ_DISTRIBUTIONS_ALL
select * from PO_REQ_DISTRIBUTIONS_ALL where requisition_line_id
in(60546,60547);
RFQ(Request For Quotation): Once the requisition has approved RFQ will be created
and this RFQ will be sent to suppliers if suppliers are agreed with the terms & conditions,
which we have specified in RFQ document, they will send the quotations to the company,
we have 3 types of RFQ’s
_ Bid
_ Catalog
_ Standard
The navigation for the RFQ is RFQ’s and Quotations _ RFQ’s then we will get the RFQ
Screen as shown below.
Bid: BID RFQ will be created for the large & expensive items where you will not find any
discount means no price breaks.
Catalog: Catalog RFQ will be created for the items, which we are purchasing frequently
where we can get the price breaks and terms & conditions.
Standard: This will be created for the items, which we will purchase only once not very
often. If we are sending Bid RFQ, to the suppliers then we will receive the bid quotation
from the suppliers for the catalog RFQ’s we will be receiving quotations and for standard
RFQ, standard quotation will be sent by the suppliers.
RFQ information will be entered at 3 levels
_ Headers
_ Lines &
_ Shipments
Headers: In Header level we will specify RFQ number, type & ship_to, bill_to location
Lines: In Line Level we will specify the items.
Shipment: At Shipment level we will specify discount details.

94
RFQ(Request For Quotation):
The table that effect this RFQ are
1. HEADER LEVEL: PO_HEADERS_ALL
Select * from PO_HEADERS_ALL where segment1=’312’
and type_lookup_code=’RFQ’ -- Po_header_id=32560
2. LINE LEVEL : PO_LINES_ALL
Select * from PO_LINES_ALL where po_header_id=32560
--po_line_id=37768 37769
3. SHIPMENT LEVEL (PRICE BREAKS): PO_LINE_LOCATIONS_ALL
Select * from PO_LINE_LOCATIONS_ALL where po_line_id=37768
Currency: When we click on the Currency button in RFQ’s window we will get the
window.
The table for Currency Screen: FND_CURRENCIES

95
Terms and Conditions: When we click on the Terms button in RFQ’s window we will get
the window.
The table that affects this is AP_TERMS.
Price Breaks: When we click on the Price Breaks button in RFQ’s window we will get the
window.
The table affects this PO_LINE_LOCATIONS.

96
Suppliers: When we click on the Suppliers button in RFQ’s window we will get the RFQ
Suppliers window.
THE TABLE AFFECT THIS SCREEN IS PO_VENDORS AND PO_VENDOR_SITES_ALL
Auto Create: Through this auto create option we can directly create either RFQ’s or
Purchase orders from the approved requisition. The navigation for auto create is in the
Purchasing Vision Operations responsibility Auto Create will be there directly. Whenever
we click on the Auto create then we will get the screen given below.

97
Enter the requisition number, which we created earlier and go with the find button. Then
we will get the screen given below.
PURCHASE ORDER:
After receiving the quotations from supplier then we will create the
purchase order. We will approve that purchase order will send po to the supplier. As per
the po document terms and conditions supplier will supply the material.
We have 4 types of Purchase Order
1. Standard PO
2. Planned PO
3. Blanket Purchase Agreement
4. Contract Purchase Agreement
Purchase Order Type Summary:
Standard PO Planned PO Blanket PA Contract PA
1. Terms & Conditions
Known
Yes Yes Yes Yes
2. Goods or Services
Known
Yes Yes Yes No
3. Pricing Known Yes Yes May be No
4. Quantity Known Yes Yes No No
5. Account Distributions
Known
Yes Yes No No
6. Delivery Schedule
Known
Yes May be No No
7. Can be Encumbered Yes Yes No No
8. Can encumber releases N/A Yes Yes N/A

98
Standard PO: For all the Purchase Orders we will use Standard PO as the PO type
where we will specify terms & conditions items, price, quantity, delivery Schedule and so
on.
Planned PO: if delivery schedule is not confirmed then we will create planned PO
Blanket Agreement: Supplier and Buyer will have the agreements where we will find
terms & conditions and items price may or may not. Whenever buyer is required
material he will release the order as per that supplier will supply material.
Contract PA: we will have only terms and conditions buyer can purchase any item from
the supplier.
Purchase order Information will be entered at 4 Levels:
1. Header level
2. Line Level
3. Shipments
4. Distributions
Purchase Order:
1. Go with Purchasing, Vision Operations(USA) Responsibility.
2. Go with Purchase Orders _ Purchase Orders.
The table that affects this screen is
1. HEADER LEVEL: PO_HEADERS_ALL
Select * from PO_HEADERS_ALL where segment1=4465
and type_lookup_code=’Standard’ -- po_header_id=32588

99
2. LINE LEVE: PO_LINES_ALL
Select * from PO_LINES_ALL where po_header_id=32588 –- po_line_id=37797
SHIPMENTS: When we click on the Shipments button in Purchase order window we will
get this Shipments window.
Here in the Shipments window we will click on more tab then we are going to select
the match approval whether 2-Way or 3-Way or 4-Way.
3. SHIPMENT LEVEL: PO_LINE_LOCATIONS_ALL
Select * from po_line_locations_all where po_line_id=37797
--line_location_id=72173
RECEIVING CONTROLS: When we click on the Receiving Controls button in Shipment
window we will get this window.

100
DISTRIBUTIONS: When we click on the Distributions button in Shipment window we
will get this window.
4. DISTRIBUTIONS LELVEL: PO_DISTRIBUTIONS_ALL
Select * from PO_DISTRIBUTIONS_ALL where line_location_id=72174
--po_distribution_id
SHIP TO BILL TO: HR_LOCATIONS
APPROVING THE PO: Then click on the Approve Button on the PO screen then PO
will be submitted for Approval.

101
After approving the PO, the Status will be changed to Approved.
To view whether the purchase order is approved or not we will go with the navigation
Purchase Orders _ Purchase Order Summary then we will get the screen given
below.
Enter the PO number and Select Find Button.

102
After entering the Po number then Click on the find button we will get the Purchase
order Headers window.
Go for Lines Button – it will display the line level details i.e items, price, quantity so on.
If you want to cancel PO or if you want to keep the PO on hold. Then go with menubar
the navigation is Tools _ Control you will get the following screen.

103
RECEIPTS: It is one of the purchasing document will be created while receiving the
material from supplier. While creating the purchase order we will have the option called
MATCH APPROVAL like
1. 2-way _PO, Invoice
2. 3-way _PO, Receipt, Invoice
3. 4-way _Po, Receipt, Inspection, Invoice
Receipt Types:
1. Standard Receipt (3 –Way).
2. Direct Delivery (2-Way)
3. Inspection Required (4 – Way)
Navigation:
1. Go with Receiving _ Receipts.
2. Enter the PO number and go with Find Button.

104
Enter the purchase order number and click on find button. Then we will get the receipts
window. Here in this window lines will be appear if we want receive that item(line) then
we have to check the check box which was bolded in the below figure.
If we want to get the headers screen then click on Headers button and drag on to the
lines tab then we will get receipt header window as shown below.

105
Here in this window the receipt date should be in the open period. If you want to know
the open period then go with the navigation
Setup _ Financials _ Accounting _ Open and Close periods.
Tables that affect these Receipts are
1. RCV_SHIPMENT_HEADERS
2. RCV_SHIPMENT_LINES
3. RCV_TRANSACTIONS
AP(ACCOUNT PAYABLES):
In this the company is paying amount to the supplier.
In this we are having 3 steps
1. Creation of Invoice. _ Approve invoice
2. Make the payment.
3. Transfer to GL (General Ledger).

106
Invoice Types:
1. Standard Invoice: For supplier Standard payment will select this standard invoice,
where we are going to create invoice with supplier name and supplier site name.
2. Credit Memo and Debit Memo: Both will come under negative amount.
Credit Memo will be created if supplier is giving discount.
Debit Memo will be created when buyer is going to deduct the amount.
3. Pre Payment Type: whenever suppler required advance payment that time we will
select prepayment amount.
4. PO Default: we will give the PO Number as per the PO amount invoice will be
generated.
5. Quick Match Invoice: we will match the invoice either with PO or invoice with
receipt, as the matching payments will be done.
6. Expense Reports: fro employee expenses we will select the invoice type as
expense reports.
7. Recurring Invoices: for fixed amount and fixed duration, we will select recurring
invoices. Like rent accounts and so on.
8. Mixed Type Invoice: for company miscellaneous expenses we will create mixed
type.
9. With Holding Tax: if suppler is not registered suppler on behalf of suppler,
company will make the income tax to the government.
Navigation:
1. Go with PAYABLES, VISION OPERATIONS(USA) Responsibility.
2. Go with Invoices _ Entry _Invoices.
3. Open the invoice form
Enter Supplier, Supplier num and site invoice amount.

107
4. Go with Distributions Button and Enter distribution details.
The invoice total and distribution total is equal. Then save the form.
5. After that go with Match Button you are matching your invoice with your PO then
go with Purchasing Order.

108
Go with Find Button then we will get the window given below.
Go with Actions Button and check the check box Validate

109
After this the Invoice Status will be change to Validated.
Again Go with Actions Button check the check box Create Accounting

110
It will create accounting transactions. We can see the account transactions from
Go with the menu Tools _ View Accounting.
The tables that affect Invoice are
1.AP_INVOICES_ALL –invoice_number, vendor_id, invoice_id
Distributions:
AP_INVOICE_DISTRIBUTIONS_ALL --invoice_id
Accounting Transactions:
1. AP_AE_HEADERS_ALL
2. AP_AE_LINES_ALL
Distribution Set:
If we want to create distribution transactions by using the system then we will go
for creation of distribution set.
Navigation:
Set up_invoice_distribution sets
1. Enter distribution set name, percentage and account transactions.
2. Attach this distribution set while creating invoice of header level.

111
Invoice Batches:
If we want to create multiple invoices by specifying batch name, then we will
select the option called invoice batches.
Invoice Gateway:
If we are retrieving invoice data from legacy system then we will use this invoice
gateway option.
PAYMENTS:
1. Go with Actions button check the check box Pay in full.
1. Select the payment type either
1. Manual
2. Quick
3. Refund
2. Enter bank accounts, document. System will automatically generate the document
number (check number) and enter the supplier details.
3. Go with Enter/Adjust invoice button
4. Give the invoice number and save the transaction.
5. System will automatically generate payment transactions
6. Select payment overview button where we can find out complete payment details.

112
7. Select the bank button where we can find out bank information and bank accounts.

113
TABLES:
1. AP_INVOICE_PAYMENTS_ALL
2. AP_CHECKS_ALL
3. AP_BANK_ACCOUNTS
4. AP_BANK_BRANCHES
5. AP_CHECK_FORMATS
AP TO GL TRANSFER:
1. Create invoice and approve it
2. Make payments and generate accounting transactions.
3. Go to SRS Window, select concurrent program called Payables Transfer to GL.
Enter invoice date in from date and to date parameters, system will submit the
program internally called Journal Import.
4. Copy the request id of journal import.
5. Go to the responsibility _ General Ledger Super user and go with the navigation
Journals _ Enter , paste the request id of Journal Import in the batch field

114
Select find button it will shows the payment details.
The table’s affects GL are
1. GL_JE_HEADERS
2. GL_JE_LINES
3. GL_JE_BATCHES

No comments:

Post a Comment