SAP ABAP BAPI函数50连载之21-BAPI_PO_CHANGE采购订单修改删除

我们之前学习过事务代码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 】 或者在这个链接联系我

微信原文《全文完》

今日热点在看SAP HOT583