运行效果部分截图:
查询功能:
添加功能:
修改功能:
工具条:
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
版权声明:本文为博主原创文章,转载请附上博文链接!