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

问题如题。

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

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

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

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

<think>好的,我现在需要回答用户关于如何使用SAPBAPI_DOCUMENT_CHANGE接口来修改会计凭证问题。首先,我得先理解用户的需求。他们想要一个示例教程,说明如何调用这个BAPI来更改会计凭证。根据用户提供的引用资料,特别是引用[4]和[5],这些涉及到BAPI_ACC_DOCUMENT_POST的使用,但用户现在问的是BAPI_DOCUMENT_CHANGE,可能需要我查找相关资料或者结合现有引用进行分析。 首先,我需要确认是否存在BAPI_DOCUMENT_CHANGE这个BAPI。根据我的知识库,SAP中常用的修改会计凭证BAPI可能包括BAPI_ACC_DOCUMENT_REV_POST用于冲销,而修改可能需要其他方法。不过用户提到的BAPI_DOCUMENT_CHANGE可能是指某个特定的BAPI,或者可能是一个笔误,比如BAPI_ACC_DOCUMENT_CHECK或BAPI_ACC_DOCUMENT_POST的修改版本。或者,可能用户指的是类似BAPI_SALESORDER_CHANGE(引用[1]和[2])这样的结构,用于销售订单的修改,但会计凭证的修改可能需要不同的BAPI。 查看用户提供的引用,引用[4]中提到使用BAPI_ACC_DOCUMENT_POST来生成会计凭证,而冲销可能需要调整金额字段。引用[5]则讨论了如何生成预制凭证。但是用户现在的问题是关于修改已存在的会计凭证,这可能需要不同的方法,因为通常会计凭证一旦过账后不允许直接修改,而是通过冲销并重新过账。不过可能存在某些字段允许通过BAPI进行修改。 我需要先确定正确的BAPI名称。在SAP中,修改会计凭证通常使用BAPI_ACC_DOCUMENT_REV_POST进行冲销,或者可能需要使用其他BAPI。可能用户提到的BAPI_DOCUMENT_CHANGE实际上是BAPI_ACC_DOCUMENT_CHECK或另一个BAPI。假设用户确实是指修改凭证,可能需要检查是否存在这样的BAPI,或者是否必须通过其他方式实现。 假设存在BAPI_DOCUMENT_CHANGE(可能用户指的是BAPI_ACC_DOCUMENT_CHANGE,但需要验证),或者可能需要通过组合不同的BAPI来实现。例如,先读取凭证数据,修改必要字段,然后再次保存。但通常会计凭证的修改权限有限,可能需要冲销后重新创建。 根据引用[4],BAPI_ACC_DOCUMENT_POST用于过账凭证,而冲销可能需要调整金额等字段。如果用户希望修改已存在的凭证,可能需要冲销原凭证并创建新凭证。但用户明确询问的是更改现有凭证,所以可能需要确认是否有BAPI支持这一点。 可能用户混淆了BAPI的名称,例如销售订单的修改使用BAPI_SALESORDER_CHANGE(引用[1]和[2]),而会计凭证的修改可能需要不同的BAPI。或者,可能会计凭证的修改需要通过增强或特定的配置才能实现。 另外,用户提供的引用中没有直接提到BAPI_DOCUMENT_CHANGE,但引用[3]提到BAPI_ACC_DOCUMENT_POST在过账时缺少某些字段,引用[4]和[5]讨论了使用BAPI时的注意事项。因此,可能用户需要了解如何通过现有的BAPI来修改凭证,或者可能需要使用其他方法。 在这种情况下,正确的步骤可能是: 1. 确认会计凭证是否允许修改,通常冲销更常见。 2. 如果允许修改,查找正确的BAPI,例如BAPI_ACC_DOCUMENT_REV_POST用于冲销,或者是否有其他BAPI允许修改。 3. 如果必须修改,可能需要使用BAPI_ACC_DOCUMENT_POST重新过账,并调整参数。 4. 或者,使用BAPI_ACC_DOCUMENT_CHECK进行数据检查,再结合其他方法。 但根据我的知识,SAP中的会计凭证一旦过账后通常不能直接修改,只能冲销。因此,正确的方法可能是冲销原凭证,然后创建新凭证。这可能涉及调用冲销BAPI,再调用POST创建新凭证。 然而,用户的问题是明确关于如何通过BAPI_DOCUMENT_CHANGE来修改,所以需要明确这个BAPI是否存在。假设用户可能有误,正确的方法应该是冲销并重新过账,或者是否有其他方式。 或者,可能用户指的是修改预制凭证(尚未过账凭证),这时候可以使用BAPI_ACC_DOCUMENT_POST的增强来修改预制凭证的状态(如引用[5]所示),但修改凭证内容可能需要其他参数。 综上所述,可能的回答步骤: - 说明会计凭证修改的常规方法(冲销并重新过账- 提供使用BAPI_ACC_DOCUMENT_REV_POST冲销凭证的示例 -使用BAPI_ACC_DOCUMENT_POST创建新凭证 - 或者,如果确实存在修改的BAPI,提供示例代码 但根据用户提供的引用和常规SAP知识,修改已过账会计凭证的字段通常不可行,需通过冲销处理。因此,回答应强调冲销和重新过账程,并可能提供代码示例。 此外,用户可能需要示例代码,因此需要构造一个示例,展示如何冲销凭证并创建新的。或者,如果用户确实需要修改预制凭证,可以展示如何通过BAPI_ACC_DOCUMENT_POST和状态字段来修改预制凭证。 可能需要参考引用[5],其中提到在增强中设置c_acchd-status_new为2来生成预制凭证,因此修改预制凭证可能需要再次调用BAPI并更新字段。 因此,回答的结构可能是: 1. 说明会计凭证修改的限制,通常需要冲销 2. 提供冲销凭证BAPI示例(如BAPI_ACC_DOCUMENT_REV_POST) 3. 创建新凭证的示例 4. 如果是修改预制凭证,说明如何通过BAPI_ACC_DOCUMENT_POST更新状态或字段 根据用户问题中的引用,特别是引用[4]和[5],可能用户希望了解如何修改预制凭证,或者如何调整金额等字段。 现在需要整合这些信息,形成一个清晰的步骤说明,并提供代码示例。例如,冲销凭证的步骤,然后创建新凭证的代码。或者,修改预制凭证的代码示例。 可能需要查阅SAP官方文档或相关资料确认正确的BAPI和参数。但根据现有引用和知识,可以构造一个合理的回答。</think>以下是关于如何通过SAP BAPI接口修改会计凭证的步骤说明及示例: ### 步骤说明 1. **会计凭证修改限制** SAP标准会计凭证(已过账)**不允许直接修改字段**,通常需要通过**冲销+重新过账**实现[^4]。若需调整字段,需按以下程操作: - 使用`BAPI_ACC_DOCUMENT_REV_POST`冲销原凭证 - 通过`BAPI_ACC_DOCUMENT_POST`重新过账正确凭证 2. **修改预制凭证(未过账)** 若凭证处于预制状态(未正式过账),可通过以下步骤修改: - 使用`BAPI_ACC_DOCUMENT_POST`重新提交修改后的数据 - 通过增强设置凭证状态为预制(`status_new = 2`)[^5] --- ### 示例代码 #### 1. 冲销原凭证 ```abap DATA: lv_reversal_reason TYPE BAPIACREV-REASON_REV. DATA: lt_return TYPE TABLE OF BAPIRET2. lv_reversal_reason = '01'. "冲销原因码 CALL FUNCTION 'BAPI_ACC_DOCUMENT_REV_POST' EXPORTING reversal_reason = lv_reversal_reason businessobject = 'RFBU' objectid = '凭证编号' fiscalyear = '会计年度' TABLES return = lt_return. IF lt_return[] IS INITIAL. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ENDIF. ``` #### 2. 重新过账凭证 ```abap DATA: lt_document TYPE TABLE OF BAPIACAP09, lt_return TYPE TABLE OF BAPIRET2. APPEND VALUE #( obj_type = 'BKPFF' obj_key = '凭证号' obj_sys = '系统ID' ) TO lt_document. CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST' TABLES documentheader = lt_document return = lt_return. IF lt_return[] IS INITIAL. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ENDIF. ``` --- ### 关键注意事项 1. **金额平衡**:所有行项目金额总和必须为$0$,借贷方需严格匹配[^4]。 2. **字段增强**:若需修改标准BAPI未提供的字段,需通过增强实现(如创建结构扩展)[^4]。 3. **状态控制**:预制凭证通过`c_acchd-status_new = 2`设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值