SAP FICO BU损益表
一、报表逻辑








二、报表界面



三、报表逻辑
*&---------------------------------------------------------------------*
*& 程序名: ZRPFI_037
*& 创建者(公司)/日期:
*& 程序描述:
*& BU损益表
*&---------------------------------------------------------------------*
*& 版本/修改者(公司)/日期//修改描述
*&
*&---------------------------------------------------------------------*
REPORT zrpfi_037.
************************************************************************
* INCLUDES
************************************************************************
INCLUDE zrpfi_037_top.
INCLUDE zrpfi_037_scr.
INCLUDE zrpfi_037_f01. "数据处理 & 显示
INCLUDE zrpfi_037_f02. "下载
************************************************************************
* START-OF-SELECTION
************************************************************************
START-OF-SELECTION.
"权限检查
DATA: lv_message TYPE string.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD p_rbukrs.
IF sy-subrc <> 0.
lv_message = '没有该' && p_rbukrs && '公司代码权限!'.
MESSAGE lv_message TYPE 'S' DISPLAY LIKE 'E'.
STOP.
ENDIF.
LOOP AT s_prctr.
AUTHORITY-CHECK OBJECT 'K_PCA_MD'
ID 'KOKRS' FIELD '1000'
ID 'PRCTR' FIELD s_prctr-low."p_prctr.
IF sy-subrc <> 0.
lv_message = '没有该' && s_prctr-low && '事业部权限!'.
MESSAGE lv_message TYPE 'S' DISPLAY LIKE 'E'.
STOP.
ENDIF.
ENDLOOP.
REFRESH gt_outlist.
PERFORM frm_build_alv.
DO 2 TIMES.
IF sy-index = '1'.
gv_flag = 'B'. "本月
gv_gjahr = p_gjahr.
gv_poper = p_poper.
ELSEIF sy-index = '2'.
gv_flag = 'S'. "上月!
IF gv_poper = '001'.
gv_poper = '012'.
gv_gjahr = p_gjahr - 1.
ELSE.
gv_gjahr = p_gjahr.
gv_poper = p_poper - 1.
ENDIF.
ENDIF.
PERFORM frm_get_data. "获取数据
ENDDO.
PERFORM frm_build_fieldcat.
PERFORM frm_display_data.
*&---------------------------------------------------------------------*
*& 包含 ZRPFI_037_TOP
*&---------------------------------------------------------------------*
TABLES: acdoca.
TYPES: BEGIN OF ty_data,
xssr TYPE acdoca-hsl, "销售收入(主营业务收入)
xssjcb TYPE acdoca-hsl, "销售实际成本(主营业务成本)
clcb TYPE ckmlprkeph-kst002, "材料成本
zjrg TYPE ckmlprkeph-kst002, "直接人工
zzfy TYPE ckmlprkeph-kst002, "制造费用
mjfy TYPE ckmlprkeph-kst002, "模具费用
wwjgf TYPE ckmlprkeph-kst002, "委外加工费
ml TYPE acdoca-hsl, "毛利
mll TYPE faglflext-hsl01, "毛利率
mll_alv TYPE string, "毛利率ALV
xsfy TYPE faglflext-hsl01, "销售费用
glfy TYPE faglflext-hsl01, "管理费用
yffy TYPE faglflext-hsl01, "研发费用
cwfy TYPE faglflext-hsl01, "财务费用
cwfyhdsy TYPE faglflext-hsl01, "财务费用-汇兑损益
cwfysxf TYPE faglflext-hsl01, "财务费用-手续费、利息支出等
zcjzss TYPE faglflext-hsl01, "资产减值损失
xyjzss TYPE faglflext-hsl01, "信用减值损失
yywsj TYPE faglflext-hsl01, "营业务税金及附加
qtywsr TYPE faglflext-hsl01, "其他业务收入
qtywzc TYPE faglflext-hsl01, "其他业务支出
qtsy TYPE faglflext-hsl01, "其他收益
zcczsy TYPE faglflext-hsl01, "资产处置收益
yywsr TYPE faglflext-hsl01, "营业外收入
yywzc TYPE faglflext-hsl01, "营业外支出
tzsy TYPE faglflext-hsl01, "投资收益
gyjzbd TYPE faglflext-hsl01, "公允价值变动损益
lrze TYPE faglflext-hsl01, "利润总额
sds TYPE faglflext-hsl01, "所得税
jlr TYPE faglflext-hsl01, "BU净利润
jlrl TYPE faglflext-hsl01, "BU净利润率
jlrl_alv TYPE string, "BU净利润率显示
END OF ty_data,
BEGIN OF ty_bb,
bukrs TYPE t001-bukrs,
waers TYPE t001-waers,
END OF ty_bb.
DATA: gt_data TYPE TABLE OF ty_data,
gs_data TYPE ty_data,
gs_bb TYPE ty_bb,
g_fact TYPE isoc_factor.
TYPES:BEGIN OF ty_outlist,
bukrs TYPE matdoc-bukrs,
werks TYPE matdoc-werks,
vbeln TYPE vbrp-vbeln,
posnr TYPE vbrp-posnr,
zjrg TYPE ckmlprkeph-kst002, "直接人工
zzfy TYPE ckmlprkeph-kst002, "制造费用
mjfy TYPE ckmlprkeph-kst002, "模具费用
wwjgf TYPE ckmlprkeph-kst002, "委外加工费
END OF ty_outlist.
DATA:gt_outlist TYPE TABLE OF ty_outlist .
TYPES: BEGIN OF ty_alv,
item TYPE c LENGTH 20,
line TYPE c LENGTH 3,
byje TYPE c LENGTH 30,
syje TYPE c LENGTH 30,
END OF ty_alv.
DATA: gt_alv TYPE TABLE OF ty_alv,
gs_alv TYPE ty_alv.
DATA: gt_fcat TYPE lvc_t_fcat,
gs_fcat TYPE lvc_s_fcat,
gs_layo TYPE lvc_s_layo.
DATA: gv_flag TYPE c,
gv_poper TYPE acdoca-poper,
gv_gjahr TYPE acdoca-gjahr.
DATA gv_path TYPE string.
TYPES: BEGIN OF ty_tab ,
fkdat TYPE vbrk-fkdat,
zcost_lab(9) TYPE p DECIMALS 5, "其中人工
zcost_man(9) TYPE p DECIMALS 5, "其中制费
zcost_sub(9) TYPE p DECIMALS 5, "其中转包
zcost_mol(9) TYPE p DECIMALS 5, "其中模具成本
END OF ty_tab .
DATA:gt_tab TYPE TABLE OF ty_tab .
DEFINE set_field.
gs_fcat-fieldname = &1. "字段名
gs_fcat-scrtext_s = &2. "字段名文本
gs_fcat-scrtext_m = &2.
gs_fcat-scrtext_l = &2.
gs_fcat-outputlen = &3. "输出长度
* gs_fcat-no_zero = 'X'.
IF &4 = 'X' .
gs_fcat-convexit = 'COMMA' .
ENDIF.
APPEND gs_fcat TO gt_fcat.
CLEAR gs_fcat.
END-OF-DEFINITION.
DEFINE append_alv.
CLEAR:gs_alv.
gs_alv-item = &1.
gs_alv-line = &2.
APPEND gs_alv TO gt_alv.
END-OF-DEFINITION.
DEFINE set_alv.
IF &1 = 'BY'.
gs_alv-byje = &2.
MODIFY gt_alv FROM gs_alv TRANSPORTING byje WHERE line = &3.
ELSEIF &1 = 'SY'.
gs_alv-syje = &2.
MODIFY gt_alv FROM gs_alv TRANSPORTING syje WHERE line = &3.
ENDIF.
CLEAR:gs_alv.
END-OF-DEFINITION.
*&---------------------------------------------------------------------*
*& 包含 ZRPFI_037_SCR
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b_01 WITH FRAME TITLE TEXT-001.
* SELECT-OPTIONS: s_rbukrs FOR acdoca-rbukrs.
PARAMETERS: p_rbukrs TYPE acdoca-rbukrs OBLIGATORY.
SELECT-OPTIONS: s_prctr FOR acdoca-prctr NO INTERVALS .
* PARAMETERS: p_prctr TYPE acdoca-prctr OBLIGATORY.
PARAMETERS: p_gjahr TYPE acdoca-gjahr OBLIGATORY.
PARAMETERS: p_poper TYPE acdoca-poper OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b_01.
************************************************************************
* INITIALIZATION
************************************************************************
INITIALIZATION.
p_gjahr = sy-datum+0(4).
p_poper = '0' && sy-datum+4(2).
IF p_poper = '001'.
p_poper = '012'.
p_gjahr = p_gjahr - 1.
ELSE.
p_poper = p_poper - 1.
p_gjahr = p_gjahr.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_prctr-low .
PERFORM frm_search_prctr .
*&---------------------------------------------------------------------*
*& Form frm_search_prctr
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_search_prctr .
DATA: lt_dynpfields TYPE STANDARD TABLE OF dynpread.
lt_dynpfields = VALUE #( ( fieldname = 'P_RBUKRS' ) ) .
IF p_rbukrs IS INITIAL.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = lt_dynpfields.
READ TABLE lt_dynpfields WITH KEY fieldname = 'P_RBUKRS' INTO DATA(lw_dynpfields) .
IF NOT lw_dynpfields-fieldvalue IS INITIAL.
DATA(lv_bukrs) = lw_dynpfields-fieldvalue.
ELSE.
MESSAGE '请输入公司代码!' TYPE 'S' DISPLAY LIKE 'W' .
RETURN.
ENDIF.
ELSE.
lv_bukrs = p_rbukrs .
ENDIF.
SELECT prctr, ktext INTO TABLE @DATA(lt_cepct)
FROM cepct
WHERE kokrs = @lv_bukrs AND spras = '1'.
SORT lt_cepct BY prctr DESCENDING .
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'PRCTR'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_PRCTR-LOW'
value_org = 'S'
TABLES
value_tab = lt_cepct
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
ENDFORM.
*&---------------------------------------------------------------------*
*& 包含 ZRPFI_037_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form frm_build_alv
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_build_alv .
append_alv:
'销售收入(主营业务收入)' '01',
'销售实际成本(主营业务成本)' '02',
' 材料成本' '03',
' 直接人工' '04',
' 制造费用' '05',
' 模具费用' '06',
' 委外加工费' '07',
'毛利' '08',
'毛利率' '09',
'销售费用' '10',
'管理费用' '11',
'研发费用' '12',
'财务费用' '13',
' 财务费用-汇兑损益' '14',
' 财务费用-手续费、利息支出等' '15',
'资产减值损失' '16',
'信用减值损失' '17',
'税金及附加' '18',
'其他业务收入' '19',
'其他业务支出' '20',
'其他收益' '21',
'资产处置收益' '22',
'营业外收入' '23',
'营业外支出' '24',
'投资收益' '25',
'公允价值变动损益' '26',
'利润总额' '27',
'所得税' '28',
'BU净利润' '29',
'BU净利润率' '30',
' ' ' ',
'关联公司相关费用:' ' ',
'伊高得' ' ',
'检测中心' ' ',
'美国' ' ',
'瑞典' ' ',
'韩国' ' ',
'台湾' ' ',
'日本' ' ',
'香港' ' ',
'BU净利润' ' ',
'BU净利润率' ' '.
CLEAR:gs_alv.
ENDFORM.
*&---------------
