【博主SAP/ABAP交流群53144545】
ALV是ABAP报表开发里最常用的屏幕表格输出技术之一,目前有多种方法实现。
比如REUSE_ALV_GRID_DISPLAY_LVC和OO的ALV,这里再介绍一种SALV,SALV也是面向对象的,下面一个REPORT的例子里实现一个最基本的SALV。
*定义类型和内表
TYPES:
BEGIN OF ty_tab,
vbeln TYPE vbeln,
posnr TYPE posnr,
werks TYPE werks_d,
matnr TYPE matnr,
END OF ty_tab.
DATA it_tab TYPE TABLE OF ty_tab.
*选择屏幕
SELECT-OPTIONS: s_vbeln FOR vbap-vbeln.
*类定义
CLASS cl_zymoorsalv DEFINITION.
PUBLIC SECTION.
METHODS:
get_data,
generate_salv.
ENDCLASS. "CL_ZYMOORSALV DEFINITION
* 类实现
CLASS cl_zymoorsalv IMPLEMENTATION.
METHOD get_data.
SELECT vbeln posnr werks matnr
FROM vbap
INTO CORRESPONDING FIELDS OF TABLE it_tab
WHERE vbeln IN s_vbeln.
ENDMETHOD."GET_DATA
METHOD generate_salv.
DATA: salv TYPE REF TO cl_salv_table.
cl_salv_table=>factory(
IMPORTING
r_salv_table = salv
CHANGING
t_table = it_tab ).
salv->display( ).
ENDMETHOD. "GENERATE_SALV
ENDCLASS. "CL_ZYMOORSALV IMPLEMENTATION
START-OF-SELECTION.
DATA: obj_zymoorsalv TYPE REF TO cl_zymoorsalv.
CREATE OBJECT obj_zymoorsalv.
obj_zymoorsalv->get_data( ).
obj_zymoorsalv->generate_salv( ).
输出结果: