2012年1月1日 星期日

Oracle ERP R12. - Sample for Cancel PR by API

因為在服務單位有大量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;

2 則留言:

  1. 你好, 請問一下, R12 中是否有產生 PR 的 API 可以使用呢?

    回覆刪除
  2. 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, --控制是否直接送簽
    '');

    回覆刪除