【MM系列】SAP 根据采购订单创建外向交货单的BAPI

SAP系统中,删除外向交货单的操作并不是通过一个以 `delete` 结尾的 BAPI 来完成的,而是通过 `BAPI_OUTB_DELIVERY_CHANGE` 这个变更接口来实现。该接口可以用于对外向交货单进行修改,包括标记为删除或物理删除[^1]。 对于**未过账的外向交货单**,可以直接进行物理删除操作。前台操作和通过 BAPI 调用的行为是一致的。而在后台实现中,通常通过将交货单的删除标志设置为 `X` 来标记删除,但在某些系统配置下,尤其是未过账的交货单SAP 会直接执行物理删除。 ### 使用 `BAPI_OUTB_DELIVERY_CHANGE` 删除交货单的步骤 1. **准备交货单号**:需要明确要删除的交货单编号(`DELIVERY`)。 2. **构建变更结构**:使用 `DELIVERY_HEADER_IN` 结构,并设置 `DELETE_IND` 字段为 `'X'`,表示删除该交货单。 3. **调用 BAPI**:调用 `BAPI_OUTB_DELIVERY_CHANGE` 并传入交货单号和变更结构。 4. **提交事务**:调用 `BAPI_TRANSACTION_COMMIT` 以确保更改生效。 ### 示例代码 ```abap DATA: ls_header_in TYPE bapisdhd1, lt_return TYPE TABLE OF bapiret2. ls_header_in-delete_ind = 'X'. " 设置删除标记 CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE' EXPORTING delivery = '你的交货单号' " 替换为实际交货单号 delivery_header_in = ls_header_in TABLES return = lt_return. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. " 检查返回消息 LOOP AT lt_return INTO DATA(ls_return). WRITE: / ls_return-type, ls_return-message. ENDLOOP. ``` ### 注意事项 - 如果交货单**已经过账**,则不能直接删除,应先进行冲销操作(如调用 `VL09` 或对应的 BAPI),然后再删除。 - 删除操作是不可逆的,务必在执行前确认交货单状态和业务需求。 - 在某些系统中,可能需要检查交货单是否被后续单据引用(如发票、装运单等),避免删除失败或影响后续流程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值