SAP 使用过账BAPI按交货单过账成功后,凭证流没有显示物料凭证 问题解决记录

本文通过对比MIGO前台操作与BAPI过账产生的物料凭证,发现并解决了两个字段缺失的问题。通过查找对应的数据元素,调整BAPI的ITEM字段,在冲销后重新过账,成功使凭证流中正常显示物料凭证。

问题如题。

经过跟MIGO前台按交货单收货产生的物料凭证(MSEG表)进行对比,发现有两个字段没有值(第一条为前台操作的数据,第二条为用BAPI过账产生的数据)

这两个字段对应的数据元素如下图

回去查看BAPI的ITEM字段,找到相同数据元素的字段

过账时赋值这两个字段,冲销后重新过账,凭证流中已经正常显示物料凭证(图略)。

<think>嗯,用户需要查找用于取消SAP交货单POD过账BAPI。首先需要明确几个关键点:POD过账通常指交货证明(Proof of Delivery)的确认操作,取消操作在SAP中通常对应"冲销"或"撤销"动作。 考虑到SAP模块的标准程,取消POD过账可能需要先确定原过账使用凭证类型。常见场景是使用VL02N事务码过账POD时,系统会生成物料凭证(Material Document)。因此冲销操作应该针对该凭证进行处理。 回忆相关BAPI,最直接的是BAPI_GOODSMVT_CANCEL,它专门用于冲销物料凭证。该BAPI需要输入物料凭证号、会计年度和冲销原因代码。用户需要先通过原POD过账记录获取这些信息。 另外想到WM层面的取消可能需要BAPI_GOODSMVT_CANCEL_WM,但POD过账通常不涉及仓库管理操作。用户场景中更可能涉及的是内向交货单的POD取消,因此应优先考虑物料凭证冲销方案。 还需要注意权限问题:该BAPI可能要求调用者具备MR08事务码的操作权限。执行后必须检查RETURN参数表确认冲销结果。如果用户需要完整程示例,可以进一步提供具体字段映射关系。</think>在SAP中取消交货单POD(Proof of Delivery)过账的核心BAPI是 **`BAPI_GOODSMVT_CANCEL`**。以下是关键操作步骤和注意事项: ### 一、核心BAPI及参数 ```abap CALL FUNCTION 'BAPI_GOODSMVT_CANCEL' EXPORTING materialdocument = '凭证号' " 原POD过账生成的物料凭证号 matdocumentyear = '凭证年度' " 物料凭证的会计年度 TABLES return = lt_return. " 返回消息表 ``` ### 二、操作程 1. **获取原凭证号** 通过表 `MKPF`(抬头)或 `MSEG`(行项)查询原POD过账生成的 **物料凭证号(MBLNR)** 和 **会计年度(MJAHR)**,例如: ```sql SELECT mblnr, mjahr FROM mkpf WHERE vbeln = '交货单号' AND bwart = '101'. " 移动类型需匹配原过账 ``` 2. **执行冲销** ```abap DATA: lt_return TYPE TABLE OF bapiret2. CALL FUNCTION 'BAPI_GOODSMVT_CANCEL' EXPORTING materialdocument = '4900001234' " 示例凭证号 matdocumentyear = '2024' " 示例年度 TABLES return = lt_return. " 检查返回值 READ TABLE lt_return WITH KEY type = 'E' TRANSPORTING NO FIELDS. IF sy-subrc <> 0. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'. MESSAGE 'POD过账取消成功' TYPE 'S'. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. " 处理错误消息(lt_return) ENDIF. ``` ### 三、关键注意事项 1. **权限要求** 用户需具备 **`MR08`**(冲销物料凭证)的事务码权限[^1]。 2. **凭证状态** 仅可冲销未清账(未关联发票)的物料凭证,否则报错 `FJ 凭证已结算`。 3. **移动类型匹配** 系统自动使用 **原移动类型的冲销代码**(如101过账对应102冲销),无需手动指定[^2]。 4. **结果验证** 冲销后检查: - 交货单行项目状态重置为 **`POD未完成`** - 生成新的冲销物料凭证(原凭证号+后缀) ### 四、替代方案 若需完整冲销交货单所有操作,可考虑: ```abap CALL FUNCTION 'BAPI_OUTB_DELIVERY_REVERT' EXPORTING delivery = '交货单号' TABLES return = lt_return. ``` > ⚠️ 此BAPI会撤销整个交货单的全部过账(包括POD、发货过账),需谨慎使用--- ### 相关问题 1. 如何通过BAPI查询SAP交货单的POD状态? 2. 冲销物料凭证时遇到`凭证已过帐到 CO`错误如何解决? 3. SAP中哪些表存储交货单物料凭证的关联关系? 4. 使用`BAPI_GOODSMVT_CANCEL`冲销后如何验证库存是否回滚? [^1]: SAP权限设计原则要求用户显式分配冲销事务码权限,参见SAP Note 120938。 [^2]: 移动类型的冲销规则配置于Tcode `OMJJ`,系统根据配置自动推导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值