采购订单的确认控制
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. "--------------------@斌将军--------------------
定期更文,欢迎关注