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.
"--------------------@斌将军--------------------
定期更文,欢迎关注