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.
*&---------------

posted @ 2025-12-12 15:56  gccbuaa  阅读(0)  评论(0)    收藏  举报