SAP-DYNPRO开发实例


运行效果部分截图:

 11220676-1

查询功能:

11220676-2

添加功能:

11220676-3

修改功能:

 11220676-4 

 

工具条:

 11220676-5

 

11220676-6 

100屏幕:

 11220676-7

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屏幕

11220676-8

200屏幕逻辑流:

PROCESS BEFORE OUTPUT.
  MODULE set_screen_200.
PROCESS AFTER INPUT.
  MODULE user_command_0200.


300屏幕:

11220676-9
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
版权声明:本文为博主原创文章,转载请附上博文链接!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM