Abap 银行对账单对账报告(SAP)
我被要求在SAP中创建银行对账单分析。要求如下:Abap 银行对账单对账报告(SAP),abap,sap-erp,sap-r3,Abap,Sap Erp,Sap R3,我被要求在SAP中创建银行对账单分析。要求如下: 选择日期范围内银行总账账户上的所有变动 查找清算公告 递归地追溯后续清算,直到发现损益表或未清算过账 报告应包括步骤3中的记录列表 例如: 已付款债权人发票 银行对账单 借方银行付款结算账户/贷方银行账户 付款建议 借方债权人账户/贷方银行付款清算账户 债权人发票 借方成本损益账户、增值税账户/贷方账户 已收到债务人发票的付款 银行对账单 借方银行账户/贷方债务人付款清算账户 债务人清算 借方清算账户/贷方借方账户 债务人发票 借方账户/贷方损益
HKONT
和BLDAT
上的表BSIS
中按银行总账代码获取所有银行对账单
然后使用上一次查询中的BELNR
、GJAHR
和BUZEI
从表BSAS
过账清算凭证(AUGBL
和AUGDT
)
然后使用上一次查询中的AUGBL
和AUGDT
再次从BSAS获取发票凭证(BELNR
、GJAHR
和BUZEI
)
最后,使用表BSEG中的BELNR
、GJAHR
和BUZEI
(不包括债务人账户)在发票上计算损益和增值税
我的代码可以很好地处理上述简单场景。但如果有更复杂的场景,比如首期付款、信用卡、银行手续费等,我总是会丢失一些记录,或者最终陷入无休止的循环
通过查看表BSEG
,我找到了另外两个字段AUGGJ
和AGZEI
,它们以某种方式关联了已清除文档的行。但我无法确定其中的逻辑
例如,我在BSEG
表中有以下记录:
+-------+------------+-------+------------+------------+-------+-------+-------+-------+-----------+----------+
| GJAHR | BELNR | ZUONR | AUGDT | AUGBL | KOART | AUGGJ | AGZEI | SHKZG | DBRTR | WRBTR |
+-------+------------+-------+------------+------------+-------+-------+-------+-------+-----------+----------+
| 2015 | 200000383 | 1 | 07.01.2015 | 200000383 | S | 2015 | 1 | H | 37.928,55 | 1.363,89 |
| 2015 | 200000383 | 2 | 07.01.2015 | 200000383 | S | 2015 | 4 | S | 37.670,64 | 1.363,89 |
| 2015 | 200000383 | 3 | | | S | | 0 | S | 148,80 | 0,00 |
| 2015 | 200000383 | 4 | | | S | | 0 | S | 109,11 | 0,00 |
| 2015 | 3100000583 | 1 | 07.01.2015 | 200000383 | S | 2015 | 1 | S | 51.522,00 | 1.860,00 |
| 2015 | 3100000583 | 2 | | | S | | 0 | H | 51.522,00 | 1.860,00 |
| 2015 | 3100000585 | 1 | 07.01.2015 | 200000383 | S | 2015 | 1 | S | 37.779,75 | 1.363,89 |
| 2015 | 3100000585 | 2 | | | S | | 0 | H | 37.779,75 | 1.363,89 |
| 2015 | 6000000227 | 1 | 07.01.2015 | 6000000227 | K | 2015 | 2 | S | 51.373,20 | 1.860,00 |
| 2015 | 6000000227 | 2 | 07.01.2015 | 200000383 | S | 2015 | 1 | H | 51.373,20 | 1.860,00 |
| 2015 | 6000000228 | 1 | 07.01.2015 | 6000000228 | K | 2015 | 2 | S | 37.670,64 | 1.363,89 |
| 2015 | 6000000228 | 2 | 07.01.2015 | 200000383 | S | 2015 | 4 | H | 37.670,64 | 1.363,89 |
+-------+------------+-------+------------+------------+-------+-------+-------+-------+-----------+----------+
以及BSAS
表中的以下内容
+------------+-----------+-------+------------+-------+-------+-----------+----------+
| AUGDT | AUGBL | GJAHR | BELNR | ZUONR | SHKZG | DMBTR | WRBTR |
+------------+-----------+-------+------------+-------+-------+-----------+----------+
| 07.01.2015 | 200000383 | 2015 | 200000383 | 1 | H | 37.928,55 | 1.363,89 |
| 07.01.2015 | 200000383 | 2015 | 200000383 | 2 | S | 37.670,64 | 1.363,89 |
| 07.01.2015 | 200000383 | 2015 | 3100000583 | 1 | S | 51.522,00 | 1.860,00 |
| 07.01.2015 | 200000383 | 2015 | 3100000585 | 1 | S | 37.779,75 | 1.363,89 |
| 07.01.2015 | 200000383 | 2015 | 6000000227 | 2 | H | 51.373,20 | 1.860,00 |
| 07.01.2015 | 200000383 | 2015 | 6000000228 | 2 | H | 37.670,64 | 1.363,89 |
+------------+-----------+-------+------------+-------+-------+-----------+----------+
行2015/3100000585/2
(GJAHR/BELNR/BUZEI
)是银行对账单过账。目标记账为2015/6000000227/1
-自动支付和'2015/200000383/3'-汇率差异
我通过了解会计逻辑和比较DMBTR和WRBTR了解目标过账。但我无法发现如何找到链接程序
如果我使用前面描述的简单算法,我会从BSEG
抵消银行对账单中得到2015/3100000583/1
。然后从BSEG
中的同一行中选择AUGBL
200000383
。在表BSAS
中,键为AUGDT
和AUGBL
不包括原始行2015/3100000583/1
我得到了上面第二个表中的所有行,即5条记录,包括2015/3100000585/1
和2015/6000000228/2
,用于不同的付款
我可以尝试以某种方式排除发布
2015/60000002282/2
,因为它具有不同的AGZEI
=4
,而不是1
。但是,如何排除2015/200000383/4
,同时保持2015/200000383/3
为AGZEI
,因为两者都是0
?所以,向我们展示您迄今为止编写的代码,并概述您面临的确切问题。你的问题太宽泛了