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

浙公网安备 33010602011771号