首页 > SAP > ABAP > 会计凭证的更改记录与EDI
2020
05-18

会计凭证的更改记录与EDI

今天有一个需求,要要求当会计凭证进行增删改时,把会计凭证的内容记录到自定义表中,以便用后其它BW抽取,

一开始想到的当然是SAP标准记录的更改记录表:CDHDR,CDPOS表了,测试发现对会计凭证BKPF,BSEG的修改(增加)都会记录表CDHDR,CDPOS中,所以最简单的做法就是在写这两表时做增强,把数据保存到需要的自定义表中,

1.打开CDHDR表发现表中更改的对像保为BELEG。

2.打开事务码:SCDO,查找BELEG,并查看“生成信息”,可看到使用的处理函数为:BELEG_WRITE_DOCUMENT。

3,SE37打开此函数在函数的结尾处增加Implicit Enhancement.

会计凭证的更改记录与EDI - 第1张  | 优通SAP

4.在其中写入变量时的处理代码就行了,比如保存到自义表中。

但里不好判断修改的是那个字段,并且使用Implicit Enhancement.总感觉不太完美。

后来测试了一下,只是觉得要增加配置,所以后面的功能没正式使用,但测试是正常的。

1.BD50,激活信息类型ACC_DOCUMENT(默认可能没有这个,没有的话,增加并设置为活动)。

2.DB52,增加信息类型ACC_DOCUMENT,所要关注的相关字段。

会计凭证的更改记录与EDI - 第2张  | 优通SAP

3.把以上配置传到开发、测试机。

4.SE19实现BADI增强:BDCP_BEFORE_WRITE,例子中实现为ZBDCP_BEFORE_WRITE,

5.在信息类型的过滤条件中加入ACC_DOCUMENT

会计凭证的更改记录与EDI - 第3张  | 优通SAP

6.实现IF_EX_BDCP_BEFORE_WRITE~FILTER_BDCPV_BEFORE_WRITE,在其中,可以依据FLT_VAL的值 等于ACC_DOCUMENT,来判断此时是修改的会计凭证,然后就可以进行数据处理了。

7.此时,在修改(创建)凭证时就可以判断出修改的是那一个字段了,

但此时会计凭证清账时,发现并不会触发此增强,所以可以从第一步中考虑再增加一个信息类型其它的信息类型(可以从表EDIMSGT中找找看,我没仔细找应该是那一个信息类型。)

最后编辑:
作者:yangsen
有需要可在文章留言或者邮件yan252@163.com给我。

留下一个回复

你的email不会被公开。

3 × 1 =