zoukankan      html  css  js  c++  java
  • 五十一、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.
  • 相关阅读:
    SGU 495 Kids and Prizes 概率DP 或 数学推理
    poj 2799 IP Networks 模拟 位运算
    uva 202 Repeating Decimals 模拟
    poj 3158 Kickdown 字符串匹配?
    uva 1595 Symmetry 暴力
    uva 201 Squares 暴力
    uva 1594 Ducci Sequence 哈希
    uva 1368 DNA Consensus String 字符串
    数字、字符串、列表的常用操作
    if条件判断 流程控制
  • 原文地址:https://www.cnblogs.com/tianpan2019/p/11217895.html
Copyright © 2011-2022 走看看