费用预算



DATA:

       LT_ZICOD026  TYPE  TABLE  OF /BIC/AZICOD02600 ,
       LW_ZICOD026  TYPE /BIC/AZICOD02600 .

*     BREAK-POINT.

      SELECT *
        INTO  TABLE LT_ZICOD026
        FROM /BIC/AZICOD02600
       WHERE CO_AREA  EQ  '1000' .

      SORT LT_ZICOD026  BY /BIC/ZSYBQDLX
                         COSTELMNT
                         COSTCENTER .


     LOOP  AT RESULT_PACKAGE  ASSIGNING <RESULT_FIELDS> .
      <RESULT_FIELDS> -division  <RESULT_FIELDS> -/BIC/ZBRAND .
  IF <RESULT_FIELDS> -/BIC/ZSYBQDLX  '01'  AND  <RESULT_FIELDS> -COSTELMNT
  '7001010000'  OR
  <RESULT_FIELDS> -COSTELMNT  = '7001010010'  ) .
  <RESULT_FIELDS> -/BIC/ZFTYPE  '1' .
ELSE .
   IF <RESULT_FIELDS> -/BIC/ZSYBQDLX  EQ  '11' .

           CLEAR LW_ZICOD026 .
           READ  TABLE LT_ZICOD026
                 WITH  KEY /BIC/ZSYBQDLX  <RESULT_FIELDS> -/BIC/ZSYBQDLX
                         COSTELMNT      <RESULT_FIELDS> -COSTELMNT
                         COSTCENTER     <RESULT_FIELDS> -COSTCENTER
                 INTO LW_ZICOD026  BINARY  SEARCH .

         <RESULT_FIELDS> -/BIC/ZFTYPE  LW_ZICOD026 -/BIC/ZFTYPE .


        ELSE .

           CLEAR LW_ZICOD026 .
           READ  TABLE LT_ZICOD026
                 WITH  KEY /BIC/ZSYBQDLX  <RESULT_FIELDS> -/BIC/ZSYBQDLX
                         COSTELMNT      <RESULT_FIELDS> -COSTELMNT
                         COSTCENTER     SPACE
                 INTO LW_ZICOD026  BINARY  SEARCH .

          <RESULT_FIELDS> -/BIC/ZFTYPE  LW_ZICOD026 -/BIC/ZFTYPE .

        ENDIF .
     ENDIF .
****将资金占用利息 、集团公共部门费用的功能项目直接转为资金占用利息和集团公共部门费用

IF <RESULT_FIELDS> -COSTELMNT  '9000000003' . "集团公共费用
<RESULT_FIELDS> -/BIC/ZFUN_ITM1  '000012' . "000012  集团公共费用
<RESULT_FIELDS> -/BIC/ZFUN_ITM2  '000014' .
ELSEIF <RESULT_FIELDS> -COSTELMNT  '9000000002' . "资金占用利息
<RESULT_FIELDS> -/BIC/ZFUN_ITM1  '000039' "000039  资金占用利息
<RESULT_FIELDS> -/BIC/ZFUN_ITM2  '000016' .
ENDIF .

*给集团部门负责人赋值
*利润中心
*01 罗莱
*02 尚玛可
*03 优家
*04 KIDS
*05 高1
*06 高2
*07 高3
*08 团购
*09 电商
*10 香港
**职能部门
*11 供应链中心
*12 采购中心
*13 人力资源中心
*14 企业管理中心
*15 财务中心
*16 集团部门(除大研发)
*17 大研发


"CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
"  EXPORTING
"    INPUT         = <RESULT_FIELDS>-/BIC/ZSYB
"IMPORTING
" OUTPUT        = <RESULT_FIELDS>-/BIC/ZSYB.



IF <RESULT_FIELDS> -/BIC/ZSYB  '0000000001' .
  <RESULT_FIELDS> -/BIC/ZGROUP  '01' "罗莱事业部
ENDIF .
IF <RESULT_FIELDS> -/bic/zsybqdlx <>  '03' .
   IF <RESULT_FIELDS> -/BIC/ZSYB  '0000000002' .
    <RESULT_FIELDS> -/BIC/ZGROUP  '02' "尚玛珂事业部
      ELSEIF <RESULT_FIELDS> -/BIC/ZSYB  '0000000006' .
    <RESULT_FIELDS> -/BIC/ZGROUP  '03' "优家事业部
      ELSEIF <RESULT_FIELDS> -/BIC/ZSYB  '0000000007' .
    <RESULT_FIELDS> -/BIC/ZGROUP  '04' "KIDS事业部
      ELSEIF <RESULT_FIELDS> -/BIC/ZSYB  '0000000003'
        OR <RESULT_FIELDS> -/BIC/ZSYB  '0000000013'
        OR <RESULT_FIELDS> -/BIC/ZSYB  '0000000022'
        OR <RESULT_FIELDS> -/BIC/ZSYB  '0000000029'
        OR <RESULT_FIELDS> -/BIC/ZSYB  '0000000034'
        OR <RESULT_FIELDS> -/BIC/ZSYB  '0000000035' .
    <RESULT_FIELDS> -/BIC/ZGROUP  '05' "高1事业部
      ELSEIF <RESULT_FIELDS> -/BIC/ZSYB  '0000000004'
        OR <RESULT_FIELDS> -/BIC/ZSYB  '0000000011'
        OR <RESULT_FIELDS> -/BIC/ZSYB  '0000000039' .
    <RESULT_FIELDS> -/BIC/ZGROUP  '06' "高2事业部
      ELSEIF <RESULT_FIELDS> -/BIC/ZSYB  '0000000014'
        OR <RESULT_FIELDS> -/BIC/ZSYB  '0000000021'
        OR <RESULT_FIELDS> -/BIC/ZSYB  '0000000026' .
    <RESULT_FIELDS> -/BIC/ZGROUP  '07' "高3事业部
      ELSEIF <RESULT_FIELDS> -/BIC/ZSYB  '0000000008' .
    <RESULT_FIELDS> -/BIC/ZGROUP  '08' "团购事业部
      ELSEIF <RESULT_FIELDS> -/BIC/ZSYB  '0000000005' .
    <RESULT_FIELDS> -/BIC/ZGROUP  '09' "电商事业部
      ELSEIF <RESULT_FIELDS> -/BIC/ZSYB  '0000000010' .
    <RESULT_FIELDS> -/BIC/ZGROUP  '10' "香港事业部

ENDIF .
ENDIF .
"CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
"  EXPORTING
"    INPUT         = <RESULT_FIELDS>-/BIC/ZFUN_ITM1
" IMPORTING
"   OUTPUT        = <RESULT_FIELDS>-/BIC/ZFUN_ITM1.



IF <RESULT_FIELDS> -/BIC/ZFUN_ITM1  '000011'  .
  <RESULT_FIELDS> -/BIC/ZGROUP  '11' "供应链中心
ELSEIF <RESULT_FIELDS> -/BIC/ZFUN_ITM1  '000004' .
<RESULT_FIELDS> -/BIC/ZGROUP  '12' . "采购中心
ELSEIF <RESULT_FIELDS> -/BIC/ZFUN_ITM1  '000025' .
<RESULT_FIELDS> -/BIC/ZGROUP  '13' . "人力资源中心
ELSEIF <RESULT_FIELDS> -/BIC/ZFUN_ITM1  '000023' .
<RESULT_FIELDS> -/BIC/ZGROUP  '14' . "企业管理中心
ELSEIF <RESULT_FIELDS> -/BIC/ZFUN_ITM1  '000003' .
<RESULT_FIELDS> -/BIC/ZGROUP  '15' . "财务中心
ELSEIF <RESULT_FIELDS> -/BIC/ZFUN_ITM1  '000019'   OR
<RESULT_FIELDS> -COSTCENTER  '0021007009' .
<RESULT_FIELDS> -/BIC/ZGROUP  '16' . "集团部门(除大研发)
*ELSEIF <RESULT_FIELDS>-/BIC/ZFUN_ITM1 = '000006'.
*<RESULT_FIELDS>-/BIC/ZGROUP = '17'."大研发

ENDIF .

* 七宝 罗莱 的费用归属于 罗莱事业部, 七宝品牌时归属于98七宝过渡事业部
IF <RESULT_FIELDS> -/bic/zsybqdlx  eq  '03'  AND
<RESULT_FIELDS> -/BIC/ZBRAND <>  '11' .
<RESULT_FIELDS> -/bic/zsyb  '0000000098' .

ENDIF .

***分摊
<result_fields> -/bic/zsybqdlxt  <result_fields> -/bic/zsybqdlx .
<result_fields> -/bic/zbrandt  <result_fields> -/bic/zbrandt .
<result_fields> -/bic/zamountft  <result_fields> -amount .
<result_fields> -/bic/zamounttf  <result_fields> -amount .
     ENDLOOP .




*****事业部等于电商的分摊



data :sor_amount   TYPE /BI0/OIAMOUNT ,
     loc_amount   TYPE /BI0/OIAMOUNT .
data it_rel  type  table  of  _ty_s_TG_1 .
data wa_rel  type  _ty_s_TG_1 .
data i_line  type  i .
data i_tabix  type  i ,
      i_flag   type  c .

DATA i_lastday  type SYST_DATUM .
data it_zifid043    type  table  of /BIC/AZIFID04300 "电商平台分摊比例
data it_zifid046    type  table  of /BIC/AZIFID04600 "电商/团购品牌分摊比例
*data: it_zifid044   TYPE TABLE OF /BIC/AZIFID04400.
*"团购按渠道类型分摊比例,团购不实现按渠道类型分摊
FIELD-SYMBOLS <fs_zifid043>   type /BIC/AZIFID04300 ,
               <fs_zifid046>   TYPE /BIC/AZIFID04600 .

  select into  table it_zifid043
    from /BIC/AZIFID04300
    WHERE /BIC/ZSYBQDLX   '08'
       OR /BIC/ZSYBQDLX   '09'
       OR /BIC/ZSYBQDLX  '10'
    .
    sort it_zifid043  by /bic/zftbl  ASCENDING .
  select into  table it_zifid046
    from /BIC/AZIFID04600 .
sort it_zifid046  by /bic/zftbl  ASCENDING .
clear i_line .
loop  at RESULT_PACKAGE  ASSIGNING <RESULT_FIELDS> .
    if i_line < <RESULT_FIELDS> -record .
     i_line  <RESULT_FIELDS> -record .
    endif .
endloop .
*按平台比例分摊,针对电商公共的费用,并标注ZFLAG为"X"
clear it_rel[] .
clear wa_rel .
loop  at RESULT_PACKAGE  ASSIGNING <RESULT_FIELDS>
   where   /BIC/ZSYB  '0000000005'  and /BIC/ZSYBQDLX  '12' . "电商公共
  i_tabix  sy -tabix .
  sor_amount  <result_fields> -amount .
   clear i_flag  .

   CONCATENATE <result_fields> -CALMONTH  '01'  INTO i_lastday . "月初

   loop  at it_zifid043  ASSIGNING <fs_zifid043>
                        where COSTCENTER  <RESULT_FIELDS> -COSTCENTER
                        and DATEFROM   <= i_lastday
                        and DATETO  >= i_lastday
                        and CO_AREA  '1000'  .
   clear wa_rel .
  wa_rel  <RESULT_FIELDS>  .
*按比例计算分摊金额
*wa_rel-AMOUNT = <RESULT_FIELDS>-AMOUNT * <fs_zifid043>-/BIC/ZFTBL.
"只有3位小数,不够

  wa_rel -Amount  <RESULT_FIELDS> -AMOUNT * <fs_zifid043> -/BIC/ZPER .
loc_amount  wa_rel -amount + loc_amount .

*  wa_rel-amount = 0."分摊前金额为0
  wa_rel -/bic/zamountft  <result_fields> -/bic/zamountft *
  <fs_zifid043> -/BIC/ZPER "带多位小数位的字段
   "FLTP型
*  wa_rel-/BIC/ZFLAG  = 'X'.
  wa_rel -/BIC/ZSYBQDLXT  <fs_zifid043> -/BIC/ZSYBQDLX "分摊后渠道类型
   append wa_rel  to it_rel .
  i_flag  'X' .
   endloop .
   if i_flag  'X' .
   delete RESULT_PACKAGE  index i_tabix .
*    <result_fields>-/bic/zamountft = 0. "分摊后金额为0
*    clear wa_rel.
*    SORT it_rel by amount DESCENDING.
*    loop at it_rel INTO wa_rel.
*      wa_rel-amount = wa_rel-amount + sor_amount - loc_amount.
*      MODIFY it_rel FROM wa_rel.
*      exit.
*    endloop.
*    READ TABLE it_rel INTO wa_rel INDEX 1.
*    IF sy-subrc = 0.

      wa_rel -amount  wa_rel -amount + sor_amount  loc_amount .
       MODIFY  TABLE it_rel  FROM wa_rel .
*    ENDIF.
   endif .
  sor_amount  0 .
  loc_amount  0 .
   clear i_flag .
endloop .
loop  at  it_rel  ASSIGNING <RESULT_FIELDS> .
  i_line  i_line +  1 .
    <RESULT_FIELDS> -record  i_line  .
     append  <RESULT_FIELDS>  to RESULT_PACKAGE .
endloop .

*电商按品牌比例分摊,电商全部费用
clear it_rel[] .
clear wa_rel .
loop  at RESULT_PACKAGE  ASSIGNING <RESULT_FIELDS>
                        where /BIC/ZSYB  '0000000005'
*and BUS_AREA <> '1810' "9月份以后,1810的不参与分摊,到9月后再把此注释去掉
                           .
  i_tabix  sy -tabix .
  sor_amount  <result_fields> -amount .
   clear i_flag  .
loop  at it_zifid046   ASSIGNING <fs_zifid046>
                     where CALMONTH  <result_fields> -CALMONTH
                       AND /BIC/ZSYB  '0000000005' .

   clear wa_rel .
  wa_rel  <RESULT_FIELDS>  .
*按比例计算分摊金额
*  wa_rel-AMOUNT = <RESULT_FIELDS>-AMOUNT * <fs_zifid046>-/BIC/ZFTBL.

wa_rel -Amount  <RESULT_FIELDS> -AMOUNT * <fs_zifid046> -/BIC/ZPER .
  loc_amount  wa_rel -amount + loc_amount .

*  wa_rel-amount = 0."分摊前金额为0
   wa_rel -/bic/zamountft  <result_fields> -/bic/zamountft *
   <fs_zifid046> -/BIC/ZPER . "带多位小数位的字段
    "FLTP型
*  wa_rel-/BIC/ZFLAG  = 'X'.
  wa_rel -/BIC/ZBRANDT  =  <fs_zifid046> -/BIC/ZBRAND . "分摊后品牌
   append wa_rel  to it_rel .
  i_flag  'X' .
   endloop .
   if i_flag  'X' .
   delete RESULT_PACKAGE  index i_tabix .
*     <result_fields>-/bic/zamountft = 0. "分摊后金额为0
*     clear wa_rel.
*      SORT it_rel by amount DESCENDING.
*    loop at it_rel INTO wa_rel.
*      wa_rel-amount = wa_rel-amount + sor_amount - loc_amount.
*      MODIFY it_rel FROM wa_rel.
*      exit.
*    endloop.
*    READ TABLE it_rel INTO wa_rel INDEX 1.
*    IF sy-subrc = 0.

      wa_rel -amount  wa_rel -amount + sor_amount  loc_amount .
       MODIFY  TABLE it_rel  FROM wa_rel .
*    ENDIF.
   endif .
  sor_amount  0 .
  loc_amount  0 .
   clear i_flag .
endloop .
loop  at  it_rel  ASSIGNING <RESULT_FIELDS> .
  i_line  i_line +  1 .
    <RESULT_FIELDS> -record  i_line  .
     append  <RESULT_FIELDS>  to RESULT_PACKAGE .
endloop .

*****团购公共按渠道分摊,并标注ZFLAG为"X",团购不实现按渠道分摊,预算部分不实现//
**clear it_rel[].
**clear wa_rel.
**loop at RESULT_PACKAGE ASSIGNING <RESULT_FIELDS>
**  where   /BIC/ZSYB = '0000000008' and /BIC/ZSYBQDLX = '13'."团购公共
**  i_tabix = sy-tabix.
**  clear i_flag .
**  loop at it_zifid044 ASSIGNING <fs_zifid044>
**                       where /BIC/ZSYB =  '0000000008'
**                       and CALMONTH = <RESULT_FIELDS>-PSTNG_DATE(6).
**  clear wa_rel.
**  wa_rel = <RESULT_FIELDS> .
***按比例计算分摊金额
***  wa_rel-AMOUNT = <RESULT_FIELDS>-AMOUNT * <fs_zifid044>-/BIC/ZFTBL.
***   wa_rel-Amount = <RESULT_FIELDS>-AMOUNT * <fs_zifid044>-/BIC/ZPER.
**  wa_rel-amount = 0.
**   wa_rel-/bic/zamountft = <result_fields>-/bic/zamountft *
**   <fs_zifid044>-/BIC/ZPER."带多位小数位的字段
**   "FLTP型
**  wa_rel-/BIC/ZFLAG  = 'X'.
**  wa_rel-/BIC/ZSYBQDLXT = <fs_zifid044>-/BIC/ZSYBQDLX.
**  append wa_rel to it_rel.
**  i_flag = 'X'.
**  endloop.
**  if i_flag = 'X'.
***  delete RESULT_PACKAGE index i_tabix.
**     <result_fields>-/bic/zamountft = 0. "分摊后金额为0
**  endif.
**endloop.
**loop at  it_rel ASSIGNING <RESULT_FIELDS>.
**  i_line = i_line + 1.
**    <RESULT_FIELDS>-record = i_line .
**    append  <RESULT_FIELDS> to RESULT_PACKAGE.
**endloop.



*团购按品牌比例分摊,团购全部费用

clear it_rel[] .
clear wa_rel .
loop  at RESULT_PACKAGE  ASSIGNING <RESULT_FIELDS>
                        where /BIC/ZSYB  '0000000008'
                           .
  i_tabix  sy -tabix .
 sor_amount  <result_fields> -amount .
   clear i_flag  .
loop  at it_zifid046   ASSIGNING <fs_zifid046>
                     where CALMONTH  <result_fields> -CALMONTH
                       AND /BIC/ZSYB  '0000000008' .

   clear wa_rel .
  wa_rel  <RESULT_FIELDS>  .
*按比例计算分摊金额
*  wa_rel-AMOUNT = <RESULT_FIELDS>-AMOUNT * <fs_zifid046>-/BIC/ZFTBL.

   wa_rel -Amount  <RESULT_FIELDS> -AMOUNT * <fs_zifid046> -/BIC/ZPER .
  loc_amount  wa_rel -amount + loc_amount .
*   wa_rel-Amount = <RESULT_FIELDS>-AMOUNT * <fs_zifid046>-/BIC/ZPER.
*   wa_rel-amount = 0.

   wa_rel -/bic/zamountft  <result_fields> -/bic/zamountft *
   <fs_zifid046> -/BIC/ZPER . "带多位小数位的字段
    "FLTP型
*  wa_rel-/BIC/ZFLAG  = 'X'.
  wa_rel -/BIC/ZBRANDT  =  <fs_zifid046> -/BIC/ZBRAND .
   append wa_rel  to it_rel .
  i_flag  'X' .
   endloop .
   if i_flag  'X' .
   delete RESULT_PACKAGE  index i_tabix .
*     <result_fields>-/bic/zamountft = 0. "分摊后金额为0
*     clear wa_rel.
*      SORT it_rel by amount DESCENDING.
*    loop at it_rel INTO wa_rel.
*      wa_rel-amount = wa_rel-amount + sor_amount - loc_amount.
*      MODIFY it_rel FROM wa_rel.
*      exit.
*    endloop.
*    READ TABLE it_rel INTO wa_rel INDEX 1.
*    IF sy-subrc = 0.

      wa_rel -amount  wa_rel -amount + sor_amount  loc_amount .
       MODIFY  TABLE it_rel  FROM wa_rel .
*    ENDIF.
   endif .
  sor_amount  0 .
  loc_amount  0 .
   clear i_flag .
endloop .
loop  at  it_rel  ASSIGNING <RESULT_FIELDS> .
  i_line  i_line +  1 .
    <RESULT_FIELDS> -record  i_line  .
     append  <RESULT_FIELDS>  to RESULT_PACKAGE .

endloop.

delete RESULT_PACKAGE WHERE amount AND /bic/zamounttf 0.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值