運行效果部分截圖:
查詢功能:
添加功能:
修改功能:
工具條:
100屏幕:
100屏幕邏輯流
PROCESS BEFORE OUTPUT. MODULE status_100. CALL SUBSCREEN: sub01 INCLUDING sy-repid '0200', sub02 INCLUDING sy-repid '0300'. PROCESS AFTER INPUT. CALL SUBSCREEN sub01. CALL SUBSCREEN sub02. MODULE exit_command_100 AT EXIT-COMMAND.
200屏幕
200屏幕邏輯流:
PROCESS BEFORE OUTPUT. MODULE set_screen_200. PROCESS AFTER INPUT. MODULE user_command_0200.
300屏幕:
300屏幕邏輯流:
PROCESS BEFORE OUTPUT. MODULE set_screen_300. PROCESS AFTER INPUT.
程序代碼:
主程序:ZSY_TEST001
REPORT zsy_test001. INCLUDE zsy_test001_top. INCLUDE zsy_test001_o01. INCLUDE zsy_test001_i01. INCLUDE zsy_test001_f01.
zsy_test001_top.子程序
TABLES: spfli. DATA: BEGIN OF gs_data, carrid TYPE spfli-carrid, " 航線代碼 connid TYPE spfli-connid, " 航班連接ID countryfr TYPE spfli-countryfr, " 起飛國家 cityfrom TYPE spfli-cityfrom, " 起飛城市 airpfrom TYPE spfli-airpfrom, " 起飛機場 countryto TYPE spfli-countryto, " 目標國家 cityto TYPE spfli-cityto, " 目標城市 airpto TYPE spfli-airpto, " 目標機場 fltime TYPE spfli-fltime, " 航班時間 deptime TYPE spfli-deptime, " 啟程時間 arrtime TYPE spfli-arrtime, " 到達時間 END OF gs_data. DATA: ok_code TYPE sy-ucomm, bk_code TYPE sy-ucomm, l_initial(1) TYPE c. START-OF-SELECTION. CALL SCREEN 100.
zsy_test001_o01
*&---------------------------------------------------------------------* *& Module STATUS_100 OUTPUT *&---------------------------------------------------------------------* * text 工具條 *----------------------------------------------------------------------* MODULE status_100 OUTPUT. DATA: BEGIN OF ex_tab OCCURS 0, fcode LIKE sy-ucomm, END OF ex_tab. CLEAR: ex_tab[]. IF bk_code IS INITIAL OR bk_code = 'SEL' OR bk_code = 'DEL'. ex_tab-fcode = 'SAVE'. "" 隱藏保存按鈕 APPEND ex_tab. ENDIF. " 工具條 SET PF-STATUS 'STATUS_BAR' EXCLUDING ex_tab. " 標題 SET TITLEBAR 'TITLE_BAR'. ENDMODULE. " STATUS_100 OUTPUT *&---------------------------------------------------------------------* *& Module SET_SCREEN_200 OUTPUT *&---------------------------------------------------------------------* * text 200屏幕屬性設置 *----------------------------------------------------------------------* MODULE set_screen_200 OUTPUT. LOOP AT SCREEN. IF bk_code = 'UPD' AND screen-group1 = 'H1'. screen-input = 0. MODIFY SCREEN. ELSEIF ( bk_code = 'INS' or bk_code = 'UPD' ) AND screen-group1 = 'B1'. screen-input = 0. MODIFY SCREEN. ENDIF. ENDLOOP. ENDMODULE. " SET_SCREEN_200 OUTPUT *&---------------------------------------------------------------------* *& Module SET_SCREEN_300 OUTPUT *&---------------------------------------------------------------------* * text 300屏幕屬性設置 *----------------------------------------------------------------------* MODULE set_screen_300 OUTPUT. LOOP AT SCREEN. IF bk_code IS INITIAL. screen-active = 0. MODIFY SCREEN. ELSEIF ( bk_code = 'SEL' OR bk_code = 'UPD' ) AND ( gs_DATA-carrid IS INITIAL OR gs_DATA-connid IS INITIAL ). screen-active = 0. MODIFY SCREEN. ELSEIF ( bk_code = 'INS' OR bk_code = 'UPD' ) AND screen-group1 = 'D1'. screen-input = 1. MODIFY SCREEN. ELSEIF ( bk_code = 'INS' OR bk_code = 'UPD' ) AND screen-group1 = 'B1'. screen-input = 0. MODIFY SCREEN. ENDIF. ENDLOOP. ENDMODULE. " SET_SCREEN_300 OUTPUT
zsy_test001_i01.子程序
*&---------------------------------------------------------------------* *& Module EXIT_COMMAND_100 INPUT *&---------------------------------------------------------------------* * text 退出功能 *----------------------------------------------------------------------* MODULE exit_command_100 INPUT. DATA: l_exit(1) TYPE c. PERFORM are_you_sure1 USING '確認退出' '確定要退出嗎?' 'X' CHANGING l_exit. IF l_exit = 'J'. LEAVE TO SCREEN 0. ENDIF. ENDMODULE. " EXIT_COMMAND_100 INPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_100 INPUT *&---------------------------------------------------------------------* * text 按鈕功能 *----------------------------------------------------------------------* MODULE user_command_100 INPUT. bk_code = ok_code. CASE bk_code. WHEN 'SEL'." 查詢 PERFORM input_check_200. PERFORM sel_data. WHEN 'INS'. " 添加 CLEAR: gs_DATA,gs_data. WHEN 'UPD'. " 修改 PERFORM input_check_200. WHEN 'DEL'. " 刪除 PERFORM input_check_200. PERFORM DEL_DATA. WHEN 'SAVE'. " 保存 CLEAR: spfli. PERFORM input_check_300. PERFORM save_data. WHEN 'CANC'. " 取消 CLEAR: gs_DATA,gs_data. WHEN OTHERS. ENDCASE. ENDMODULE. " USER_COMMAND_100 INPUT
zsy_test001_f01.子程序
*&---------------------------------------------------------------------* *& Form input_check_200 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM input_check_200. CLEAR: l_initial. IF gs_data-carrid IS INITIAL. l_initial = 'X'. MESSAGE '航線代碼不能為空!' TYPE 'S' DISPLAY LIKE 'E'. ELSEIF gs_data-connid IS INITIAL. l_initial = 'X'. MESSAGE '航班連接Id不能為空!' TYPE 'S' DISPLAY LIKE 'E'. ENDIF. ENDFORM. "input_check_200 *&---------------------------------------------------------------------* *& Form input_check *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM input_check_300. IF gs_data-countryfr IS INITIAL. l_initial = 'X'. MESSAGE '起飛國家不能為空!' TYPE 'S' DISPLAY LIKE 'E'. ELSEIF gs_data-cityfrom IS INITIAL. l_initial = 'X'. MESSAGE '起飛城市不能為空!' TYPE 'S' DISPLAY LIKE 'E'. ELSEIF gs_data-airpfrom IS INITIAL. l_initial = 'X'. MESSAGE '起飛機場不能為空!' TYPE 'S' DISPLAY LIKE 'E'. ELSEIF gs_data-countryto IS INITIAL. l_initial = 'X'. MESSAGE '目標國家不能為空!' TYPE 'S' DISPLAY LIKE 'E'. ELSEIF gs_data-cityto IS INITIAL. l_initial = 'X'. MESSAGE '目標城市不能為空!' TYPE 'S' DISPLAY LIKE 'E'. ELSEIF gs_data-airpto IS INITIAL. l_initial = 'X'. MESSAGE '目標機場不能為空!' TYPE 'S' DISPLAY LIKE 'E'. ELSEIF gs_data-fltime IS INITIAL. l_initial = 'X'. MESSAGE '航班時間不能為空!' TYPE 'S' DISPLAY LIKE 'E'. ELSEIF gs_data-deptime IS INITIAL. MESSAGE '啟程時間不能為空!' TYPE 'S' DISPLAY LIKE 'E'. ELSEIF gs_data-arrtime IS INITIAL. l_initial = 'X'. MESSAGE '到達時間不能為空!' TYPE 'S' DISPLAY LIKE 'E'. ENDIF. ENDFORM. "input_check *&---------------------------------------------------------------------* *& Form sel_data *&---------------------------------------------------------------------* * text 查詢 *----------------------------------------------------------------------* FORM sel_data. CHECK l_initial IS INITIAL. SELECT SINGLE * INTO CORRESPONDING FIELDS OF gs_data FROM spfli WHERE carrid = gs_data-carrid AND connid = gs_data-connid. ENDFORM. "sel_data *&---------------------------------------------------------------------* *& Form del_data *&---------------------------------------------------------------------* * text 刪除 *----------------------------------------------------------------------* FORM del_data . CHECK l_initial IS INITIAL. DELETE spfli. IF sy-subrc EQ 0. COMMIT WORK. CLEAR: gs_data. MESSAGE '刪除成功!' TYPE 'S'. ELSE. ROLLBACK WORK. MESSAGE '刪除失敗!' TYPE 'S' DISPLAY LIKE 'E'. ENDIF. ENDFORM. " DEL_DATA *&---------------------------------------------------------------------* *& Form save_data *&---------------------------------------------------------------------* * text 保存數據 *----------------------------------------------------------------------* FORM save_data. CHECK l_initial IS INITIAL. IF bk_code = 'INS'. " 查詢是否已添加記錄 SELECT SINGLE * FROM spfli WHERE carrid = gs_data-carrid AND connid = gs_data-connid. IF sy-subrc EQ 0. MESSAGE '重復添加,請檢查!' TYPE 'S' DISPLAY LIKE 'E'. EXIT. ENDIF. ENDIF. CLEAR: spfli. MOVE-CORRESPONDING: gs_data TO spfli. MODIFY spfli. " 保存數據 IF sy-subrc EQ 0. COMMIT WORK. MESSAGE '保存成功!' TYPE 'S'. ELSE. ROLLBACK WORK. MESSAGE '保存失敗!' TYPE 'S' DISPLAY LIKE 'E'. ENDIF. ENDFORM. "save_data *&---------------------------------------------------------------------* *& Form are_you_sure1 *&---------------------------------------------------------------------* * text 退出提示窗口 *----------------------------------------------------------------------* * -->I_TITLE text * -->I_TEXTLINE1 text * -->I_DISPLAY text * -->E_SUCCESS text *----------------------------------------------------------------------* FORM are_you_sure1 USING i_title TYPE char50 i_textline1 i_display CHANGING e_success. CLEAR e_success. CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' EXPORTING defaultoption = 'J' textline1 = i_textline1 titel = i_title cancel_display = i_display IMPORTING answer = e_success. ENDFORM. "are_you_sure1
---------------------
作者:rztyzxzy
來源:CSDN
原文:https://blog.csdn.net/rztyzxzy/article/details/46756761
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!