• 五十一、SAP中使程序结构化,模块化


     一、我们创建3个引用单元,这3个单元里面分别存放定义相关,执行相关和子程序相关的内容

    二、将程序中的各部分都拆分到INCLUDE文件中,DEF文件内容如下

    三、INC文件内容

    四、MAIN文件中写程序执行的逻辑

    五、运行程序时,需要激活对应的3个文件,需要选中3个后再点对勾 

    六、运行程序

    七、效果如下

    代码如下:

    *&---------------------------------------------------------------------*
    *& Report Z_TIANPAN_20190717_HELLO
    *&---------------------------------------------------------------------*
    *&
    *&---------------------------------------------------------------------*
    REPORT Z_TIANPAN_20190717_HELLO LINE-SIZE 76.
    
    
    * 此程序引用其他单元
    *此INCLUDE用于定义变量
    INCLUDE Z_TIANPAN_20190717_DEF.
    *此INCLUDE用于执行
    INCLUDE Z_TIANPAN_20190717_MAIN.
    *此INCLUDE用于各种函数
    INCLUDE Z_TIANPAN_20190717_INC.
    *&---------------------------------------------------------------------*
    *& 包含               Z_TIANPAN_20190717_DEF
    *&---------------------------------------------------------------------*
    
    *定义数据类型
    DATA it_spfli TYPE TABLE OF spfli.
    DATA wa_spfli TYPE spfli.
    
    *定义选择屏幕,connid表示航班连接编号
    DATA connid TYPE spfli-connid.
    
    SELECTION-SCREEN BEGIN OF BLOCK basic_select WITH FRAME TITLE text-005 .
      SELECT-OPTIONS so_car FOR connid.
    SELECTION-SCREEN END OF BLOCK basic_select.
    
    SELECTION-SCREEN BEGIN OF BLOCK other_select WITH FRAME TITLE text-006.
      PARAMETERS pa_int TYPE c AS CHECKBOX.
    SELECTION-SCREEN END OF BLOCK other_select.
    *&---------------------------------------------------------------------*
    *& 包含               Z_TIANPAN_20190717_INC
    *&---------------------------------------------------------------------*
    FORM GET_DATA USING Apa_int Aso_car TYPE TABLE CHANGING Ait_spfli TYPE TABLE.
    *如果选中了,表示国内国际都显示
       IF Apa_int = 'X'.
    *   读取数据库中的内容
         SELECT * FROM spfli INTO TABLE Ait_spfli WHERE connid IN Aso_car.
       ELSE.
         SELECT * FROM spfli INTO TABLE Ait_spfli WHERE connid IN Aso_car AND spfli~countryfr = spfli~countryto.
       ENDIF.
    ENDFORM.
    
    
    FORM SHOW_DATA USING Ait_spfli TYPE TABLE.
       FORMAT RESET.
       LOOP AT Ait_spfli INTO wa_spfli.
         IF wa_spfli-countryfr = wa_spfli-countryto.
           WRITE: / sy-vline,AT 2(10) wa_spfli-carrid ,
                    sy-vline,AT 14(10) wa_spfli-connid ,
                    sy-vline,AT 26(20) wa_spfli-countryfr,
                    sy-vline,AT 48(20) wa_spfli-countryto,
                    sy-vline,AT 70(5) ICON_CHECKED AS ICON,
                    AT 76 sy-vline.
         ELSE.
           WRITE: / sy-vline,AT 2(10) wa_spfli-carrid ,
                    sy-vline,AT 14(10) wa_spfli-connid ,
                    sy-vline,AT 26(20) wa_spfli-countryfr,
                    sy-vline,AT 48(20) wa_spfli-countryto,
                    sy-vline,AT 70(5) ICON_INCOMPLETE AS ICON,
                    AT 76 sy-vline.
         ENDIF.
       ENDLOOP.
    *输出一条线
       ULINE.
    ENDFORM.
    *&---------------------------------------------------------------------*
    *& 包含               Z_TIANPAN_20190717_MAIN
    *&---------------------------------------------------------------------*
    *在选择屏幕时候判断
    AT SELECTION-SCREEN.
      IF so_car IS INITIAL.
        MESSAGE w000(Z_TIANPAN_201907_MSG).
      ENDIF.
    
    *一个事件,程序加载时执行,相当于初始化
    LOAD-OF-PROGRAM.
    pa_int = 'X'.
    
    *冻结第一行表头
    TOP-OF-PAGE.
    *输出一条线
    ULINE.
    *输出一条横线 Format表示格式化颜色,COL_HEADING颜色可以在F1中对比
    FORMAT COLOR COL_HEADING .
    *输出数据库内容,sy-vline表示把内容当成字段来输出,左边线占用1个字符,从2开始
    WRITE: / sy-vline,AT 2(10) text-001,
             sy-vline,AT 14(10) text-002,
             sy-vline,AT 26(20) text-003,
             sy-vline,AT 48(20) text-004,
             sy-vline,AT 70(5) '国际',
             AT 76 sy-vline.
    *输出一条线
    ULINE.
    
    *程序执行选择屏幕时被A触发的事件
    START-OF-SELECTION.
    
    *调用函数
    PERFORM GET_DATA USING pa_int so_car[] CHANGING it_spfli.
    PERFORM SHOW_DATA USING it_spfli.
  • 相关阅读:
    041_form表单重置数据reset()
    040_下拉列表的显示与提交数值时,需要用到转义字符
    039_如何选取checkbox的id值?
    011_表单数据非空验证
    010_@ResposBody错误
    010_页面单击按钮失灵
    使用Maven创建 web项目
    java设计模式(八) 适配器模式
    设计模式 6大设计原则
    Java设计模式(七) 模板模式-使用钩子
  • 原文地址:https://www.cnblogs.com/tianpan2019/p/11217895.html
Copyright © 2020-2023  润新知