SAP替代

编程入门 行业动态 更新时间:2024-10-07 07:28:04

<a href=https://www.elefans.com/category/jswz/34/1770129.html style=SAP替代"/>

SAP替代

1.替代增强是是替代BSEG和BKPF字段值的技术。有些字段BSEG会生效ACDOCA没生效是正常的

2.SD、MM不进FI替代的情况,可以通过BADI AC_DOCUMENT(不能替代科目,不建议在后面做隐式增强替代科目),或BTE实现(不一定有合适的事件和可修改的字段),通过保存的增强改原始单据(DN等)上面的科目是最好的。替代bseg-paobjnr 获利段如果不行,可以尝试在前续单据也清获利段,比如交货单增强。注:这个BADI FB01不触发的:

Accounting interface is used for postings from external applications like MM,SD,CRM. And BADI: AC_DOCUMENT only works for accounting interface postings. That is, the posting from FI transaction codes( such as FB01,FBV1, ENJOY transactions like FB60) have nothing to do with the accounting interface, and the BADI is not processed.

3.校验在替代之后触发。如果有派生,回车时则是派生-替代-校验

4.可替代的字段在SM30:VWTYGB01维护,如果排除了,obbh配置就看不到,且增强里改了无效。放出来之后要用RGUGBR00 激活一下

5.替代BSEG,但是ACDOCA没有成功的场景,需要增强BADI_FINS_ACDOC_BSEG_FIELDS

凭证抬头替代和凭证行项目替代在回车触发,完全凭证替代在保存是触发。能触发抬头和行项目替代,不触发完全凭证替代的情况,可以直接在SAPLFACI的form SUBSTITUTION做一个隐式增强改ACCIT_FI

6.ACDOCA替代功能范围FKBER不成功,需要在替代点006做

7.ACDOCA替代成本中心不成功,原因是派生有一段标准的移动成本中心,派生在替代之前把成本中心复制到了COPA_KOSTL,然后ACDOCA带过来了

步骤

  1. copy程序添加子程序(form的title输入了值之后替代里才能配进去
  2. 使用tcode obbh,创建步骤
  3. SM30 VWTYGB01去掉字段排除的X才能替代
  4. gcx2 查看应用程序对应的区域,或者直接看报错

  1. 配置不自动产生请求,

1.在oobh 选中行,表视图-传输.

2.双击进替代传输替代,SCC1传(不用释放任务)

  1. 执行RGUGBR00 ,全选激活,注意prd也要激活。(比如放出字段就要激活)

替代调用点

2 行项目

传一个字段

form u902 using uv_hkont.

3 完全凭证

传内表

form u903 changing bool_data  type gb002_015.

复制程序RGGBS000到ZRGGBS000,加入代码

  exits-name  = 'U900'.

  exits-param = c_exit_param_none.

  exits-title = text-900.             

  append exits.

form u900 .

*替换成本中心

  if bkpf-awtyp = 'MKPF' and bseg-kostl = '1000020000'.

*    select single lips~vkgrp

*      into @data(lv_vkgrp)

*      from lips

*      inner join mseg on lips~vbeln = mseg~vbeln_im and lips~posnr = mseg~vbelp_im

*      where mseg~mblnr = @bkpf-awkey(10) and mseg~gjahr = @bkpf-awkey+10(4).

    select single lips~vkgrp

    into @data(lv_vkgrp)

          from lips

          where lips~vbeln = @bkpf-xblnr.

    if sy-subrc = 0.

      select single setlinet~descript

        into @data(lv_descript)

        from setleaf

        inner join setlinet on setleaf~setclass = setlinet~setclass and setleaf~subclass = setlinet~subclass and setleaf~setname = setlinet~setname and setleaf~lineid = setlinet~lineid

        where setlinet~setname = 'ZLG1_FICO_SALESGR' and setlinet~setclass = '0000' and valfrom = @lv_vkgrp.

      bseg-kostl = lv_descript.

    endif.

  endif.

endform.

标准程序逻辑

先进抬头替代再进item替代

debug

SE37

FI_SUBSTITUTION_HEADER 凭证抬头

FI_SUBSTITUTION_ITEM 行项目

FI_SUBSTITUTION_DOC 完全凭证 回车不进,保存进,进抬头和行替代但不一一定进完全替代(比如MIRO),这个note有解释,

但是有些字段还是没地方替代,直接在SAPLFACIform SUBSTITUTION做一个隐式增强改ACCIT_FI即可

如DEBUG ITEM时

先call fm G_VSR_SUBSTITUTION_CALL

然后

  PERFORM e15_substitution_call IN PROGRAM (g_boolpool)

             USING substitution valuser

             CHANGING classid b_performed.

在form e15_substitution_call 里调用obbh配置的替代,如替代名 SX-01

PERFORM (subst_name) IN PROGRAM (sy-repid) IF FOUND.

subst_name 的值为 SUB_SX-01

所以debug时直接debug程序GBTIMFI0FORM SUB_SX-01 就行了

如果是co的替代,是GBTIMCO0

会perform obbh配置的那个区域(区域名作为程序名,自动生成的form)

先根据配置的先决条件检查,COND为T时会进入替代代码

  G_STEP = '002'.

*       步骤:002                                                        *

*       替换成本科目                                                        *

  PERFORM SUBCON_3SX-01##002

              CHANGING

                COND.

  IF COND = B_TRUE .

    PERFORM U902(ZRGGBS000) IF FOUND

                USING

                  BSEG-HKONT.

当凭证金额为零时不进替代

原因,金额为零会给 KSTAT赋值U

为U的凭证行不进这个内表,在 FI_DOCUMENT_CHECK 直接跳出了,不进后面替代了

配置自动生成的替代

在程序GBTIMFI0里

trace

OBBH - 附加 - 激活跟踪

FB01进去做凭证回车就能看到跟踪了

更多推荐

SAP替代

本文发布于:2024-02-19 17:19:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1765279.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:SAP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!