费用预算

来源:互联网 发布:摄像头录制软件 编辑:程序博客网 时间:2024/03/28 18:27



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.
datait_rel type table of  _ty_s_TG_1.
datawa_rel type  _ty_s_TG_1.
datai_line type i.
datai_tabix type i,
      i_flag  type c.

DATA i_lastday type SYST_DATUM.
datait_zifid043   type table of /BIC/AZIFID04300"电商平台分摊比例
datait_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
原创粉丝点击