ABAP实现本地化的资产负债表和损益表

news/2024/7/5 6:49:46

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

1.设计思路:

SAP没有提供标准的符合中国标准的资产负债表和损益表,需要我们在系统中自定义开发,我们在配置报表版本时都指定了

一个项目的编号,一个版本下面都有期其统驭的科目范围,我们可以根据这个项目编号找到相应的科目范围,然后根据科目范围

获取科目借贷汇总的值。

SAP中资产负债表的配置图示:

d0a5llwkebnjfy
我们传统的资产负债表如下格式:
eyhbe8qm0m_n_11la
我们可以在程序中用项目编号找到其下面的科目范围,然后取科目汇总值,因为资产负债表是固定的,所以我们要
建立一个CBO表来存放各个具体的项目和在SAP中对应的项目编号。
最后要强调的是在资产负债表中未分配利润的计算:
未分配利润的期末余额=年初结转额(留存收益的上年余额)+今年截至到本月的盈利额(利润表中有体现)
利润表的思路和资产负债表是一样的。
aht5dycclvu_rtlev2
具体的代码实现:
*&———————————————————————*
*&Company Code:N207
*& module:FI
*& create by:rrzhang
*& create date:2011.12.28
*&———————————————————————*
*& title:资产负债表,利润表
*& Description:资产负债表,利润表报表呈现
*&———————————————————————*
*& Change History
*———————————————————————-*
*C.R No    |Date|Developer|Description
*———————————————————————-*
*         2012.01.11|ccyu
*———————————————————————-*
REPORT  zfir00026.
INCLUDE zfir00026_top.
INCLUDE zfir00026_cls.
INCLUDE zfir00026_f01.
INCLUDE zfir00026_o01.
INCLUDE zfir00026_i01.
INCLUDE <icon>.
INITIALIZATION.
p_y = sy-datum+0(4).
p_m = sy-datum+4(2).
AT SELECTION-SCREEN OUTPUT.
PERFORM setdis USING p_rpv.
IF c IS INITIAL.
PERFORM setlist.
gv_name = ‘爱思开实业(上海)商贸有限公司合并财务报表版本’.
c = ‘X’.
gv_rp = ‘资产负债表’.
ELSE.
PERFORM setpcg USING p_rpv.
CASE p_rpv.
WHEN ‘2070′.
gv_name = ‘爱思开实业(上海)商贸有限公司合并财务报表版本’.
WHEN ‘2071′.
gv_name = ‘爱思开实业(上海)商贸有限公总部财务报表版本’.
WHEN ‘2072′.
gv_name = ‘爱思开实业(上海)商贸有限公司直营店财务报表版本’.
WHEN ‘2073′.
gv_name = ”.
ENDCASE.
IF p_rp = ‘BS’.
gv_rp = ‘资产负债表’.
ELSE.
gv_rp = ‘利润表’.
ENDIF.
ENDIF.
START-OF-SELECTION.
PERFORM synchrodata.
PERFORM get_data1.
*&———————————————————————*
*&  Include           ZFIR00026_TOP
*&———————————————————————*
*Data definition
TYPE-POOLS vrm.
TABLES:faglflexa.
“同步数据用的凭证抬头表
DATA:BEGIN OF gt_bkpfsyn OCCURS 0,
gjahr LIKE bkpf-gjahr,
bukrs LIKE bkpf-bukrs,
belnr LIKE bkpf-belnr,
END OF gt_bkpfsyn.
DATA ly(4) TYPE n.
“同步数据用的凭证行项目表(bseg)
DATA:BEGIN OF gt_bsegsyn OCCURS 0,
gjahr LIKE bseg-gjahr,
bukrs LIKE bseg-bukrs,
belnr LIKE bseg-belnr,
prctr LIKE bseg-prctr,
pprct LIKE bseg-pprct,
buzei LIKE bseg-buzei,
END OF gt_bsegsyn.
DATA:BEGIN OF gt_fagasyn OCCURS 0.
INCLUDE STRUCTURE faglflexa.
DATA:END OF gt_fagasyn.
TYPES: ch(3) TYPE c,
cf(4) TYPE c,
cgcp(12) TYPE c,
ok_code LIKE sy-ucomm.
DATA:c,d,
gv_bs TYPE ukurs_curr VALUE 1,”倍数
gv_iden(2).
“要显示的资产负债表
DATA:BEGIN OF gt_alv_bs0 OCCURS 0,
lct1 TYPE int1,
item1 TYPE zitem,
yamt1 TYPE hslvt12,
ysamt1 TYPE hslvt12,
lct2 TYPE int1,
item2 TYPE zitem,
yamt2 TYPE hslvt12,
ysamt2 TYPE hslvt12,
waers LIKE t001-waers,
END OF  gt_alv_bs0.
DATA:BEGIN OF gt_bs OCCURS 0,
ukurs TYPE ukurs_curr,
gdatu TYPE gdatu_inv,
END OF gt_bs.
DATA:gv_mf(5).”The month field
*The report version account information.
“要显示的利润表
DATA:BEGIN OF gt_alv_is0 OCCURS 0,
lct TYPE int1,
item TYPE zitem,
yamt LIKE faglflext-hslvt,”本年累计数
mamt LIKE faglflext-hslvt,”本月累计数
waers LIKE t001-waers,
END OF gt_alv_is0.
“下载数据的内表
DATA:BEGIN OF gt_alv_is01 OCCURS 0,
lct TYPE int1,
item TYPE zitem,
yamt LIKE faglflext-hslvt,”本年累计数
mamt LIKE faglflext-hslvt,”本月累计数
END OF gt_alv_is01.
*利润表下钻数据内表
* –>2012.01.16 CCYU START
DATA:BEGIN OF gt_skat OCCURS 0,
saknr LIKE skat-saknr,
txt50 LIKE skat-txt50,
END OF gt_skat.
* <–2012.01.16 CCYU END.
DATA:BEGIN OF gt_alv_is_dp1  OCCURS 0,
racct LIKE faglflexa-racct,
* –>2012.01.16 CCYU START
txt50 LIKE skat-txt50,
* <–2012.01.16 CCYU END.
hsl LIKE faglflexa-hsl,
END OF gt_alv_is_dp1.
*利润表下钻数据内表
DATA:BEGIN OF gt_alv_bs_dp1  OCCURS 0,
racct LIKE faglflexa-racct,
* –>2012.01.16 CCYU START
txt50 LIKE skat-txt50,
* <–2012.01.16 CCYU END.
hsl LIKE faglflexa-hsl,
END OF gt_alv_bs_dp1.
DATA:BEGIN OF gt_alv_bs_dp2  OCCURS 0,
racct LIKE faglflexa-racct,
* –>2012.01.16 CCYU START
txt50 LIKE skat-txt50,
* <–2012.01.16 CCYU END.
hsl LIKE faglflexa-hsl,
END OF gt_alv_bs_dp2.
TYPES:BEGIN OF gs_alv_bs_dp_obj ,
racct LIKE faglflexa-racct,
* –>2012.01.16 CCYU START
txt50 LIKE skat-txt50,
* <–2012.01.16 CCYU END.
hsl LIKE faglflexa-hsl,
END OF gs_alv_bs_dp_obj.
DATA:gs_alv_bs_dp_obj1 TYPE gs_alv_bs_dp_obj.
TYPES:gt_alv_bs_dp TYPE STANDARD TABLE OF gs_alv_bs_dp_obj.
*利润表下钻临时数据内表
DATA:BEGIN OF gt_alv_is_dp2 OCCURS 0,
racct LIKE faglflexa-racct,
* –>2012.01.16 CCYU START
txt50 LIKE skat-txt50,
* <–2012.01.16 CCYU END.
hsl LIKE faglflexa-hsl,
END OF gt_alv_is_dp2.
DATA:BEGIN OF gt_fagl_011zc OCCURS 0,
versn LIKE fagl_011zc-versn,
ergsl  LIKE fagl_011zc-ergsl,
txt45 LIKE fagl_011qt-txt45,
vonkt LIKE fagl_011zc-vonkt,
biskt LIKE fagl_011zc-biskt,
END OF gt_fagl_011zc.
DATA:BEGIN OF gt_fagl_011qt OCCURS 0,
ergsl  LIKE fagl_011qt-ergsl,
txt45 LIKE fagl_011qt-txt45,
END OF gt_fagl_011qt.
DATA:BEGIN OF gt_mamt_is OCCURS 0,
amt LIKE faglflext-hslvt,
END OF gt_mamt_is.
RANGES gr_act FOR faglflext-racct.
DATA:BEGIN OF gt_monv OCCURS 0,
month(2) TYPE n,
value LIKE faglflext-hslvt,
END OF gt_monv.
DATA:BEGIN OF gs_hsl,
hsl01 LIKE faglflext-hslvt,
hsl02 LIKE faglflext-hslvt,
hsl03 LIKE faglflext-hslvt,
hsl04 LIKE faglflext-hslvt,
hsl05 LIKE faglflext-hslvt,
hsl06 LIKE faglflext-hslvt,
hsl07 LIKE faglflext-hslvt,
hsl08 LIKE faglflext-hslvt,
hsl09 LIKE faglflext-hslvt,
hsl10 LIKE faglflext-hslvt,
hsl11 LIKE faglflext-hslvt,
hsl12 LIKE faglflext-hslvt,
END OF gs_hsl.
DATA:BEGIN OF gs_hsl1,
hsl01 LIKE faglflext-hslvt,
hsl02 LIKE faglflext-hslvt,
hsl03 LIKE faglflext-hslvt,
hsl04 LIKE faglflext-hslvt,
hsl05 LIKE faglflext-hslvt,
hsl06 LIKE faglflext-hslvt,
hsl07 LIKE faglflext-hslvt,
hsl08 LIKE faglflext-hslvt,
hsl09 LIKE faglflext-hslvt,
hsl10 LIKE faglflext-hslvt,
hsl11 LIKE faglflext-hslvt,
hsl12 LIKE faglflext-hslvt,
hslvt LIKE faglflext-hslvt,
END OF gs_hsl1.
DATA:gs_alv_is TYPE REF TO cl_gui_alv_grid,”the alv object for is report
gs_alv_bs TYPE REF TO cl_gui_alv_grid,”the alv object for bs report
gs_alv_is_dp1 TYPE REF TO cl_gui_alv_grid,”the alv object for bs report
gs_alv_bs_dp1 TYPE REF TO cl_gui_alv_grid,”the alv object for bs report
gs_con TYPE REF TO cl_gui_custom_container,”the contianer object
gs_con1 TYPE REF TO cl_gui_custom_container,”the contianer object
gs_layout   TYPE lvc_s_layo,”set the layout of the alv
gt_fieldcat TYPE lvc_t_fcat,”the field catelog table
gs_fieldcat TYPE lvc_s_fcat,”the field catelog work area
g_toolbar   TYPE ui_functions,”the toolbar of the alv
g_toolbar1   TYPE ui_functions,”the toolbar of the alv
gt_sort     TYPE lvc_t_sort,”control the sort of the alv
gs_sort     TYPE lvc_s_sort.”the work area of the gt_sort
DATA:gs_dyndoc_id TYPE REF TO cl_dd_document ,
gs_dyndoc_id1 TYPE REF TO cl_dd_document ,
gs_splitter TYPE REF TO cl_gui_splitter_container ,
gs_parent_html TYPE REF TO cl_gui_container ,
gs_parent_grid TYPE REF TO cl_gui_container ,
gs_splitter1 TYPE REF TO cl_gui_splitter_container ,
gs_parent_html1 TYPE REF TO cl_gui_container ,
gs_parent_grid1 TYPE REF TO cl_gui_container ,
gs_html_cntrl TYPE REF TO cl_gui_html_viewer .
*SCREEN DEFINE
DATA  ok_code.
* –>2012.01.17 CCYU START
DATA:BEGIN OF gt_head1  OCCURS 0,
t1(6),
t2(20),
t3(20),
t4(20),
t5(6),
t6(20),
t7(20),
t8(20),
END OF gt_head1.
DATA:BEGIN OF gt_head2  OCCURS 0,
t1(6),
t2(20),
t3(20),
t4(20),
END OF gt_head2.
DATA:BEGIN OF gt_alv_bs01 OCCURS 0,
lct1 TYPE int1,
item1 TYPE zitem,
yamt1 TYPE hslvt12,
ysamt1 TYPE hslvt12,
lct2 TYPE int1,
item2 TYPE zitem,
yamt2 TYPE hslvt12,
ysamt2 TYPE hslvt12,
END OF  gt_alv_bs01.
* <–2012.01.17 CCYU END.
SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text-001.
“公司代码
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
SELECTION-SCREEN COMMENT (79) text-002.
SELECTION-SCREEN END OF LINE.
“Currency
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.                               “从位置1开始输出
SELECTION-SCREEN COMMENT (7) text-003 FOR FIELD p_curr.
SELECTION-SCREEN POSITION 15.
PARAMETERS p_curr TYPE ch AS LISTBOX  VISIBLE LENGTH 12  OBLIGATORY DEFAULT ‘CNY’ .
SELECTION-SCREEN END OF LINE.
“report version
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
SELECTION-SCREEN COMMENT (9) text-004 FOR FIELD p_rpv.
SELECTION-SCREEN POSITION 15.
PARAMETERS p_rpv TYPE cf AS LISTBOX VISIBLE LENGTH 12 USER-COMMAND dp OBLIGATORY DEFAULT ‘2070′.
SELECTION-SCREEN POSITION 28.
SELECTION-SCREEN COMMENT (60) gv_name.
SELECTION-SCREEN END OF LINE.
“profit center group
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
SELECTION-SCREEN COMMENT (12) text-005 FOR FIELD p_pcg.
SELECTION-SCREEN POSITION 15.
PARAMETERS p_pcg TYPE cgcp AS LISTBOX VISIBLE LENGTH 12 USER-COMMAND dp1 OBLIGATORY.
SELECTION-SCREEN END OF LINE.
“profit center
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
SELECTION-SCREEN COMMENT (12) text-006 FOR FIELD p_pc.
SELECTION-SCREEN POSITION 15.
PARAMETERS p_pc TYPE cgcp AS LISTBOX VISIBLE LENGTH 12 MODIF ID pc.
SELECTION-SCREEN END OF LINE.
“REPROT
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
SELECTION-SCREEN COMMENT (12) text-007 FOR FIELD p_rp.
SELECTION-SCREEN POSITION 15.
PARAMETERS p_rp TYPE cgcp AS LISTBOX VISIBLE LENGTH 12 USER-COMMAND rp OBLIGATORY DEFAULT ‘BS’.
SELECTION-SCREEN COMMENT (12) gv_rp.
SELECTION-SCREEN END OF LINE.
“YEAR
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
SELECTION-SCREEN COMMENT (12) text-008 FOR FIELD p_y.
SELECTION-SCREEN POSITION 15.
PARAMETERS p_y(4) TYPE n OBLIGATORY.
SELECTION-SCREEN END OF LINE.
“MONTH
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
SELECTION-SCREEN COMMENT (12) text-009 FOR FIELD p_m.
SELECTION-SCREEN POSITION 15.
* PARAMETERS P_M(2) TYPE N OBLIGATORY.
* –>2012.01.11 ccyu START
PARAMETERS p_m(3) TYPE n AS LISTBOX  VISIBLE LENGTH 4 OBLIGATORY.
* <–2012.01.11 ccyu END.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK blk.
*&———————————————————————*
*&———————————————————————*
*&       Class LCL_APP_COMPT
*&———————————————————————*
*        the event handler class for alv
*———————————————————————-*
CLASS LCL_APP_COMPT DEFINITION.
PUBLIC SECTION .
*the function handle_toolbar which handle the toolbar event of the alv
METHODS : HANDLE_TOOLBAR FOR EVENT TOOLBAR
OF CL_GUI_ALV_GRID
IMPORTING E_OBJECT
E_INTERACTIVE .
*the function handle_user_command which handle the user_command
*event of the alv
METHODS: HANDLE_USER_COMMAND FOR EVENT USER_COMMAND
OF CL_GUI_ALV_GRID
IMPORTING E_UCOMM .
*the function handle_topofpage which handle the top of page
METHODS:HANDLE_TOPOFPAGE FOR EVENT TOP_OF_PAGE
OF CL_GUI_ALV_GRID
IMPORTING E_DYNDOC_ID .
*handle the hotspot_click事件
METHODS:HANDLE_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK
OF CL_GUI_ALV_GRID
IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO.
ENDCLASS.               “LCL_APP_COMPT
*&  Include           ZOOALV_CLS                                       *
*&———————————————————————*
*&———————————————————————*
*&       Class (Implementation)  lcl_app_compt
*&———————————————————————*
*        implementation:for alv
*———————————————————————-*
CLASS LCL_APP_COMPT IMPLEMENTATION.
METHOD : HANDLE_TOOLBAR .
PERFORM MODIFY_TOOLBAR USING E_OBJECT ” .
ENDMETHOD .                    ”:
METHOD: HANDLE_USER_COMMAND .
PERFORM FM_USER_COMMAND USING E_UCOMM .
ENDMETHOD .                    ”handle_user_command
*TOP OF PAGE
METHOD: HANDLE_TOPOFPAGE .
PERFORM FM_ADD_TOPOFPAGE USING E_DYNDOC_ID .
ENDMETHOD .                    ”handle_topofpage
METHOD:HANDLE_HOTSPOT_CLICK.
PERFORM DRILLDOWNIS1 USING E_ROW_ID E_COLUMN_ID ES_ROW_NO.
ENDMETHOD.                    ”HANDLE_HOTSPOT_CLICK
ENDCLASS.               “lcl_app_compt
*&———————————————————————*
*&  Include           ZFIR00026_F01
*&———————————————————————*
*&———————————————————————*
*&      Form  SETLIST
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM setlist .
DATA: itab TYPE STANDARD TABLE OF vrm_value,
line TYPE vrm_value.
CLEAR itab[].
line-key = ‘CNY’.
line-text = ‘CNY’.
APPEND line TO itab.
line-key = ‘KRW’.
line-text = ‘KRW’.
APPEND line TO itab.
CALL FUNCTION ‘VRM_SET_VALUES’
EXPORTING
id     = ‘P_CURR’
values = itab[].
CLEAR itab[].
CLEAR line.
line-key = ‘2070′.
line-text = ‘2070′.
APPEND line TO itab.
line-key = ‘2071′.
line-text = ‘2071′.
APPEND line TO itab.
line-key = ‘2072′.
line-text = ‘2072′.
APPEND line TO itab.
line-key = ‘2073′.
line-text = ‘2073′.
APPEND line TO itab.
CALL FUNCTION ‘VRM_SET_VALUES’
EXPORTING
id     = ‘P_RPV’
values = itab[].
IF p_pcg IS INITIAL.
CLEAR itab[].
CLEAR line.
line-key = ‘N207′.
line-text = ‘N207′.
APPEND line TO itab.
CALL FUNCTION ‘VRM_SET_VALUES’
EXPORTING
id     = ‘P_PCG’
values = itab[].
ENDIF.
CLEAR itab[].
CLEAR line.
line-key = ‘BS’.
line-text = ‘BS’.
APPEND line TO itab.
line-key = ‘IS’.
line-text = ‘IS’.
APPEND line TO itab.
CALL FUNCTION ‘VRM_SET_VALUES’
EXPORTING
id     = ‘P_RP’
values = itab[].
* –>2012.01.11 CCYU SRART
CLEAR itab[].
CLEAR line.
line-key = ‘01′.
line-text = ‘01′.
APPEND line TO itab.
line-key = ‘02′.
line-text = ‘02′.
APPEND line TO itab.
line-key = ‘03′.
line-text = ‘03′.
APPEND line TO itab.
line-key = ‘04′.
line-text = ‘04′.
APPEND line TO itab.
line-key = ‘05′.
line-text = ‘05′.
APPEND line TO itab.
line-key = ‘06′.
line-text = ‘06′.
APPEND line TO itab.
line-key = ‘07′.
line-text = ‘07′.
APPEND line TO itab.
line-key = ‘08′.
line-text = ‘08′.
APPEND line TO itab.
line-key = ‘09′.
line-text = ‘09′.
APPEND line TO itab.
line-key = ‘10′.
line-text = ‘10′.
APPEND line TO itab.
line-key = ‘11′.
line-text = ‘11′.
APPEND line TO itab.
line-key = ‘12′.
line-text = ‘12′.
APPEND line TO itab.
CALL FUNCTION ‘VRM_SET_VALUES’
EXPORTING
id     = ‘P_M’
values = itab[].
”  IF P_PCG IS INITIAL.
”    CLEAR ITAB[].
”    CALL FUNCTION ‘VRM_SET_VALUES’
”      EXPORTING
”        ID     = ‘P_PC’
”        VALUES = ITAB[].
”  ELSE.
PERFORM setpcg USING p_rpv.
”  ENDIF.
* <–2012.01.11 CCYU END.
ENDFORM.                    ” SETLIST
*&———————————————————————*
*&      Form  SETPCG
*&———————————————————————*
*       text
*———————————————————————-*
*      SET THE PROFIT CENTER GROUP
*———————————————————————-*
FORM setpcg  USING p.
DATA: itab TYPE STANDARD TABLE OF vrm_value,
line TYPE vrm_value.
CLEAR: itab[],line.
“CLEAR p_pcg.
IF p = ‘2070′.
line-key = ‘N207′.
line-text = ‘N207′.
APPEND line TO itab.
CALL FUNCTION ‘VRM_SET_VALUES’
EXPORTING
id     = ‘P_PCG’
values = itab[].
p_pcg = ‘N207′.
CLEAR itab[].
”  APPEND LINE TO ITAB.
CALL FUNCTION ‘VRM_SET_VALUES’
EXPORTING
id     = ‘P_PC’
values = itab[].
CLEAR d.
ELSE.
CLEAR itab[].
CLEAR p_pc.
CALL FUNCTION ‘VRM_SET_VALUES’
EXPORTING
id     = ‘P_PC’
values = itab[].
IF d IS INITIAL.
SELECT DISTINCT setname AS key setname AS text FROM setleaf
INTO CORRESPONDING FIELDS OF TABLE itab
WHERE subclass = ‘N207′ AND setclass = ‘0106′.
IF itab[] IS NOT  INITIAL.
CALL FUNCTION ‘VRM_SET_VALUES’
EXPORTING
id     = ‘P_PCG’
values = itab[].
READ TABLE itab INTO line INDEX 1.
p_pcg = line-key.
CLEAR itab[].
SELECT DISTINCT valfrom AS key valfrom AS text FROM setleaf
INTO CORRESPONDING FIELDS OF TABLE itab
WHERE subclass = ‘N207′ AND setname = p_pcg AND setclass = ‘0106′.
IF itab[] IS NOT INITIAL.
CALL FUNCTION ‘VRM_SET_VALUES’
EXPORTING
id     = ‘P_PC’
values = itab[].
ENDIF.
d = ‘X’.
ENDIF.
ELSE.
SELECT DISTINCT valfrom AS key valfrom AS text FROM setleaf
INTO CORRESPONDING FIELDS OF TABLE itab
WHERE subclass = ‘N207′ AND setname = p_pcg AND setclass = ‘0106′.
IF itab[] IS NOT INITIAL.
CALL FUNCTION ‘VRM_SET_VALUES’
EXPORTING
id     = ‘P_PC’
values = itab[].
ENDIF.
CLEAR itab[].
ENDIF.
ENDIF.
ENDFORM.                    ” SETPCG
*&———————————————————————*
*&      Form  SETDIS
*&———————————————————————*
*       set the disable of the profit center
*———————————————————————-*
*      –>P_P_RPV  text
*———————————————————————-*
FORM setdis  USING p.
LOOP AT SCREEN.
IF p = ‘2070′.
IF screen-group1 = ‘PC’.
screen-input = ‘0′.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDFORM.                    ” SETDIS
*&———————————————————————*
*&      Form  GET_DATA
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM get_data1 .
PERFORM getrv.”获取报表项目对应的科目范围
ENDFORM.                    ” GET_DATA
*&———————————————————————*
*&      Form  GETRV
*&———————————————————————*
*       get the report item  and the account range
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM getrv .
CLEAR gt_fagl_011zc[].
SELECT versn
ergsl
vonkt
biskt
FROM fagl_011zc INTO CORRESPONDING FIELDS OF TABLE gt_fagl_011zc
WHERE versn = p_rpv.
IF gt_fagl_011zc[] IS NOT  INITIAL.
SELECT DISTINCT ergsl
txt45
INTO CORRESPONDING FIELDS OF TABLE gt_fagl_011qt
FROM fagl_011qt FOR ALL ENTRIES IN gt_fagl_011zc
WHERE versn = p_rpv AND ergsl = gt_fagl_011zc-ergsl.
IF gt_fagl_011qt[] IS NOT INITIAL.
SORT gt_fagl_011qt BY ergsl.
LOOP AT gt_fagl_011zc.
READ TABLE gt_fagl_011qt WITH KEY ergsl = gt_fagl_011zc-ergsl BINARY SEARCH.
IF sy-subrc = 0.
gt_fagl_011zc-txt45 = gt_fagl_011qt-txt45.
ENDIF.
MODIFY gt_fagl_011zc.
ENDLOOP.
ENDIF.
IF p_curr = ‘KRW’.
PERFORM getbs.
ENDIF.
ly = p_y - 1.”取去年
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
EXPORTING
input  = p_m
IMPORTING
output = p_m.
IF p_rp = ‘BS’.
CLEAR gt_alv_bs0[].
PERFORM setbsitem.
SORT gt_alv_bs0 BY lct1 ASCENDING.
DATA:lv_pro(10) TYPE p DECIMALS 2 VALUE ‘3′,
lv_i(10) TYPE p DECIMALS 2 VALUE ‘3′.
“为核算固定资产等项目设置的临时变量
DATA:a1601_1 TYPE hslvt12,
a1601_2 TYPE hslvt12,
a1602_1 TYPE hslvt12,
a1602_2 TYPE hslvt12,
a1603_1 TYPE hslvt12,
a1603_2 TYPE hslvt12,
a4001_1 TYPE hslvt12,
a4001_2 TYPE hslvt12,
a3103_1 TYPE hslvt12,
a3103_2 TYPE hslvt12,
a4104_1 TYPE hslvt12,
a4104_2 TYPE hslvt12,
a4102_1 TYPE hslvt12,
a4102_2 TYPE hslvt12,
a13yamt1 TYPE hslvt12,
a13ysamt1 TYPE hslvt12,
a14yamt2 TYPE hslvt12,
a14ysamt2 TYPE hslvt12,
a23yamt2 TYPE hslvt12,
a23ysamt2 TYPE hslvt12,
a24yamt2 TYPE hslvt12,
a24ysamt2 TYPE hslvt12,
a31yamt2 TYPE hslvt12,
a31ysamt2 TYPE hslvt12,
a32yamt1 TYPE hslvt12,
a32ysamt1 TYPE hslvt12,
a33yamt1 TYPE hslvt12,
a33ysamt1 TYPE hslvt12,
a33yamt2 TYPE hslvt12,
a33ysamt2 TYPE hslvt12,
a30yamt2 TYPE hslvt12,
a30ysamt2 TYPE hslvt12,
a26yamt2 TYPE hslvt12,
a26ysamt2 TYPE hslvt12,
a27yamt2 TYPE hslvt12,
a27ysamt2 TYPE hslvt12,
a29yamt2 TYPE hslvt12,
a29ysamt2 TYPE hslvt12.
“构造科目查询范围的查询条件
LOOP AT gt_alv_bs0.
IF gt_alv_bs0-item1 = ‘货币资金’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1000′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2001′ ly.
ELSEIF gt_alv_bs0-item1 = ‘交易性金融资产’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1101′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2010′ ly.
ELSEIF gt_alv_bs0-item1 = ‘应收票据’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1121′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2201′ ly.
ELSEIF gt_alv_bs0-item1 = ‘应收账款’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1122′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2202′ ly.
ELSEIF gt_alv_bs0-item1 = ‘预付款项’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1123′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2203′ ly.
ELSEIF gt_alv_bs0-item1 = ‘应收利息’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1132′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2211′ ly.
ELSEIF gt_alv_bs0-item1 = ‘应收股利’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1131′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2221′ ly.
ELSEIF gt_alv_bs0-item1 = ‘其他应收款’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1221′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2231′ ly.
ELSEIF gt_alv_bs0-item1 = ‘存货’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1400′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2232′ ly.
ELSEIF gt_alv_bs0-item1 = ‘一年内到期的非流动资产’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1507′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2241′ ly.
ELSEIF gt_alv_bs0-item1 = ‘其他流动资产’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1499′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2240′ ly.
ELSEIF gt_alv_bs0-item1 = ‘流动资产合计’.
PERFORM getbsamt USING gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2222′ ly.
ELSEIF gt_alv_bs0-item1 = ‘可供出售金融资产’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1503′ ly.
ELSEIF gt_alv_bs0-item1 = ‘持有至到期投资’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1501′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2501′ ly.
ELSEIF gt_alv_bs0-item1 = ‘长期应收款’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1504′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2502′ ly.
ELSEIF gt_alv_bs0-item1 = ‘长期股权投资’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1511′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2701′ ly.
ELSEIF gt_alv_bs0-item1 = ‘投资性房地产’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1521′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2711′ ly.
ELSEIF gt_alv_bs0-item1 = ‘固定资产’.
CLEAR:a1601_1,a1601_2,a1602_1,a1602_2,a1603_1,a1603_2.
PERFORM getbsamt USING:a1601_1 a1601_2 ‘1601′ ly,
a1602_1 a1602_2 ‘1602′ ly,
a1603_1 a1603_2 ‘1603′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2801′ ly.
gt_alv_bs0-yamt1 = a1601_1 + a1602_1 + a1603_1.
gt_alv_bs0-ysamt1 = a1601_2 + a1602_2 + a1603_2.
ELSEIF gt_alv_bs0-item1 = ‘在建工程’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1604′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2901′ ly.
ELSEIF gt_alv_bs0-item1 = ‘工程物资’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1605′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘2000′ ly.
ELSEIF gt_alv_bs0-item1 = ‘固定资产清理’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1606′ ly.
ELSEIF gt_alv_bs0-item1 = ‘无形资产’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1701′ ly,
a4001_1 a4001_2 ‘4001′ ly,
a3103_1 a3103_2 ‘3103′ ly.
gt_alv_bs0-yamt2 = a4001_1 + a3103_1.
gt_alv_bs0-ysamt2 = a4001_2 + a3103_2.
ELSEIF gt_alv_bs0-item1 = ‘开发支出’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1710′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘4002′ ly.
ELSEIF gt_alv_bs0-item1 = ‘商誉’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1711′ ly.
ELSEIF gt_alv_bs0-item1 = ‘长期待摊费用’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1801′ ly,
gt_alv_bs0-yamt2 gt_alv_bs0-ysamt2 ‘4101′ ly.
ELSEIF gt_alv_bs0-item1 = ‘递延所得税资产’.
“计算本年利润
DATA:a TYPE hslvt12,”截止到今年当月的利润
b TYPE hslvt12.”留存收益中的年初利润
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1811′ ly.
PERFORM getisdb.
READ TABLE gt_alv_is0 INDEX 18.
a = gt_alv_is0-yamt.
PERFORM getprofitamt USING b ly.
gt_alv_bs0-yamt2 = a + b.
gt_alv_bs0-ysamt2 = b.
CLEAR gt_alv_is0[].
ELSEIF gt_alv_bs0-item1 = ‘其他非流动资产’.
PERFORM getbsamt USING:gt_alv_bs0-yamt1 gt_alv_bs0-ysamt1 ‘1901′ ly.
ENDIF.
MODIFY gt_alv_bs0.
PERFORM porcess_show USING lv_pro.
lv_pro = lv_pro + lv_i .
ENDLOOP.
“负债类科目贷方转正,借方转负
LOOP AT gt_alv_bs0 WHERE lct1 BETWEEN 1 AND 29.
IF gt_alv_bs0-yamt2 LT 0.
gt_alv_bs0-yamt2 = ABS( gt_alv_bs0-yamt2 ).
ELSE.
gt_alv_bs0-yamt2 = ( -1 ) * ( gt_alv_bs0-yamt2 ).
ENDIF.
IF gt_alv_bs0-ysamt2 LT 0.
gt_alv_bs0-ysamt2 = ABS( gt_alv_bs0-ysamt2 ).
ELSE.
gt_alv_bs0-ysamt2 = ( -1 ) * ( gt_alv_bs0-ysamt2 ).
ENDIF.
MODIFY gt_alv_bs0.
ENDLOOP.
CLEAR:a13yamt1,
a13ysamt1,
a14yamt2,
a14ysamt2,
a23yamt2,
a23ysamt2,
a24yamt2,
a24ysamt2,
a31yamt2,
a31ysamt2,
a32yamt1,
a32ysamt1,
a33yamt1,
a33ysamt1,
a33yamt2,
a33ysamt2,
a30yamt2,
a30ysamt2,
a26yamt2,
a26ysamt2,
a27yamt2,
a27ysamt2,
a29yamt2,
a29ysamt2.
“对特殊项目进行总计
LOOP AT gt_alv_bs0.
IF gt_alv_bs0-lct1 BETWEEN 2 AND 12.”流动资产
a13yamt1 = gt_alv_bs0-yamt1 + a13yamt1.
a13ysamt1 = gt_alv_bs0-ysamt1 + a13ysamt1.
ENDIF.
IF gt_alv_bs0-lct1 BETWEEN 15 AND 31.”非流动资产
a32yamt1 = gt_alv_bs0-yamt1 + a32yamt1.
a32ysamt1 = gt_alv_bs0-ysamt1 + a32ysamt1.
ENDIF.
IF gt_alv_bs0-lct1 BETWEEN 2 AND 13.”流动负债
a14yamt2 = gt_alv_bs0-yamt2 + a14yamt2.
a14ysamt2 = gt_alv_bs0-ysamt2 + a14ysamt2.
ENDIF.
IF gt_alv_bs0-lct1 BETWEEN 16 AND 22.”非流动负债
a23yamt2 = gt_alv_bs0-yamt2 + a23yamt2.
a23ysamt2 = gt_alv_bs0-ysamt2 + a23ysamt2.
ENDIF.
IF gt_alv_bs0-lct1 BETWEEN 26 AND 30.”所有者权益
a31yamt2 = gt_alv_bs0-yamt2 + a31yamt2.
a31ysamt2 = gt_alv_bs0-ysamt2 + a31ysamt2.
ENDIF.
ENDLOOP.
a33yamt1 = a13yamt1 + a32yamt1.”资产总计
a33ysamt1 = a13ysamt1 + a32ysamt1.
a24yamt2 = a14yamt2 + a23yamt2.”负债总计
a24ysamt2 = a14ysamt2 + a23ysamt2.
a33yamt2 = a24yamt2 + a31yamt2.”负债+所有者权益
a33ysamt2 = a24ysamt2 + a31ysamt2.
” a30yamt2 = a33yamt1 - a33yamt2.
“a30ysamt2 = a33ysamt1 - a33ysamt2.
*      READ TABLE gt_alv_bs0 WITH KEY lct1 = 26.
*      a26yamt2 = gt_alv_bs0-yamt2.
*      a26ysamt2 = gt_alv_bs0-ysamt2.
*      READ TABLE gt_alv_bs0 WITH KEY lct1 = 27.
*      a27yamt2 = gt_alv_bs0-yamt2.
*      a27ysamt2 = gt_alv_bs0-ysamt2.
*      READ TABLE gt_alv_bs0 WITH KEY lct1 = 29.
*      a29yamt2 = gt_alv_bs0-yamt2.
*      a29ysamt2 = gt_alv_bs0-ysamt2.
*      a30yamt2 = a33yamt1 - a24yamt2 - a26yamt2 - a27yamt2 - a29yamt2.”本年利润调平
*      a30ysamt2 = a33ysamt1 - a24ysamt2 - a26ysamt2 - a27ysamt2 - a29ysamt2.
*      a31yamt2 =  a26yamt2 + a27yamt2 + a29yamt2 + a30yamt2.
*      a31ysamt2 =  a26ysamt2 + a27ysamt2 + a29ysamt2 + a30ysamt2.
LOOP AT gt_alv_bs0.
IF gt_alv_bs0-lct1 = 13.
gt_alv_bs0-yamt1 = a13yamt1.
gt_alv_bs0-ysamt1 = a13ysamt1.
ELSEIF gt_alv_bs0-lct1 = 14.
gt_alv_bs0-yamt2 = a14yamt2.
gt_alv_bs0-ysamt2 = a14ysamt2.
ELSEIF gt_alv_bs0-lct1 = 23.
gt_alv_bs0-yamt2 = a23yamt2.
gt_alv_bs0-ysamt2 = a23ysamt2.
ELSEIF gt_alv_bs0-lct1 = 24.
gt_alv_bs0-yamt2 = a24yamt2.
gt_alv_bs0-ysamt2 = a24ysamt2.
*        ELSEIF gt_alv_bs0-lct1 = 30.
*          gt_alv_bs0-yamt2 = a30yamt2.
*          gt_alv_bs0-ysamt2 = a30ysamt2.
ELSEIF gt_alv_bs0-lct1 = 31.
gt_alv_bs0-yamt2 = a31yamt2.
gt_alv_bs0-ysamt2 = a31ysamt2.
ELSEIF gt_alv_bs0-lct1 = 32.
gt_alv_bs0-yamt1 = a32yamt1.
gt_alv_bs0-ysamt1 = a32ysamt1.
ELSEIF gt_alv_bs0-lct1 = 33.
gt_alv_bs0-yamt1 = a33yamt1.
gt_alv_bs0-ysamt1 = a33ysamt1.
gt_alv_bs0-yamt2 = a33yamt2.
gt_alv_bs0-ysamt2 = a33ysamt2.
ENDIF.
MODIFY gt_alv_bs0.
ENDLOOP.
IF p_curr = ‘KRW’.
LOOP AT gt_alv_bs0.
gt_alv_bs0-yamt1 = gt_alv_bs0-yamt1 * gv_bs.
gt_alv_bs0-ysamt1 = gt_alv_bs0-ysamt1 * gv_bs.
gt_alv_bs0-yamt2 = gt_alv_bs0-yamt2 * gv_bs.
gt_alv_bs0-ysamt2 = gt_alv_bs0-ysamt2 * gv_bs.
gt_alv_bs0-waers = ‘KRW’.
MODIFY gt_alv_bs0.
ENDLOOP.
ELSE.
LOOP AT gt_alv_bs0.
gt_alv_bs0-waers = ‘CNY’.
MODIFY gt_alv_bs0.
ENDLOOP.
ENDIF.
gv_iden = ‘BS’.
CALL SCREEN ‘0100′.
ELSEIF p_rp = ‘IS’.
PERFORM getisdb.
CALL SCREEN ‘0200′.
ENDIF.
ENDIF.
ENDFORM.                    ” GETRV
*&———————————————————————*
*&      Form  SETISITEM
*&———————————————————————*
*       fill the profit table
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM setisitem .
gt_alv_is0-lct = 1.
gt_alv_is0-item = ‘一、营业收入’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 2.
gt_alv_is0-item = ‘ 减:营业成本’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 3.
gt_alv_is0-item = ‘  营业税金及附加’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 4.
gt_alv_is0-item = ‘   销售费用’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 5.
gt_alv_is0-item = ‘   管理费用’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 6.
gt_alv_is0-item = ‘   财务费用’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 7.
gt_alv_is0-item = ‘  资产减值损失’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 8.
gt_alv_is0-item = ‘ 加:公允价值变动收益(损失以“-”号填列)’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 9.
gt_alv_is0-item = ‘       投资收益(损失以“-”号填列)’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 10.
gt_alv_is0-item = ‘    其中:对联营企业和合营企业的投资收益’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 11.
gt_alv_is0-item = ‘二、营业利润(亏损以“-”号填列)’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 12.
gt_alv_is0-item = ‘   加:营业外收入’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 13.
gt_alv_is0-item = ‘   减:营业外支出’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 14.
gt_alv_is0-item = ‘  其中:非流动资产处置损失’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 15.
gt_alv_is0-item = ‘  加:以前年度损益调整’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 16.
gt_alv_is0-item = ‘三、利润总额(亏损总额以“-”号填列)’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 17.
gt_alv_is0-item = ‘   减:所得税费用’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 18.
gt_alv_is0-item = ‘四、净利润(净亏损以“-”号填列)’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 19.
gt_alv_is0-item = ‘五、每股收益:’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 20.
gt_alv_is0-item = ‘   (一)基本每股收益’.
APPEND gt_alv_is0.
gt_alv_is0-lct = 21.
gt_alv_is0-item = ‘   (二)稀释每股收益’.
APPEND gt_alv_is0.
ENDFORM.                    ” SETISITEM
*&———————————————————————*
*&      Form  getisamt
*&———————————————————————*
*       get the is amount by itemid
*———————————————————————-*
FORM getisamt USING  p_yamt
p_mamt
value(p_itemid)
value(p_id).
“构造科目查询范围的查询条件
p_yamt = 0.
p_mamt = 0.
PERFORM getaccrange USING p_itemid.
CLEAR gs_hsl.
REFRESH gt_monv.
CHECK gr_act[] IS NOT INITIAL.
CASE p_rpv.
WHEN ‘2070′.”不考虑利润中心
IF p_id = 4.”6600取功能范围1200
SELECT SUM( hsl ) INTO p_mamt
FROM faglflexa
WHERE ryear = p_y
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND pprctr = ””抵消内部交易
AND rfarea = ‘1200′
AND poper = p_m.
SELECT SUM( hsl ) INTO p_yamt
FROM faglflexa
WHERE ( ryear = p_y AND poper BETWEEN ‘001′ AND p_m )
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND pprctr = ””抵消内部交易
AND rfarea = ‘1200′.
ELSEIF p_id = 5.”6600取功能范围1300
SELECT SUM( hsl ) INTO p_mamt
FROM faglflexa
WHERE ryear = p_y
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND pprctr = ””抵消内部交易
AND rfarea = ‘1300′
AND poper = p_m.
SELECT SUM( hsl ) INTO p_yamt
FROM faglflexa
WHERE ( ryear = p_y AND poper BETWEEN ‘001′ AND p_m )
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND pprctr = ””抵消内部交易
AND rfarea = ‘1300′.
ELSEIF p_id = 14.”按照科目进行取数
SELECT SUM( hsl ) INTO p_mamt
FROM faglflexa
WHERE ryear = p_y
AND rldnr = ‘0L’
AND racct BETWEEN ‘962101′ AND ‘962201′
AND rbukrs = ‘N207′
AND pprctr = ””抵消内部交易
AND poper = p_m.
SELECT SUM( hsl ) INTO p_yamt
FROM faglflexa
WHERE ( ryear = p_y AND poper BETWEEN ‘001′ AND p_m )
AND rldnr = ‘0L’
AND racct BETWEEN ‘962101′ AND ‘962201′
AND rbukrs = ‘N207′
AND pprctr = ”.”抵消内部交易.
ELSE.”正常取
SELECT SUM( hsl ) INTO p_mamt
FROM faglflexa
WHERE ryear = p_y
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND pprctr = ””抵消内部交易
AND poper = p_m.
SELECT SUM( hsl ) INTO p_yamt
FROM faglflexa
WHERE  ( ryear = p_y AND poper BETWEEN ‘001′ AND p_m )
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND pprctr = ”.”抵消内部交易
ENDIF.
WHEN ‘2071′ OR ‘2072′ OR ‘2073′.”自选利润中心组,利润中心可输可不输
IF p_pc <> ”.
IF p_id = 4.”6600取功能范围1200
SELECT SUM( hsl ) INTO p_mamt
FROM faglflexa
WHERE ryear = p_y
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND prctr = p_pc”抵消内部交易
AND rfarea = ‘1200′
AND poper = p_m.
SELECT SUM( hsl ) INTO p_yamt
FROM faglflexa
WHERE  ( ryear = p_y AND poper BETWEEN ‘001′ AND p_m )
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND prctr = p_pc”抵消内部交易
AND rfarea = ‘1200′.
ELSEIF p_id = 5.”6600取功能范围1300
SELECT SUM( hsl ) INTO p_mamt
FROM faglflexa
WHERE ryear = p_y
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND prctr = p_pc”抵消内部交易
AND rfarea = ‘1300′
AND poper = p_m.
SELECT SUM( hsl ) INTO p_yamt
FROM faglflexa
WHERE ( ryear = p_y AND poper BETWEEN ‘001′ AND p_m )
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND prctr = p_pc”抵消内部交易
AND rfarea = ‘1300′.
ELSEIF p_id = 14.”按照科目进行取数
SELECT SUM( hsl ) INTO p_mamt
FROM faglflexa
WHERE ryear = p_y
AND rldnr = ‘0L’
AND racct BETWEEN ‘962101′ AND ‘962201′
AND rbukrs = ‘N207′
AND prctr = p_pc”抵消内部交易
AND poper = p_m.
SELECT SUM( hsl ) INTO p_yamt
FROM faglflexa
WHERE ( ryear = p_y AND poper BETWEEN ‘001′ AND p_m )
AND rldnr = ‘0L’
AND racct BETWEEN ‘962101′ AND ‘962201′
AND rbukrs = ‘N207′
AND prctr = p_pc.”抵消内部交易.
ELSE.”正常取
SELECT SUM( hsl ) INTO p_mamt
FROM faglflexa
WHERE ryear = p_y
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND prctr = p_pc”抵消内部交易
AND poper = p_m.
SELECT SUM( hsl ) INTO p_yamt
FROM faglflexa
WHERE ( ryear = p_y AND poper BETWEEN ‘001′ AND p_m )
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND prctr = p_pc.”抵消内部交易
ENDIF.
ELSEIF p_pcg <> ” AND p_pc IS INITIAL.”利润中心为空,选取所有的利润中心
IF p_id = 4.”6600取功能范围1200
SELECT SUM( hsl ) INTO p_mamt
FROM faglflexa
WHERE ryear = p_y
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND prctr IN ( SELECT valfrom  FROM setleaf WHERE setname = p_pcg )
AND rfarea = ‘1200′
AND poper = p_m.
SELECT SUM( hsl ) INTO p_yamt
FROM faglflexa
WHERE ( ryear = p_y AND poper BETWEEN ‘001′ AND p_m )
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND prctr IN ( SELECT valfrom  FROM setleaf WHERE setname = p_pcg )
AND rfarea = ‘1200′.
ELSEIF p_id = 5.”6600取功能范围1300
SELECT SUM( hsl ) INTO p_mamt
FROM faglflexa
WHERE ryear = p_y
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND prctr IN ( SELECT valfrom  FROM setleaf WHERE setname = p_pcg )
AND rfarea = ‘1300′
AND poper = p_m.
SELECT SUM( hsl ) INTO p_yamt
FROM faglflexa
WHERE  ( ryear = p_y AND poper BETWEEN ‘001′ AND p_m )
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND prctr IN ( SELECT valfrom  FROM setleaf WHERE setname = p_pcg )
AND rfarea = ‘1300′.
ELSEIF p_id = 14.”按照科目进行取数
SELECT SUM( hsl ) INTO p_mamt
FROM faglflexa
WHERE ryear = p_y
AND rldnr = ‘0L’
AND racct BETWEEN ‘962101′ AND ‘962201′
AND rbukrs = ‘N207′
AND prctr IN ( SELECT valfrom  FROM setleaf WHERE setname = p_pcg )
AND poper = p_m.
SELECT SUM( hsl ) INTO p_yamt
FROM faglflexa
WHERE ( ryear = p_y AND poper BETWEEN ‘001′ AND p_m )
AND rldnr = ‘0L’
AND racct BETWEEN ‘962101′ AND ‘962201′
AND rbukrs = ‘N207′
AND prctr IN ( SELECT valfrom  FROM setleaf WHERE setname = p_pcg ).
ELSE.”正常取
SELECT SUM( hsl ) INTO p_mamt
FROM faglflexa
WHERE ryear = p_y
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND prctr IN ( SELECT valfrom  FROM setleaf WHERE setname = p_pcg )
AND poper = p_m.
SELECT SUM( hsl ) INTO p_yamt
FROM faglflexa
WHERE  ( ryear = p_y AND poper BETWEEN ‘001′ AND p_m )
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND prctr IN ( SELECT valfrom  FROM setleaf WHERE setname = p_pcg ).
ENDIF.
ENDIF.
ENDCASE.
“获取结果数值,p_mamt是本期,p_yamt是累计
IF p_id <> 6.
p_yamt = ABS( p_yamt ).
p_mamt = ABS( p_mamt ).
ENDIF.
ENDFORM.                    ”getisamt
*&———————————————————————*
*&      Form  fillgt_monv
*&———————————————————————*
*       FILL THE MONTH VALUE
*———————————————————————-*
FORM fillgt_monv.
CLEAR gt_monv[].
gt_monv-month = ‘01′.
gt_monv-value = gs_hsl-hsl01.
APPEND gt_monv.
gt_monv-month = ‘02′.
gt_monv-value = gs_hsl-hsl02.
APPEND gt_monv.
gt_monv-month = ‘03′.
gt_monv-value = gs_hsl-hsl03.
APPEND gt_monv.
gt_monv-month = ‘04′.
gt_monv-value = gs_hsl-hsl04.
APPEND gt_monv.
gt_monv-month = ‘05′.
gt_monv-value = gs_hsl-hsl05.
APPEND gt_monv.
gt_monv-month = ‘06′.
gt_monv-value = gs_hsl-hsl06.
APPEND gt_monv.
gt_monv-month = ‘07′.
gt_monv-value = gs_hsl-hsl07.
APPEND gt_monv.
gt_monv-month = ‘08′.
gt_monv-value = gs_hsl-hsl08.
APPEND gt_monv.
gt_monv-month = ‘09′.
gt_monv-value = gs_hsl-hsl09.
APPEND gt_monv.
gt_monv-month = ‘10′.
gt_monv-value = gs_hsl-hsl10.
APPEND gt_monv.
gt_monv-month = ‘11′.
gt_monv-value = gs_hsl-hsl11.
APPEND gt_monv.
gt_monv-month = ‘12′.
gt_monv-value = gs_hsl-hsl12.
APPEND gt_monv.
ENDFORM.                    ”fillgt_monv
*&———————————————————————*
*&      Form  FILLGT_MONV1
*&———————————————————————*
*       text
*———————————————————————-*
FORM fillgt_monv1.
CLEAR gt_monv[].
gt_monv-month = ‘01′.
gt_monv-value = gs_hsl1-hsl01.
APPEND gt_monv.
gt_monv-month = ‘02′.
gt_monv-value = gs_hsl1-hsl02.
APPEND gt_monv.
gt_monv-month = ‘03′.
gt_monv-value = gs_hsl1-hsl03.
APPEND gt_monv.
gt_monv-month = ‘04′.
gt_monv-value = gs_hsl1-hsl04.
APPEND gt_monv.
gt_monv-month = ‘05′.
gt_monv-value = gs_hsl1-hsl05.
APPEND gt_monv.
gt_monv-month = ‘06′.
gt_monv-value = gs_hsl1-hsl06.
APPEND gt_monv.
gt_monv-month = ‘07′.
gt_monv-value = gs_hsl1-hsl07.
APPEND gt_monv.
gt_monv-month = ‘08′.
gt_monv-value = gs_hsl1-hsl08.
APPEND gt_monv.
gt_monv-month = ‘09′.
gt_monv-value = gs_hsl1-hsl09.
APPEND gt_monv.
gt_monv-month = ‘10′.
gt_monv-value = gs_hsl1-hsl10.
APPEND gt_monv.
gt_monv-month = ‘11′.
gt_monv-value = gs_hsl1-hsl11.
APPEND gt_monv.
gt_monv-month = ‘12′.
gt_monv-value = gs_hsl1-hsl12.
APPEND gt_monv.
ENDFORM.                    ”fillgt_monv
*&———————————————————————*
*&      Form  fm_user_command
*&———————————————————————*
*       text
*———————————————————————-*
*      –>P_UCOMM    text
*———————————————————————-*
FORM fm_user_command  USING    p_ucomm.
CASE p_ucomm .
WHEN ‘GETEXC’ .
* –>2012.01.16 CCYU START
PERFORM get_excel.
* <–2012.01.16 CCYU END.
*    WHEN ‘Mod’.
**      CALL METHOD gs_alv->set_frontend_fieldcatalog
**      CALL METHOD gs_alv->refresh_table_display .
*    WHEN ‘SAVE’.
*    WHEN ‘New’.
*    WHEN ‘Delete’.
*    WHEN ‘IMPO’.
ENDCASE .
ENDFORM.                    ” fm_user_command
*&———————————————————————*
*&      Form  modify_toolbar
*&———————————————————————*
*       text
*———————————————————————-*
*      –>P_OBJECT       text
*      –>P_INTERACTIVE  text
*———————————————————————-*
FORM modify_toolbar  USING    p_object TYPE REF TO
cl_alv_event_toolbar_set p_interactive .
* –>2012.01.16 CCYU START
DATA: ls_toolbar TYPE stb_button .
CLEAR ls_toolbar.
MOVE 3      TO ls_toolbar-butn_type .
APPEND ls_toolbar  TO p_object->mt_toolbar .
CLEAR ls_toolbar.
MOVE ‘GETEXC’    TO ls_toolbar-function .”function code
MOVE icon_xxl   TO ls_toolbar-icon .”icon
MOVE ‘导出EXCEL’    TO ls_toolbar-quickinfo .”the tip
MOVE ‘导出EXCEL’  TO ls_toolbar-text.
MOVE ”            TO ls_toolbar-disabled .”if disabled
APPEND ls_toolbar  TO p_object->mt_toolbar .
* <–2012.01.16 CCYU END.
ENDFORM.                    ” MODIFY_TOOLBAR
*&———————————————————————*
*&      Form  fill_field_category
*&———————————————————————*
*       text
*———————————————————————-*
*      –>P_SECTION  text
*      –>P_FNAME    text
*      –>P_VALUE    text
*———————————————————————-*
FORM fill_field_category  USING    p_section
p_fname
p_value.
DATA: l_col(40) .
FIELD-SYMBOLS <l_fs> .
IF p_section = ‘S’ .
CLEAR gs_fieldcat .
ENDIF .
CONCATENATE ‘GS_FIELDCAT-’ p_fname INTO l_col .
ASSIGN (l_col) TO <l_fs> .
MOVE p_value   TO <l_fs> .
IF p_section = ‘E’ .
APPEND gs_fieldcat TO gt_fieldcat .
ENDIF .
ENDFORM.                    ” FILL_FIELD_CATEGORY
*&———————————————————————*
*&      Form  DISPLAYIS
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM displayis .
PERFORM setlayout.
PERFORM buildfieldcat_is.
PERFORM excluding_tb_function.
ENDFORM.                    ” DISPLAYIS
*&———————————————————————*
*&      Form  setlayout
*&———————————————————————*
*       text
*———————————————————————-*
FORM setlayout .
CLEAR gs_layout.
gs_layout-cwidth_opt = ‘X’ .
gs_layout-zebra = ‘X’ .
gs_layout-sel_mode = ‘A’.
ENDFORM.                    ” set layout
*&———————————————————————*
*&      Form  BUILDFIELDCAT_IS
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM buildfieldcat_is .
CLEAR gt_fieldcat[].
PERFORM fill_field_category USING :
‘S’ ‘TABNAME’   ‘GT_ALV_IS0′ ,
”  ’SCRTEXT_M’ ‘项目’ ,
”  ’OUTPUTLEN’ ‘20′ ,
‘E’ ‘FIELDNAME’ ‘ITEM’ ,
‘S’ ‘TABNAME’   ‘GT_ALV_IS0′ ,
”  ’SCRTEXT_M’ ‘行次’ ,
”  ’OUTPUTLEN’ ‘20′ ,
”  ’KEY’       ‘X’,
‘E’ ‘FIELDNAME’ ‘LCT’ ,
‘S’ ‘TABNAME’   ‘GT_ALV_IS0′ ,
”  ’SCRTEXT_M’ ‘本期金额’ ,
”  ’OUTPUTLEN’ ‘20′ ,
”  ’HotSpot’   ‘X’,
‘E’ ‘FIELDNAME’ ‘MAMT’ ,
‘S’ ‘TABNAME’   ‘GT_ALV_IS0′ ,
”  ’SCRTEXT_M’ ‘累计余额’ ,
”  ’OUTPUTLEN’ ‘20′ ,
‘E’ ‘FIELDNAME’ ‘YAMT’ .
ENDFORM.                    ” BUILDFIELDCAT_IS
*&———————————————————————*
*&      Form  fm_add_topofpage
*&———————————————————————*
*       text
*———————————————————————-*
*      –>P_E_DYNDOC_ID  text
*———————————————————————-*
FORM fm_add_topofpage  USING  p_e_dyndoc_id TYPE REF TO cl_dd_document.
DATA l_text(255).
IF gv_iden = ‘IS’.
CALL METHOD gs_dyndoc_id->add_text
EXPORTING
text         = ‘利润表(非金融类)INCOME STATEMENT (NON-financial enterprise)’
sap_fontsize = cl_dd_document=>large
sap_emphasis = cl_dd_document=>strong.
CALL METHOD gs_dyndoc_id->new_line .
CONCATENATE p_y ‘年’ ‘  ’ p_m ‘月’ ‘ 会企02表 单位:’ p_curr INTO l_text.
CALL METHOD gs_dyndoc_id->new_line .
CALL METHOD gs_dyndoc_id->add_text
EXPORTING
text = l_text.
CALL METHOD gs_dyndoc_id->new_line .
CALL METHOD gs_dyndoc_id->new_line .
CALL METHOD gs_dyndoc_id->add_text
EXPORTING
text = ‘爱思开实业(上海)商贸有限公司’.
PERFORM fm_control_html .
ELSEIF gv_iden = ‘BS’.
CALL METHOD gs_dyndoc_id->add_text
EXPORTING
text         = ‘资产负债表(非金融类)BALANCE SHEET(NON-financial enterprise)’
sap_fontsize = cl_dd_document=>large
sap_emphasis = cl_dd_document=>strong.
CALL METHOD gs_dyndoc_id->new_line .
CONCATENATE p_y ‘年’ ‘  ’ p_m ‘月’ ‘ 会企02表 单位:’ p_curr INTO l_text.
CALL METHOD gs_dyndoc_id->new_line .
CALL METHOD gs_dyndoc_id->add_text
EXPORTING
text = l_text.
CALL METHOD gs_dyndoc_id->new_line .
CALL METHOD gs_dyndoc_id->new_line .
CALL METHOD gs_dyndoc_id->add_text
EXPORTING
text = ‘爱思开实业(上海)商贸有限公司’.
PERFORM fm_control_html .
ENDIF.
ENDFORM.                    ” FM_ADD_TOPOFPAGE
*&———————————————————————*
*&      Form  fm_control_html
*&———————————————————————*
*       text
*———————————————————————-*
FORM fm_control_html .
* Define local variables
DATA: lv_length        TYPE i,                    ” Length
lv_background_id TYPE sdydo_key VALUE space.” Background id
* Creating HTML Control
IF gs_html_cntrl IS INITIAL.
CREATE OBJECT gs_html_cntrl
EXPORTING
parent = gs_parent_html.
ENDIF.
* Call function ‘REUSE_ALV_GRID_COMMENTARY_SET’ to set
CALL FUNCTION ‘REUSE_ALV_GRID_COMMENTARY_SET’
EXPORTING
document = gs_dyndoc_id
bottom   = ‘E’ “SPACE
IMPORTING
length   = lv_length.
* Get TOP->HTML_TABLE Ready
CALL METHOD gs_dyndoc_id->merge_document.
* Set wallpaper
CALL METHOD gs_dyndoc_id->set_document_background
EXPORTING
picture_id = lv_background_id.
* Connect Top of page document to HTML Control
gs_dyndoc_id->html_control = gs_html_cntrl.
* Display Top of page document
CALL METHOD gs_dyndoc_id->display_document
EXPORTING
reuse_control      = ‘X’
parent             = gs_parent_html
EXCEPTIONS
html_display_error = 1.
ENDFORM.                    ”FM_CONTROL_HTML
*&———————————————————————*
*&      Form  excluding_tb_function
*&———————————————————————*
*       text
*———————————————————————-*
FORM excluding_tb_function .
CLEAR: g_toolbar .
REFRESH: g_toolbar .
PERFORM append_alv_exclude_functions TABLES g_toolbar USING :
cl_gui_alv_grid=>mc_fc_loc_undo          ,
cl_gui_alv_grid=>mc_fc_auf                 ,
cl_gui_alv_grid=>mc_fc_average            ,      ”Mean Value
cl_gui_alv_grid=>mc_fc_back_classic       ,
cl_gui_alv_grid=>mc_fc_call_abc            ,
cl_gui_alv_grid=>mc_fc_check               ,
cl_gui_alv_grid=>mc_fc_call_chain         ,
cl_gui_alv_grid=>mc_fc_call_crbatch        ,
cl_gui_alv_grid=>mc_fc_call_crweb         ,
cl_gui_alv_grid=>mc_fc_call_lineitems      ,
cl_gui_alv_grid=>mc_fc_call_master_data   ,
cl_gui_alv_grid=>mc_fc_call_more          ,
cl_gui_alv_grid=>mc_fc_call_report        ,
cl_gui_alv_grid=>mc_fc_call_xint          ,
*          CL_GUI_ALV_GRID=>MC_FC_CALL_XXL            ,”导出EXCEL
cl_gui_alv_grid=>mc_fc_col_invisible      ,
cl_gui_alv_grid=>mc_fc_col_optimize       ,
cl_gui_alv_grid=>mc_fc_count               ,
cl_gui_alv_grid=>mc_fc_current_variant    ,
cl_gui_alv_grid=>mc_fc_data_save            ,
cl_gui_alv_grid=>mc_fc_delete_filter       ,
cl_gui_alv_grid=>mc_fc_deselect_all        ,
cl_gui_alv_grid=>mc_fc_detail           ,
cl_gui_alv_grid=>mc_fc_expcrdata         ,
cl_gui_alv_grid=>mc_fc_expcrdesig          ,
cl_gui_alv_grid=>mc_fc_expcrtempl        ,
cl_gui_alv_grid=>mc_fc_expmdb            ,
cl_gui_alv_grid=>mc_fc_extend         ,
cl_gui_alv_grid=>mc_fc_f4                ,
”         CL_GUI_ALV_GRID=>MC_FC_FILTER           ,
”          CL_GUI_ALV_GRID=>MC_FC_FIND              ,
”         CL_GUI_ALV_GRID=>MC_FC_FIX_COLUMNS        ,
cl_gui_alv_grid=>mc_fc_graph              ,
cl_gui_alv_grid=>mc_fc_help               ,
cl_gui_alv_grid=>mc_fc_info           ,
cl_gui_alv_grid=>mc_fc_load_variant    ,
cl_gui_alv_grid=>mc_fc_html               ,
cl_gui_alv_grid=>mc_fc_loc_move_row     ,
cl_gui_alv_grid=>mc_fc_loc_append_row      ,
cl_gui_alv_grid=>mc_fc_loc_paste        ,
cl_gui_alv_grid=>mc_fc_loc_paste_new_row  ,
cl_gui_alv_grid=>mc_fc_maintain_variant     ,
cl_gui_alv_grid=>mc_fc_maximum             ,
cl_gui_alv_grid=>mc_fc_minimum            ,
cl_gui_alv_grid=>mc_fc_pc_file           ,
cl_gui_alv_grid=>mc_fc_print              ,
cl_gui_alv_grid=>mc_fc_print_back           ,
cl_gui_alv_grid=>mc_fc_print_prev        ,
cl_gui_alv_grid=>mc_fc_refresh             ,
cl_gui_alv_grid=>mc_fc_reprep            ,
cl_gui_alv_grid=>mc_fc_url_copy_to_clipboard ,
cl_gui_alv_grid=>mc_fc_send              ,
cl_gui_alv_grid=>mc_fc_separator            ,
”        CL_GUI_ALV_GRID=>MC_FC_SORT               ,
”       CL_GUI_ALV_GRID=>MC_FC_SORT_ASC          ,
”        CL_GUI_ALV_GRID=>MC_FC_SORT_DSC            ,
cl_gui_alv_grid=>mc_fc_subtot            ,
cl_gui_alv_grid=>mc_fc_sum                ,
cl_gui_alv_grid=>mc_fc_to_office         ,
cl_gui_alv_grid=>mc_fc_to_rep_tree       ,
cl_gui_alv_grid=>mc_fc_unfix_columns       ,
cl_gui_alv_grid=>mc_fc_views               ,
cl_gui_alv_grid=>mc_fc_view_crystal       ,
cl_gui_alv_grid=>mc_fc_view_excel          ,
cl_gui_alv_grid=>mc_fc_view_grid        ,
cl_gui_alv_grid=>mc_fc_word_processor      .
”   CL_GUI_ALV_GRID=>MC_MB_EXPORT              .
ENDFORM.                    ” excluding_tb_function
*&———————————————————————*
*&      Form  EXCLUDING_TB_FUNCTION1
*&———————————————————————*
*       text
*———————————————————————-*
FORM excluding_tb_function1 .
CLEAR: g_toolbar .
REFRESH: g_toolbar .
PERFORM append_alv_exclude_functions TABLES g_toolbar1 USING :
cl_gui_alv_grid=>mc_fc_loc_undo          ,
cl_gui_alv_grid=>mc_fc_auf                 ,
cl_gui_alv_grid=>mc_fc_average            ,      ”Mean Value
cl_gui_alv_grid=>mc_fc_back_classic       ,
cl_gui_alv_grid=>mc_fc_call_abc            ,
cl_gui_alv_grid=>mc_fc_check               ,
cl_gui_alv_grid=>mc_fc_call_chain         ,
cl_gui_alv_grid=>mc_fc_call_crbatch        ,
cl_gui_alv_grid=>mc_fc_call_crweb         ,
cl_gui_alv_grid=>mc_fc_call_lineitems      ,
cl_gui_alv_grid=>mc_fc_call_master_data   ,
cl_gui_alv_grid=>mc_fc_call_more          ,
cl_gui_alv_grid=>mc_fc_call_report        ,
cl_gui_alv_grid=>mc_fc_call_xint          ,
”     CL_GUI_ALV_GRID=>MC_FC_CALL_XXL            ,”导出EXCEL
cl_gui_alv_grid=>mc_fc_col_invisible      ,
cl_gui_alv_grid=>mc_fc_col_optimize       ,
cl_gui_alv_grid=>mc_fc_count               ,
cl_gui_alv_grid=>mc_fc_current_variant    ,
cl_gui_alv_grid=>mc_fc_data_save            ,
cl_gui_alv_grid=>mc_fc_delete_filter       ,
cl_gui_alv_grid=>mc_fc_deselect_all        ,
cl_gui_alv_grid=>mc_fc_detail           ,
cl_gui_alv_grid=>mc_fc_expcrdata         ,
cl_gui_alv_grid=>mc_fc_expcrdesig          ,
cl_gui_alv_grid=>mc_fc_expcrtempl        ,
cl_gui_alv_grid=>mc_fc_expmdb            ,
cl_gui_alv_grid=>mc_fc_extend         ,
cl_gui_alv_grid=>mc_fc_f4                ,
”         CL_GUI_ALV_GRID=>MC_FC_FILTER           ,
”          CL_GUI_ALV_GRID=>MC_FC_FIND              ,
”         CL_GUI_ALV_GRID=>MC_FC_FIX_COLUMNS        ,
cl_gui_alv_grid=>mc_fc_graph              ,
cl_gui_alv_grid=>mc_fc_help               ,
cl_gui_alv_grid=>mc_fc_info           ,
cl_gui_alv_grid=>mc_fc_load_variant    ,
cl_gui_alv_grid=>mc_fc_html               ,
cl_gui_alv_grid=>mc_fc_loc_move_row     ,
cl_gui_alv_grid=>mc_fc_loc_append_row      ,
cl_gui_alv_grid=>mc_fc_loc_paste        ,
cl_gui_alv_grid=>mc_fc_loc_paste_new_row  ,
cl_gui_alv_grid=>mc_fc_maintain_variant     ,
cl_gui_alv_grid=>mc_fc_maximum             ,
cl_gui_alv_grid=>mc_fc_minimum            ,
cl_gui_alv_grid=>mc_fc_pc_file           ,
cl_gui_alv_grid=>mc_fc_print              ,
cl_gui_alv_grid=>mc_fc_print_back           ,
cl_gui_alv_grid=>mc_fc_print_prev        ,
cl_gui_alv_grid=>mc_fc_refresh             ,
cl_gui_alv_grid=>mc_fc_reprep            ,
cl_gui_alv_grid=>mc_fc_url_copy_to_clipboard ,
cl_gui_alv_grid=>mc_fc_send              ,
cl_gui_alv_grid=>mc_fc_separator            ,
”        CL_GUI_ALV_GRID=>MC_FC_SORT               ,
”       CL_GUI_ALV_GRID=>MC_FC_SORT_ASC          ,
”        CL_GUI_ALV_GRID=>MC_FC_SORT_DSC            ,
cl_gui_alv_grid=>mc_fc_subtot            ,
cl_gui_alv_grid=>mc_fc_sum                ,
cl_gui_alv_grid=>mc_fc_to_office         ,
cl_gui_alv_grid=>mc_fc_to_rep_tree       ,
cl_gui_alv_grid=>mc_fc_unfix_columns       ,
cl_gui_alv_grid=>mc_fc_views               ,
cl_gui_alv_grid=>mc_fc_view_crystal       ,
cl_gui_alv_grid=>mc_fc_view_excel          ,
cl_gui_alv_grid=>mc_fc_view_grid        ,
cl_gui_alv_grid=>mc_fc_word_processor      .
”   CL_GUI_ALV_GRID=>MC_MB_EXPORT              .
ENDFORM.                    ” excluding_tb_function
*&———————————————————————*
*&      Form  append_alv_exclude_functions
*&———————————————————————*
*       text
*———————————————————————-*
*      –>PT_EXCLUDE text
*      –>P_VALUE    text
*———————————————————————-*
FORM append_alv_exclude_functions TABLES pt_exclude TYPE ui_functions
USING p_value     TYPE ui_func.
APPEND p_value TO pt_exclude.
ENDFORM.                    ” APPEND_ALV_EXCLUDE_FUNCTIONS
*&———————————————————————*
*&      Form  GETBS
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM getbs .
SELECT  ukurs
gdatu
INTO CORRESPONDING FIELDS OF TABLE gt_bs
FROM tcurr
WHERE  fcurr = ‘CNY’
AND tcurr = ‘KRW’
AND kurst = ‘M’
AND gdatu >= sy-datum
ORDER BY gdatu ASCENDING.
IF gt_bs[] IS NOT INITIAL.
READ TABLE gt_bs INDEX 1.
gv_bs = gt_bs-ukurs.
gv_bs = ABS( gv_bs ).
ENDIF.
ENDFORM.                    ” GETBS
*&———————————————————————*
*&      Form  PPSMARTFORMS_IS
*&———————————————————————*
*       preview the is report
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM ppsmartforms_is .
DATA:lv_dat TYPE zcte.
CONCATENATE p_y ‘年  ’ p_m ‘月’ INTO lv_dat.
DATA lv_fm_name TYPE rs38l_fnam.
DATA: ctrl_param TYPE ssfctrlop,”控制参数
out_option TYPE ssfcompop.”控制选项
ctrl_param-preview = ‘X’.
out_option-tddest = ‘LP01′.
ctrl_param-no_dialog = ‘X’.
IF gv_iden = ‘IS’.
CALL FUNCTION ‘SSF_FUNCTION_MODULE_NAME’
EXPORTING
formname = ‘Z_N207_IS1′
IMPORTING
fm_name  = lv_fm_name.
IF sy-subrc <> 0.
EXIT.
ENDIF.
CALL FUNCTION lv_fm_name
EXPORTING
control_parameters = ctrl_param
output_options     = out_option
user_settings      = space
dates              = lv_dat
TABLES
itab_is            = gt_alv_is0[].
IF sy-subrc <> 0.
ENDIF.
ELSE.
CALL FUNCTION ‘SSF_FUNCTION_MODULE_NAME’
EXPORTING
formname = ‘Z_N207_BS’
IMPORTING
fm_name  = lv_fm_name.
IF sy-subrc <> 0.
EXIT.
ENDIF.
CALL FUNCTION lv_fm_name
EXPORTING
control_parameters = ctrl_param
output_options     = out_option
user_settings      = space
date               = lv_dat
TABLES
it_tab             = gt_alv_bs0[].
IF sy-subrc <> 0.
ENDIF.
ENDIF.
ENDFORM.                    ” PPSMARTFORMS_IS
*&———————————————————————*
*&      Form  SETBSITEM
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM setbsitem .
SELECT * FROM zn207_bs_item
INTO  CORRESPONDING FIELDS OF TABLE gt_alv_bs0.
ENDFORM.                    ” SETBSITEM
*&———————————————————————*
*&      Form  GETBSAMT
*&———————————————————————*
*       text
*———————————————————————-*
*      –>P_YAMT           text   —   期末余额
*      –>P_YSAMT          text   —   年初余额
*      –>VALUE(P_ITEMID)  text   —
*———————————————————————-*
FORM getbsamt USING  p_yamt
p_ysamt
value(p_itemid)
value(ly).
p_yamt = 0.
p_ysamt = 0.
PERFORM getaccrange USING p_itemid.”构造资产负债表项目编号下的科目范围
CHECK gr_act[] IS NOT INITIAL.
CASE p_rpv.
WHEN ‘2070′.”不考虑利润中心
“本年度截止到查询月的发生额
SELECT SUM( hsl ) INTO  p_yamt
FROM faglflexa
WHERE ryear = p_y
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND poper BETWEEN ‘001′ AND p_m
AND pprctr = ”.”抵消内部交易’
“截止到去年的发生额
SELECT SUM( hsl ) INTO  p_ysamt
FROM faglflexa
WHERE ryear LE ly
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND pprctr = ”.”抵消内部交易’
p_yamt = p_yamt + p_ysamt.
WHEN ‘2071′ OR ‘2072′ OR ‘2073′.”自选利润中心组,利润中心可输可不输
IF p_pc <> ”.”有利润中心的情况
“本年度截止到查询月的发生额
SELECT SUM( hsl ) INTO  p_yamt
FROM faglflexa
WHERE ryear = p_y
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND poper BETWEEN ‘001′ AND p_m
AND prctr = p_pc.”抵消内部交易’
“截止到去年的发生额
SELECT SUM( hsl ) INTO  p_ysamt
FROM faglflexa
WHERE ryear LE ly
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND prctr = p_pc.
p_yamt = p_yamt + p_ysamt.
ELSEIF p_pc IS INITIAL AND p_pcg IS NOT INITIAL.”利润中心为空,选取所有的利润中心
“本年度截止到查询月的发生额
SELECT SUM( hsl ) INTO  p_yamt
FROM faglflexa
WHERE ryear = p_y
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND poper BETWEEN ‘001′ AND p_m
AND prctr IN ( SELECT valfrom  FROM setleaf WHERE setname = p_pcg AND subclass = ‘N207′ AND setclass = ‘0106′ ).
“截止到去年的发生额
SELECT SUM( hsl ) INTO  p_ysamt
FROM faglflexa
WHERE ryear LE ly
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND prctr IN ( SELECT valfrom  FROM setleaf WHERE setname = p_pcg AND subclass = ‘N207′ AND setclass = ‘0106′ ).
p_yamt = p_yamt + p_ysamt.
ENDIF.
ENDCASE.
” p_yamt = ABS( p_yamt ).“取消转正
” p_ysamt = ABS( p_ysamt ).
ENDFORM.                    ”getisamt
*&———————————————————————*
*&      Form  getprofitamt
*&———————————————————————*
*       计算年结留存收益科目的未分配利润
*———————————————————————-*
*      –>P_YAMT           text
*      –>P_YSAMT          text
*      –>VALUE(P_ITEMID)  text
*      –>VALUE(LY)        text
*———————————————————————-*
FORM getprofitamt USING  p_yamt
value(ly).
p_yamt = 0.
CASE p_rpv.
WHEN ‘2070′.”不考虑利润中心
“本年度截止到查询月的发生额
SELECT SUM( hsl ) INTO  p_yamt
FROM faglflexa
WHERE ryear = ly
AND rldnr = ‘0L’
AND racct  = ‘0000465201′
AND rbukrs = ‘N207′
AND pprctr = ”.”抵消内部交易’
WHEN ‘2071′ OR ‘2072′ OR ‘2073′.”自选利润中心组,利润中心可输可不输
IF p_pc <> ”.”有利润中心的情况
SELECT SUM( hsl ) INTO  p_yamt
FROM faglflexa
WHERE ryear = ly
AND rldnr = ‘0L’
AND racct  = ‘0000465201′
AND rbukrs = ‘N207′
AND prctr = p_pc.
ELSEIF p_pc IS INITIAL AND p_pcg IS NOT INITIAL.”利润中心为空,选取所有的利润中心
“本年度截止到查询月的发生额
SELECT SUM( hsl ) INTO  p_yamt
FROM faglflexa
WHERE ryear = ly
AND rldnr = ‘0L’
AND racct  = ‘0000465201′
AND rbukrs = ‘N207′
AND prctr IN ( SELECT valfrom  FROM setleaf WHERE setname = p_pcg AND subclass = ‘N207′ AND setclass = ‘0106′ ).
ENDIF.
ENDCASE.
p_yamt = ( -1 ) * p_yamt.
ENDFORM.                    ”getisamt
*&———————————————————————*
*&      Form  SETCON
*&———————————————————————*
*       set container for alv
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM setcon .
CREATE OBJECT gs_con
EXPORTING
container_name = ‘CON’.
CREATE OBJECT gs_dyndoc_id
EXPORTING
style = ‘ALV_GRID’.
CREATE OBJECT gs_splitter                                 “分割为1到5行
EXPORTING
parent  = gs_con
rows    = 2
columns = 1.
CALL METHOD gs_splitter->get_container”获取第一行给GS_PARENT_HTML
EXPORTING
row       = 1
column    = 1
RECEIVING
container = gs_parent_html.
CALL METHOD gs_splitter->get_container
EXPORTING
row       = 2
column    = 1
RECEIVING
container = gs_parent_grid.
CALL METHOD gs_splitter->set_row_height
EXPORTING
id     = 1
height = 20.
IF gv_iden = ‘IS’.
IF gs_alv_is IS INITIAL.
CREATE OBJECT gs_alv_is
EXPORTING
i_parent = gs_parent_grid.
ENDIF.
ELSEIF gv_iden = ‘BS’.
IF gs_alv_bs IS INITIAL.
CREATE OBJECT gs_alv_bs
EXPORTING
i_parent = gs_parent_grid.
ENDIF.
ENDIF.
ENDFORM.                    ” SETCON
*&———————————————————————*
*&      Form  SETCON1
*&———————————————————————*
*       text
*———————————————————————-*
FORM setcon1 .
CREATE OBJECT gs_con1
EXPORTING
container_name = ‘CON1′.
CREATE OBJECT gs_dyndoc_id1
EXPORTING
style = ‘ALV_GRID’.
CREATE OBJECT gs_splitter1                                ”分割为1到5行
EXPORTING
parent  = gs_con1
rows    = 1
columns = 1.
*  CALL METHOD GS_SPLITTER1->GET_CONTAINER”获取第一行给GS_PARENT_HTML
*    EXPORTING
*      ROW       = 1
*      COLUMN    = 1
*    RECEIVING
*      CONTAINER = GS_PARENT_HTML1.
CALL METHOD gs_splitter1->get_container
EXPORTING
row       = 1
column    = 1
RECEIVING
container = gs_parent_grid1.
ENDFORM.                    ” SETCON
*&———————————————————————*
*&      Form  DISPLAYBS
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM displaybs .
PERFORM setlayout .
PERFORM buildfieldcat_bs.
PERFORM excluding_tb_function.
ENDFORM.                    ” DISPLAYBS
*&———————————————————————*
*&      Form  BUILDFIELDCAT_BS
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM buildfieldcat_bs .
CLEAR gt_fieldcat[].
PERFORM fill_field_category USING :
‘S’ ‘TABNAME’   ‘GT_ALV_BS0′ ,
”  ’SCRTEXT_M’ ‘行次’ ,
”  ’OUTPUTLEN’ ‘20′ ,
”  ’KEY’       ‘X’,
”  ’COL_POS’   ‘2′,
‘E’ ‘FIELDNAME’ ‘LCT1′ ,
‘S’ ‘TABNAME’   ‘GT_ALV_BS0′ ,
”  ’SCRTEXT_M’ ‘资产’ ,
”  ’OUTPUTLEN’ ‘20′ ,
”  ’COL_POS’   ‘1′,
‘E’ ‘FIELDNAME’ ‘ITEM1′ ,
‘S’ ‘TABNAME’   ‘GT_ALV_BS0′ ,
”  ’SCRTEXT_M’ ‘期末余额’ ,
”  ’OUTPUTLEN’ ‘20′ ,
”  ’HOTSPOT’   ‘X’,
”  ’COL_POS’   ‘3′,
‘E’ ‘FIELDNAME’ ‘YAMT1′ ,
‘S’ ‘TABNAME’   ‘GT_ALV_BS0′ ,
”  ’SCRTEXT_M’ ‘年初余额’ ,
”  ’OUTPUTLEN’ ‘20′ ,
”  ’COL_POS’   ‘4′,
‘E’ ‘FIELDNAME’ ‘YSAMT1′ ,
‘S’ ‘TABNAME’   ‘GT_ALV_BS0′ ,
”  ’SCRTEXT_M’ ‘行次’ ,
”  ’OUTPUTLEN’ ‘20′ ,
”  ’KEY’       ‘X’,
”  ’COL_POS’   ‘6′,
‘E’ ‘FIELDNAME’ ‘LCT2′ ,
‘S’ ‘TABNAME’   ‘GT_ALV_BS0′ ,
”  ’SCRTEXT_M’ ‘负债和所有者权益(或股东权益)’ ,
”  ’OUTPUTLEN’ ‘20′ ,
”  ’COL_POS’   ‘5′,
‘E’ ‘FIELDNAME’ ‘ITEM2′ ,
‘S’ ‘TABNAME’   ‘GT_ALV_BS0′ ,
”  ’SCRTEXT_M’ ‘期末余额’ ,
”  ’COL_POS’   ‘7′,
”  ’HOTSPOT’   ‘X’,
”  ’OUTPUTLEN’ ‘20′ ,
‘E’ ‘FIELDNAME’ ‘YAMT2′ ,
‘S’ ‘TABNAME’   ‘GT_ALV_BS0′ ,
”  ’SCRTEXT_M’ ‘年初余额’ ,
”  ’OUTPUTLEN’ ‘20′ ,
”  ’COL_POS’   ‘8′,
‘E’ ‘FIELDNAME’ ‘YSAMT2′ .
ENDFORM.                    ” BUILDFIELDCAT_BS
*&———————————————————————*
*&      Form  PRINT
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM print .
DATA:lv_dat TYPE zcte.
CONCATENATE p_y ‘年  ’ p_m ‘月’ INTO lv_dat.
DATA lv_fm_name TYPE rs38l_fnam.”定义一个rs38l_fnam类型的变量存储功能模块名
IF gv_iden = ‘BS’.
CALL FUNCTION ‘SSF_FUNCTION_MODULE_NAME’
EXPORTING”输入参数,传递SmartForms名子
formname = ‘Z_N207_BS’
IMPORTING:”输出参数,返回SmartForms激活时生成的功能模块名
fm_name  = lv_fm_name.
IF sy-subrc <> 0.
EXIT.
ENDIF.
CALL FUNCTION lv_fm_name
EXPORTING
date   = lv_dat
TABLES
it_tab = gt_alv_bs0[].
ELSE.
CALL FUNCTION ‘SSF_FUNCTION_MODULE_NAME’
EXPORTING”输入参数,传递SmartForms名子
formname = ‘Z_N207_IS1′
IMPORTING:”输出参数,返回SmartForms激活时生成的功能模块名
fm_name  = lv_fm_name.
IF sy-subrc <> 0.
EXIT.
ENDIF.
CALL FUNCTION lv_fm_name
EXPORTING
dates   = lv_dat
TABLES
itab_is = gt_alv_is0[].
ENDIF.
ENDFORM.                    ” PRINT
*&———————————————————————*
*&      Form  DRILLDOWNIS1
*&———————————————————————*
*       获取利润表和资产负债表中本期金额的详细信息
*———————————————————————-*
*      –>P_E_ROW_ID  text
*      –>P_E_COLUMN_ID  text
*      –>P_ES_ROW_NO  text
*———————————————————————-*
FORM drilldownis1  USING    p_e_row_id
p_e_column_id TYPE lvc_s_col
p_es_row_no TYPE lvc_s_roid.
IF gv_iden = ‘IS’.
CLEAR gt_alv_is_dp1[].
CASE  p_es_row_no-row_id.
WHEN 1.
PERFORM getisdpdata USING ‘6001′ p_es_row_no-row_id.
APPEND LINES OF gt_alv_is_dp1 TO gt_alv_is_dp2.
PERFORM getisdpdata USING ‘6100′ p_es_row_no-row_id.
APPEND LINES OF gt_alv_is_dp2 TO gt_alv_is_dp1.
SORT gt_alv_is_dp1 BY racct ASCENDING.
CLEAR gt_alv_is_dp2[].
WHEN 2.
PERFORM getisdpdata USING ‘6400′ p_es_row_no-row_id.
APPEND LINES OF gt_alv_is_dp1 TO gt_alv_is_dp2.
PERFORM getisdpdata USING ‘6500′ p_es_row_no-row_id.
APPEND LINES OF gt_alv_is_dp2 TO gt_alv_is_dp1.
CLEAR gt_alv_is_dp2[].
APPEND LINES OF gt_alv_is_dp1 TO gt_alv_is_dp2.
PERFORM getisdpdata USING ‘6610′ p_es_row_no-row_id.
APPEND LINES OF gt_alv_is_dp2 TO gt_alv_is_dp1.
SORT gt_alv_is_dp1 BY racct ASCENDING.
CLEAR gt_alv_is_dp2[].
WHEN 3.
PERFORM getisdpdata USING ‘6450′ p_es_row_no-row_id.
WHEN 4.
PERFORM getisdpdata USING ‘6600′ p_es_row_no-row_id.
WHEN 5.
PERFORM getisdpdata USING ‘6600′ p_es_row_no-row_id.
WHEN 6.
PERFORM getisdpdata USING ‘6620′ p_es_row_no-row_id.
WHEN 7.
PERFORM getisdpdata USING ‘6630′ p_es_row_no-row_id.
WHEN 8.
PERFORM getisdpdata USING ‘6640′ p_es_row_no-row_id.
WHEN 9.
PERFORM getisdpdata USING ‘6645′ p_es_row_no-row_id.
WHEN 12.
PERFORM getisdpdata USING ‘6301′ p_es_row_no-row_id.
WHEN 13.
PERFORM getisdpdata USING ‘6711′ p_es_row_no-row_id.
WHEN 14.
PERFORM getisdpdata USING ‘0000′ p_es_row_no-row_id.
WHEN 15.
PERFORM getisdpdata USING ‘6901′ p_es_row_no-row_id.
WHEN 17.
PERFORM getisdpdata USING ‘6801′ p_es_row_no-row_id.
ENDCASE.
* –>2012.01.16 CCYU START
IF gt_alv_is_dp1[] IS NOT INITIAL.
SELECT saknr txt50
FROM skat
INTO CORRESPONDING FIELDS OF TABLE gt_skat
FOR ALL ENTRIES IN gt_alv_is_dp1
WHERE saknr = gt_alv_is_dp1-racct
AND spras = ‘1′
AND ktopl = ‘SKGC’.
ENDIF.
SORT gt_alv_is_dp1 BY racct.
SORT gt_skat BY saknr.
LOOP AT gt_alv_is_dp1.
READ TABLE gt_skat WITH KEY saknr = gt_alv_is_dp1-racct.
IF sy-subrc = 0.
gt_alv_is_dp1-txt50 = gt_skat-txt50.
ENDIF.
MODIFY gt_alv_is_dp1.
ENDLOOP.
* <–2012.01.16 CCYU END.
LOOP AT gt_alv_is_dp1.
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_OUTPUT’
EXPORTING
input  = gt_alv_is_dp1-racct
IMPORTING
output = gt_alv_is_dp1-racct.
MODIFY  gt_alv_is_dp1.
ENDLOOP.
IF p_es_row_no-row_id = 10 OR
p_es_row_no-row_id = 11 OR
p_es_row_no-row_id = 16 OR
p_es_row_no-row_id = 18 OR
p_es_row_no-row_id = 19 OR
p_es_row_no-row_id = 20 OR
p_es_row_no-row_id = 21.
ELSE.
CALL SCREEN ‘0300′ STARTING AT 10 10 ENDING AT 65 25.
ENDIF.
ELSE.”资产负债表的下钻报表
CLEAR gt_alv_bs_dp1[].
CLEAR gt_alv_bs_dp2[].
DATA:p_tran(1) VALUE ‘0′.
CASE  p_es_row_no-row_id.”选中行的行号
WHEN 2.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1000′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2001′.
ENDIF.
p_tran = ‘1′.
WHEN 3.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1101′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2010′.
ENDIF.
p_tran = ‘1′.
WHEN 4.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1121′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2201′.
ENDIF.
p_tran = ‘1′.
WHEN 5.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1122′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2202′.
ENDIF.
p_tran = ‘1′.
WHEN 6.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1123′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2203′.
ENDIF.
p_tran = ‘1′.
WHEN 7.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1132′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2211′.
ENDIF.
p_tran = ‘1′.
WHEN 8.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1131′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2221′.
ENDIF.
p_tran = ‘1′.
WHEN 9.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

http://www.niftyadmin.cn/n/3653931.html

相关文章

深度解析:J2EE vs .NET开发平台

看到这个标题&#xff0c;也许会有人表示疑惑&#xff0c;J2EE和.NET并不在一个层次上&#xff0c;怎么能将它们放在一起呢&#xff1f;需要指出的是&#xff0c;通常所说的.NET包含了一个相当广泛的产品家族&#xff0c;包括开发平台、操作系统、服务器、终端设备等&#xff0…

解决oracle连接很慢问题

分享一下我老师大神的人工智能教程&#xff01;零基础&#xff0c;通俗易懂&#xff01;http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识&#xff0c;造福人民&#xff0c;实现我们中华民族伟大复兴&#xff01;在redhat 5.8 上装了 Oracle 11g R2在使用sq…

物料分类账的基本原理

分享一下我老师大神的人工智能教程&#xff01;零基础&#xff0c;通俗易懂&#xff01;http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识&#xff0c;造福人民&#xff0c;实现我们中华民族伟大复兴&#xff01;物料账(英文缩写ML)是按照物料的实际流向来分…

透过digg.com和Reddit挖掘Mashup应用

通过本篇文章&#xff0c;发掘组建现代新闻网站所需的用户和开发人员特性。digg.com 和 Reddit 是两个热门站点&#xff0c;二者均可自行其道&#xff0c;也都可以作为 mashup 的资源和为用户提供定制体验的手段。 Reddit 定制的示例之一就是将 Greasemonkey 的扩展用在 Mozill…

访问SAP时提示报错SAP GUI for Windows 720窗口

分享一下我老师大神的人工智能教程&#xff01;零基础&#xff0c;通俗易懂&#xff01;http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识&#xff0c;造福人民&#xff0c;实现我们中华民族伟大复兴&#xff01;访问SAP时提示报错SAP GUI for Windows 720窗…

Langchain 新手完全指南

Langchain 可能是目前在 AI 领域中最热门的事物之一&#xff0c;仅次于向量数据库。 它是一个框架&#xff0c;用于在大型语言模型上开发应用程序&#xff0c;例如 GPT、LLama、Hugging Face 模型等。 它最初是一个 Python 包&#xff0c;但现在也有一个 TypeScript 版本&…

JavaScript:世界上误解最深的语言

JavaScript&#xff0c;是世界上最流行的编程语言之一。事实上世界上的每一台个人电脑都安装并在频繁使用至少一个JavaScript解释器。JavaScript的流行完全是由于他在WWW脚本语言领域中的地位决定的。 Despite its popularity, few know that JavaScript is a very nice dynami…