会计凭证过账BAPI_ACC_DOCUMENT_POST介绍

在SAP中通过SE37查看函数模块BAPI_ACC_DOCUMENT_POST时,其界面中的属性、导入、导出、正在更改、表、例外、源代码等部分对应不同的技术功能和业务逻辑。以下结合实际应用场景和技术细节进行详细解释:

一、属性(Attributes)

  • 功能:定义函数模块的基础信息和技术特性。
  • 关键内容
    • 基础属性:包括函数名称(如BAPI_ACC_DOCUMENT_POST)、描述(“过账会计凭证”)、创建者、创建日期等。
    • 技术属性
      • RFC可调用:勾选后允许通过远程函数调用(RFC)跨系统调用。
      • 更新模块:若勾选,函数需配合COMMIT WORK异步执行数据库操作。
      • 权限检查:控制是否需要特定权限才能调用。
    • 业务属性
      • BAPI类型:标记为“BAPI”,表示其遵循SAP业务对象接口标准。
      • 对象类型:如BKPFF(会计凭证),关联业务对象仓库(BOR)中的对象定义。

二、导入(Import)

  • 功能:接收调用方传递的输入参数,用于指定业务操作的核心条件。
  • 典型参数
<think>嗯,用户这次聚焦在SAP清账凭证的创建技术上,看来是个有实际开发需求的ABAP顾问。从ta追问的精确度看,应该已经看过BAPI标准文档但需要场景化指导。 用户隐藏的真实需求可能是避免清账凭证过账失败——这在生产系统可是要命的事。上次我提到业务场景关联性时,ta立刻锁定了“部分清账”场景,说明正在处理应付账款或应收账款模块的实际问题。 需要特别注意三点:一是清账凭证相比普通凭证多了特别总账标识和分配字段的特殊处理;二是用户没明说但肯定关心的冲销场景;三是测试环节的沙盒策略。代码示例里得体现这些细节。 上次给的引用[1]提到“额外编写逻辑”果然被用户注意到了,这次要具体展开这个点。比如清账金额的校验逻辑,如果会计部门要求部分清账不超过原凭证金额的80%,这个业务规则就要在CALL BAPI之前用IF语句实现。 示例代码准备用FBU5清账模型,这是SAP推荐的标准做法。但得提醒用户注意公司代码的付款条件配置差异,有些企业会启用特殊清账码。对了,代码里CLEARING字段的初始值容易漏写,这个坑得标注出来。 用户可能马上会追问的问题要预判:比如如何处理多币种清账的汇率差异,或者清账凭证冲销时关联凭证的处理逻辑。这些在注意事项里埋个伏笔比较稳妥。 </think>以下为使用`BAPI_ACC_DOCUMENT_POST`创建清账凭证的详细指南,包含核心参数配置、注意事项及ABAP示例代码: --- ### 一、清账凭证核心参数设置 1. **凭证头数据 (`DOCUMENTHEADER`)** ```abap documentheader-obj_type = 'BKPFF' " 凭证类型(如清账凭证需用特殊类型) documentheader-bus_act = 'RFBU' " 业务场景:清账 documentheader-username = sy-uname " 当前用户 ``` 2. **科目行项目 (`ACCOUNTGL` / `ACCOUNTRECEIVABLE`)** ```abap " 原未清项行(需被清账的科目) accountgl-itemno_acc = '1' accountgl-gl_account = '11310001' " 应收账款科目 accountgl-alloc_nmbr = 'INV202308001' " 原凭证分配号 accountgl-item_text = 'Clearing for INV202308001' " 清账行(现金/银行科目) accountgl-itemno_acc = '2' accountgl-gl_account = '10020001' " 银行存款科目 accountgl-amount = '1000.00' " 清账金额(需等于原未清项) accountgl-currency = 'USD' ``` 3. **清账标识 (`CLEARINGDATA`)** ```abap clearingdata-itemno_acc = '1' " 指向被清账的行项目 clearingdata-clear_key = 'A' " 标准清账标识 clearingdata-clearing_date = sy-datum " 清账日期 ``` --- ### 二、关键注意事项 1. **未清项匹配** - 必须通过`alloc_nmbr`(分配号)或`REF_DOC_NO`(参考凭证)精准关联原未清项[^1] - 清账金额 **必须等于** 原未清项余额,否则报错`F5 515` 2. **凭证类型限制** - 仅支持配置为“清账允许”的凭证类型(OBVH中配置) - 常用类型:`DA`(客户收款)、`DZ`(供应商付款) 3. **过账日期逻辑** - `DOCUMENTHEADER-PSTNG_DATE`需 ≥ 原凭证过账日期 - 跨期间清账需确保会计期间已打开 4. **货币一致性** - 原凭证与清账凭证货币必须相同 - 外币清账需额外维护`CLEARINGDATA-EXCHANGE_RATE` --- ### 三、ABAP示例代码 ```abap DATA: ls_header TYPE bapiache09, lt_account TYPE TABLE OF bapiacgl09, lt_clear TYPE TABLE OF bapiactx09, lt_return TYPE TABLE OF bapiret2. " 1. 凭证头配置 ls_header-obj_type = 'BKPFF'. ls_header-bus_act = 'RFBU'. " 清账业务标识 ls_header-username = sy-uname. ls_header-pstng_date = sy-datum. " 过账日期 " 2. 被清账行(原应收账款) APPEND VALUE #( itemno_acc = '1' gl_account = '11310001' alloc_nmbr = 'INV202308001' amount = '-1000.00' " 负号表示减少未清项 currency = 'USD' ) TO lt_account. " 3. 清账行(银行存款) APPEND VALUE #( itemno_acc = '2' gl_account = '10020001' amount = '1000.00' currency = 'USD' ) TO lt_account. " 4. 清账标识绑定 APPEND VALUE #( itemno_acc = '1' clearing_key = 'A' " 标准清账 clearing_date = sy-datum ) TO lt_clear. " 5. 调用BAPI CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST' EXPORTING documentheader = ls_header TABLES accountgl = lt_account clearing = lt_clear return = lt_return. " 6. 错误处理 IF line_exists( lt_return[ type = 'E' ] ). ROLLBACK WORK. " 打印错误日志 (lt_return) ELSE. COMMIT WORK AND WAIT. " 获取凭证号: lt_return[ id = 'RW' number = '609' ] ENDIF. ``` --- ### 四、常见错误处理 | **错误代码** | **原因** | **解决方案** | |--------------|---------------------------|---------------------------| | `F5 515` | 清账金额 ≠ 未清项余额 | 检查原凭证余额 `FBL3N` | | `F5 018` | 凭证类型未启用清账 | 检查OBVH配置 | | `F5 226` | 分配号(`alloc_nmbr`)不匹配 | 核对原凭证分配字段 | | `F5 140` | 会计期间未打开 | `OB52`打开会计期间 | > ⚠️ **关键测试建议**: > 1. 先用测试公司代码调用BAPI(`documentheader-testrun = 'X'`) > 2. 执行`FBTA`检查清账凭证关联状态[^1] > 3. 事务码`FB03`校验凭证行项目清账标识 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼儿外面下雨啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值