zoukankan      html  css  js  c++  java
  • 简单的ALV显示信息(二)

      之前写过一篇简单的ALV显示信息,为了增强对ALV几个查关函数的理解,故又写了一个很简单的小程式就叫他为之简单的ALV显示信息(二)吧。就显示出物料编号及物料名称,够简单吧,我喜欢简单,就像这样过着简单的生活。

      REPORT  ZZWEI_ALV_MYDEMO.
      TYPE-POOLS:SLIS. "引用类型池
      TABLES:MARA,MAKT.
      DATA:i_fieldcat TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
           i_layout TYPE SLIS_LAYOUT_ALV,
           i_repid TYPE SY-REPID.

      SELECT-OPTIONS:s_matnr FOR MARA-MATNR OBLIGATORY. "选择屏幕,选择物料编号进行查询,必须填写
      DATA imatnr LIKE MARA-MATNR.

      DATA:BEGIN OF imara OCCURS 0, "存储物料信息的内表
             MATNR LIKE MARA-MATNR,
             MAKTX LIKE MAKT-MAKTX,
           END OF imara.

      *&--------------------------------------------------------------
      *&  Start of screen
      *&--------------------------------------------------------------
      START-OF-SELECTION.
        PERFORM get_Data.
        PERFORM fieldcat_Build.
        PERFORM layout_Build.
        PERFORM alv_Display.


      *&--------------------------------------------------------------
      *&  Get Material Data
      *&--------------------------------------------------------------
      FORM get_Data.
        SELECT FROM MARA WHERE MATNR IN s_matnr.
        imatnr = MARA-MATNR.
        SELECT SINGLE FROM MAKT WHERE MATNR EQ imatnr.
          IF SY-SUBRC = 0.
           imara-MATNR = MARA-MATNR.
           imara-MAKTX = MAKT-MAKTX.
           APPEND imara.
          ENDIF.
        ENDSELECT.
      ENDFORM.

      *&--------------------------------------------------------------
      *&  FieldCat Build
      *&--------------------------------------------------------------
      FORM fieldCat_Build.
        i_repid = SY-REPID.
        CLEAR i_fieldcat.

        CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
         EXPORTING
           I_PROGRAM_NAME               = i_repid
           "I_STRUCTURE_NAME             = 'IMARA'
           I_INTERNAL_TABNAME = 'IMARA'  "按内表结构返回FIELDCAT

            I_INCLNAME = i_repid   "传递程序名

          CHANGING
            CT_FIELDCAT                  = i_fieldcat[]
         EXCEPTIONS
           INCONSISTENT_INTERFACE       = 1
           PROGRAM_ERROR                = 2
           OTHERS                       3
                .
        IF SY-SUBRC <> 0.
         MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      

        *  LOOP AT i_fieldcat.
        *     IF i_fieldcat-FIELDNAME = 'MATNR'.
       *       i_fieldcat-NO_OUT = 'X'. "如果从内表中生成FIELDCAT,而ALV显示出来不需要某个字段,可以将其隐藏
       *       MODIFY i_fieldcat.
       *     ENDIF.
       *  ENDLOOP.
       


      *  i_fieldcat-COL_POS = 1.
      *  i_fieldcat-SELTEXT_M = '物料編號'.
      *  i_fieldcat-FIELDNAME = 'MATNR'.
      *  APPEND i_fieldcat.
      *
      *  i_fieldcat-COL_POS = 2.
      *  i_fieldcat-SELTEXT_M = '物料名稱'.
      *  i_fieldcat-FIELDNAME = 'MAKTX'.
      *  APPEND i_fieldcat.

      ENDFORM.

      *&--------------------------------------------------------------
      *&  Layout Build
      *&--------------------------------------------------------------
      FORM layout_Build.
        i_layout-ZEBRA = 'X'.
        "i_layout-DETAIL_TITLEBAR = '詳細內容'.
      ENDFORM.

      *&--------------------------------------------------------------
      *&  Display ALV
      *&--------------------------------------------------------------
      FORM alv_Display.
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
         EXPORTING
            I_CALLBACK_PROGRAM                = i_repid
      *     I_STRUCTURE_NAME                  =
      *     I_BACKGROUND_ID                   = ' '
      *     I_GRID_TITLE                      =
      *     I_GRID_SETTINGS                   =
            IS_LAYOUT                         = i_layout
            IT_FIELDCAT                       = i_fieldcat[]
      *     IT_EXCLUDING                      =
      *     IT_SPECIAL_GROUPS                 =
      *     IT_SORT                           =
      *     IT_FILTER                         =
      *     IS_SEL_HIDE                       =
      *     I_DEFAULT                         = 'X'
      *     I_SAVE                            = ' '
      *     IS_VARIANT                        =
      *     IT_EVENTS                         =
      *     IT_EVENT_EXIT                     =
      *     IS_PRINT                          =
      *     IS_REPREP_ID                      =
      *     I_SCREEN_START_COLUMN             = 0
      *     I_SCREEN_START_LINE               = 0
      *     I_SCREEN_END_COLUMN               = 0
      *     I_SCREEN_END_LINE                 = 0
      *     I_HTML_HEIGHT_TOP                 = 0
      *     I_HTML_HEIGHT_END                 = 0
      *     IT_ALV_GRAPHICS                   =
      *     IT_HYPERLINK                      =
      *     IT_ADD_FIELDCAT                   =
      *     IT_EXCEPT_QINFO                   =
      *     IR_SALV_FULLSCREEN_ADAPTER        =
      *   IMPORTING
      *     E_EXIT_CAUSED_BY_CALLER           =
      *     ES_EXIT_CAUSED_BY_USER            =
          TABLES
            T_OUTTAB                          = imara
         EXCEPTIONS
           PROGRAM_ERROR                     = 1
           OTHERS                            2
                .
        IF SY-SUBRC <> 0.
         MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ENDFORM.

      就这样写完后按CTRL+F2进行语法检查没有问题(心里的喜悦不言面喻),那么,按F8执行程序吧。秀一下界面。
      

       
      程式执行查询后ALV显示出数据,如上图。
      革命尚未成功,同志(我)还需努力呀!今天喝了点家乡绿茶,感觉挺好就是肚子有点饿了。保存闪人。

  • 相关阅读:
    HDU 2047 阿牛的EOF牛肉串
    HDU 2015 偶数求和
    HDU 2029 算菜价
    HDU 2028 Lowest Common Multiple Plus
    动态函数库设计
    静态函数库设计
    Linux编程规范
    Linux应用程序地址布局
    Core Dump 程序故障分析
    W-D-S-UART编程
  • 原文地址:https://www.cnblogs.com/foxting/p/2610773.html
Copyright © 2011-2022 走看看