ECCS凭证利润中心增强

标准增强出口

配置路径

Maintain Field Movements

可以直接配置字段赋值,如果需要写代码逻辑配置增强

程序复制RGIFS000和RGIVS000

但是FB01做手工凭证时,此增强中传入的利润中心是空的

Execute Enhancements

FMC10011 EXIT_SAPLFCIN_250,不是每次都进,部分场景才会进来

自开发增强

FAGLFLEXA位置

写入ECMCA的位置

做两个隐式增强

Include LGLINF90

FORM WRITE_TO_DB.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Form WRITE_TO_DB, Start                                                                                                                           A

*$*$-Start: (1)---------------------------------------------------------------------------------$*$*

ENHANCEMENT 1  ZIMPL_ECCS_MOVE_FIELD.    "active version

export TAB_FAGLFLEXA = TAB_FAGLFLEXA[] to MEMORY id 'ZIMPL_ECCS_MOVE_FIELD'.

ENDENHANCEMENT.

Include LFCINF11

FORM POST_ECMCA

     TABLES IT_ECMCA        STRUCTURE ECMCA

            IT_ECMCA_ADD    STRUCTURE RGIAD1

     USING  LD_FLG_upd_task TYPE FC_FLG.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Form POST_ECMCA, Start                                                                                                                            A

*$*$-Start: (1)---------------------------------------------------------------------------------$*$*

ENHANCEMENT 1  ZIMPL_ECCS_MOVE_FIELD_02.    "active version

data:

  lt_tab_faglflexa type table of faglflexa,

  ls_tab_faglflexa type faglflexa,

  ls_ecmca         like line of it_ecmca,

  lv_docln         type n length 6,

  lv_docln_c       type c length 6,

  lv_docln_i       type i,

  lv_buzei         type n length 3,

  begin of ls_del,

    docln type ecmca-docln,

  end of ls_del,

  lt_del like table of ls_del,

  begin of ls_fla_split,

    buzei type faglflexa-buzei,

    count type i,

  end of ls_fla_split,

  lt_fla_split like table of ls_fla_split,

  lv_split,

  lv_waers     type t001-waers,

  lv_hsl type faglflexa-hsl.

import tab_faglflexa = lt_tab_faglflexa from memory id 'ZIMPL_ECCS_MOVE_FIELD'.

*未拆分和新增行:利润中心替代

loop at it_ecmca into ls_ecmca where zzprctr is initial.

  lv_buzei = ls_ecmca-docln. "用buzei匹配,才可以cover凭证拆分的场景

  read table lt_tab_faglflexa into ls_tab_faglflexa with key buzei = lv_buzei rldnr = '0L' rbukrs = ls_ecmca-robukrs ryear = ls_ecmca-ryear.

  if sy-subrc = 0 .

    ls_ecmca-zzprctr = ls_tab_faglflexa-prctr.

    modify it_ecmca from ls_ecmca.

  endif.

endloop.

*PCA 凭证拆分和新增行的场景

*先统计凭证拆分行

read table it_ecmca into ls_ecmca index 1.

loop at lt_tab_faglflexa into ls_tab_faglflexa where rldnr = '0L'  and rbukrs = ls_ecmca-robukrs and ryear = ls_ecmca-ryear and buzei is not initial.

  ls_fla_split-buzei = ls_tab_faglflexa-buzei.

  ls_fla_split-count = 1.

  collect ls_fla_split into lt_fla_split.

endloop.

delete lt_fla_split where count = 1.

loop at lt_tab_faglflexa into ls_tab_faglflexa where rldnr = '0L'  and rbukrs = ls_ecmca-robukrs and ryear = ls_ecmca-ryear.

  clear lv_split.

  if ls_tab_faglflexa-buzei is initial.  "为空是新增行

    read table  it_ecmca into ls_ecmca  index 1.

  else. "不为空判断是否拆分

    read table lt_fla_split into ls_fla_split with key buzei = ls_tab_faglflexa-buzei.

    if  sy-subrc = 0. "拆分才删,如果一一对应则不动

      lv_split = 'X'.

      lv_buzei = ls_tab_faglflexa-buzei.

      lv_docln_c = lv_buzei.

      shift lv_docln_c left deleting leading '0'.

      lv_docln_i = lv_docln_c.

      lv_docln_c = lv_docln_i.

      read table it_ecmca into ls_ecmca with key docln = lv_docln_c. "原凭证行作为模板

      ls_del-docln = ls_ecmca-docln. "删除原凭证行,新增拆分行

      collect ls_del into lt_del.

    endif.

  endif.

  if ls_tab_faglflexa-buzei is initial or lv_split = 'X'. "fla表有改变币种的情况,所以非新增行和拆分行还是不要动

    if lv_waers is initial.

      select single waers

        into lv_waers

        from t001

        where bukrs =  ls_tab_faglflexa-rbukrs.

    endif.

    ls_ecmca-rbunit = ls_tab_faglflexa-rbukrs.

    zcl_lan=>conv_alpha_in( changing cv_field = ls_ecmca-rbunit ).

    ls_ecmca-zzfkber = ls_tab_faglflexa-rfarea.

    ls_ecmca-zzprctr = ls_tab_faglflexa-prctr.

    ls_ecmca-zzrstgr = ls_tab_faglflexa-zzrstgr.

    ls_ecmca-ritem = ls_tab_faglflexa-racct.

    ls_ecmca-rbuptr = ls_tab_faglflexa-rassc.

    zcl_lan=>CONV_ALPHA_IN( changing CV_FIELD = ls_ecmca-rbuptr ) .

    ls_ecmca-tsl = ls_tab_faglflexa-tsl.

    ls_ecmca-hsl = ls_tab_faglflexa-hsl.

    if lv_waers = 'CNY'. "如果Local currency = CNY 的话,group currency 复制local currency的值

      ls_ecmca-ksl = ls_tab_faglflexa-hsl.

    else.

      ls_ecmca-ksl = ls_tab_faglflexa-ksl.

    endif.

    append ls_ecmca to it_ecmca. "存在fa表有buzei,ecmca表没有的情况,不新增

  endif.

endloop.

*拆分行删除原行

loop at it_ecmca into ls_ecmca.

  read table lt_del transporting no fields with key docln = ls_ecmca-docln.

  if sy-subrc = 0.

    delete lt_del index sy-tabix.

    delete it_ecmca.

  endif.

endloop.

*行项目重新编号

sort it_ecmca by docln.

loop at it_ecmca into ls_ecmca.

  ls_ecmca-docln = sy-tabix.

  modify it_ecmca from ls_ecmca.

  lv_hsl = lv_hsl + ls_ecmca-hsl.

endloop.

IF lv_hsl is NOT INITIAL.

  MESSAGE e001(00) WITH 'ECCS document total amount is not zero'.

 ENDIF.

ENDENHANCEMENT.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值