采购订单的确认控制

发布时间 2023-04-06 17:33:24作者: 斌将军

1、业务说明

1.1、确认控制

 配置路径:IMG→物料管理→采购→确认→建立确认控制

供应商确认:下达采购订单后,供应商根据订单回执能够交货的日期和数量。例如:采购订单下达后通过接口同步给SRM,SRM执行确认后,调用接口同步给SAP确认的交货日期和数量。确认有两种方案:一步法和两步法。

两步法:第一步:供应商回复确认的交货计划,系统中确认页签添加AB类别的行;

    第二步:供应商按第一步的日期交货,在SAP中通过VL31N创建内向交货单,系统会自动在确认页签产生LA类别的行。

一步法:对两步法的简化,具体看项目如何定义,是只做第一步还是只做第二步。

1.2、前台操作

模拟两步法:

第一步:回执

第二步: 交货

VL31N创建内向交货单

ME23N查看采购订单,发现对应的LA和内向交货单已经带出来

根据内向交货单进行确认交货后,MIGO收货就要通过内向交货单,而不是采购订单

2、代码示例

供应商确认

"--------------------@斌将军--------------------
DATA:lv_ebeln           TYPE ebeln,
     ls_header          TYPE bapimeconfheader,
     ls_headerx         TYPE bapimeconfheaderx,
     ls_item            TYPE bapimeconfitem,
     lt_item            TYPE bapimeconf_t_item,
     ls_itemx           TYPE bapimeconfitemx,
     lt_itemx           TYPE bapimeconf_t_itemx,
     lt_poconfirmation  TYPE TABLE OF bapimeconfdetail,
     ls_poconfirmation  TYPE bapimeconfdetail,
     lt_poconfirmationx TYPE TABLE OF bapimeconfdetailx,
     ls_poconfirmationx TYPE bapimeconfdetailx,
     lt_return          TYPE TABLE OF bapiret2,
     ls_return          TYPE bapiret2.

DATA:lv_check   TYPE char1,
     lv_message TYPE char200.

lv_ebeln = '4100001501'."采购凭证编号

CLEAR:ls_header.
ls_header-doc_number = lv_ebeln."采购凭证编号

CLEAR ls_item.
ls_item-item_no = '00010'."行项目
ls_item-canceled = ''."拒绝标识
APPEND ls_item TO lt_item.

CLEAR ls_itemx.
ls_itemx-item_no = '00010'."行项目
ls_itemx-canceled = 'X'.
APPEND ls_itemx TO lt_itemx.

CLEAR ls_poconfirmation.
ls_poconfirmation-item_no = '00010'."行项目
ls_poconfirmation-conf_category = 'AB'."确认类别
ls_poconfirmation-creat_date   = '20230406'."供应商确认的创建日期
ls_poconfirmation-deliv_date = '20230430'."供应商确认的交货日期
ls_poconfirmation-deliv_date_typ = 'D'."供应商确认中交货日期的日期类别
ls_poconfirmation-quantity = '1'."按照供应商确认的数量
APPEND ls_poconfirmation TO lt_poconfirmation.

CLEAR ls_poconfirmationx.
ls_poconfirmationx-item_no = '00010'."行项目
ls_poconfirmationx-conf_category = 'X'."确认类别
ls_poconfirmationx-creat_date   = 'X'."供应商确认的创建日期
ls_poconfirmationx-deliv_date = 'X'."供应商确认的交货日期
ls_poconfirmationx-deliv_date_typ = 'X'."供应商确认中交货日期的日期类别
ls_poconfirmationx-quantity = 'X'."按照供应商确认的数量
APPEND ls_poconfirmationx TO lt_poconfirmationx.CALL FUNCTION 'ME_PO_CONFIRM'
    EXPORTING
      document_no   = lv_ebeln
      header        = ls_header
*      headerx       = ls_headerx
      item          = lt_item
      itemx         = lt_itemx
      confirmation  = lt_poconfirmation
      confirmationx = lt_poconfirmationx
    IMPORTING
      return        = lt_return.

  CLEAR:lv_check,lv_message.
  LOOP AT lt_return INTO ls_return WHERE type CA 'EAX'.
    lv_check = 'E'.
    lv_message = lv_message && ls_return-message.
  ENDLOOP.

  IF lv_check = 'E'.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    WRITE:/ lv_message.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
    WRITE:/ 'SUCCESS'.
  ENDIF.
"--------------------@斌将军--------------------