目录

    2.1、实现步骤

    2.2、代码示例

      3.1、Layout相关属性

      3.2、Fieldcat相关属性 

      3.3、ALV输出函数

一、ALV简介

The ALV Grid Control (ALV = SAP List Viewer)是一个显示列表的灵活的工具,它提供了基本功能的列表操作,也可以通过自定义来进行增强,因此可以允许你可以在大型的应用程序中使用。在SAP的开发项目中,ALV GRID也可以作为修改和创建数据的一种工具。它包括3大部分,工具栏,标题,用于显示数据的网格控制器.如果有必要,用户可以隐藏标题和工具栏。

 

二、程序实现

2.1、实现步骤

①定义ALV所需要用到的类型池:TYPE-POOLS:SLIS.

②定义ALV所要显示的数据对应的内表数据类型及内表数据对象

③定义一些显示ALV时所需要使用的变量

④定义选择屏幕

⑤声明各个选择屏幕事件块

2.2、代码示例

 

REPORT ZMMRTEST.

*****************************TABLES
TABLES:marc.

*****************************Data Definitions
*定义ALV所要显示的数据对应的内表数据类型及内表数据对象
TYPES: BEGIN OF  ty_data,
  matnr LIKE mara-matnr,       "物料號碼
  maktx LIKE makt-maktx,        "物料说明
  groes LIKE mara-groes,       "规格
END OF ty_data.

DATA: gt_data TYPE TABLE OF ty_data,
      gt_makt LIKE TABLE OF makt,
      wa_data LIKE LINE OF gt_data,
      wa_makt LIKE LINE OF gt_makt.

*定义一些显示ALV时所需要使用的变量

*定义ALV所需要用到的类型池
TYPE-POOLS slis.
"定义和LAYOUT和FIELDCAT
DATA: gs_layout TYPE slis_layout_alv,
          gt_fieldcat TYPE slis_t_fieldcat_alv,
          wa_fieldcat TYPE  slis_fieldcat_alv.


*****************************Selection Screen
*定义选择屏幕
PARAMETERS: p_werks LIKE marc-werks DEFAULT '2000' OBLIGATORY.
SELECT-OPTIONS: s_matnr FOR marc-matnr.

*****************************Main Process
*声明各个选择屏幕事件块
START-OF-SELECTION.
     PERFORM get_data.
     PERFORM display_data.
END-OF-SELECTION.

*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
FORM get_data .

  SELECT marc~matnr mara~groes
            INTO CORRESPONDING FIELDS OF TABLE gt_data
            FROM marc
            INNER JOIN mara ON marc~matnr EQ mara~matnr
            WHERE marc~matnr IN s_matnr
            AND marc~werks EQ p_werks.

  SELECT * INTO TABLE gt_makt
            FROM makt
            WHERE matnr IN s_matnr
            AND spras = sy-langu.

  SORT: gt_data BY matnr,
    gt_makt BY matnr.

  LOOP AT gt_data INTO wa_data.

    READ TABLE gt_makt INTO wa_makt WITH KEY matnr = wa_data-matnr
                BINARY SEARCH.
    IF sy-subrc = 0.
      wa_data-maktx = wa_makt-maktx.
    ENDIF.

    MODIFY gt_data FROM wa_data.
  ENDLOOP.
ENDFORM.                    " GET_DATA

*&---------------------------------------------------------------------*
*&      Form  DISPLAY_DATA
*&---------------------------------------------------------------------*
FORM display_data.

  "栏位最适宽度
  gs_layout-colwidth_optimize = 'X'.

  PERFORM set_fieldcat.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program   = sy-repid
      is_layout                  = gs_layout
      it_fieldcat                 = gt_fieldcat[]
*      i_callback_pf_status_set     = 'alv_pf_status'   " 触发事件调用子程序
*      i_callback_user_command  = 'alv_user_command'   " 鼠标事件操作子程序
      i_save                           = 'A'
    TABLES
      t_outtab                   =  gt_data
    EXCEPTIONS
      program_error        = 1
      OTHERS                  = 2.

ENDFORM.                    " DISPLAY_DATA

*&---------------------------------------------------------------------*
*&      Form  SET_FIELDCAT
*&---------------------------------------------------------------------*
FORM set_fieldcat.

  DEFINE fieldcat.
    wa_fieldcat-fieldname = &1.  "对应内表字段名
    wa_fieldcat-seltext_l = &2.       "输出列文本
    APPEND wa_fieldcat TO gt_fieldcat.CLEAR wa_fieldcat.
  END-OF-DEFINITION.

  fieldcat 'MATNR' '物料'.
  fieldcat 'MAKTX' '物料说明'.
  fieldcat 'GROES' '规格'.

ENDFORM.                   " SET_FIELDCAT
View Code

相关文章:

  • 2022-12-23
  • 2021-04-08
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-29
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-19
相关资源
相似解决方案