个人 OOALV 模版加快你的 ALV 开发

作者:SAPTAB 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
个人 OOALV 模版加快你的 ALV 开发 - 封面图
个人 OOALV 模版加快你的 ALV 开发 - 封面图

原创 Tab Zhu [ SAP TAB ](javascript:void\(0\);)

**点击蓝字关注我们**

富强 民主 文明 和谐

自由 平等 公正 法制

爱国 敬业 诚信 友善

**不念过** **去**

**START**

**不畏将来**

**_Title_ **

**OO ALV 模版**

**

**

**一**

**创建ALV前的所需操作**

** 上次摸鱼群有个老兄让我写个OO,今天在这里交代一下。 **

个人 OOALV 模版加快你的 ALV 开发 - 封面图
个人 OOALV 模版加快你的 ALV 开发 - 封面图

** **

** 1\. 取数据 **

这里我们随便取数据

SELECT * FROM sflight INTO TABLE @DATA(gt_sflight) UP TO 20 ROWS.

** 2\. 创建屏幕 **

注意,我们这里使用的是行列200/255 最大值 **

**

个人 OOALV 模版加快你的 ALV 开发 - 封面图
个人 OOALV 模版加快你的 ALV 开发 - 封面图

同时设置容器CONTAINER自动调节 最少行列为10/10,这样屏幕就会根据你的电脑屏幕大小来自动调节了

个人 OOALV 模版加快你的 ALV 开发 - 封面图
个人 OOALV 模版加快你的 ALV 开发 - 封面图

创建了OK_CODE

个人 OOALV 模版加快你的 ALV 开发 - 封面图
个人 OOALV 模版加快你的 ALV 开发 - 封面图

**3\. 添加逻辑流**

在逻辑流中打开PBO,PAI的注释,分别创建2个module,同时创建STATUS,TITLE(可选),

个人 OOALV 模版加快你的 ALV 开发 - 封面图
个人 OOALV 模版加快你的 ALV 开发 - 封面图
个人 OOALV 模版加快你的 ALV 开发 - 封面图
个人 OOALV 模版加快你的 ALV 开发 - 封面图

status 仅仅需要这3个按钮即可

个人 OOALV 模版加快你的 ALV 开发 - 封面图
个人 OOALV 模版加快你的 ALV 开发 - 封面图

**二**

**使用ALV 类直接显示**

输入以下代码,然后直接点击执行程序

REPORT z_tab_test03.DATA ok_code TYPE sy-ucomm. SELECT * FROM sflight INTO TABLE @DATA(gt_sflight) UP TO 20 ROWS.

DATA(cl_oo_alv) = NEW zcl_tab_oo_alv( ).

CALL METHOD cl_oo_alv->create_oo_alv EXPORTING* iv_repid = SY-CPROG* iv_screen = '9000'* iv_default_ex = 'X'* is_layout =* it_fieldcat =* it_exclude =* iv_split_number =* iv_split_container = iv_container_name = 'CONTAINER'* iv_variant_handle = '1'* i_f4_form =* i_toolbar_form =* i_user_command_form =* i_hotspot_form =* i_datachanged_form =* i_datachanged_finished_form =* i_before_ucomm_form =* i_double_click_form =* i_menu_button_form = CHANGING it_data = gt_sflight. CALL SCREEN 9000.*&---------------------------------------------------------------------**& Module STATUS_9000 OUTPUT*&---------------------------------------------------------------------**&*&---------------------------------------------------------------------*MODULE status_9000 OUTPUT. SET PF-STATUS 'STATUS'. SET TITLEBAR 'TITLE'.ENDMODULE.*&---------------------------------------------------------------------**& Module USER_COMMAND_9000 INPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE user_command_9000 INPUT. CASE ok_code. WHEN 'EXIT' OR 'BACK'. LEAVE TO SCREEN 0. WHEN 'CANC'. LEAVE PROGRAM. WHEN OTHERS. ENDCASE. CLEAR ok_code.ENDMODULE.

我们就可以看到一个ALV画面了

个人 OOALV 模版加快你的 ALV 开发 - 封面图
个人 OOALV 模版加快你的 ALV 开发 - 封面图

下面介绍ZCL_TAB_OO_ALV代码- 复制可用

小伙伴们可以直接SE24,创建一个类,然后点击基于源代码创建,然后COPY代码即可

个人 OOALV 模版加快你的 ALV 开发 - 封面图
个人 OOALV 模版加快你的 ALV 开发 - 封面图

对于方法ZCL_TAB_OO_ALV=>SPLIT_CONTAINER , 可以直接静态调用,将容器切割后,返回多个容器,然后将返回的容器分别调用

cl_oo_alv->create_oo_alv 方法即可实现多个ALV显示,

个人 OOALV 模版加快你的 ALV 开发 - 封面图
个人 OOALV 模版加快你的 ALV 开发 - 封面图

简单的显示多个ALV代码如下:

REPORT z_tab_test03.DATA ok_code TYPE sy-ucomm. SELECT * FROM sflight INTO TABLE @DATA(gt_sflight) UP TO 20 ROWS.CHECK sy-subrc EQ 0.SELECT * FROM scarr INTO TABLE @DATA(gt_scarr) FOR ALL ENTRIES IN @gt_sflight WHERE carrid = @gt_sflight-carrid.
CALL METHOD zcl_tab_oo_alv=>split_container EXPORTING iv_container_name = 'CONTAINER' i_row = 1 i_col = 2 IMPORTING et_container_t = DATA(lt_container_t).

CHECK lt_container_t IS NOT INITIAL.

DATA(cl_oo_alv1) = NEW zcl_tab_oo_alv( ).DATA(cl_oo_alv2) = NEW zcl_tab_oo_alv( ).

READ TABLE lt_container_t INTO DATA(ls_container) INDEX 1.IF sy-subrc EQ 0. CALL METHOD cl_oo_alv1->create_oo_alv EXPORTING iv_split_number = 1 iv_split_container = ls_container-container CHANGING it_data = gt_sflight.ENDIF. READ TABLE lt_container_t INTO ls_container INDEX 2.IF sy-subrc EQ 0. CALL METHOD cl_oo_alv1->create_oo_alv EXPORTING iv_split_number = 2 iv_split_container = ls_container-container CHANGING it_data = gt_scarr.ENDIF.
CALL SCREEN 9000.

**三**

**ZCL_TAB_OO_ALV代码** **如下**

CLASS zcl_tab_oo_alv DEFINITION PUBLIC CREATE PUBLIC .*&=====================================================================**& Create date: 2021.08.26*& Created by: Tab-Zhu (微信公众号:Tab_JXZHU)*&---------------------------------------------------------------------* PUBLIC SECTION. TYPES: BEGIN OF ty_splits, row TYPE i, col TYPE i, container TYPE REF TO cl_gui_container, END OF ty_splits . TYPES: ty_t_splits TYPE TABLE OF ty_splits .

CONSTANTS gc_a TYPE c VALUE 'A' ##NO_TEXT. CONSTANTS gc_d TYPE c VALUE 'D' ##NO_TEXT. DATA cr_grid TYPE REF TO cl_gui_alv_grid . DATA cr_container TYPE REF TO cl_gui_custom_container . DATA split_n TYPE i . DATA m_repid TYPE progname . DATA m_f4_form TYPE strin

...

SAPTAB

关于作者:SAPTAB

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「个人OOALV模版加快你的ALV开发.md」整理生成,仅用于内部技术分享与学习交流。