BAPI_OUTB_DELIVERY_CHANGE删除内向交货单
时间: 2025-07-09 20:20:34 浏览: 16
### 使用 BAPI_OUTB_DELIVERY_CHANGE 删除内向交货单
在 SAP 系统中,`BAPI_OUTB_DELIVERY_CHANGE` 是一个用于修改交货单的函数模块。虽然该函数的主要功能是修改交货单内容,但通过特定参数设置,也可以实现删除交货单行项目或整个交货单的功能。
#### 函数调用与参数说明
以下是 `BAPI_OUTB_DELIVERY_CHANGE` 的关键参数及用途:
- **DELIVERY_HEADER_IN**:传递交货单头信息,例如交货单号。此参数用于指定需要修改的交货单[^1]。
- **DELIVERY_ITEM_IN**:传递交货单项信息,例如行项目号。此参数用于指定需要删除的具体行项目[^2]。
- **RETURN**:返回操作结果的消息列表。通过检查此表可以确认操作是否成功。
#### 示例代码
以下是一个使用 `BAPI_OUTB_DELIVERY_CHANGE` 删除内向交货单的 ABAP 示例代码:
```abap
DATA: ls_header_in TYPE bapioedhdr,
lt_item_in TYPE TABLE OF bapioedite,
lt_return TYPE TABLE OF bapiret2.
" 设置交货单头信息
ls_header_in-delivernumber = '12345678'. " 替换为实际的交货单号
" 设置需要删除的行项目
DATA(ls_item_in) = VALUE bapioedite( itemnumber = '000010' ). " 替换为实际的行项目号
APPEND ls_item_in TO lt_item_in.
" 调用 BAPI
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'
EXPORTING
delivery_header_in = ls_header_in
TABLES
delivery_item_in = lt_item_in
return = lt_return.
" 检查返回结果
LOOP AT lt_return INTO DATA(ls_return).
WRITE: / ls_return-type, ls_return-message.
ENDLOOP.
```
#### 参数设置详解
- **DELIVERY_HEADER_IN**:通过 `delivernumber` 字段指定交货单号。这是识别交货单的核心字段[^1]。
- **DELIVERY_ITEM_IN**:通过 `itemnumber` 字段指定需要删除的行项目号。如果需要删除多个行项目,可以将它们添加到 `lt_item_in` 表中[^2]。
#### 注意事项
1. **状态检查**:确保交货单及其行项目的当前状态允许被修改或删除。如果交货单已经被过账或锁定,则可能无法直接删除[^1]。
2. **事务一致性**:在删除交货单或其行项目时,确保所有相关数据的一致性。建议在测试环境中验证逻辑后再应用于生产环境。
3. **错误处理**:调用函数后,务必检查 `RETURN` 表中的消息以确认操作结果。如果出现错误,根据消息内容进行相应调整。
#### 替代方案
如果需要取消整个交货单,可以考虑使用 `BAPI_OUTB_DELIVERY_CANCEL` 函数。此函数专门用于取消交货单,而不涉及具体的行项目修改。
---
阅读全文
相关推荐

















