原文:Small Fire · 创建PR BAPI_REQUISITION_CREATE · SAP 业务 子专栏 · Small Fire 技术笔记

引用链接:https://mp.weixin.qq.com/s/2nt_V5dpgxkspDQsldJJ3A

创建PR BAPI_REQUISITION_CREATE

*&---------------------------------------------------------------------*
*& BAPI_REQUISITION_CREATE 和 BAPI_PR_CREATE 相关问题查看NOTE
*& 499627 - FAQ BAPIs for purchase requisitions
*&---------------------------------------------------------------------*
REPORT ZLM_CREATE_PR.
DATA: LT_ITEM     LIKE TABLE OF  BAPIEBANC,
      LT_RETURN   LIKE TABLE OF  BAPIRETURN,
      LS_RETURN   LIKE  BAPIRETURN,
      LS_ITEM     LIKE BAPIEBANC.
*&如果有增强字段
DATA: LT_EXTENSIONIN  TYPE TABLE OF  BAPIPAREX .
DATA: LW_ITM    TYPE BAPI_TE_REQUISITION_ITEM.
DATA: LV_PR_NO  TYPE BAPIEBANC-PREQ_NO.
PARAMETERS:P_MATNR1 TYPE MATNR .
PARAMETERS:P_MATNR2 TYPE MATNR.
PARAMETERS:P_EKORG  TYPE EKORG .
PARAMETERS:P_WERKS  TYPE WERKS_D.
START-OF-SELECTION.
  CLEAR LT_ITEM[].
  CLEAR LS_ITEM.
  LS_ITEM-DOC_TYPE      = 'NB'.              "凭证类型"
  LS_ITEM-PREQ_ITEM     = '00010'.           "项目"
  LS_ITEM-MATERIAL      = P_MATNR1.          "商品代码"
  LS_ITEM-QUANTITY      = 1.                 "数量"
  LS_ITEM-DELIV_DATE    = SY-DATUM.          "交货日期"
  LS_ITEM-PLANT         = P_WERKS.           "工厂"
  LS_ITEM-PURCH_ORG     = P_EKORG.

  APPEND LS_ITEM TO LT_ITEM.
  IF P_MATNR2 IS NOT INITIAL.
    LS_ITEM-DOC_TYPE     = 'NB'.           "凭证类型"
    LS_ITEM-PREQ_ITEM    = '00020'.        "项目"
    LS_ITEM-MATERIAL     = P_MATNR2.       "商品代码"
    LS_ITEM-QUANTITY     = 1.              "数量"
    LS_ITEM-DELIV_DATE   = SY-DATUM.       "交货日期"
    LS_ITEM-PLANT        = P_WERKS.        "工厂"
    LS_ITEM-PURCH_ORG    = P_EKORG.
    APPEND LS_ITEM TO LT_ITEM.
  ENDIF.
*  extensionin-structure = 'BAPI_TE_REQUISITION_ITEM'.
*  extensionin-valuepart1 = lw_itm.
*  APPEND EXTENSIONIN.

  CALL FUNCTION 'BAPI_REQUISITION_CREATE'
    IMPORTING
      NUMBER            = LV_PR_NO
    TABLES
      REQUISITION_ITEMS = LT_ITEM
*     requisition_account_assignment = pr_account
*     requisition_item_text          = pr_item_id
      RETURN            = LT_RETURN.
*      extensionin                    = extensionin[].

  LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE = 'E' .
    WRITE LS_RETURN-MESSAGE.
  ENDLOOP.
  WRITE LV_PR_NO.