ABAP ALVOO详细教程(三)

ABAP ALVOO详细教程(三)


ALV面向对象编程第一步:创建屏幕
在这里插入图片描述
屏幕号码最好是8000到9000
然会点击逻辑流
在这里插入图片描述
在这里插入图片描述
双击名称
在这里插入图片描述
在这里插入图片描述
选择主程序
代码如下:


REPORT ZPM04.
"alvoo和调用函数字段目录和布局控制参考结构有区别
"OO字段目录LVC_S_FCAT布局控制LVC_S_LAYO打印LVC_S_PRNT排序LVC_S_SORT过滤LVC_S_FILT
"第一步创建SCREEN,在屏幕上创建个定制控制
"点击显示对象列表
"第二步定义变量
DATA :
    wcl_container TYPE REF TO cl_gui_custom_container,"定义ALV容器SE24查看类 参考类TYPE REF TO
    wcl_alv TYPE REF TO cl_gui_alv_grid,"alv网格
    gt_fieldcat TYPE lvc_t_fcat,"存放字段目录
    gs_layout TYPE lvc_s_layo."布局结构

DATA:
      gt_list TYPE TABLE OF sflight WITH HEADER LINE.
CALL SCREEN 8000.
*      wt_sflight TYPE sflight.
*&---------------------------------------------------------------------*
*&      Module  STATUS_8000  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_8000 OUTPUT.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  DISPLAY_ALV  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*

MODULE display_alv OUTPUT.
PERFORM display_alv.

ENDMODULE.

FORM display_alv.
  IF wcl_alv IS INITIAL.
   CREATE OBJECT :wcl_container
   EXPORTING
     CONTAINER_NAME = 'CON'.
     create OBJECT : wcl_alv
     EXPORTING
       i_parent = wcl_container.
     "获取字段目录
     PERFORM prepare_filed_catalog CHANGING gt_fieldcat.
     PERFORM prepare_layout CHANGING gs_layout ."获取布局
     "获取数据
     PERFORM get_data TABLES gt_list.

CALL METHOD wcl_alv->set_table_for_first_display

  EXPORTING
*    i_buffer_active               =
*    i_bypassing_buffer            =
*    i_consistency_check           =
*    i_structure_name              =
*    is_variant                    =
*    i_save                        =
*    i_default                     = 'X'
    is_layout                     = gs_layout
*    is_print                      =
*    it_special_groups             =
*    it_toolbar_excluding          =
*    it_hyperlink                  =
*    it_alv_graphics               =
*    it_except_qinfo               =
*    ir_salv_adapter               =
  CHANGING
    it_outtab                     = gt_list[]
    it_fieldcatalog               = gt_fieldcat
*    it_sort                       =
*    it_filter                     =
  EXCEPTIONS
    invalid_parameter_combination = 1
    program_error                 = 2
    too_many_lines                = 3
    others                        = 4
        .
  ELSE.
   CALL METHOD wcl_alv->refresh_table_display
*     EXPORTING
*       is_stable      =
*       i_soft_refresh =
     EXCEPTIONS
       finished       = 1
       others         = 2
           .
   IF sy-subrc <> 0.
*    Implement suitable error handling here
   ENDIF.

IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

  ENDIF.

  ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  PREPARE_FILED_CATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_GT_FIELDCAT  text
*----------------------------------------------------------------------*
FORM prepare_filed_catalog  CHANGING p_gt_fieldcat.
DATA:ls_fcat TYPE lvc_t_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
 EXPORTING
*   I_BUFFER_ACTIVE              =
   I_STRUCTURE_NAME             = 'SFLIGHT'
*   I_CLIENT_NEVER_DISPLAY       = 'X'
*   I_BYPASSING_BUFFER           =
*   I_INTERNAL_TABNAME           =
  CHANGING
    ct_fieldcat                  = p_gt_fieldcat
 EXCEPTIONS
   INCONSISTENT_INTERFACE       = 1
   PROGRAM_ERROR                = 2
   OTHERS                       = 3
          .
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.


ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  PREPARE_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_GS_LAYOUT  text
*----------------------------------------------------------------------*
FORM prepare_layout  CHANGING p_gs_layout TYPE lvc_s_layo.

p_gs_layout-zebra = 'X'.
p_gs_layout-GRID_TITLE = '航班信息'.
p_gs_layout-smalltitle = 'X'.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GT_LIST  text
*----------------------------------------------------------------------*
FORM get_data  TABLES   rt_outtab LIKE gt_list[].  "插入正确名称 <...>.

SELECT * FROM sflight into CORRESPONDING FIELDS OF TABLE rt_outtab UP TO 30 ROWS.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_8000  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_8000 INPUT.

ENDMODULE.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ABAP OOALV是一种在ABAP编程语言中面向对象的方式实现的ALVABAP List Viewer)报表。它提供了更灵活和可扩展的方式来创建和展示报表数据。 以下是ABAP OOALV的一些关键步骤和示例代码[^1][^2]: 1. 定义变量和选择屏幕定义:在ABAP程序中定义所需的变量,并选择适当的屏幕定义。 2. 创建类:创建一个类来处理ALV报表的逻辑和功能。这个类应该继承自`CL_GUI_ALV_GRID`类。 3. 调用函数:在类中定义一个方法来调用ALV函数模块,例如`REUSE_ALV_GRID_DISPLAY`。 4. 获取数据并展示:在类中定义一个方法来获取报表数据,并将数据传递给ALV函数模块。 5. 表头字段设置:在类中定义一个方法来设置ALV报表的表头字段。 6. ALV输出格式:在类中定义一个方法来设置ALV报表的输出格式,例如列宽、对齐方式等。 7. 展示ALV:在类中定义一个方法来展示ALV报表。 8. 其他:根据需要,可以在类中定义其他方法来处理特定的功能,例如处理单击事件、排序等。 下面是一个简单的示例代码,演示了如何使用ABAP OOALV来创建和展示一个简单的报表: ```abap CLASS lcl_alv_report DEFINITION. PUBLIC SECTION. METHODS: constructor, display_alv. PRIVATE SECTION. DATA: lo_alv_grid TYPE REF TO cl_gui_alv_grid. METHODS: get_data, set_field_catalog, set_layout. ENDCLASS. CLASS lcl_alv_report IMPLEMENTATION. METHOD constructor. CREATE OBJECT lo_alv_grid EXPORTING i_parent = cl_gui_container=>screen0. ENDMETHOD. METHOD display_alv. CALL METHOD lo_alv_grid->set_table_for_first_display EXPORTING i_structure_name = 'SPFLI' CHANGING it_outtab = lt_spfli. ENDMETHOD. METHOD get_data. SELECT * FROM spfli INTO TABLE lt_spfli. ENDMETHOD. METHOD set_field_catalog. DATA: lt_fieldcat TYPE lvc_t_fcat. FIELD-SYMBOLS: <fs_fieldcat> TYPE lvc_s_fcat. CALL METHOD lo_alv_grid->get_frontend_fieldcatalog RECEIVING rt_fieldcatalog = lt_fieldcat. LOOP AT lt_fieldcat ASSIGNING <fs_fieldcat>. <fs_fieldcat>-outputlen = 20. ENDLOOP. CALL METHOD lo_alv_grid->set_frontend_fieldcatalog EXPORTING it_fieldcatalog = lt_fieldcat. ENDMETHOD. METHOD set_layout. DATA: lo_layout TYPE REF TO cl_gui_alv_layout. CREATE OBJECT lo_layout EXPORTING i_grid_title = 'ALV Report'. CALL METHOD lo_alv_grid->set_layout EXPORTING is_layout = lo_layout. ENDMETHOD. ENDCLASS. DATA: lo_report TYPE REF TO lcl_alv_report. START-OF-SELECTION. CREATE OBJECT lo_report. lo_report->get_data( ). lo_report->set_field_catalog( ). lo_report->set_layout( ). lo_report->display_alv( ). ``` 这是一个简单的ABAP OOALV报表的示例,它获取了`SPFLI`表中的数据,并展示在ALV报表中。你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值