## 1.1、确认控制
配置路径:IMG→物料管理→采购→确认→建立确认控制
**供应商确认:**
下达采购订单后,供应商根据订单回执能够交货的日期和数量。例如:采购订单下达后通过接口同步给SRM,SRM执行确认后,调用接口同步给SAP确认的交货日期和数量。确认有两种方案:一步法和两步法。
**两步法:** 第一步:供应商回复确认的交货计划,系统中确认页签添加AB类别的行;
第二步:供应商按第一步的日期交货,在SAP中通过VL31N创建内向交货单,系统会自动在确认页签产生LA类别的行。
**一步法:** 对两步法的简化,具体看项目如何定义,是只做第一步还是只做第二步。
## 1.2、前台操作
模拟两步法:
第一步:回执
第二步:交货
VL31N创建内向交货单
ME23N查看采购订单,发现对应的LA和内向交货单已经带出来
根据内向交货单进行确认交货后,MIGO收货就要通过内向交货单,而不是采购订单
采购订单确认函数
"--------------------@斌将军--------------------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."--------------------@斌将军--------------------