Friday, 7 April 2017

Account’s Payables Suppliers Loader Process Details



Account’s Payables Suppliers Loader Process Details

 

 Supplier Conversion :
    -------------------
    Pre-Requisites:
    --------------
      a) Set-up Operating unitsm responsibilities, system profile options.
      b) Setup GL Account codes, ap distribution sets and bank accounts
      c) Setup Financial options and payable options
      d) Setup Supplier Classification , supplier types
      e) setup payment terms, paygroups, freight terms shipping methods
      f) setup tax codes and supplier numbering financial option

  Interface Tables:
  ----------------
      AP_SUPPLIERS_INT
      AP_SUPPLIER_SITES_INT
      AP_SUP_SITE_CONTACT_INT

  Base Tables :
  -----------
      PO_VENDORS \ AP_SUPPLIERS
      PO_VENDOR_SITES_ALL\AP_SUPPLIER_SITES_ALL
      PO_VENDOR_CONTACTS\AP_SUPPLIERS_CONTACTS

  Interface Programs:
  ------------------
       Supplier Open Interface Import
       Supplier Sites Open Interface Import
       Supplier Site Contacts Open Interface Import
 
  Parameters To Be Passesd During the program:
  -------------------------------------------
       Import Options        = All  (all, new, rejected)
       Batch_size            = 1000
       Print exceptions only = No
       Debug Switch          = No
       Trace Switch          = No

  Main Colums in AP_SUPPLIERS_INT:
  -------------------------------
          vendor_interface_id      

vendor_name      

segment1
          pay_group_lookup_code    

set_of_books_id\ledger_id  

organization_type_lookup_code
          vendor_type_lookup_code  

enabled_flag    

biil_to_location_id
          terms_id                

terms_name ,

num_1099,

type_1099

  Main Colums in AP_SUPPLIER_SITES_INT:
  ------------------------------------
          vendor_interface_id        

vendor_site_code  

vendor_site_id
          pay_group_lookup_code      

terms_name        

payment_method_lookup_code
          prepay_code_combination_id

default_pay_site_id

   Main Colums in AP_SUPPLIER_SITE_CONTACTS_INT:
  ---------------------------------------------
          vendor_site_id,

vendor_site_name

  Validation Tables :
  -----------------
          PO_VENDORS   \ AP_SUPPLIERS

FND_LOOKUP_CODES  

HR_LOCATIONS_ALL
          AP_TERMS_ALL AP_TAX_CODES_ALL  
                    GL_CODE_COMBINATIONS

Wednesday, 5 April 2017

Complete PO Interface with details expalanation and script


Complete PO Interface

PRE-REQUISITES FOR PO INTERFACE:

·                     Suppliers,Sites and contact details should be defined.

·                     Organization Structure Should Be defined.

·                     Ship_to and bill_to locations should be defined.

·                     Set of books, items, item categories, UOM(Unit of measures) Defined.

·                     Employee Creation and Buyer Setup should be done.

INTERFACE TABLES:

       PO_HEADERS_INTERFACE

       PO_LINES_INTERFACE

       PO_DISTRIBUTIONS_INTERFACE

   BASE TABLES:

   PO_HEADERS_ALL     

   PO_LINES_ALL     

   PO_LINE_LOCATIONS_ALL       

   PO_DISTRIBUTIONS_ALL

 

   Interface Program:

        Import Standard Interface Program

   PARAMETERS TO BE PASSED DURING THE PROGRAM:

         DEFAULT                  = NULL

  CREATE OR UPDATED ITEMS  = NO

  PO STATUS                = APPPROVED(APPROVED/INCOMPLETE/INITIAL APPROVED)

  BATCH_ID                 = WE CAN GET FROM INTERFACE HEADER TABLE

 

   ERROR TABLE:

         PO_INTERFACE_ERRORS   

 

  MAIN COLUMNS IN PO_HEADERS_INTERFACE:

VENDOR_ID , VENDOR_SITE_ID, VENDOR_CONTACT_ID,

 AGENT_NAME, ORG_ID, DOCUMENT_TYPE_CODE,

CREATION_DATE, CURRENCY_CODE, SHIP_TO_LOCATION, BILL_TO_LOCATION

 

 MAIN COLUMNS IN PO_LINES_INTERFACE:    

LINE_NUM, LINE_TYPE, ITEM_ID   ITEM, ITEM_DESCRIPTION, CATEGORY_ID, QUNATITY, UNIT_OF_MEASURE, UNIT_PRICE, NEED_BY_DATE, PROMISE_DATE,

SHIP_TO_ORGANIZATION_ID, ORG_ID, SHIP_TO_LOCATION_ID


Tables To Be Used For Validation:            

PO_VENDORS,

PO_VENDOR_SITES_ALL,   

PO_VENDOR_CONTACTS,          

PER_ALL_PEOPLE_F,
HR_OPERATING_UNITS,

FND_CURRENCIES,

 HR_LOCATIONS
PO_LINE_TYPES,

MTL_SYSTEM_ITEMS_B,

MTL_CATEGORIES,

MTL_UNITS_OF_MEASURE,

ORG_ORGANIZATION_DEFINITIONS


CONTROL FILE FOR HEADERS:

 

options(skip=2)

load data

errors=5

infile  '/apps/aptest/visappl/xxcus/11.5.0/bin/po_head.csv'

truncate into table po_headers_temp

fields terminated by ',' optionally enclosed by '"'

trailing nullcols

(

INTERFACE_SOURCE_CODE  ,

PROCESS_CODE                    ,

ACTION                                      ,

DOCUMENT_TYPE_CODE  ,

DOCUMENT_SUBTYPE  ,

DOCUMENT_NUM                    ,

AGENT_NAME                    ,

VENDOR_NAME                    ,

VENDOR_SITE_CODE                "REPLACE(:VENDOR_SITE_CODE,CHR(13),'')"

)

 

FOR LINES:-

options(skip=2)

load data

infile '/apps/aptest/visappl/xxcus/11.5.0/bin/po_line.csv'

truncate into table po_lines_temp

fields terminated by ',' optionally enclosed by '"'

trailing nullcols

(

ACTION ,

LINE_NUM,

SHIPMENT_NUM ,

SHIPMENT_TYPE ,

DOCUMENT_NUM ,

LINE_TYPE ,

ITEM                  ,

CATEGORY ,

ITEM_DESCRIPTION,

QUANTITY ,

UNIT_PRICE ,

SHIP_TO_ORGANIZATION_CODE ,

NEED_BY_DATE

)

FOR DISTRIBUTIONS:-

options(skip=1)

load data

infile '/apps/aptest/visappl/xxcus/11.5.0/bin/po_dist.csv'

truncate into table po_distributions_temp

fields terminated by ',' optionally enclosed by '"'

trailing nullcols

(

QUANTITY_ORDERED ,

QUANTITY_DELIVERED ,

QUANTITY_BILLED ,

QUANTITY_CANCELLED ,

DISTRIBUTION_NUM ,

LINE_NUM ,

SHIPMENT_NUM ,

DOCUMENT_NUM ,

DESTINATION_TYPE,

DESTINATION_ORGANIZATION ,

CHARGE_ACCOUNT                     "REPLACE(:CHARGE_ACCOUNT,CHR(13),'')"

)

 

 

Common Error Table creation and Error Procedure:

create table po.all_common_err_tab

(interface_name     varchar2(100),

 table_name         varchar2(100),

 column_name         varchar2(100),

 error_message      varchar2(1000),

 created_by         varchar2(100),

 creation_date     date,

 last_updated_by    varchar2(100),

 last_update_date   date,

 request_id      number(10)

 );

 

create synonym all_common_err_tab for po.all_common_err_tab

 

create or replace procedure ALL_COMMON_ERROR_PROC

(

p_interface_name    varchar2,

p_table_name       varchar2,

p_column_name      varchar2,

p_error_message    varchar2

)

is

begin

insert into all_common_err_tab

values

(

p_interface_name,

p_table_name,

p_column_name,

p_error_message,

sysdate,

fnd_profile.value('USER_ID'),

SYSDATE,

FND_PROFILE.VALUE('USER_ID'),

FND_PROFILE.VALUE('CONC_REQUEST_ID')

);

 

 TOTAL PACKAGE BODY FOR PO INTERFACE WITH VALIDATIONS:

 

CREATE OR REPLACE package body po_int

is

g_request_id number:=fnd_profile.value('CONC_REQUEST_ID');

g_org_id number:=fnd_profile.value('ORG_ID');

procedure dis_log(p_msg in varchar2)

is

begin

  fnd_file.put_line(fnd_file.log,p_msg);

end;

procedure details is

v_tot_rec   number(10);

v_succ_rec  number(10);

v_err_rec   number(10);

begin

select count(*) into v_succ_rec from po_headers_temp where process_flag='S';

select count(*) into v_err_rec from po_headers_temp where process_flag='E';

v_tot_rec:=v_succ_rec+v_err_rec;

fnd_file.put_line(fnd_file.OUTPUT,'total records:'||v_tot_rec);

fnd_file.put_line(fnd_file.OUTPUT,'total sucess record:'||v_succ_rec);

fnd_file.put_line(fnd_file.OUTPUT,'total error records:'||v_err_rec);

end;

procedure arch is

begin

insert into po_headers_arch select *from po_headers_temp;

insert into po_lines_arch  select *from po_lines_temp;

insert into po_distributions_arch select *from po_distributions_temp;

 

delete from po_headers_temp;

delete from po_lines_temp;

delete from po_distributions_temp;

commit;

end;

 

procedure main(x_errbuf out varchar2,x_retcode out varchar2)

is

cursor cur_hea is select * from po_headers_temp;

 

cursor cur_lin(p_doc_num varchar2) is

select *from po_lines_temp

where document_num=p_doc_num;

 

cursor cur_dis(p_doc_num varchar2,p_line_num varchar2,p_shipment_num varchar2)

is select *from po_distributions_temp

where     document_num=p_doc_num

and       line_num=p_line_num

and       shipment_num=p_shipment_num;

 

v_rec_hea      po_headers_interface%rowtype;

v_rec_lin      po_lines_interface%rowtype;

v_rec_dis      po_distributions_interface%rowtype;

 

v_process_flag  varchar2(10);

v_error_message   varchar2(100);

v_tot_err_msg    varchar2(1000);

v_head  varchar2(100):='po_headers_temp';

v_line  varchar2(100):='po_lines_temp';

v_dist  varchar2(100):='po_distributions_temp';

v_conc_name     varchar2(100);

v_count number(10);

po_num_exists exception;

qty_null exception;

begin

 dis_log('before entering into header loop1');

 

select fcp.USER_CONCURRENT_PROGRAM_NAME INTO v_conc_name

from fnd_concurrent_programs_vl  fcp,

     fnd_concurrent_requests  fcr

where fcp.CONCURRENT_PROGRAM_ID=fcr.CONCURRENT_PROGRAM_ID

and   fcr.REQUEST_ID=g_request_id;

 

dis_log('before entering into header loop');

 

for rec_hea in cur_hea loop

begin

v_process_flag:='S';

v_error_message:=null;

v_tot_err_msg:=null;

 

dis_log('after entering into header loop');

 

 select PO_HEADERS_INTERFACE_S.nextval into v_rec_hea.INTERFACE_HEADER_ID from dual;

 

                --document type code validation

                     begin

                       select plc.LOOKUP_CODE into v_rec_hea.DOCUMENT_TYPE_CODE

                              from po_lookup_codes  plc,

                                   po_lookup_codes  plt

                             where plc.lookup_type='PO TYPE'

                             and   plt.lookup_type='BB8 PO TYPE MAPPING'

                             and   plc.DISPLAYED_FIELD=plt.DESCRIPTION

                             and   plt.DISPLAYED_FIELD=rec_hea.DOCUMENT_TYPE_CODE;

                     exception

                     when no_data_found then

                   

                     v_process_flag:='E';

                     v_error_message:='no such document type exists with:'||rec_hea.DOCUMENT_TYPE_CODE;

                     v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                     ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                           p_table_name=>v_head,

                                           p_column_name=>'DOCUMENT TYPE CODE',

                                           p_error_message=>v_error_message

                                           );

                     when others then

                     v_process_flag:='E';

                     v_error_message:='exception at document type code:'||rec_hea.DOCUMENT_TYPE_CODE;

                     v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                     ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                           p_table_name=>v_head,

                                           p_column_name=>'DOCUMENT TYPE CODE',

                                           p_error_message=>v_error_message

                                           );

                     end;

                   

              

               --vendor name validation

                   begin

                   select vendor_id into v_rec_hea.vendor_id

                   from po_vendors

                   where vendor_name=rec_hea.vendor_name;

                   exception

                     when no_data_found then

                     v_process_flag:='E';

                     v_error_message:='no such vendor name exists with:'||rec_hea.vendor_name;

                     v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                     ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                           p_table_name=>v_head,

                                           p_column_name=>'vendor name',

                                           p_error_message=>v_error_message

                                           );

                     when others then

                     v_process_flag:='E';

                     v_error_message:='exception at document type code:'||rec_hea.DOCUMENT_TYPE_CODE;

                     v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                     ALL_COMMON_ERROR_PROC(p_interface_name=>'h',--v_conc_name,

                                           p_table_name=>v_head,

                                           p_column_name=>'vendor name',

                                           p_error_message=>v_error_message

                                           );

                   end;  

                 

              --vendor site validation

              begin

                select vendor_site_id into v_rec_hea.vendor_site_id

                  from po_vendor_sites_all

                 where vendor_site_code=rec_hea.vendor_site_code

                 and   vendor_id=v_rec_hea.vendor_id

                 and    org_id=g_org_id;

               exception

                     when no_data_found then

                     v_process_flag:='E';

                     v_error_message:='no such vendor site exists with:'||rec_hea.vendor_site_code;

                     v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                     ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                           p_table_name=>v_head,

                                           p_column_name=>'vendor site code',

                                           p_error_message=>v_error_message

                                           );

                     when others then

                     v_process_flag:='E';

                     v_error_message:='exception at document type code:'||rec_hea.vendor_site_code;

                     v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                     ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                           p_table_name=>v_head,

                                           p_column_name=>'vendor site code',

                                           p_error_message=>v_error_message

                                           );

               

              end;    

           

              --po number validation

           

                        select count(1) into v_count

                        from po_headers_all

                        where  segment1=rec_hea.document_num

                        and   type_lookup_code=v_rec_hea.DOCUMENT_TYPE_CODE

                        and   org_id=g_org_id;

               

                 if v_count>0 then

                    raise po_num_exists;

                  end if;

           

           

           

              --agent name validation

              begin

              select     poa.AGENT_ID into v_rec_hea.AGENT_ID

                        from  po_agents poa,

                              per_all_people_f papf

                        where poa.AGENT_ID=papf.PERSON_ID

                        and   papf.FULL_NAME=rec_hea.AGENT_NAME

                        and    sysdate between papf.effective_start_date and papf.effective_end_date;

               exception

                     when no_data_found then

                     v_process_flag:='E';

                     v_error_message:='no such agent exists with:'||rec_hea.AGENT_NAME;

                     v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                     ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                           p_table_name=>v_head,

                                           p_column_name=>'agent',

                                           p_error_message=>v_error_message

                                           );

                     when others then

                     v_process_flag:='E';

                     v_error_message:='exception at agent name:'||rec_hea.AGENT_NAME;

                     v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                     ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                           p_table_name=>v_head,

                                           p_column_name=>'agent name',

                                           p_error_message=>v_error_message

                                           );

 

              end;

           

                    v_rec_hea.INTERFACE_SOURCE_CODE     :=rec_hea.INTERFACE_SOURCE_CODE;

                    v_rec_hea.PROCESS_CODE             :=rec_hea.PROCESS_CODE        ;

                    v_rec_hea.ACTION                 :=rec_hea.ACTION             ;

                    --v_rec_hea.DOCUMENT_TYPE_CODE     :=rec_hea.DOCUMENT_TYPE_CODE;

                    v_rec_hea.DOCUMENT_SUBTYPE         :=rec_hea.DOCUMENT_SUBTYPE;

                    v_rec_hea.DOCUMENT_NUM             :=rec_hea.DOCUMENT_NUM     ;    

                    --v_rec_hea.AGENT_NAME             :=rec_hea.AGENT_NAME     ;

                    --v_rec_hea.VENDOR_NAME             :=rec_hea.VENDOR_NAME   ;

                    --v_rec_hea.VENDOR_SITE_CODE       :=rec_hea.VENDOR_SITE_CODE;

 

dis_log('before entering into line loop');

 

              for rec_lin in cur_lin(rec_hea.document_num) loop

              dis_log('after entering into line loop');

              select PO_LINES_INTERFACE_S.nextval into v_rec_lin.INTERFACE_LINE_ID from dual;

           

              --line type validation

                begin

                 select line_type_id into v_rec_lin.LINE_TYPE_ID

                 from po_line_types

                 where line_type=rec_lin.line_type;

                   exception

                     when no_data_found then

                     v_process_flag:='E';

                     v_error_message:='no such line type exists with:'||rec_lin.line_type;

                     v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                     ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                           p_table_name=>v_line,

                                           p_column_name=>'line type',

                                           p_error_message=>v_error_message

                                           );

                         when others then

                         v_process_flag:='E';

                         v_error_message:='exception at agent name:'||rec_lin.line_type;

                         v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                         ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                           p_table_name=>v_line,

                                           p_column_name=>'line type',

                                           p_error_message=>v_error_message

                                           );

 

                         end;

                  --SHIP_TO_ORGANIZATION_CODE validation

                  begin

                     select organization_id into v_rec_lin.ship_to_organization_id

                     from org_organization_definitions

                     where ORGANIZATION_CODE=rec_lin.SHIP_TO_ORGANIZATION_CODE;

                  exception

                     when no_data_found then

                     v_process_flag:='E';

                     v_error_message:='no such ship to organization code exists with:'||rec_lin.SHIP_TO_ORGANIZATION_CODE;

                     v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                     ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                           p_table_name=>v_line,

                                           p_column_name=>'SHIP_TO_ORGANIZATION_CODE',

                                           p_error_message=>v_error_message

                                           );

                        when others then

                        v_process_flag:='E';

                        v_error_message:='exception at agent name:'||rec_lin.SHIP_TO_ORGANIZATION_CODE;

                        v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                        ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                           p_table_name=>v_line,

                                           p_column_name=>'SHIP_TO_ORGANIZATION_CODE',

                                           p_error_message=>v_error_message

                                           );

               

                

                   end;

                  --item,category,uom,description

                  begin

                      select msi.inventory_item_id

                                       ,mic.category_id

                                       ,msi.primary_uom_code

                                       ,msi.description

                                into   v_rec_lin.item_id

                                       ,v_rec_lin.category_id

                                       ,v_rec_lin.uom_code

                                       ,v_rec_lin.item_description

                                 from   mtl_system_items_b msi,

                                        mtl_item_categories mic,

                                        mtl_category_sets   mcs

                      where   msi.organization_id     = v_rec_lin.ship_to_organization_id

                        and    msi.segment1            = rec_lin.item

                        and    mic.inventory_item_id   = msi.inventory_item_id

                        and    mic.organization_id     = msi.organization_id

                        and    mic.category_set_id     = mcs.category_set_id

                        and    mcs.CATEGORY_SET_NAME   = 'Purchasing';

                     

                      exception

                     when no_data_found then

                     v_process_flag:='E';

                     v_error_message:='no such item or ctgry or uom exists with:'||rec_lin.item;

                     v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                     ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                           p_table_name=>v_line,

                                           p_column_name=>'item',

                                           p_error_message=>v_error_message

                                           );

                        when others then

                        v_process_flag:='E';

                        v_error_message:='exception at item or ctgry or uom:'||rec_lin.item;

                        v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                        ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                           p_table_name=>v_line,

                                           p_column_name=>'item',

                                           p_error_message=>v_error_message

                                           );

               

                     

                   end;  

                   --quantity or unit price validation

                   begin

                    if nvl(rec_lin.QUANTITY,0) = 0 or rec_lin.UNIT_PRICE is null

                     or rec_lin.NEED_BY_DATE is null

                     then

                     v_process_flag    := 'E';

                     v_error_message   := 'Qty or unit price or need by date is null';          

                     v_tot_err_msg         := v_tot_err_msg||' '||v_error_message;

                     ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                           p_table_name=>v_line,

                                           p_column_name=>'qty or price',

                                           p_error_message=>v_error_message

                                           );

                     dis_log(v_error_message);

                      end if;

                 

                   end;

                                 v_rec_lin.INTERFACE_HEADER_ID:=v_rec_hea.INTERFACE_HEADER_ID;

                                 v_rec_lin.ACTION         :=rec_lin.ACTION;

                                 v_rec_lin.LINE_NUM      :=rec_lin.LINE_NUM;

                                 v_rec_lin.SHIPMENT_NUM  :=rec_lin.SHIPMENT_NUM;

                                 v_rec_lin.SHIPMENT_TYPE :=rec_lin.SHIPMENT_TYPE;

                                 v_rec_lin.DOCUMENT_NUM     :=rec_lin.DOCUMENT_NUM;

                                 --v_rec_lin.LINE_TYPE     :=rec_lin.LINE_TYPE;

                                 --v_rec_lin.SHIP_TO_ORGANIZATION_CODE:=rec_lin.SHIP_TO_ORGANIZATION_CODE;

                                 --v_rec_lin.ITEM             :=rec_lin.ITEM;

                                 --v_rec_lin.CATEGORY         :=rec_lin.CATEGORY;

                                 --v_rec_lin.ITEM_DESCRIPTION:=rec_lin.ITEM_DESCRIPTION;

                                -- v_rec_lin.QUANTITY         :=rec_lin.QUANTITY    ;

                                -- v_rec_lin.UNIT_PRICE    :=rec_lin.UNIT_PRICE;

                                --v_rec_lin.NEED_BY_DATE   :=rec_lin.need_by_date;

                 

                   dis_log('before entering into distribution loop');            

                                for rec_dis in cur_dis(p_doc_num=>rec_lin.document_num,

                                                       p_line_num=>rec_lin.line_num,

                                                       p_shipment_num=>rec_lin.shipment_num

                                                       )

                                loop

                             

                             

                                dis_log('after entering into distribution loop');

                                select PO_DISTRIBUTIONS_INTERFACE_S.nextval into v_rec_dis.INTERFACE_DISTRIBUTION_ID

                                from dual;

                             

                                --destination type validation

                                begin

                                 select lookup_code INTO v_rec_dis.DESTINATION_TYPE_CODE

                                   from  po_lookup_codes

                                  where lookup_type='DESTINATION TYPE'

                                   and   displayed_field=rec_dis.DESTINATION_TYPE;

                                 exception

                                 when no_data_found then

                                 v_process_flag:='E';

                                 v_error_message:='no such destination type exists with:'||rec_dis.DESTINATION_TYPE;

                                 v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                                 ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                                       p_table_name=>v_line,

                                                       p_column_name=>'destination type',

                                                       p_error_message=>v_error_message

                                                       );

                                    when others then

                                    v_process_flag:='E';

                                    v_error_message:='exception at destination type validation:'||rec_dis.DESTINATION_TYPE;

                                    v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                                    ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                                       p_table_name=>v_dist,

                                                       p_column_name=>'destination type',

                                                       p_error_message=>v_error_message

                                                       );

                                 end;

                               

                                 --qty ordered valiidation

                                 begin

                                   if  rec_dis.QUANTITY_ORDERED<=0 THEN

                                     V_PROCESS_FLAG:='E';

                                     V_ERROR_MESSAGE:='QUANTITY ORDRED IS NULL:'||rec_dis.QUANTITY_ORDERED;

                                     v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                                    ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                                       p_table_name=>v_dist,

                                                       p_column_name=>'QTY ORDERED',

                                                       p_error_message=>v_error_message

                                                       );

                                    end if;

                               

                                 end;

                                 --CHARGE ACCOUNT VALIDATION

                                 begin

                                   select  gcc.CODE_COMBINATION_ID INTO v_rec_dis.CHARGE_ACCOUNT_ID

                                    from    gl_code_combinations_kfv gcc,

                                            gl_sets_of_books gsb

                                    where   gcc.CHART_OF_ACCOUNTS_ID=gsb.CHART_OF_ACCOUNTS_ID

                                    and     gsb.SET_OF_BOOKS_ID=fnd_profile.value('GL_SET_OF_BKS_ID')

                                    and     gcc.CONCATENATED_SEGMENTS=rec_dis.CHARGE_ACCOUNT;

                                exception

                                 when no_data_found then

                                 v_process_flag:='E';

                                 v_error_message:='no such charge account with:'||rec_dis.CHARGE_ACCOUNT;

                                 v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                                 ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                                       p_table_name=>v_line,

                                                       p_column_name=>'charge account',

                                                       p_error_message=>v_error_message

                                                       );

                                    when others then

                                    v_process_flag:='E';

                                    v_error_message:='exception at charge account validation:'||rec_dis.CHARGE_ACCOUNT;

                                    v_tot_err_msg:=v_tot_err_msg||' '||v_error_message;

                                    ALL_COMMON_ERROR_PROC(p_interface_name=>v_conc_name,

                                                       p_table_name=>v_dist,

                                                       p_column_name=>'charge account',

                                                       p_error_message=>v_error_message

                                                       );

                                  end;

                               

                                     v_rec_dis.INTERFACE_HEADER_ID       :=v_rec_lin.INTERFACE_HEADER_ID;

                                     v_rec_dis.INTERFACE_LINE_ID         :=v_rec_lin.INTERFACE_LINE_ID;          

                                     v_rec_dis.QUANTITY_ORDERED             :=rec_dis.QUANTITY_ORDERED;

                                     v_rec_dis.QUANTITY_DELIVERED        :=rec_dis.QUANTITY_DELIVERED;    

                                     v_rec_dis.QUANTITY_BILLED             :=rec_dis.QUANTITY_BILLED;

                                     v_rec_dis.QUANTITY_CANCELLED        :=rec_dis.QUANTITY_CANCELLED;

                                     v_rec_dis.DISTRIBUTION_NUM             :=rec_dis.DISTRIBUTION_NUM;

                                     --v_rec_dis.DESTINATION_TYPE          :=rec_dis.DESTINATION_TYPE ;

                                     v_rec_dis.DESTINATION_ORGANIZATION  :=rec_dis.DESTINATION_ORGANIZATION;

                                     --v_rec_dis.CHARGE_ACCOUNT            :=rec_dis.CHARGE_ACCOUNT;

                                       if v_process_flag='S' then

                                         insert into po_distributions_interface values v_rec_dis;

                                     end if;              

                                     end loop;

                                dis_log('coming out from distribution loop');

                                if v_process_flag='S' then

                                  insert into po_lines_interface values v_rec_lin;

                                end if;

                   end loop;

              dis_log('coming out from line loop');

                                     if v_process_flag='S' then

                           insert into po_headers_interface values v_rec_hea;

                           end if;

                      update po_headers_temp set process_flag=v_process_flag,

                                                 error_message=v_tot_err_msg

                                      where document_num=rec_hea.document_num;

exception

       when po_num_exists then

       v_process_flag:='E';

       v_error_message:='po number already exists with:'||rec_hea.document_num;

     update po_headers_temp set process_flag=v_process_flag,

                                                 error_message=v_tot_err_msg

                                         where document_num=rec_hea.document_num;

       fnd_file.put_line(fnd_file.log,v_tot_err_msg);

        dis_log('after po exception');                                          

end;

end loop;

details;

arch;

dis_log('coming out from header loop');

exception

when others then

dis_log('exception in main loop');

end main;

end po_int;