T-CODE:GGB1---所有FICO的增强
T-CODE:OBBH---会计凭证增强--注意点,FB08,FBRA等冲销的程序基本不会走OBBH,冲销的替代一般在第四代增强里面T-CODE:FIBF
会计凭证的增强:一般情况所有的正向产生的会计凭证都可以在这里做增强,一些自开发的功能在生成凭证时,入参都在一个大结构里面,可以通过出口的方式把参数传入到这里。
1、抬头 应用场景--主要是BKPF抬头上面的替代
2、行项目 应用场景--会计凭证行上面每一行去review,只能取到这一行的数据+凭证抬头,出口可 以取逻辑.
具体事例:自开发清账程序通过FB05录屏的方式实现时,应收账款科目,利润中心BSEG-PRCTR和开票凭证BSEG-VBELN字段录不到(F-02做的时候有没有)SAP回复:1、对于AP和AR来说,利润中心BSEG-PRCTR不可输入,除非启用凭证分割,这个是SAP标准的配置(可以增强,但是不可以输入)。2、开票凭证BSEG-VBELN系统不允许增强(问题升级,不允许增强),现在业务需求,需要把原凭证的利润中心和开票凭证传到新的行项目里面。
实现方式:1、利润中心通过OBBH替代出口实现,
2、开票凭证通过,1、把GB01表里面的字段放出来--放出来代表可增强,放出来后再通过OBBH替代出口实现
系统层面:1、利润中心处理
系统层面:2、开票凭证处理
ABAP-会计凭证替代字段GB01设置
1.GB01表字段设置
SM30:VWTYGB01
找到需要替代的字段,设置bexclude勾选为空
2.用SE38运行程序 RGUGBR00 激活
字段启用后,其余走正常的OBBH替代了
3、完全凭证 应用场景--整个会计凭证做完后再review,比如某一行凭证利润中心是空的,可以跨行取其他行的利润中心。
第四代增强:T-CODE:FIBF
SE37可以把功能模块复制出来,进去看看
像我们公司,
1、FB08,FBRA冲销的抬头文本增强写在这里
2、采购发票过账冲销的暂估科目的增强也写在这里
FUNCTION zsample_process_00001120.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(I_BKDF) TYPE BKDF OPTIONAL
*" TABLES
*" T_BKPF STRUCTURE BKPF
*" T_BSEG STRUCTURE BSEG
*" T_BKPFSUB STRUCTURE BKPF_SUBST
*" T_BSEGSUB STRUCTURE BSEG_SUBST
*" T_BSEC STRUCTURE BSEC OPTIONAL
*" CHANGING
*" REFERENCE(I_BKDFSUB) TYPE BKDF_SUBST OPTIONAL
*"----------------------------------------------------------------------
"add by yqs 2022.5.7 --begin
DATA:lv_tabix TYPE sytabix.
LOOP AT t_bkpf INTO DATA(lw_bkpf) WHERE belnr(1) EQ '$'.
lv_tabix = sy-tabix.
IF lw_bkpf-blart = 'AB' AND lw_bkpf-tcode = 'FB08' AND lw_bkpf-xblnr = 'ZFI065'.
READ TABLE t_bkpfsub ASSIGNING FIELD-SYMBOL(<fs_bkpfsub1>) INDEX lv_tabix.
IF sy-subrc EQ 0.
<fs_bkpfsub1>-bktxt = '冲销' && <fs_bkpfsub1>-bktxt.
ENDIF.
ENDIF.
CLEAR:lw_bkpf.
ENDLOOP.
"add by yqs 2022.5.7 --end
DATA: lv_xblnr_alt TYPE xblnr_alt,
ld_index TYPE i,
ld_flg TYPE xfld.
DATA: lr_hkont TYPE RANGE OF hkont.
lr_hkont = VALUE #( sign = 'I' option = 'CP' ( low = '220201*' )
( low = '220202*' )
( low = '220203*' )
( low = '220204*' )
( low = '220296*' )
( low = '140*' )
( low = '2241020400' ) ).
FIELD-SYMBOLS: <f_bsegsub> TYPE bseg_subst.
IMPORT xblnr_alt = ld_flg FROM MEMORY ID 'BAPIPOST'.
FREE MEMORY ID 'BAPIPOST'.
IF ld_flg EQ 'X'.
LOOP AT t_bkpf WHERE belnr(1) EQ '$'.
ld_index = sy-tabix.
CLEAR lv_xblnr_alt.
IF t_bkpf-xblnr_alt IS INITIAL.
CALL FUNCTION 'ZFI_GET_XBLNR_CN'
EXPORTING
i_bukrs = t_bkpf-bukrs
i_blart = t_bkpf-blart
i_budat = t_bkpf-budat
IMPORTING
e_xblnr_alt = lv_xblnr_alt.
IF lv_xblnr_alt NE space.
READ TABLE t_bkpfsub ASSIGNING FIELD-SYMBOL(<fs_bkpfsub>) INDEX ld_index.
<fs_bkpfsub>-xblnr_alt = lv_xblnr_alt.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
*采购发票过账增强 MIRO,MRKO,MIR7,MR8M
*复制供应商科目到应付暂估科目行
LOOP AT t_bkpf WHERE glvor EQ 'RMRP'
.
LOOP AT t_bseg WHERE bukrs EQ t_bkpf-bukrs
AND belnr EQ t_bkpf-belnr
AND gjahr EQ t_bkpf-gjahr
AND koart EQ 'K'
AND hkont IN lr_hkont
AND lifnr IS NOT INITIAL
.
LOOP AT t_bseg INTO DATA(lw_bseg)
WHERE bukrs EQ t_bkpf-bukrs
AND belnr EQ t_bkpf-belnr
AND gjahr EQ t_bkpf-gjahr
AND hkont(6) EQ '220297' "应付暂估科目
AND zz001 IS INITIAL.
ld_index = sy-tabix.
READ TABLE t_bsegsub ASSIGNING <f_bsegsub> INDEX ld_index.
IF sy-subrc EQ 0.
MOVE-CORRESPONDING lw_bseg TO <f_bsegsub>.
<f_bsegsub>-zz001 = t_bseg-lifnr.
ENDIF.
ENDLOOP.
EXIT.
ENDLOOP.
ENDLOOP.
* Do Substitution by Rule
* TCODE to Maintan Rules: ZFI119,ZFI120
DATA: ld_str TYPE string VALUE '(SAPMF05L)XBSEG[]',
lt_xbseg TYPE fdc_t_fbseg.
FIELD-SYMBOLS: <f_xbseg> TYPE fdc_t_fbseg.
ASSIGN (ld_str) TO <f_xbseg> .
IF sy-subrc EQ 0.
PERFORM frm_do_rule TABLES t_bkpf t_bseg t_bkpfsub t_bsegsub <f_xbseg>.
ELSE.
PERFORM frm_do_rule TABLES t_bkpf t_bseg t_bkpfsub t_bsegsub lt_xbseg.
ENDIF.
ENDFUNCTION.