我们之前学习过事务代码TCODE ME21N创建采购订单PO的BAPI函数BAPI_PO_CREATE1
,
今天我们学习前台事务代码TCODE:ME22N的BAPI函数,作用是修改PO或者删除PO采购订单。
隶属于MM模块,函数名字:BAPI_PO_CHANGE
导入参数:
参数名称 | 关联类型 | 可选的 | 说明 |
PURCHASEORDER | BAPIMEPOHEADER-PO_NUMBER | 必选 | |
POHEADER | BAPIMEPOHEADER | 可选 | 抬头 |
POHEADERX | BAPIMEPOHEADERX | 可选 | 抬头 |
TESTRUN | BAPIFLAG-BAPIFLAG | 可选 | |
VERSIONS | BAPIMEDCM | 可选 | |
NO_MESSAGING | BAPIFLAG-BAPIFLAG | 可选 |
备注:POHEADER与POHEADER X常用字段:
字段名 | 类型 | 简短描述 |
DOC_TYPE | ESART | 采购凭证类型 |
VENDOR | ELIFN | 供应商帐户号 |
PURCH_ORG | EKORG | 采购组织 |
PUR_GROUP | BKGRP | 采购组 |
COMP_CODE | BUKRS | 公司代码 |
DOC_DATE | EBDAT | 采购凭证日期 |
TABLE表参数
参数名称 | 关联类型 | 可选的 | 说明 |
RETURN | BAPIRET2 | 可选 | 返回信息 |
POITEM | BAPIMEPOITEM | 必选 | 行项目 |
POITEMX | BAPIMEPOITEMX | 可选 | 行项目 |
POACCOUNT | BAPIMEPOACCOUNT | 可选 | 帐户分配字段 |
POACCOUNTX | BAPIMEPOACCOUNTX | 可选 | 帐户分配字段 |
SERIALNUMBER | BAPIMEPOSERIALNO | 可选 | 采购订单BAPI中的序列号 |
SERIALNUMBERX | BAPIMEPOSERIALNOX | 可选 | 采购订单BAPI中的序列号 |
EXTENSIONIN | BAPIPAREX | 可选 | 增强,扩展字段 |
(1)POITEM与POITEM X常用字段,根据具体需求添加字段,对应的结构名为:BAPIMEPOITEM
字段名 | 类型 | 简短描述 |
PO_ITEM | EBELP | 采购凭证的项目编号 |
FINAL_INV | EREKZ | 最后发票标识 |
NET_PRICE | BAPICUREXT | BAPIs 的货币金额(带有 9 个小数位) |
(2)POCOND与POCONDX常用字段:根据具体需求添加字段,对应的结构名为:BAPIMEPOCOND
字段名 | 类型 | 简短描述 |
ITM_NUMBER | KPOSN | 条件项目号 |
COND_VALUE | BAPIKBETR1 | 条件金额 |
封装好的实例demo代码,非常好理解。
FORM bapi_po_change CHANGING p_alv LIKE ls_alv.
DATA : l_purchaseorder TYPE bapimepoheader-po_number.
DATA : lt_return TYPE TABLE OF bapiret2 WITH HEADER LINE .
DATA : lt_poitem TYPE TABLE OF bapimepoitem WITH HEADER LINE .
DATA : lt_poitemx TYPE TABLE OF bapimepoitemx WITH HEADER LINE .
l_purchaseorder = p_alv-ebeln.
lt_poitem-po_item = p_alv-ebelp.
lt_poitem-no_more_gr = &_no_more_gr.
APPEND lt_poitem.
CLEAR lt_poitem.
lt_poitemx-po_item = p_alv-ebelp.
lt_poitemx-po_itemx = ‘X’.
lt_poitemx-no_more_gr = ‘X’.
APPEND lt_poitemx.
CLEAR lt_poitemx.
CALL FUNCTION ‘BAPI_PO_CHANGE’
EXPORTING
purchaseorder = l_purchaseorder
TABLES
return = lt_return
poitem = lt_poitem
poitemx = lt_poitemx.
READ TABLE lt_return WITH KEY type = ‘E’.
IF sy-subrc = 0.
*——–失败———-*
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.
p_alv-icon = icon_led_red.
LOOP AT lt_return WHERE type = ‘E’ OR type = ‘A’.
p_alv-zmsg = p_alv-zmsg && ‘;’ && lt_return-message.
ENDLOOP.
ELSE.
*——–成功———WWW.HOT583.COM-*
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
wait = ‘X’.
ENDIF.
ENDFORM.
您学会了吗?
如果出错了。可以查看表EKKO,EKPO等相关表去对照信息哦。
本文链接 :http://www.hot583.com/2022/04/20/bapi_po_change/
本文为作者原创,如果这篇文章对您有用,欢迎转载,
转载请务必注明来源《今日热点在看》http://www.hot583.com/
我的微信公众号【 hot583 】 或者在这个链接联系我
微信原文《全文完》