财务报表查询
背景:此程序?qū)崿F(xiàn)了財(cái)務(wù)報(bào)表的統(tǒng)計(jì)。
REPORT ZJGLCO001.TABLES:FAGLFLEXT,CSKT,SKAT. TYPE-POOLS:slis.DATA: BEGIN OF ITEM OCCURS 0,RBUKRS LIKE FAGLFLEXT-RBUKRS, " 公司代碼RYEAR LIKE FAGLFLEXT-RYEAR, " 會(huì)計(jì)年度RCNTR LIKE FAGLFLEXT-RCNTR, " 成本中心RACCT LIKE FAGLFLEXT-RACCT, " 會(huì)計(jì)科目RFAREA LIKE FAGLFLEXT-RFAREA, " 費(fèi)用類型KTEXT LIKE CSKT-KTEXT, " 成本中心名稱TXT20 LIKE SKAT-TXT20, "科目名稱TSL01 LIKE FAGLFLEXT-TSL01, " 1月金額TSL02 LIKE FAGLFLEXT-TSL02, " 2月金額TSL03 LIKE FAGLFLEXT-TSL03, "3月金額TSL04 LIKE FAGLFLEXT-TSL04, " 4月金額TSL05 LIKE FAGLFLEXT-TSL05, " 5月金額TSL06 LIKE FAGLFLEXT-TSL06, " 6月金額TSL07 LIKE FAGLFLEXT-TSL07, "7月金額TSL08 LIKE FAGLFLEXT-TSL08, " 8月金額TSL09 LIKE FAGLFLEXT-TSL09, " 9月金額TSL10 LIKE FAGLFLEXT-TSL10, " 10月金額TSL11 LIKE FAGLFLEXT-TSL11, "11月金額TSL12 LIKE FAGLFLEXT-TSL12, " 12月金額R_SUM LIKE FAGLFLEXT-TSL01, " 定義列數(shù)據(jù)類型.END OF ITEM.DATA:BEGIN OF STRUCTURE,RBUKRS LIKE FAGLFLEXT-RBUKRS, " 公司代碼RYEAR LIKE FAGLFLEXT-RYEAR, " 會(huì)計(jì)年度RCNTR LIKE FAGLFLEXT-RCNTR, " 成本中心RACCT LIKE FAGLFLEXT-RACCT, " 會(huì)計(jì)科目RFAREA LIKE FAGLFLEXT-RFAREA, " 費(fèi)用類型KTEXT LIKE CSKT-KTEXT, " 成本中心名稱TXT20 LIKE SKAT-TXT20, "科目名稱TSL01 LIKE FAGLFLEXT-TSL01, " 1月金額TSL02 LIKE FAGLFLEXT-TSL02, " 2月金額TSL03 LIKE FAGLFLEXT-TSL03, "3月金額TSL04 LIKE FAGLFLEXT-TSL04, " 4月金額TSL05 LIKE FAGLFLEXT-TSL05, " 5月金額TSL06 LIKE FAGLFLEXT-TSL06, " 6月金額TSL07 LIKE FAGLFLEXT-TSL07, "7月金額TSL08 LIKE FAGLFLEXT-TSL08, " 8月金額TSL09 LIKE FAGLFLEXT-TSL09, " 9月金額TSL10 LIKE FAGLFLEXT-TSL10, " 10月金額TSL11 LIKE FAGLFLEXT-TSL11, "11月金額TSL12 LIKE FAGLFLEXT-TSL12, " 12月金額R_SUM LIKE FAGLFLEXT-TSL01, " 定義列數(shù)據(jù)類型.END OF STRUCTURE.DATA: gd_repid LIKE sy-repid.DATA: i_grid_settings TYPE lvc_s_glay.DATA: afield TYPE slis_fieldcat_alv.DATA: fieldcat TYPE TABLE OF slis_fieldcat_alv WITH HEADER LINE.DATA: layout TYPE slis_layout_alv.DATA: l_pos TYPE i VALUE 1.DATA: lt_h LIKE TABLE OF item WITH HEADER LINE.DATA: lft_h LIKE TABLE OF item WITH HEADER LINE.DATA: lft_i LIKE TABLE OF item WITH HEADER LINE.DATA: p_i TYPE i,p_h TYPE i , l_msg(70),l_kzwi1 LIKE vbap-kzwi1,l_zzye LIKE bsid-dmbtr.DEFINE fill.afield-col_pos = l_pos.afield-fieldname = &1.afield-seltext_l = &2.afield-no_zero = &3.afield-key = &4.afield-edit = &5.append afield to fieldcat.clear afield.l_pos = l_pos + 1.END-OF-DEFINITION.SELECTION-SCREEN BEGIN OF BLOCK BLA WITH FRAME TITLE text-001.SELECT-OPTIONS:S_RBUKRS FOR FAGLFLEXT-RBUKRS NO INTERVALS OBLIGATORY , " 公司代碼S_RYEAR FOR FAGLFLEXT-RYEAR NO INTERVALS OBLIGATORY , " 會(huì)計(jì)年度S_RCNTR FOR FAGLFLEXT-RCNTR, " 成本中心S_RACCT FOR FAGLFLEXT-RACCT, " 會(huì)計(jì)科目S_RFAREA FOR FAGLFLEXT-RFAREA. "費(fèi)用類型SELECTION-SCREEN END OF BLOCK BLA.START-OF-SELECTION.PERFORM frm_get_data.IF item[] IS NOT INITIAL.PERFORM frm_show_data.ELSE.MESSAGE s001(00) WITH '沒有查詢到數(shù)據(jù)'.ENDIF. FORM frm_get_data.SELECT FAGLFLEXT~TSL01 FAGLFLEXT~TSL02 FAGLFLEXT~TSL03 FAGLFLEXT~TSL04 FAGLFLEXT~TSL05 FAGLFLEXT~TSL06 FAGLFLEXT~TSL07 FAGLFLEXT~TSL08 FAGLFLEXT~TSL09 FAGLFLEXT~TSL10 FAGLFLEXT~TSL11 FAGLFLEXT~TSL12 FAGLFLEXT~RACCT FAGLFLEXT~RCNTR INTO CORRESPONDING FIELDS OF TABLE ITEM FROM FAGLFLEXTWHERE FAGLFLEXT~RBUKRS IN S_RBUKRSAND FAGLFLEXT~RYEAR IN S_RYEARAND FAGLFLEXT~RCNTR IN S_RCNTRAND FAGLFLEXT~RACCT IN S_RACCTAND FAGLFLEXT~RFAREA IN S_RFAREA. LOOP AT ITEM. ITEM-R_SUM = ITEM-TSL01 + ITEM-TSL02 + ITEM-TSL03 + ITEM-TSL04 + ITEM-TSL05 + ITEM-TSL06 + ITEM-TSL07 + ITEM-TSL08 + ITEM-TSL09 + ITEM-TSL10 + ITEM-TSL11 + ITEM-TSL12.SELECT SINGLE TXT20 INTO ITEM-TXT20FROM SKAT WHERE SAKNR = ITEM-RACCT.SELECT SINGLE KTEXT INTO ITEM-KTEXTFROM CSKT WHERE KOSTL = ITEM-RCNTR.MODIFY ITEM .STRUCTURE-TXT20 = 'SUM'.STRUCTURE-TSL01 = ITEM-TSL01 + STRUCTURE-TSL01 .STRUCTURE-TSL02 = ITEM-TSL02 + STRUCTURE-TSL02 .STRUCTURE-TSL03 = ITEM-TSL03 + STRUCTURE-TSL03 .STRUCTURE-TSL04 = ITEM-TSL04 + STRUCTURE-TSL04 .STRUCTURE-TSL05 = ITEM-TSL05 + STRUCTURE-TSL05 .STRUCTURE-TSL06 = ITEM-TSL06 + STRUCTURE-TSL06 .STRUCTURE-TSL07 = ITEM-TSL07 + STRUCTURE-TSL07 .STRUCTURE-TSL08 = ITEM-TSL08 + STRUCTURE-TSL08 .STRUCTURE-TSL09 = ITEM-TSL09 + STRUCTURE-TSL09 .STRUCTURE-TSL10 = ITEM-TSL10 + STRUCTURE-TSL10 .STRUCTURE-TSL11 = ITEM-TSL11 + STRUCTURE-TSL11 .STRUCTURE-TSL12 = ITEM-TSL12 + STRUCTURE-TSL12 .STRUCTURE-R_SUM = ITEM-R_SUM + STRUCTURE-R_SUM .ENDLOOP.APPEND STRUCTURE TO ITEM. ENDFORM.FORM frm_show_data .i_grid_settings-edt_cll_cb = 'X'. "顯示界面可編輯字段上修改了數(shù)據(jù),回車后立即更新內(nèi)表的數(shù)據(jù)layout-colwidth_optimize = 'X'. "設(shè)置字段列寬自適應(yīng)layout-zebra = 'X'.CLEAR afield.REFRESH fieldcat."clear,refresh,freefill 'RCNTR' '成本中心名稱' '' '' ''.fill 'RACCT' '科目' '' '' ''.fill 'TXT20' '科目名稱' '' '' ''.fill 'TSL01' '1月金額' '' '' ''.fill 'TSL02' '2月金額' '' '' ''.fill 'TSL03' '3月金額' '' '' ''.fill 'TSL04' '4月金額' '' '' ''.fill 'TSL05' '5月金額' '' '' ''.fill 'TSL06' '6月金額' '' '' ''.fill 'TSL07' '7月金額' '' '' ''.fill 'TSL08' '8月金額' '' '' ''.fill 'TSL09' '9月金額' '' '' ''.fill 'TSL10 ' '10月金額' '' '' ''.fill 'TSL11' '11月金額' '' '' ''.fill 'TSL12 ' '12月金額' '' '' ''.fill 'R_SUM ' '匯總' '' '' ''.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTING"顯示界面可編輯字段上修改了數(shù)據(jù),回車后就會(huì)立即將內(nèi)表的數(shù)據(jù)也修改i_grid_settings = i_grid_settings"標(biāo)記當(dāng)前程序i_callback_program = sy-cprogit_fieldcat = fieldcat[]is_layout = layouti_callback_user_command = 'USER_COMMAND' "此處是用戶動(dòng)作的入口i_callback_pf_status_set = 'SET_STATUS' "此處是工具欄的入口TABLESt_outtab = item. "此處是數(shù)據(jù)內(nèi)表ENDFORM. " FRM_SHOW_DATFORM set_status USING rt_extab TYPE slis_t_extab.SET PF-STATUS 'STANDARD'."工具欄的圖標(biāo)可以從SAPLKKBL程序的接口standard復(fù)制ENDFORM.FORM user_command USING rf_ucomm LIKE sy-ucommrs TYPE slis_selfield .rs-refresh = 'X'."屏幕事件觸發(fā)后自動(dòng)刷新屏幕CASE rf_ucomm.WHEN '&IC1'.READ TABLE item INDEX rs-tabindex.WHEN '&BACK' OR '&QUIT' OR '&CANCEL'.LEAVE PROGRAM.ENDCASE.ENDFORM.功能展示
1 .
邏輯處理重點(diǎn)
1.如何處理對列和行的求和;
處理方法
1.列直接定義及累加;
2.定義一個(gè)結(jié)構(gòu),然后添加內(nèi)表中(通過很多行求總方法添加);
總結(jié):1,盡可能在F1里先看英文文檔;(SELECT OPTIONS里找到必輸文檔)
2. 不管是寫程序,還是troubleshooting的時(shí)候,盡可能要參照一個(gè)例子;
3. 注意大寫和空格;
4. 如果是處理一個(gè)表,從程序優(yōu)化的角度來說盡可能只有一個(gè)循環(huán)。
總結(jié)
- 上一篇: windows10怎么重装系统|重装wi
- 下一篇: Linux中为什么sem_open返回0