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

来源:互联网 发布:java自定义日期格式 编辑:程序博客网 时间:2024/05/01 21:47

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_dp1 USING ‘1221′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2231′.
ENDIF.
p_tran = ‘1′.
WHEN 10.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1400′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2232′.
ENDIF.
p_tran = ‘1′.
WHEN 11.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1507′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2241′.
ENDIF.
p_tran = ‘1′.
WHEN 12.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1499′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2240′.
ENDIF.
p_tran = ‘1′.
WHEN 13.
IF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2222′.
p_tran = ‘1′.
ENDIF.
WHEN 15.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1503′.
p_tran = ‘1′.
ENDIF.
WHEN 16.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1501′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2501′.
ENDIF.
p_tran = ‘1′.
WHEN 17.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1504′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2502′.
ENDIF.
p_tran = ‘1′.
WHEN 18.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1511′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2701′.
ENDIF.
p_tran = ‘1′.
WHEN 19.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1521′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2711′.
ENDIF.
p_tran = ‘1′.
WHEN 20.
IF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2801′.
p_tran = ‘1′.
ENDIF.
WHEN 21.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1604′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2901′.
ENDIF.
p_tran = ‘1′.
WHEN 22.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1605′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘2000′.
ENDIF.
p_tran = ‘1′.
WHEN 23.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1606′.
p_tran = ‘1′.
ENDIF.
WHEN 26.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1701′.
p_tran = ‘1′.
ENDIF.
WHEN 27.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1710′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘4002′.
ENDIF.
p_tran = ‘1′.
WHEN 28.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1711′.
p_tran = ‘1′.
ENDIF.
WHEN 29.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1801′.
ELSEIF p_e_column_id-fieldname = ‘YAMT2′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘4101′.
ENDIF.
p_tran = ‘1′.
WHEN 30.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1811′.
p_tran = ‘1′.
ENDIF.
WHEN 31.
IF p_e_column_id-fieldname = ‘YAMT1′.
PERFORM getbsdp TABLES gt_alv_bs_dp1 USING ‘1901′.
p_tran = ‘1′.
ENDIF.
ENDCASE.
* –>2012.01.16 CCYU START
IF gt_alv_bs_dp1[] IS NOT INITIAL.
CLEAR gt_skat[].
SELECT saknr txt50
FROM skat
INTO CORRESPONDING FIELDS OF TABLE gt_skat
FOR ALL ENTRIES IN gt_alv_bs_dp1
WHERE saknr = gt_alv_bs_dp1-racct
AND spras = ‘1′
AND ktopl = ‘SKGC’.
ENDIF.
SORT gt_alv_bs_dp1 BY racct.
SORT gt_skat BY saknr.
LOOP AT gt_alv_bs_dp1.
READ TABLE gt_skat WITH KEY saknr = gt_alv_bs_dp1-racct.
IF sy-subrc = 0.
gt_alv_bs_dp1-txt50 = gt_skat-txt50.
ENDIF.
MODIFY gt_alv_bs_dp1.
ENDLOOP.
* <–2012.01.16 CCYU END.
LOOP AT gt_alv_bs_dp1.”去除科目编号的前导零
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_OUTPUT’
EXPORTING
input  = gt_alv_bs_dp1-racct
IMPORTING
output = gt_alv_bs_dp1-racct.
MODIFY  gt_alv_bs_dp1.
ENDLOOP.
IF p_tran = ‘1′.
CALL SCREEN ‘0400′ STARTING AT 10 10 ENDING AT 65 25.
ENDIF.
ENDIF.
ENDFORM.                    ” DRILLDOWNIS1
*&———————————————————————*
*&      Form  GETACCRANGE
*&———————————————————————*
*       获取报表版本下的科目范围
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM getaccrange USING p_itemid.
CLEAR gr_act[].
LOOP AT gt_fagl_011zc WHERE ergsl = p_itemid.
gr_act-sign = ‘I’.
gr_act-low = gt_fagl_011zc-vonkt.
gr_act-high = gt_fagl_011zc-biskt.
gr_act-option = ‘BT’.
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
EXPORTING
input  = gr_act-low
IMPORTING
output = gr_act-low.
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
EXPORTING
input  = gr_act-high
IMPORTING
output = gr_act-high.
APPEND gr_act.
ENDLOOP.
ENDFORM.                    ” GETACCRANGE
*&———————————————————————*
*&      Form  GETISAMT
*&———————————————————————*
*       获取利润表下钻的报表数据
*———————————————————————-*
*      –>P_YAMT           text
*      –>P_MAMT           text
*      –>VALUE(P_ITEMID)  text
*      –>VALUE(P_ID)      text
*———————————————————————-*
FORM getisdpdata USING
value(p_itemid)
value(p_id).
CLEAR gt_alv_is_dp1[].
“构造科目查询范围的查询条件
PERFORM getaccrange USING p_itemid.
CHECK gr_act[] IS NOT INITIAL.
CASE p_rpv.
WHEN ‘2070′.”不考虑利润中心
IF p_id = 4.”6600取功能范围1200
SELECT racct AS racct
SUM( hsl ) AS hsl
FROM faglflexa
INTO CORRESPONDING FIELDS OF TABLE gt_alv_is_dp1
WHERE ryear = p_y
AND poper = p_m
AND rldnr = ‘0L’
AND racct IN gr_act
AND pprctr = ””抵消内部交易
AND rfarea = ‘1200′
AND rbukrs = ‘N207′
GROUP BY racct
ORDER BY racct ASCENDING.
ELSEIF p_id = 5.”6600取功能范围1300
SELECT racct AS racct
SUM( hsl ) AS hsl
FROM faglflexa
INTO CORRESPONDING FIELDS OF TABLE gt_alv_is_dp1
WHERE ryear = p_y
AND poper = p_m
AND rldnr = ‘0L’
AND racct IN gr_act
AND pprctr = ””抵消内部交易
AND rbukrs = ‘N207′
AND rfarea = ‘1300′
GROUP BY racct
ORDER BY racct ASCENDING.
ELSEIF p_id = 14.”按照科目进行取数
SELECT racct AS racct
SUM( hsl ) AS hsl
FROM faglflexa
INTO CORRESPONDING FIELDS OF TABLE gt_alv_is_dp1
WHERE ryear = p_y
AND poper = p_m
AND rbukrs = ‘N207′
AND rldnr = ‘0L’
AND racct BETWEEN ‘962101′ AND ‘962201′
AND pprctr = ””抵消内部交易
GROUP BY racct
ORDER BY racct ASCENDING.
ELSE.”正常取
SELECT racct AS racct
SUM( hsl ) AS hsl
FROM faglflexa
INTO CORRESPONDING FIELDS OF TABLE gt_alv_is_dp1
WHERE ryear = p_y
AND poper = p_m
AND rldnr = ‘0L’
AND rbukrs = ‘N207′
AND racct IN gr_act
AND pprctr = ””抵消内部交易
GROUP BY racct
ORDER BY racct ASCENDING.
ENDIF.
WHEN ‘2071′ OR ‘2072′ OR ‘2073′.”自选利润中心组,利润中心可输可不输
IF p_pc <> ”.
IF p_id = 4.”6600取功能范围1200
SELECT racct AS racct
SUM( hsl ) AS hsl
FROM faglflexa
INTO CORRESPONDING FIELDS OF TABLE gt_alv_is_dp1
WHERE ryear = p_y
AND poper = p_m
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND prctr = p_pc
AND rfarea = ‘1200′
GROUP BY racct
ORDER BY racct ASCENDING.
ELSEIF p_id = 5.”6600取功能范围1300
SELECT racct AS racct
SUM( hsl ) AS hsl
FROM faglflexa
INTO CORRESPONDING FIELDS OF TABLE gt_alv_is_dp1
WHERE ryear = p_y
AND poper = p_m
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND prctr = p_pc
AND rfarea = ‘1300′
GROUP BY racct
ORDER BY racct ASCENDING.
ELSEIF p_id = 14.”按照科目进行取数
SELECT racct AS racct
SUM( hsl ) AS hsl
FROM faglflexa
INTO CORRESPONDING FIELDS OF TABLE gt_alv_is_dp1
WHERE ryear = p_y
AND poper = p_m
AND rldnr = ‘0L’
AND racct BETWEEN ‘962101′ AND ‘962201′
AND prctr = p_pc
AND rbukrs = ‘N207′
GROUP BY racct
ORDER BY racct ASCENDING.
ELSE.”正常取
SELECT racct AS racct
SUM( hsl ) AS hsl
FROM faglflexa
INTO CORRESPONDING FIELDS OF TABLE gt_alv_is_dp1
WHERE ryear = p_y
AND poper = p_m
AND rldnr = ‘0L’
AND racct IN gr_act
AND rbukrs = ‘N207′
AND prctr = p_pc
GROUP BY racct
ORDER BY racct ASCENDING.
ENDIF.
ELSEIF p_pc = ”.”利润中心为空,选取所有的利润中心
IF p_id = 4.”6600取功能范围1200
SELECT racct AS racct
SUM( hsl ) AS hsl
FROM faglflexa
INTO CORRESPONDING FIELDS OF TABLE gt_alv_is_dp1
WHERE ryear = p_y
AND poper = p_m
AND rldnr = ‘0L’
AND rbukrs = ‘N207′
AND racct IN gr_act
AND prctr IN ( SELECT valfrom  FROM setleaf WHERE setname = p_pcg AND subclass = ‘N207′ AND setclass = ‘0106′)
AND rfarea = ‘1200′
GROUP BY racct
ORDER BY racct ASCENDING.
ELSEIF p_id = 5.”6600取功能范围1300
SELECT racct AS racct
SUM( hsl ) AS hsl
FROM faglflexa
INTO CORRESPONDING FIELDS OF TABLE gt_alv_is_dp1
WHERE ryear = p_y
AND poper = p_m
AND rldnr = ‘0L’
AND rbukrs = ‘N207′
AND racct IN gr_act
AND prctr IN ( SELECT valfrom  FROM setleaf WHERE setname = p_pcg AND subclass = ‘N207′ AND setclass = ‘0106′)
AND rfarea = ‘1300′
GROUP BY racct
ORDER BY racct ASCENDING.
ELSEIF p_id = 14.”按照科目进行取数
SELECT racct AS racct
SUM( hsl ) AS hsl
FROM faglflexa
INTO CORRESPONDING FIELDS OF TABLE gt_alv_is_dp1
WHERE ryear = p_y
AND poper = p_m
AND rldnr = ‘0L’
AND rbukrs = ‘N207′
AND racct BETWEEN ‘962101′ AND ‘962201′
AND prctr IN ( SELECT valfrom  FROM setleaf WHERE setname = p_pcg AND subclass = ‘N207′ AND setclass = ‘0106′)
GROUP BY racct
ORDER BY racct ASCENDING.
ELSE.”正常取
SELECT racct AS racct
SUM( hsl ) AS hsl
FROM faglflexa
INTO CORRESPONDING FIELDS OF TABLE gt_alv_is_dp1
WHERE ryear = p_y
AND poper = p_m
AND rbukrs = ‘N207′
AND rldnr = ‘0L’
AND racct IN gr_act
AND prctr IN ( SELECT valfrom  FROM setleaf WHERE setname = p_pcg )
GROUP BY racct
ORDER BY racct ASCENDING.
ENDIF.
ENDIF.
ENDCASE.
ENDFORM.                    ”getisamt
*&———————————————————————*
*&      Form  DISPLAYISDP
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM displayisdp .
PERFORM setlayoutisdp.
PERFORM buildfieldcat_isdp.
PERFORM excluding_tb_function1.
ENDFORM.                    ” DISPLAYISDP
*&———————————————————————*
*&      Form  DISPLAYBSDP
*&———————————————————————*
*       text
*———————————————————————-*
FORM displaybsdp .
PERFORM setlayoutisdp.
PERFORM buildfieldcat_bsdp.
PERFORM excluding_tb_function1.
ENDFORM.                    ” DISPLAYISDP
*&———————————————————————*
*&      Form  SETLAYOUTISDP
*&———————————————————————*
*       SET THE LAYOUT
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM setlayoutisdp .
CLEAR gs_layout.
gs_layout-cwidth_opt = ‘X’ .
gs_layout-zebra = ‘X’ .
gs_layout-sel_mode = ‘A’.
gs_layout-numc_total = ‘X’.
ENDFORM.                    ” SETLAYOUTISDP
*&———————————————————————*
*&      Form  BUILDFIELDCAT_ISDP
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM buildfieldcat_isdp .
CLEAR gt_fieldcat[].
PERFORM fill_field_category USING :
‘S’ ‘TABNAME’   ‘GT_ALV_IS_DP1′ ,
”  ’SCRTEXT_M’ ‘科目’ ,
”  ’KEY’       ‘X’,
”  ’COL_POS’   ‘1′,
‘E’ ‘FIELDNAME’ ‘RACCT’ ,
* –>2012.01.16 CCYU START
‘S’ ‘TABNAME’   ‘GT_ALV_IS_DP1′ ,
”  ’SCRTEXT_M’ ‘科目描述’ ,
”  ’KEY’       ‘X’,
”  ’OUTPUTLEN’ ‘20′,
”  ’COL_POS’   ‘2′,
‘E’ ‘FIELDNAME’ ‘TXT50′ ,
* <–2012.01.16 CCYU END.
‘S’ ‘TABNAME’   ‘GT_ALV_IS_DP1′ ,
”  ’SCRTEXT_M’ ‘金额’ ,
”  ’COL_POS’   ‘3′,
”  ’DO_SUM’    ’X’,
‘E’ ‘FIELDNAME’ ‘HSL’ .
ENDFORM.                    ” BUILDFIELDCAT_ISDP
*&———————————————————————*
*&      Form  GETBSDP
*&———————————————————————*
*       获取资产负债表的下钻信息
*———————————————————————-*
*      –>P_YAMT           text
*      –>P_YSAMT          text
*      –>VALUE(P_ITEMID)  text
*———————————————————————-*
FORM getbsdp TABLES p_gt_alv_bs_dp1 TYPE gt_alv_bs_dp”tables参数是输入输出参数
USING  value(p_itemid).
“构造科目查询范围的查询条件
CLEAR gt_alv_bs_dp2[].
CLEAR p_gt_alv_bs_dp1[].
PERFORM getaccrange USING p_itemid.
CHECK gr_act[] IS NOT INITIAL.
DATA ly TYPE n LENGTH 4.
ly = p_y - 1.
CASE p_rpv.
WHEN ‘2070′.”不考虑利润中心
SELECT racct
hsl
FROM faglflexa
INTO CORRESPONDING FIELDS OF TABLE gt_alv_bs_dp2
WHERE
( ( ryear = p_y AND poper BETWEEN ‘01′ AND p_m ) OR ( ryear LE ly ) )
AND rldnr = ‘0L’
AND rbukrs = ‘N207′
AND racct IN gr_act
AND pprctr = ”.”抵消内部交易.
WHEN ‘2071′ OR ‘2072′ OR ‘2073′.”自选利润中心组,利润中心可输可不输
IF p_pc <> ”.”有利润中心的情况
SELECT racct
hsl
FROM faglflexa
INTO CORRESPONDING FIELDS OF TABLE gt_alv_bs_dp2
WHERE
( ( ryear = p_y AND poper BETWEEN ‘01′ AND p_m ) OR ( ryear LE ly ) )
AND rldnr = ‘0L’
AND rbukrs = ‘N207′
AND racct IN gr_act
AND prctr = p_pc.
ELSEIF p_pc = ”.”利润中心为空,选取利润中心组下的利润中心
SELECT racct
hsl
FROM faglflexa
INTO CORRESPONDING FIELDS OF TABLE gt_alv_bs_dp2
WHERE
( ( ryear = p_y AND poper BETWEEN ‘01′ AND p_m ) OR ( ryear LE ly ) )
AND rldnr = ‘0L’
AND rbukrs = ‘N207′
AND racct IN gr_act
AND prctr IN ( SELECT valfrom  FROM setleaf WHERE setname = p_pcg AND subclass = ‘N207′ AND setclass = ‘0106′).
ENDIF.
ENDCASE.
LOOP AT gt_alv_bs_dp2.”利用collect进行合计
MOVE-CORRESPONDING gt_alv_bs_dp2 TO gs_alv_bs_dp_obj1.
COLLECT gs_alv_bs_dp_obj1 INTO p_gt_alv_bs_dp1.
ENDLOOP.
SORT p_gt_alv_bs_dp1 BY racct ASCENDING.
ENDFORM.                    ”getisamt
*&———————————————————————*
*&      Form  BUILDFIELDCAT_BSDP
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM buildfieldcat_bsdp .
CLEAR gt_fieldcat[].
PERFORM fill_field_category USING :
‘S’ ‘TABNAME’   ‘GT_ALV_BS_DP1′ ,
”  ’SCRTEXT_M’ ‘科目’ ,
”  ’KEY’       ‘X’,
”  ’COL_POS’   ‘1′,
‘E’ ‘FIELDNAME’ ‘RACCT’ ,
* –>2012.01.16 CCYU START
‘S’ ‘TABNAME’   ‘GT_ALV_BS_DP1′ ,
”  ’SCRTEXT_M’ ‘科目描述’ ,
”  ’KEY’       ‘X’,
”  ’OUTPUTLEN’ ‘20′,
”  ’COL_POS’   ‘2′,
‘E’ ‘FIELDNAME’ ‘TXT50′ ,
* <–2012.01.16 CCYU END.
‘S’ ‘TABNAME’   ‘GT_ALV_BS_DP1′ ,
”  ’SCRTEXT_M’ ‘金额’ ,
”  ’COL_POS’   ‘3′,
”  ’DO_SUM’    ’X’,
‘E’ ‘FIELDNAME’ ‘HSL’ .
ENDFORM.                    ” BUILDFIELDCAT_BSDP
*&———————————————————————*
*&      Form  porcess_show
*&———————————————————————*
*       text
*———————————————————————-*
FORM porcess_show USING value(p_pro).
CALL FUNCTION ‘SAPGUI_PROGRESS_INDICATOR’
EXPORTING
percentage = p_pro
text       = ‘正在查询…’.
ENDFORM.                    ”porcess_show
*&———————————————————————*
*&      Form  GET_EXCEL
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM get_excel .
* –>2012.01.17 ccyu START
DATA:gv_fname LIKE rlgrap-filename,
gv_filename TYPE string.
IF gv_iden = ‘BS’.”资产负债表
CLEAR gt_head1[].
gt_head1-t1 = ‘行次’.
gt_head1-t2 = ‘资产’.
gt_head1-t3 = ‘期末余额’.
gt_head1-t4 = ‘年初余额’.
gt_head1-t5 = ‘行次’.
gt_head1-t6 = ‘负债和所有者权益(或股东权益)’.
gt_head1-t7 = ‘期末余额’.
gt_head1-t8 = ‘年初余额’.
APPEND gt_head1.
CLEAR:gt_alv_bs01,gt_alv_bs01[].
LOOP AT gt_alv_bs0.
gt_alv_bs01-lct1 = gt_alv_bs0-lct1.
gt_alv_bs01-item1 = gt_alv_bs0-item1.
gt_alv_bs01-yamt1 = gt_alv_bs0-yamt1.
gt_alv_bs01-ysamt1 = gt_alv_bs0-ysamt1.
gt_alv_bs01-lct2 = gt_alv_bs0-lct2.
gt_alv_bs01-item2 = gt_alv_bs0-item2.
gt_alv_bs01-yamt2 = gt_alv_bs0-yamt2.
gt_alv_bs01-ysamt2 = gt_alv_bs0-ysamt2.
APPEND gt_alv_bs01.
ENDLOOP.
CALL FUNCTION ‘WS_FILENAME_GET’
EXPORTING
mask             = ‘,*.XLS,*.XLS.’
mode             = ‘S’
IMPORTING
filename         = gv_fname
EXCEPTIONS
inv_winsys       = 1
no_batch         = 2
selection_cancel = 3
selection_error  = 4
OTHERS           = 5.
IF gv_fname IS NOT INITIAL.
gv_filename = gv_fname.
*————————————————————-*
*                 DOWNLOAD HEADER                             *
*————————————————————-*
CALL FUNCTION ‘GUI_DOWNLOAD’
EXPORTING
filename                = gv_filename
filetype                = ‘ASC’
write_field_separator   = ‘X’
TABLES
data_tab                = gt_head1
EXCEPTIONS
file_write_error        = 1
no_batch                = 2
gui_refuse_filetransfer = 3
invalid_type            = 4
no_authority            = 5
unknown_error           = 6
header_not_allowed      = 7
separator_not_allowed   = 8
filesize_not_allowed    = 9
header_too_long         = 10
dp_error_create         = 11
dp_error_send           = 12
dp_error_write          = 13
unknown_dp_error        = 14
access_denied           = 15
dp_out_of_memory        = 16
disk_full               = 17
dp_timeout              = 18
file_not_found          = 19
dataprovider_exception  = 20
control_flush_error     = 21
OTHERS                  = 22.
*————————————————————-*
*                 DOWNLOAD TABLE                              *
*————————————————————-*
CALL FUNCTION ‘GUI_DOWNLOAD’
EXPORTING
filename                = gv_filename
filetype                = ‘ASC’
append                  = ‘X’
write_field_separator   = ‘X’
TABLES
data_tab                = gt_alv_bs01[]
EXCEPTIONS
file_write_error        = 1
no_batch                = 2
gui_refuse_filetransfer = 3
invalid_type            = 4
no_authority            = 5
unknown_error           = 6
header_not_allowed      = 7
separator_not_allowed   = 8
filesize_not_allowed    = 9
header_too_long         = 10
dp_error_create         = 11
dp_error_send           = 12
dp_error_write          = 13
unknown_dp_error        = 14
access_denied           = 15
dp_out_of_memory        = 16
disk_full               = 17
dp_timeout              = 18
file_not_found          = 19
dataprovider_exception  = 20
control_flush_error     = 21
OTHERS                  = 22.
IF sy-subrc = 0.
MESSAGE i003(zn207m).
ENDIF.
ENDIF.
ELSEIF gv_iden = ‘IS’.”利润表
CALL FUNCTION ‘WS_FILENAME_GET’
EXPORTING
mask             = ‘,*.XLS,*.XLS.’
mode             = ‘S’
IMPORTING
filename         = gv_fname
EXCEPTIONS
inv_winsys       = 1
no_batch         = 2
selection_cancel = 3
selection_error  = 4
OTHERS           = 5.
IF gv_fname IS NOT INITIAL.
CLEAR: gt_alv_is01[],gt_alv_is01.
LOOP AT gt_alv_is0.
MOVE-CORRESPONDING gt_alv_is0 TO gt_alv_is01.
APPEND gt_alv_is01.
ENDLOOP.
CLEAR gt_head2[].
gt_head2-t1 = ‘行次’.
gt_head2-t2 = ‘项目’.
gt_head2-t3 = ‘本期余额’.
gt_head2-t4 = ‘累计余额’.
APPEND gt_head2.
gv_filename = gv_fname.
*————————————————————-*
*                 DOWNLOAD HEADER                             *
*————————————————————-*
CALL FUNCTION ‘GUI_DOWNLOAD’
EXPORTING
filename                = gv_filename
filetype                = ‘ASC’
write_field_separator   = ‘X’
TABLES
data_tab                = gt_head2[]
EXCEPTIONS
file_write_error        = 1
no_batch                = 2
gui_refuse_filetransfer = 3
invalid_type            = 4
no_authority            = 5
unknown_error           = 6
header_not_allowed      = 7
separator_not_allowed   = 8
filesize_not_allowed    = 9
header_too_long         = 10
dp_error_create         = 11
dp_error_send           = 12
dp_error_write          = 13
unknown_dp_error        = 14
access_denied           = 15
dp_out_of_memory        = 16
disk_full               = 17
dp_timeout              = 18
file_not_found          = 19
dataprovider_exception  = 20
control_flush_error     = 21
OTHERS                  = 22.
*————————————————————-*
*                 DOWNLOAD TABLE                              *
*————————————————————-*
CALL FUNCTION ‘GUI_DOWNLOAD’
EXPORTING
filename                = gv_filename
filetype                = ‘ASC’
append                  = ‘X’
write_field_separator   = ‘X’
TABLES
data_tab                = gt_alv_is01[]
EXCEPTIONS
file_write_error        = 1
no_batch                = 2
gui_refuse_filetransfer = 3
invalid_type            = 4
no_authority            = 5
unknown_error           = 6
header_not_allowed      = 7
separator_not_allowed   = 8
filesize_not_allowed    = 9
header_too_long         = 10
dp_error_create         = 11
dp_error_send           = 12
dp_error_write          = 13
unknown_dp_error        = 14
access_denied           = 15
dp_out_of_memory        = 16
disk_full               = 17
dp_timeout              = 18
file_not_found          = 19
dataprovider_exception  = 20
control_flush_error     = 21
OTHERS                  = 22.
IF sy-subrc = 0.
MESSAGE i003(zn207m).
ENDIF.
ENDIF.
ENDIF.
ENDFORM.                    ” GET_EXCEL
*&———————————————————————*
*&      Form  SYNCHRODATA
*&———————————————————————*
*       同步BSEG表和FAGLFLEXA表的利润中心和伙伴利润中心的数据
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM synchrodata .
CALL FUNCTION ‘SAPGUI_PROGRESS_INDICATOR’
EXPORTING
*   PERCENTAGE       = 0
text             = ‘正在同步数据…’.
“取抬头
SELECT gjahr
bukrs
belnr
FROM bkpf INTO CORRESPONDING FIELDS OF TABLE gt_bkpfsyn
WHERE bukrs = ‘N207′
AND gjahr = p_y
AND monat = p_m.
IF gt_bkpfsyn[] IS NOT INITIAL.
“取抬头下的行项目
SELECT gjahr
bukrs
belnr
prctr
pprct
buzei
INTO CORRESPONDING FIELDS OF TABLE gt_bsegsyn
FROM bseg FOR ALL ENTRIES IN gt_bkpfsyn
WHERE bukrs = gt_bkpfsyn-bukrs
AND gjahr = gt_bkpfsyn-gjahr
AND belnr = gt_bkpfsyn-belnr.
“SORT gt_bsegsyn BY belnr ASCENDING.
“按月份取行项目
SELECT ryear
rbukrs
docnr
prctr
pprctr
buzei
FROM faglflexa INTO CORRESPONDING FIELDS OF TABLE gt_fagasyn
WHERE ryear = p_y
AND rbukrs = ‘N207′
AND poper = p_m
AND rldnr = ‘0L’.
LOOP AT gt_fagasyn.
” gt_fagasyn-rclnt = sy-mandt.
READ TABLE gt_bsegsyn WITH KEY belnr = gt_fagasyn-docnr
buzei = gt_fagasyn-buzei.
IF sy-subrc = 0.
IF gt_bsegsyn-prctr IS NOT INITIAL.”不为空才更改
IF gt_fagasyn-prctr NE gt_bsegsyn-prctr.
UPDATE faglflexa SET prctr = gt_bsegsyn-prctr
WHERE rbukrs = ‘N207′
AND ryear = p_y
AND docnr = gt_fagasyn-docnr
AND buzei = gt_fagasyn-buzei
AND rldnr = ‘0L’.
IF sy-subrc = 0.
COMMIT WORK.
ENDIF.
ENDIF.
ENDIF.
IF gt_bsegsyn-pprct IS NOT INITIAL.”不为空才更改
IF gt_fagasyn-pprctr NE gt_bsegsyn-pprct.
UPDATE faglflexa SET pprctr = gt_bsegsyn-pprct
WHERE rbukrs = ‘N207′
AND ryear = p_y
AND docnr = gt_fagasyn-docnr
AND buzei = gt_fagasyn-buzei
AND rldnr = ‘0L’.
IF sy-subrc = 0.
COMMIT WORK.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
”  MODIFY faglflexa FROM TABLE gt_fagasyn[]. :不行?
CLEAR: gt_fagasyn[],gt_fagasyn,
gt_bsegsyn[],gt_bsegsyn,
gt_bkpfsyn[],gt_bkpfsyn.
ENDIF.
ENDFORM.                    ” SYNCHRODATA
*&———————————————————————*
*&      Form  getisdb
*&———————————————————————*
*       text
*———————————————————————-*
FORM getisdb.
DATA:lv_pro1(10) TYPE p DECIMALS 2 VALUE ‘5′,
lv_i1(10) TYPE p DECIMALS 2 VALUE ‘5′.
gv_iden = ‘IS’.
CLEAR  gt_alv_is0[].
PERFORM setisitem.”设置利润表项目
DATA:a LIKE faglflext-hslvt,
b LIKE faglflext-hslvt,
c LIKE faglflext-hslvt,
d LIKE faglflext-hslvt,
e LIKE faglflext-hslvt,
f LIKE faglflext-hslvt.
LOOP AT gt_alv_is0.
IF gt_alv_is0-lct = 1.
PERFORM getisamt USING a
b
‘6001′
1.
PERFORM getisamt USING c
d
‘6100′
1.
gt_alv_is0-yamt = a + c.
gt_alv_is0-mamt = b + d.
ELSEIF gt_alv_is0-lct = 2.
PERFORM getisamt USING a
b
‘6400′
2.
PERFORM getisamt USING c
d
‘6500′
2.
PERFORM getisamt USING e
f
‘6610′
2.
gt_alv_is0-yamt = a + c + e.
gt_alv_is0-mamt = b + d + f.
ELSEIF gt_alv_is0-lct = 3.
PERFORM getisamt USING a
b
‘6450′
3.
gt_alv_is0-yamt = a.
gt_alv_is0-mamt = b.
ELSEIF gt_alv_is0-lct = 4.
PERFORM getisamt USING a
b
‘6600′
4.
gt_alv_is0-yamt = a.
gt_alv_is0-mamt = b.
ELSEIF gt_alv_is0-lct = 5.
PERFORM getisamt USING a
b
‘6600′
5.
gt_alv_is0-yamt = a.
gt_alv_is0-mamt = b.
ELSEIF gt_alv_is0-lct = 6.
PERFORM getisamt USING a
b
‘6620′
6.
gt_alv_is0-yamt = a.
gt_alv_is0-mamt = b.
ELSEIF gt_alv_is0-lct = 7.
PERFORM getisamt USING a
b
‘6630′
7.
gt_alv_is0-yamt = a.
gt_alv_is0-mamt = b.
ELSEIF gt_alv_is0-lct = 8.
PERFORM getisamt USING a
b
‘6640′
8.
gt_alv_is0-yamt = a.
gt_alv_is0-mamt = b.
ELSEIF gt_alv_is0-lct = 9.
PERFORM getisamt USING a
b
‘6645′
9.
gt_alv_is0-yamt = a.
gt_alv_is0-mamt = b.
ELSEIF gt_alv_is0-lct = 12.
PERFORM getisamt USING a
b
‘6301′
12.
gt_alv_is0-yamt = a.
gt_alv_is0-mamt = b.
ELSEIF gt_alv_is0-lct = 13.
PERFORM getisamt USING a
b
‘6711′
13.
gt_alv_is0-yamt = a.
gt_alv_is0-mamt = b.
ELSEIF gt_alv_is0-lct = 14.”按科目直接取数
PERFORM getisamt USING a
b
‘0000′
14.
gt_alv_is0-yamt = a.
gt_alv_is0-mamt = b.
ELSEIF gt_alv_is0-lct = 15.
PERFORM getisamt USING a
b
‘6901′
15.
gt_alv_is0-yamt = a.
gt_alv_is0-mamt = b.
ELSEIF gt_alv_is0-lct = 17.
PERFORM getisamt USING a
b
‘6801′
17.
gt_alv_is0-yamt = a.
gt_alv_is0-mamt = b.
ENDIF.
MODIFY gt_alv_is0.
PERFORM porcess_show USING lv_pro1.
lv_pro1 = lv_pro1 + lv_i1.
ENDLOOP.
DATA:a1 LIKE faglflext-hslvt,
a1_1 LIKE faglflext-hslvt,
a2 LIKE faglflext-hslvt,
a2_1 LIKE faglflext-hslvt,
a3 LIKE faglflext-hslvt,
a3_1 LIKE faglflext-hslvt,
a4 LIKE faglflext-hslvt,
a4_1 LIKE faglflext-hslvt,
a5 LIKE faglflext-hslvt,
a5_1 LIKE faglflext-hslvt,
a6 LIKE faglflext-hslvt,
a6_1 LIKE faglflext-hslvt,
a7 LIKE faglflext-hslvt,
a7_1 LIKE faglflext-hslvt,
a8 LIKE faglflext-hslvt,
a8_1 LIKE faglflext-hslvt,
a9 LIKE faglflext-hslvt,
a9_1 LIKE faglflext-hslvt,
a10 LIKE faglflext-hslvt,
a10_1 LIKE faglflext-hslvt,
a11 LIKE faglflext-hslvt,
a11_1 LIKE faglflext-hslvt,
a12 LIKE faglflext-hslvt,
a12_1 LIKE faglflext-hslvt,
a13 LIKE faglflext-hslvt,
a13_1 LIKE faglflext-hslvt,
a14 LIKE faglflext-hslvt,
a14_1 LIKE faglflext-hslvt,
a15 LIKE faglflext-hslvt,
a15_1 LIKE faglflext-hslvt,
a16 LIKE faglflext-hslvt,
a16_1 LIKE faglflext-hslvt,
a17 LIKE faglflext-hslvt,
a17_1 LIKE faglflext-hslvt,
a18 LIKE faglflext-hslvt,
a18_1 LIKE faglflext-hslvt,
a19 LIKE faglflext-hslvt,
a19_1 LIKE faglflext-hslvt.
READ TABLE gt_alv_is0 WITH KEY lct = 1.
a1 = gt_alv_is0-yamt.
a1_1 = gt_alv_is0-mamt.
READ TABLE gt_alv_is0 WITH KEY lct = 2.
a2 = gt_alv_is0-yamt.
a2_1 = gt_alv_is0-mamt.
READ TABLE gt_alv_is0 WITH KEY lct = 3.
a3 = gt_alv_is0-yamt.
a3_1 = gt_alv_is0-mamt.
READ TABLE gt_alv_is0 WITH KEY lct = 4.
a4 = gt_alv_is0-yamt.
a4_1 = gt_alv_is0-mamt.
READ TABLE gt_alv_is0 WITH KEY lct = 5.
a5 = gt_alv_is0-yamt.
a5_1 = gt_alv_is0-mamt.
READ TABLE gt_alv_is0 WITH KEY lct = 6.
a6 = gt_alv_is0-yamt.
a6_1 = gt_alv_is0-mamt.
READ TABLE gt_alv_is0 WITH KEY lct = 7.
a7 = gt_alv_is0-yamt.
a7_1 = gt_alv_is0-mamt.
READ TABLE gt_alv_is0 WITH KEY lct = 8.
a8 = gt_alv_is0-yamt.
a8_1 = gt_alv_is0-mamt.
READ TABLE gt_alv_is0 WITH KEY lct = 9.
a9 = gt_alv_is0-yamt.
a9_1 = gt_alv_is0-mamt.
READ TABLE gt_alv_is0 WITH KEY lct = 12.
a12 = gt_alv_is0-yamt.
a12_1 = gt_alv_is0-mamt.
READ TABLE gt_alv_is0 WITH KEY lct = 13.
a13 = gt_alv_is0-yamt.
a13_1 = gt_alv_is0-mamt.
READ TABLE gt_alv_is0 WITH KEY lct = 15.
a15 = gt_alv_is0-yamt.
a15_1 = gt_alv_is0-mamt.
READ TABLE gt_alv_is0 WITH KEY lct = 17.
a17 = gt_alv_is0-yamt.
a17_1 = gt_alv_is0-mamt.
READ TABLE gt_alv_is0 WITH KEY lct = 14.
a14 = gt_alv_is0-yamt.
a14_1 = gt_alv_is0-mamt.
a11 = a1 - a2 - a3 - a4 - a5 - a6 - a7 + a8 + a9.
a11_1 = a1_1 - a2_1 - a3_1 - a4_1 - a5_1 - a6_1 - a7_1 + a8_1 + a9_1.
a16 = a11 + a12 - a13 - a14 + a15.
a16_1 = a11_1 + a12_1 - a13_1 - a14_1 + a15_1.
a18 = a16 - a17.
a18_1 = a16_1 - a17_1.
LOOP AT gt_alv_is0.
IF gt_alv_is0-lct = 11.
gt_alv_is0-yamt = a11.
gt_alv_is0-mamt = a11_1.
ELSEIF gt_alv_is0-lct = 16.
gt_alv_is0-yamt = a16.
gt_alv_is0-mamt = a16_1.
ELSEIF gt_alv_is0-lct = 18.
gt_alv_is0-yamt = a18.
gt_alv_is0-mamt = a18_1.
ENDIF.
MODIFY  gt_alv_is0.
ENDLOOP.
IF p_curr = ‘KRW’.
LOOP AT gt_alv_is0.
gt_alv_is0-yamt = gt_alv_is0-yamt * gv_bs.
gt_alv_is0-mamt = gt_alv_is0-mamt * gv_bs.
gt_alv_is0-waers = ‘KRW’.
MODIFY gt_alv_is0.
ENDLOOP.
ELSE.
LOOP AT gt_alv_is0.
gt_alv_is0-waers = ‘CNY’.
MODIFY gt_alv_is0.
ENDLOOP.
ENDIF.
ENDFORM.                    ”getisdb
*&———————————————————————*
*&  Include           ZFIR00026_I01
*&———————————————————————*
*&———————————————————————*
*&      Module  USER_COMMAND_0200  INPUT
*&———————————————————————*
*       text
*———————————————————————-*
MODULE USER_COMMAND_0200 INPUT.
CASE SY-UCOMM.
WHEN ‘EXIT’ OR ‘BACK’ OR ‘CANCLE’.
LEAVE TO SCREEN 0.
WHEN ‘PP’.
PERFORM PPSMARTFORMS_IS.
WHEN ‘PR’.
PERFORM PRINT.
ENDCASE.
ENDMODULE.                 ” USER_COMMAND_0200  INPUT
*&———————————————————————*
*&      Module  USER_COMMAND_0100  INPUT
*&———————————————————————*
*       text
*———————————————————————-*
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN ‘CANCLE’ OR ‘EXIT’ OR ‘BACK’.
LEAVE TO SCREEN 0.
WHEN ‘PP’.
PERFORM PPSMARTFORMS_IS.
WHEN ‘PR’.
PERFORM PRINT.
ENDCASE.
ENDMODULE.                 ” USER_COMMAND_0100  INPUT
*&———————————————————————*
*&      Module  USER_COMMAND_0300  INPUT
*&———————————————————————*
*       text
*———————————————————————-*
MODULE USER_COMMAND_0300 INPUT.
CASE SY-UCOMM.
WHEN ‘CANCLE’ OR ‘EXIT’ OR ‘BACK’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.                 ” USER_COMMAND_0300  INPUT
*&———————————————————————*
*&      Module  USER_COMMAND_0400  INPUT
*&———————————————————————*
*       text
*———————————————————————-*
MODULE USER_COMMAND_0400 INPUT.
CASE SY-UCOMM.
WHEN ‘CANCLE’ OR ‘EXIT’ OR ‘BACK’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.                 ” USER_COMMAND_0400  INPUT
*&———————————————————————*
*&  Include           ZFIR00026_O01
*&———————————————————————*
*&———————————————————————*
*&      Module  INITIAL  OUTPUT
*&———————————————————————*
*       text
*———————————————————————-*
MODULE initial OUTPUT.
DATA: lv_object TYPE REF TO lcl_app_compt.
CREATE OBJECT lv_object.
IF gs_alv_is IS INITIAL.
PERFORM setcon.
PERFORM displayis.
SET HANDLER lv_object->handle_toolbar FOR gs_alv_is  .
*–>2012.01.18 CCYU START
SET HANDLER lv_object->handle_user_command FOR gs_alv_is .
*<–2012.01.18 CCYU END.
SET HANDLER lv_object->handle_topofpage FOR gs_alv_is .
SET HANDLER lv_object->handle_hotspot_click FOR gs_alv_is .
CALL METHOD gs_alv_is->set_table_for_first_display
EXPORTING
is_layout            = gs_layout
it_toolbar_excluding = g_toolbar
CHANGING
it_outtab            = gt_alv_is0[]
it_fieldcatalog      = gt_fieldcat.
CALL METHOD gs_alv_is->list_processing_events
EXPORTING
i_event_name = ‘TOP_OF_PAGE’
i_dyndoc_id  = gs_dyndoc_id.
ENDIF.
ENDMODULE.                 ” INITIAL  OUTPUT
*&———————————————————————*
*&      Module  SETPF  OUTPUT
*&———————————————————————*
*       text
*———————————————————————-*
MODULE setpf OUTPUT.
SET PF-STATUS ‘0200′.
SET TITLEBAR ‘0200′.
ENDMODULE.                 ” SETPF  OUTPUT
*&———————————————————————*
*&      Module  STATUS_0100  OUTPUT
*&———————————————————————*
*       text
*———————————————————————-*
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘0100′.
SET TITLEBAR ‘0100′.
ENDMODULE.                 ” STATUS_0100  OUTPUT
*&———————————————————————*
*&      Module  INITIAL_0100  OUTPUT
*&———————————————————————*
*       text
*———————————————————————-*
MODULE initial_0100 OUTPUT.
DATA: lv_object1 TYPE REF TO lcl_app_compt.
CREATE OBJECT lv_object1.
IF gs_alv_bs IS INITIAL.
PERFORM setcon.
PERFORM displaybs.
SET HANDLER lv_object1->handle_toolbar FOR gs_alv_bs.
*–>2012.01.18 CCYU START
SET HANDLER lv_object1->handle_user_command FOR gs_alv_bs .
*<–2012.01.18 CCYU END.
SET HANDLER lv_object1->handle_topofpage FOR gs_alv_bs .
SET HANDLER lv_object1->handle_hotspot_click FOR gs_alv_bs .”给GS_ALV_BS注册事件
CALL METHOD gs_alv_bs->set_table_for_first_display
EXPORTING
is_layout            = gs_layout
it_toolbar_excluding = g_toolbar
CHANGING
it_outtab            = gt_alv_bs0[]
it_fieldcatalog      = gt_fieldcat.
CALL METHOD gs_alv_bs->list_processing_events
EXPORTING
i_event_name = ‘TOP_OF_PAGE’
i_dyndoc_id  = gs_dyndoc_id.
ENDIF.
ENDMODULE.                 ” INITIAL_0100  OUTPUT
*&———————————————————————*
*&      Module  STATUS_0300  OUTPUT
*&———————————————————————*
*       text
*———————————————————————-*
MODULE status_0300 OUTPUT.
SET PF-STATUS ‘0300′.
SET TITLEBAR ‘0300′.
ENDMODULE.                 ” STATUS_0300  OUTPUT
*&———————————————————————*
*&      Module  INITIAL_0300  OUTPUT
*&———————————————————————*
*       text
*———————————————————————-*
MODULE initial_0300 OUTPUT.
DATA: lv_object2 TYPE REF TO lcl_app_compt.
CREATE OBJECT lv_object2.
IF gs_alv_is_dp1 IS INITIAL.
PERFORM setcon1.
CREATE OBJECT gs_alv_is_dp1
EXPORTING
i_parent = gs_parent_grid1.
PERFORM displayisdp.
*–>2012.01.18 CCYU START
SET HANDLER lv_object2->handle_user_command FOR gs_alv_is_dp1  .
*<–2012.01.18 CCYU END.
“SET HANDLER LV_OBJECT2->HANDLE_TOOLBAR FOR GS_ALV_IS_DP1.
”   SET HANDLER LV_OBJECT2->HANDLE_TOPOFPAGE FOR GS_ALV_IS_DP1 .
CALL METHOD gs_alv_is_dp1->set_table_for_first_display
EXPORTING
is_layout            = gs_layout
it_toolbar_excluding = g_toolbar1
CHANGING
it_outtab            = gt_alv_is_dp1[]
it_fieldcatalog      = gt_fieldcat.
ELSE.
“CALL METHOD GS_ALV_IS_DP1->REFRESH_TABLE_DISPLAY.
“根据GT_ALV_IS_DP1[]中的数据重新刷新ALV
CALL METHOD gs_alv_is_dp1->set_table_for_first_display
EXPORTING
is_layout            = gs_layout
it_toolbar_excluding = g_toolbar1
CHANGING
it_outtab            = gt_alv_is_dp1[]
it_fieldcatalog      = gt_fieldcat.
ENDIF.
ENDMODULE.                 ” INITIAL_0300  OUTPUT
*&———————————————————————*
*&      Module  STATUS_0400  OUTPUT
*&———————————————————————*
*       text
*———————————————————————-*
MODULE status_0400 OUTPUT.
SET PF-STATUS ‘0300′.
SET TITLEBAR ‘0300′.
ENDMODULE.                 ” STATUS_0400  OUTPUT
*&———————————————————————*
*&      Module  INITIAL_0400  OUTPUT
*&———————————————————————*
*       text
*———————————————————————-*
MODULE initial_0400 OUTPUT.
DATA: lv_object3 TYPE REF TO lcl_app_compt.
CREATE OBJECT lv_object3.
IF gs_alv_bs_dp1 IS INITIAL.
PERFORM setcon1.
CREATE OBJECT gs_alv_bs_dp1
EXPORTING
i_parent = gs_parent_grid1.
PERFORM displaybsdp.
*–>2012.01.18 CCYU START
SET HANDLER lv_object3->handle_user_command FOR gs_alv_bs_dp1  .
*<–2012.01.18 CCYU END.
“SET HANDLER LV_OBJECT2->HANDLE_TOOLBAR FOR GS_ALV_IS_DP1.
”   SET HANDLER LV_OBJECT2->HANDLE_TOPOFPAGE FOR GS_ALV_IS_DP1 .
CALL METHOD gs_alv_bs_dp1->set_table_for_first_display
EXPORTING
is_layout            = gs_layout
it_toolbar_excluding = g_toolbar1
CHANGING
it_outtab            = gt_alv_bs_dp1[]
it_fieldcatalog      = gt_fieldcat.
ELSE.
CALL METHOD gs_alv_bs_dp1->set_table_for_first_display
EXPORTING
is_layout            = gs_layout
it_toolbar_excluding = g_toolbar1
CHANGING
it_outtab            = gt_alv_bs_dp1[]
it_fieldcatalog      = gt_fieldcat.
ENDIF.
ENDMODULE.                 ” INITIAL_0400  OUTPUT
最终效果:
资产负债表:
z
损益表:
s

原创粉丝点击