FB03查看凭证
对于特殊总账类型为W的,双击进入可见出票人出票行 票据号等信息
这些数据是保存在bsed表的。
而 BAPI_ACC_DOCUMENT_POST 并没有提供这些字段。所以需要走增强。
首先肯定是想到的extension2 字段
然后在BADI ACC_DOCUMENT里赋值
发现这里面也没有票据号信息,至于页数啊之类的信息
然后我有找其他增强,出口之类的,没找到合适的。
后来索性直接在源码里查找BSED
最后发现都不能用……
查找SAP SCN 等,也没有特别好的解决方案。
SCN上也有人提出过这个问题,没解决
https://archive.sap.com/discussions/thread/1461635
最后的解决办法:隐士增强+BADI
增强位置1: FI_DOCUMENT_CHECK
一进来,先检查是否是W类型特殊总账(用get函数获取,set操作在 调用bapi的时候 赋值)
如果是,把char_w 改为U
在函数最后,改回去
增强位置2:LFACIF5D
form最后的地方
把exten 数据传过来,传给bsed数据
这里特殊声明下:
因为这个demo只涉及特殊总账类型为W的,其他特殊总账不考虑BSED,
这个得根据所在项目业务来确定,如果除了W还有 S或者其他等类型的,再多加个判断即可。
增强结构比如下面字段
POSNR |
POSNR_ACC |
NUMC |
10 |
0 |
会计凭证行项目编号 |
BSCHL |
BSCHL |
CHAR |
2 |
0 |
记帐代码 |
SHKZG |
SHKZG |
CHAR |
1 |
0 |
借方/贷方标识 |
NUMPG |
J_1ANOPG |
NUMC |
3 |
0 |
发票的页数 |
RSTGR |
RSTGR |
CHAR |
3 |
0 |
现金流量事务代码 |
WDATE |
WDATE |
DATS |
8 |
0 |
汇票签发日 |
WBANK |
WBANK |
CHAR |
60 |
0 |
票据号 |
WLZBP |
WLZBP |
CHAR |
60 |
0 |
出票行 |
XNEGP |
XNEGP |
CHAR |
1 |
0 |
标识: 反记帐 |
KKBER |
KKBER |
CHAR |
4 |
0 |
信贷控制范围 |
ZLSCH |
SCHZW_BSEG |
CHAR |
1 |
0 |
付款方式 |
WNAME |
WNAME |
汇票受票人的名字 |
|||
WBZOG |
WBZOG |
汇票出票人 |
因为有些字段不是bsed的,所以还是需要
然后在BADI
调用BAPI使用 extension2
最后我说下,不要使用ABAP Memory传值, 维护起来太麻烦了
接受的人都不知道你哪儿存进去的,也不知哪儿取出来的。
所以用set get函数,只要看到一个,就可以根据另一个 定位到哪儿调用了。