zoukankan      html  css  js  c++  java
  • ABAP分享六 alv显示的几种方式的简单示例

    方法1,也是大家常见的方法通过函数   REUSE_ALV_GRID_DISPLAY

    TYPESBEGIN OF  ty_spfli,   "定义结构
        carrid like spfli-carrid,
        connid like spfli-connid,
      END OF ty_spfli.

    DATA: it_spfli TYPE STANDARD TABLE OF ty_spfli.  "定义内表

    DATA:
        wa_fieldcat TYPE slis_fieldcat_alv ,    " 相当于工作区
        i_fieldcat  TYPE slis_t_fieldcat_alv ,  " 存放输出栏位名称的列表
        i_layout    TYPE slis_layout_alv .      " 负责整个ALV的全局属性

    SELECT carrid connid INTO TABLE it_spfli   "获取内表数据
      FROM spfli
      UP TO 10 ROWS.

    PERFORM getdata.
    PERFORM islayout.

                  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'   "调用函数
                    EXPORTING
                      I_CALLBACK_PROGRAM                = sy-repid
                      IS_LAYOUT                         = i_layout
                      IT_FIELDCAT                       = i_fieldcat[]
                      I_SAVE                            'X'
                    TABLES
                      t_outtab                          = it_spfli
                    EXCEPTIONS
                      PROGRAM_ERROR                     1
                      OTHERS                            2
                            .
                  IF sy-subrc <> 0.
    * Implement suitable error handling here
                  ENDIF.
    FORM getdata.

      wa_fieldcat-fieldname   'CARRID'.        " 需要输出的内表的字段名
      wa_fieldcat-seltext_l   '航班号'" 字段的描述-长字段标签
      wa_fieldcat-seltext_m   '航班号'" 字段描述-中字段标签
      wa_fieldcat-seltext_s   '航班号'" 字段描述-短字段标签
      wa_fieldcat-fix_column  'X' .           " 是否是固定列
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR  wa_fieldcat.

      wa_fieldcat-fieldname   'CONNID'.        " 需要输出的内表的字段名
      wa_fieldcat-seltext_l   '航班连接号'" 字段的描述-长字段标签
      wa_fieldcat-seltext_m   '航班连接号'" 字段描述-中字段标签
      wa_fieldcat-seltext_s   '航班连接号'" 字段描述-短字段标签
      wa_fieldcat-fix_column  'X' .           " 是否是固定列
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR  wa_fieldcat.
    ENDFORM.

    FORM islayout.
      i_layout-zebra                  'X' .          " 使ALV界面呈现颜色交替
      i_layout-colwidth_optimize      'X' .          " 自动优化列宽
      i_layout-detail_initial_lines   'X' .          " 是否出现细节屏幕
    ENDFORM.

    方法2,也是大家常见的方法通过函数   REUSE_ALV_GRID_DISPLAY_LVC  在使用上会比第一种方法功能实现上多些

    TYPESBEGIN OF  ty_spfli,   "定义结构
        carrid like spfli-carrid,
        connid like spfli-connid,
      END OF ty_spfli.

    DATA: it_spfli TYPE STANDARD TABLE OF ty_spfli.  "定义内表


    DATA:

         wa_fieldcat TYPE lvc_s_fcat ,  " 相当于工作区

         i_fieldcat  TYPE lvc_t_fcat ,  " 存放输出栏位名称的列表

         i_layout    TYPE lvc_s_layo .  " 负责整个ALV的全局属性

    SELECT carrid connid INTO TABLE it_spfli   "获取内表数据
      FROM spfli
      UP TO 10 ROWS.

    PERFORM getdata.
    PERFORM islayout.

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
      EXPORTING
        I_CALLBACK_PROGRAM                = sy-repid
        IS_LAYOUT_LVC                     = i_layout
        IT_FIELDCAT_LVC                   = i_fieldcat[]
        I_DEFAULT                         'X'
        I_SAVE                            'A'
      TABLES
        t_outtab                          = it_spfli
      EXCEPTIONS
        PROGRAM_ERROR                     1
        OTHERS                            2
              .
    IF sy-subrc <> 0.
    * Implement suitable error handling here
    ENDIF.

    FORM getdata.
      wa_fieldcat-fieldname   'CARRID'.        " 需要输出的内表的字段名
      wa_fieldcat-scrtext_l   '航班号'" 字段的描述-长字段标签
      wa_fieldcat-scrtext_m   ='航班号'.
      wa_fieldcat-scrtext_s   ='航班号'.
      wa_fieldcat-fix_column  'X' .           " 是否是固定列
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR  wa_fieldcat.

      wa_fieldcat-fieldname   'CONNID'.        " 需要输出的内表的字段名
      wa_fieldcat-scrtext_l   '航班连接号'" 字段的描述-长字段标签
      wa_fieldcat-scrtext_m   '航班连接号'.
      wa_fieldcat-scrtext_s   '航班连接号'.
      wa_fieldcat-fix_column  'X' .           " 是否是固定列
      APPEND wa_fieldcat TO i_fieldcat.
      CLEAR  wa_fieldcat.
    ENDFORM.

    FORM islayout.

      i_layout-zebra                  'X' .          " 使ALV界面呈现颜色交替
    *  i_layout-colwidth_optimize      = 'X' .          " 自动优化列宽
    *  i_layout-detail_initial_lines   = 'X' .          " 是否出现细节屏幕

    ENDFORM.

    方法3,SALV方法实现ALV展示,是通过静态类的方法实现的。

    CLASS lcl_report DEFINITION.

    PUBLIC SECTION.
    * 定义SALV输出内表
      TYPESBEGIN OF st_spfli,
           carrid TYPE spfli-carrid,
           connid TYPE spfli-connid,
           cityfrom TYPE spfli-cityfrom,
           cityto   TYPE spfli-cityto,
           distance TYPE spfli-distance,
        END OF st_spfli.

      DATA: it_spfli TYPE STANDARD TABLE OF st_spfli.

      DATA: o_alv TYPE REF TO cl_salv_table.

      METHODS:
             getdata,      "获取数据
             genoutput.    "生成输出内容
    ENDCLASS.

    CLASS lcl_report IMPLEMENTATION.

      METHOD getdata.

         SELECT carrid connid cityfrom cityto distance
           INTO TABLE it_spfli
           FROM spfli
           UP TO 10 rows.

      ENDMETHOD.

      METHOD genoutput.
        DATA: lx_msg TYPE REF TO cx_salv_msg.
        TRY .
           cl_salv_table=>factory(                          "此乃固定格式
             IMPORTING
               r_salv_table = o_alv
             CHANGING
               t_table     = it_spfli
           ).
        CATCH cx_salv_msg INTO lx_msg.

        ENDTRY.
        o_alv->display).                                  "将数据通过ALV方式显示到屏幕
      ENDMETHOD.
    ENDCLASS.

    START-OF-SELECTION.
      DATA: lo_report TYPE REF TO lcl_report.

      create OBJECT lo_report.

      lo_report->getdata).                               "获取数据
      lo_report->genoutput).                             "生成SALV 

    方法4,面向对象的方法实现ALV展示,是通过静态类的方法实现的(OOALV)。

     方法5,dialog屏幕逻辑流显示  (方法4和方法5我会整理完后另外编辑出来)

  • 相关阅读:
    React获取文本框的值
    Ant-design正则判断_未输入用户名和密码点击按钮提示输入
    Redux的简单使用
    React后台管理系统 路由守卫
    移动端如何定义字体font-family
    meta基础知识
    闭包
    前端优化
    jacaScript数组
    分享一款强大的图片查看器插件,手机PC 通吃,功能超级齐全!
  • 原文地址:https://www.cnblogs.com/abapweb/p/11699767.html
Copyright © 2011-2022 走看看