您的位置:首页 > 其它

BAPI_ACC_DOCUMENT_POST更新BSED数据增强

2021-02-14 20:15 866 查看

FB03查看凭证

对于特殊总账类型为W的,双击进入可见出票人出票行 票据号等信息

这些数据是保存在bsed表的。


而 BAPI_ACC_DOCUMENT_POST  并没有提供这些字段。所以需要走增强。


首先肯定是想到的extension2  字段


    "创建凭证

    CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'

      EXPORTING

        documentheader    = gs_bkpf

      TABLES

        accountgl         = gt_account

        accountreceivable = gt_customer

        accountpayable    = gt_vendor

        currencyamount    = gt_currency

        return            = gt_return

        extension2        = gt_etx. 



然后在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  ACC_DOCUMENT里赋值

调用BAPI使用 extension2 

CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'

      EXPORTING

        documentheader    = gs_bkpf

      TABLES

        accountgl         = gt_account

        accountreceivable = gt_customer

        accountpayable    = gt_vendor

        currencyamount    = gt_currency

        return            = gt_return

        extension2        = gt_etx.


最后我说下,不要使用ABAP Memory传值, 维护起来太麻烦了

接受的人都不知道你哪儿存进去的,也不知哪儿取出来的。

所以用set get函数,只要看到一个,就可以根据另一个 定位到哪儿调用了。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: