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 = 0 AND /bic/zamounttf = 0.