首页 > 数据库 > 数据库开发技术 > bapi_po_change增加删除标识,
FORM bapi_po_change
.
DATA
:
BEGIN
OF lt_doc
OCCURS
0
,
ebeln
TYPE ekpo
-ebeln
,
ebelp
TYPE ekpo
-ebelp
,
END
OF lt_doc
.
DATA
: lt_doc_bapi
LIKE
TABLE
OF lt_doc
.
DATA
:
ls_poitem
TYPE
TABLE
OF bapimepoitem
WITH
HEADER
LINE
,
ls_poitemx
TYPE
TABLE
OF bapimepoitemx
WITH
HEADER
LINE
.
LOOP
AT gt_data
.
IF gt_data
-elikz
=
'X'
AND gt_data
-erekz
=
'X'
AND gt_data
-del
=
'X'
.
ls_poitem
-po_item
= gt_data
-ebelp
.
ls_poitem
-delete_ind
=
'X'
.
APPEND ls_poitem
.
CLEAR ls_poitem
.
ls_poitemx
-po_item
= gt_data
-ebelp
.
ls_poitemx
-delete_ind
=
'X'
.
APPEND ls_poitemx
.
CLEAR ls_poitemx
.
ENDIF
.
PERFORM call_bapi
TABLES ls_poitem
ls_poitemx
CHANGING gt_data
-ebeln
gt_data
-ebelp
.
ENDLOOP
.
ENDFORM
.
FORM call_bapi
TABLES lt_poitem
STRUCTURE bapimepoitem
lt_poitemx
STRUCTURE bapimepoitemx
USING p_ebeln
p_ebelp
.
DATA
: ls_return
TYPE
TABLE
OF bapiret2
.
DATA n
TYPE
i
VALUE
0
.
CALL
FUNCTION
'BAPI_PO_CHANGE'
EXPORTING
purchaseorder
= p_ebeln
TABLES
return
= ls_return
poitem
= lt_poitem
poitemx
= lt_poitemx
.
READ
TABLE ls_return
ASSIGNING
FIELD
-
SYMBOL
(<ls_return>
)
WITH
KEY
type
=
'S'
.
IF sy
-subrc
=
0
.
CALL
FUNCTION
'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait
=
'X'
.
WRITE
:/
'已为'&& p_ebeln &&
'的' && p_ebelp &&
'项次中委外已完成的采购单增加删除标识'
.
ELSE
.
READ
TABLE ls_return
ASSIGNING <ls_return>
WITH
KEY
type
=
'E'
.
IF sy
-subrc
=
0
.
CALL
FUNCTION
'BAPI_TRANSACTION_ROLLBACK'
.
ENDIF
.
ENDIF
.
ENDFORM
.
能否有人指出到底是哪里出错了吗。
错误操作:
当我输入多个po时,第一个po能够正常运行,返回参数为“S”,
但是第二个以及后面的po却都失败了,返回参数为“E” 并显示change indicators could not be uniquely determined in material mapping
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70029342/viewspace-2948575/ ,如需转载,请注明出处,否则将追究法律责任。