ABAP实现本地化的资产负债表和损益表
生活随笔
收集整理的這篇文章主要介紹了
ABAP实现本地化的资产负债表和损益表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.設計思路:
SAP沒有提供標準的符合中國標準的資產負債表和損益表,需要我們在系統中自定義開發,我們在配置報表版本時都指定了
一個項目的編號,一個版本下面都有期其統馭的科目范圍,我們可以根據這個項目編號找到相應的科目范圍,然后根據科目范圍
獲取科目借貸匯總的值。
SAP中資產負債表的配置圖示:
我們傳統的資產負債表如下格式: 我們可以在程序中用項目編號找到其下面的科目范圍,然后取科目匯總值,因為資產負債表是固定的,所以我們要 建立一個CBO表來存放各個具體的項目和在SAP中對應的項目編號。 最后要強調的是在資產負債表中未分配利潤的計算: 未分配利潤的期末余額=年初結轉額(留存收益的上年余額)+今年截至到本月的盈利額(利潤表中有體現) 利潤表的思路和資產負債表是一樣的。 具體的代碼實現: *&———————————————————————* *&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 最終效果: 資產負債表: 損益表:與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的ABAP实现本地化的资产负债表和损益表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 触发ALV事件时报错MOVE_TO_LI
- 下一篇: 新会计科目的编号及内容