240 likes | 251 Views
Dialog Programming 整合實例. 報表程式 1 : ZPU105_301_PROG1. write:/ 'ABAP 程式設計課程 '. write:/ ' 程式設計:楊子青 '. 報表程式 2 : ZPU105_301_PROG2. PARAMETERS ANO TYPE zpu105_301_show-team. START-OF-SELECTION. data itab TYPE STANDARD TABLE OF ZPU105_301_show WITH HEADER LINE. SELECT * FROM ZPU105_301_show
E N D
報表程式1:ZPU105_301_PROG1 • write:/ 'ABAP程式設計課程'. • write:/ '程式設計:楊子青'.
報表程式2:ZPU105_301_PROG2 • PARAMETERS ANO TYPE zpu105_301_show-team. • START-OF-SELECTION. • data itab TYPE STANDARD TABLE OF ZPU105_301_show WITH HEADER LINE. • SELECT * • FROM ZPU105_301_show • INTO TABLE ITAB • WHERE TEAM = ANO. • IF SY-SUBRC = 0. • LOOP AT ITAB. • WRITE:/ itab-SHOWNAME, ITAB-SHOWYEAR. • ENDLOOP. • ELSE. • WRITE:/ '查無此劇團之演出節目'. • ENDIF.
報表程式3:ZPU105_301_PROG3 • select-OPTIONS A FOR zpu105_301_show-team. • INITIALIZATION. • set TITLEBAR 'T00'. • top-of-page. • set TITLEBAR 'T02'. • START-OF-SELECTION. • DATA wa type zpu105_301_art. • select * from zpu105_301_art • into wa • WHERE artid in a. • write:/ wa-artid COLOR 4, 11(20) wa-artname color 5, 41(10) wa-arttel COLOR 6, wa-arturl COLOR 7. • HIDE: wa-artid, wa-artname. • ENDSELECT. • if sy-subrc <> 0. • write:/ 'No Data'(101). • endif.
報表程式3:ZPU105_301_PROG3 (續) • at LINE-SELECTION. • * write:/ sy-lsind, wa-artid, wa-artname. • if sy-lsind = 1. • set TITLEBAR 'T03' with wa-artname '推出節目'. • DATA wa2 TYPE zpu105_301_show. • SELECT * from zpu105_301_show • into wa2 • where team = wa-artid. • write:/ wa2-showname, wa2-showyear. • hide: wa2-showname. • ENDSELECT. • if sy-subrc <> 0. • write:/ '目前這個劇團沒有演出節目'. • endif. • ENDIF.
報表程式3:ZPU105_301_PROG3 (續) • if sy-lsind = 2. • set TITLEBAR 'T03' with wa2-showname '各場次觀眾人數'. • DATA wa3 TYPE zpu105_301_look. • SELECT * from zpu105_301_look • into wa3 • where showname = wa2-showname. • write:/ wa3-lookdate, wa3-lookpeople. • ENDSELECT. • if sy-subrc <> 0. • write:/ '查無資料'. • endif. • ENDIF.
1. 主程式 • DATA OK_CODE LIKE SY-UCOMM. • TABLES: ZPU105_301_ART, ZPU105_301_SHOW. • DATA: TEAMTO TYPE ZPU105_301_SHOW-TEAM. • CALL SCREEN 9000.
SCREEN 9000 PROG1 PROG2 PROG3 JUMP9100 BYE
SCREEN 9000 (續) MODULE USER_COMMAND_9000 INPUT. CASE OK_CODE. WHEN 'PROG1'. SUBMIT ZPU105_301_PROG1 AND RETURN. WHEN 'PROG2'. SUBMIT ZPU105_301_PROG2 VIA SELECTION-SCREEN AND RETURN. WHEN 'PROG3'. SUBMIT ZPU105_301_PROG3 VIA SELECTION-SCREEN AND RETURN. WHEN 'JUMP9100'. CALL SCREEN 9100. WHEN 'BYE'. LEAVE PROGRAM. ENDCASE. ENDMODULE. 執行,呼叫程式1,2,3看看
SCREEN 9100 ZPU105_301_SHOW-TEAM TEAMTO PROG2COND PROG3COND BACKMAIN QUERY TEAMTO
SCREEN 9100 (續) MODULE USER_COMMAND_9100 INPUT.CASE OK_CODE. WHEN 'PROG2COND'. SUBMIT ZPU105_301_PROG2 WITH ANO = ZPU105_301_SHOW-TEAM AND RETURN. WHEN 'BACKMAIN'. CALL SCREEN 9000. WHEN 'PROG3COND'. DATA WA TYPE rsparams. WA-SELNAME = 'A'. WA-SIGN = 'I'. WA-OPTION = 'BT'. WA-LOW = ZPU105_301_SHOW-TEAM. WA-HIGH = TEAMTO. DATA ITAB TYPE STANDARD TABLE OF rsparams. APPEND WA TO ITAB. SUBMIT ZPU105_301_PROG3 WITH SELECTION-TABLE ITAB AND RETURN. CLEAR ITAB. WHEN 'QUERY'. SELECT SINGLE * FROM ZPU105_301_ART WHERE ARTID = ZPU105_301_SHOW-TEAM.ENDCASE.ENDMODULE. 執行看看
SCREEN 9100 (續): 用TableControl顯示多筆資料 註解掉,否則 只有執行一次 MODULE SHOW_INIT OUTPUT. * IF G_SHOW_COPIED IS INITIAL. *&SPWIZARD: COPY DDIC-TABLE 'ZPU105_301_SHOW' *&SPWIZARD: INTO INTERNAL TABLE 'g_SHOW_itab' SELECT * FROM ZPU105_301_SHOW INTO CORRESPONDING FIELDS OF TABLE G_SHOW_ITAB WHERE TEAM = ZPU105_301_SHOW-TEAM. G_SHOW_COPIED = 'X'. REFRESH CONTROL 'SHOW' FROM SCREEN '9100'. * ENDIF. ENDMODULE.
3. PROCESS BEFORE OUTPUT設定GUI Status (快速鍵) 設定 Function Keys (快速鍵) FctCode 描述 執行
5. PROCESS BEFORE OUTPUT設定GUI Status (應用程式工具列) 展開 按F4
PROCESS BEFORE OUTPUT設定GUI Status (應用程式工具列) 執行
PROCESS BEFORE OUTPUT設定GUI Status (應用程式工具列圖示) 執行
6. PROCESS BEFORE OUTPUT設定GUI Status (功能表) double click 執行結果 可以按F4選擇
Disable部份Menu Bar: 以Screen 9100為例 MODULE STATUS_9100 OUTPUT. DATA FCode TYPE TABLE OF SY-UCOMM. APPEND 'PROG2' TO FCode. APPEND 'PROG3' TO FCode. SET PF-STATUS 'STATUS1' EXCLUDING FCODE. * SET TITLEBAR 'xxx'. ENDMODULE.