因為在服務單位有大量Cancel PR的需求。此時就需要用到Oracle API 來大量處理。
以下為一Sample Code :
DECLARE
CURSOR C_LIST IS
SELECT PRHA.REQUISITION_HEADER_ID,
PRLA.REQUISITION_LINE_ID
FROM PO_REQUISITION_HEADERS_ALL PRHA
JOIN PO_REQUISITION_LINES_ALL PRLA
ON PRHA.REQUISITION_HEADER_ID = PRLA.REQUISITION_HEADER_ID
WHERE PRHA.ORG_ID = 81 AND PRHA.SEGMENT1 IN ('1111','2222'); --確保對的清單
--
T_REQUISITION_HEADER_ID PO_TBL_NUMBER;
T_REQUISITION_LINE_ID PO_TBL_NUMBER;
T_STATUS VARCHAR2(2000);
T_CNT NUMBER;
T_MSG VARCHAR2(2000);
BEGIN
FOR C1 IN C_LIST LOOP
T_REQUISITION_HEADER_ID := PO_TBL_NUMBER();
T_REQUISITION_HEADER_ID.EXTEND(2);
T_REQUISITION_HEADER_ID(1) := C1.REQUISITION_HEADER_ID;
T_REQUISITION_LINE_ID := PO_TBL_NUMBER();
T_REQUISITION_LINE_ID.EXTEND(2);
T_REQUISITION_LINE_ID(1) := C1.REQUISITION_LINE_ID;
--
PO_REQ_DOCUMENT_CANCEL_PVT.CANCEL_REQUISITION(1.0,
T_REQUISITION_HEADER_ID,
T_REQUISITION_LINE_ID,
SYSDATE,
'Cancel by API',
'SYSADMIN',
T_STATUS,
T_CNT,
T_MSG);
END LOOP;
END;
你好, 請問一下, R12 中是否有產生 PR 的 API 可以使用呢?
回覆刪除Step 1. INTERFACE TABLE : PO_REQUISITIONS_INTERFACE_ALL
回覆刪除以下是我會用到的欄位說明,其它欄位你可以自行加入或不用.
DELIVER_TO_LOCATION_ID,
DELIVER_TO_REQUESTOR_ID,
AUTHORIZATION_STATUS, --INCOMPLETE / APPROVED
REQUISITION_TYPE, --PURCHASE (注意:若放INTERNAL,則User就不能Open該PR)
CREATION_DATE,
CREATED_BY,
QUANTITY, --數量
ITEM_ID, --品號ID
CATEGORY_ID, --分類
CHARGE_ACCOUNT_ID, --會計科目
SOURCE_TYPE_CODE, --VENDOR
HEADER_DESCRIPTION, --請購單單頭描述
BATCH_ID, --自行給一個
DESTINATION_TYPE_CODE, --INVENTORY (若為存貨類,費用料則不一樣)
DESTINATION_ORGANIZATION_ID, --收料廠別
INTERFACE_SOURCE_CODE, --可放前段來源程式代碼,以區分資料如何產生的
INTERFACE_SOURCE_LINE_ID, --前段來源程式的KEY值
UOM_CODE, --單位
MULTI_DISTRIBUTIONS, --是否一個LINE 多個DISTRIBUTION ==> 放N,則為一個LINE對一個SHIPMENT
ORG_ID, --收貨組統OU LEVEL
NEED_BY_DATE --需求日
Step 2. 呼叫REQIMPORT
T_REQ_ID := FND_REQUEST.SUBMIT_REQUEST('PO',
'REQIMPORT',
'',
'',
FALSE,
T_INTERFACE_SOURCE_CODE, --上面輸入的SOURCE_CODE欄位值
'',
'LOCATION',
'',
'N',
T_APPROVEL_PARAMETER, --控制是否直接送簽
'');