Script to import standard purchase order

Introduction:

This blog contains an plsql interface script to import standard purchase order.

 

Script:

DECLARE

CURSOR PHEADER IS SELECT * FROM XX_PO_IMP_STG_TABLE;

 

CURSOR PLINE (P_PO_NUMBER VARCHAR2)

IS

SELECT *

FROM XX_PO_IMP_STG_TABLE

WHERE PO_NUMBER = P_PO_NUMBER;

 

L_AGENT_ID              NUMBER;

l_vendor_id             NUMBER;

l_vendor_Site_id        NUMBER;

l_ship_to_location_id   NUMBER;

l_bill_to_location_id   NUMBER;

LV_VENDOR_ID            NUMBER;

LINE_LOCATION_ID        NUMBER;

LV_DESCRIPTION          VARCHAR2 (500);

LV_UOM_CODE             VARCHAR2 (10);

L_TERM_ID               NUMBER;

lv_lookup_code          VARCHAR2 (50);

FOB_lookup_code         VARCHAR2 (50);

BEGIN

FOR H IN PHEADER

LOOP

SELECT PERSON_ID

INTO L_AGENT_ID

FROM PER_ALL_PEOPLE_F

WHERE     FULL_NAME = H.BUYER_NAME

AND EFFECTIVE_END_DATE IN

(SELECT MAX (EFFECTIVE_END_DATE) FROM PER_ALL_PEOPLE_F)

AND EMPLOYEE_NUMBER LIKE ‘EMP%’;

 

l_ship_to_location_id := 141;

 

l_bill_to_location_id := 141;

 

SELECT TERM_ID

INTO L_TERM_ID

FROM AP_TERMS

WHERE NAME = H.PAYMENT_TERMS;

 

SELECT VENDOR_ID

INTO l_vendor_id

FROM ap_suppliers

WHERE VENDOR_NAME = H.VENDOR_NAME;

 

SELECT VENDOR_SITE_ID

INTO l_vendor_Site_id

FROM ap_supplier_sites_all

WHERE VENDOR_ID = l_vendor_id AND org_id = 1;

 

IF H.PO_DESCRIPTION IS NULL

THEN

LV_DESCRIPTION := ‘PO MIGRAION’;

ELSE

LV_DESCRIPTION := H.PO_DESCRIPTION;

END IF;

 

INSERT INTO PO_HEADERS_INTERFACE (INTERFACE_HEADER_ID,

DOCUMENT_NUM,

PROCESS_CODE,

ACTION,

ORG_ID,

DOCUMENT_TYPE_CODE,

CURRENCY_CODE,

AGENT_ID,

VENDOR_ID,

VENDOR_SITE_ID,

SHIP_TO_LOCATION_ID,

BILL_TO_LOCATION_ID,

–ATTRIBUTE2,

CREATION_DATE,

COMMENTS,

ATTRIBUTE_CATEGORY,

PAYMENT_TERMS,

TERMS_ID,

FOB,

FREIGHT_TERMS)

VALUES (po_headers_interface_s.NEXTVAL,  — INTERFACE_HEADER_ID,

H.PO_NUMBER,                                    –‘1491’,

‘PENDING’,

‘ORIGINAL’,                                   — ACTION,

H.ORGANIZATION_ID,                            — ORG_ID,

‘STANDARD’,                       — DOCUMENT_TYPE_CODE,

H.CURRENCY_CODE,

L_AGENT_ID,

l_vendor_id,

l_vendor_Site_id,

l_ship_to_location_id,

l_bill_to_location_id,

–‘Regular’,

H.PO_DATE,                             — CREATION_DATE,

SUBSTR (LV_DESCRIPTION, 0, 240),

‘STANDARD’,

H.PAYMENT_TERMS,

L_TERM_ID,

H.FOB,

H.FREIGHT_TERMS                –H.FOB, –lv_lookup_code,

–H.FREIGHT_TERM,

);

 

 

COMMIT;

 

FOR PL IN PLINE (H.PO_NUMBER)

LOOP

SELECT LOCATION_ID

INTO LINE_LOCATION_ID

FROM HR_LOCATIONS_ALL

WHERE LOCATION_CODE = PL.LOCATION_CODE;

 

 

BEGIN

SELECT DESCRIPTION

INTO LV_DESCRIPTION

FROM MTL_SYSTEM_ITEMS_B

WHERE     SEGMENT1 = PL.NEW_EBS_CODE

AND ORGANIZATION_ID = PL.ORGANIZATION_ID;

EXCEPTION

WHEN NO_DATA_FOUND

THEN

lv_description := ‘OPEN PO MIGRATION’;

END;

 

INSERT INTO PO_LINES_INTERFACE (INTERFACE_LINE_ID,

INTERFACE_HEADER_ID,

ACTION,

LINE_NUM,

LINE_TYPE,

ITEM,

ITEM_ID,

UOM_CODE,

QUANTITY,

UNIT_PRICE,

SHIP_TO_ORGANIZATION_ID, ——————–

SHIP_TO_LOCATION_ID,

NEED_BY_DATE,

PROMISED_DATE,

CREATION_DATE,

LINE_LOC_POPULATED_FLAG, –ITEM_REVISION

ITEM_DESCRIPTION –PREFERRED_GRADE

)

VALUES (

po_lines_interface_s.NEXTVAL,  — INTERFACE_LINE_ID,

po_headers_interface_s.CURRVAL, — INTERFACE_HEADER_ID,

‘ADD’,                                    — ACTION,

PL.PO_LINE_NUMBER,                      — LINE_NUM,

‘Goods’,

PL.NEW_EBS_CODE,

(SELECT INVENTORY_ITEM_ID

FROM MTL_SYSTEM_ITEMS_B

WHERE     SEGMENT1 = PL.NEW_EBS_CODE

AND ORGANIZATION_ID = PL.ORGANIZATION_ID),

PL.UOM_CODE,

PL.QUANTITY,

PL.PRICE,

24,–PL.ORGANIZATION_ID,

LINE_LOCATION_ID,

’30-AUG-2024′, –to_date(PL.NEED_BY_DATE, ‘DD-MON-YYYY HH24:MI:SS’),              — NEED_BY_DATE,

’30-AUG-2024′, –to_date(PL.NEED_BY_DATE, ‘DD-MON-YYYY HH24:MI:SS’),

SYSDATE,                           — CREATION_DATE,

‘Y’,                     — LINE_LOC_POPULATED_FLAG,

LV_DESCRIPTION);

 

COMMIT;

 

INSERT INTO PO_LINE_LOCATIONS_INTERFACE (

INTERFACE_LINE_LOCATION_ID,

INTERFACE_HEADER_ID,

INTERFACE_LINE_ID,

SHIPMENT_TYPE,

SHIPMENT_NUM,

SHIP_TO_ORGANIZATION_ID,

NEED_BY_DATE,

PROMISED_DATE,

QUANTITY,

CREATION_DATE)

VALUES (po_line_locations_interface_s.NEXTVAL, — INTERFACE_LINE_LOCATION_ID,

po_headers_interface_s.CURRVAL, — INTERFACE_HEADER_ID,

po_lines_interface_s.CURRVAL,  — INTERFACE_LINE_ID,

‘STANDARD’,                        — SHIPMENT_TYPE,

PL.PO_LINE_NUMBER,                  — SHIPMENT_NUM,

’24’,–PL.ORGANIZATION_ID, — SHIP_TO_ORGANIZATION_ID,— SHIP_TO_LOCATION_ID,

’30-AUG-2024′, –to_date(PL.NEED_BY_DATE, ‘DD-MON-YYYY HH24:MI:SS’),

’30-AUG-2024′,                      — NEED_BY_DATE,

PL.QUANTITY,                            — QUANTITY,

SYSDATE);

 

COMMIT;

END LOOP;

 

DBMS_OUTPUT.PUT_LINE (H.PO_NUMBER);

COMMIT;

END LOOP;

END;

 

Recent Posts