REUSE_ALV_GRID_DISPLAY_LVC

本文详细介绍了如何在ABAP中有效利用REUSE_ALV_GRID_DISPLAY_LVC函数来创建和展示ALV表格。通过实例演示了设置列宽、自定义排序和事件处理等功能,帮助开发者提升ALV表格的用户体验。

在这里插入图片描述

*&===========  ==================  ==========  ========================*
*&    REUSE_ALV_GRID_DISPLAY_LVC
*&---------------------------------------------------------------------*
**************************布局********************************BEGIN1
DATA: lt_spfli TYPE TABLE OF spfli.
DATA: lt_fcat TYPE lvc_t_fcat.
DATA: ls_layout TYPE lvc_s_layo.

START-OF-SELECTION.
  PERFORM data_select.
  PERFORM build_layout.
  PERFORM build_fieldcat.
  PERFORM display_grid_alv.
*&———————————————————————*
*& Form DATA_SELECT
*&———————————————————————*
FORM data_select.
  SELECT * FROM spfli INTO TABLE lt_spfli.
ENDFORM. "” DATA_SELECT
*&———————————————————————*
*& Form BUILD_LAYOUT
*&———————————————————————*
FORM build_layout.
  ls_layout-zebra = abap_true.
  ls_layout-cwidth_opt = abap_true.
  ls_layout-smalltitle = abap_true. "把标题变小
ENDFORM. "” BUILD_LAYOUT
*&———————————————————————*
*& Form BUILD_FIELDCAT
*&———————————————————————*
FORM build_fieldcat.
  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
*     I_BUFFER_ACTIVE        =
      i_structure_name       = 'SPFLI'
*     I_CLIENT_NEVER_DISPLAY = ‘X’
*     I_BYPASSING_BUFFER     =
*     I_INTERNAL_TABNAME     =
    CHANGING
      ct_fieldcat            = lt_fcat
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.
  
  LOOP AT lt_fcat ASSIGNING FIELD-SYMBOL(<fs_fcat>).
    CASE <fs_fcat>-fieldname.
      WHEN 'COUNTRYFR' OR 'COUNTRYTO'.
        <fs_fcat>-tech = abap_true.
      WHEN 'CITYFROM' OR 'CITYTO'.
        <fs_fcat>-no_out = abap_true.
      WHEN OTHERS.
    ENDCASE.
  ENDLOOP.
ENDFORM. "” BUILD_FIELDCAT
*&———————————————————————*
*& Form DISPLAY_GRID_ALV
*&———————————————————————*
* text
*———————————————————————-*
FORM display_grid_alv.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
*     I_INTERFACE_CHECK  = ‘ ‘
*     I_BYPASSING_BUFFER =
*     I_BUFFER_ACTIVE    =
      i_callback_program = sy-repid
*     I_CALLBACK_PF_STATUS_SET = ‘ ‘
*     I_CALLBACK_USER_COMMAND = ‘ ‘
*     I_CALLBACK_TOP_OF_PAGE = ‘ ‘
*     I_CALLBACK_HTML_TOP_OF_PAGE = ‘ ‘
*     I_CALLBACK_HTML_END_OF_LIST = ‘ ‘
*     i_structure_name   = ‘ ‘
*     I_BACKGROUND_ID    = ‘ ‘
      i_grid_title       = 'Flight Information'
*     I_GRID_SETTINGS    =
      is_layout_lvc      = ls_layout
      it_fieldcat_lvc    = lt_fcat
*     IT_EXCLUDING       =
*     IT_SPECIAL_GROUPS_LVC =
*     IT_SORT_LVC        =
*     IT_FILTER_LVC      =
*     IT_HYPERLINK       =
*     IS_SEL_HIDE        =
*     I_DEFAULT          = ‘X’
*     I_SAVE             = ‘ ‘
*     IS_VARIANT         =
*     IT_EVENTS          =
*     IT_EVENT_EXIT      =
*     IS_PRINT_LVC       =
*     IS_REPREP_ID_LVC   =
*     I_SCREEN_START_COLUMN = 0
*     I_SCREEN_START_LINE = 0
*     I_SCREEN_END_COLUMN = 0
*     I_SCREEN_END_LINE  = 0
*     I_HTML_HEIGHT_TOP  =
*     I_HTML_HEIGHT_END  =
*     IT_ALV_GRAPHICS    =
*     IT_EXCEPT_QINFO_LVC =
*     IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
*     E_EXIT_CAUSED_BY_CALLER =
*     ES_EXIT_CAUSED_BY_USER =
    TABLES
      t_outtab           = lt_spfli
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
ENDFORM. "” DISPLAY_GRID_ALV
**************************布局********************************END

在这里插入图片描述

TYPE-POOLS : slis.
DATA : it_spfli   TYPE TABLE OF spfli,
       it_sflight TYPE TABLE OF sflight,
       it_sbook   TYPE TABLE OF sbook.
DATA : it_fieldcat TYPE slis_t_fieldcat_alv,
       wa_layout   TYPE slis_layout_alv,
       it_event    TYPE slis_t_event.

START-OF-SELECTION.
  PERFORM fetch_data.

END-OF-SELECTION.

  PERFORM blocked_alv_initialization.
  PERFORM field_cat USING 'IT_SPFLI' 'SPFLI'.
  PERFORM blocked_alv_append USING 'IT_SPFLI'  it_spfli.
  REFRESH it_fieldcat[].
  PERFORM field_cat USING 'IT_SFLIGHT' 'SFLIGHT'.
  PERFORM blocked_alv_append USING 'IT_SFLIGHT' it_sflight.
  REFRESH it_fieldcat[].
  PERFORM field_cat USING 'IT_SBOOK' 'SBOOK'.
  PERFORM blocked_alv_append USING 'IT_SBOOK' it_sbook.
  REFRESH it_fieldcat[].
  PERFORM blocked_alv_display.
*————————————————————-

FORM fetch_data .
  SELECT * FROM spfli INTO TABLE it_spfli UP TO 10 ROWS.

  SELECT * FROM sflight INTO TABLE it_sflight UP TO 10 ROWS.

  SELECT * FROM sbook INTO TABLE it_sbook UP TO 10 ROWS.
ENDFORM.                    "” fetch_data

*———————————————————-
FORM blocked_alv_initialization .

  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
    EXPORTING
      i_callback_program = sy-cprog.

ENDFORM.                   " ” blocked_alv_initialization

*————————————————————
FORM field_cat  USING  itab TYPE c
                             tab_struc TYPE c.
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name     = sy-cprog
      i_internal_tabname = itab
      i_structure_name   = tab_struc
    CHANGING
      ct_fieldcat        = it_fieldcat.

ENDFORM.                   "” field_cat

*————————————————————

FORM blocked_alv_append USING  itab1 TYPE c

                      itab2 TYPE STANDARD TABLE.

  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
    EXPORTING
      is_layout   = wa_layout
      it_fieldcat = it_fieldcat
      i_tabname   = itab1
      it_events   = it_event
    TABLES
      t_outtab    = itab2.

ENDFORM.                  "  ” blocked_alv_append

*————————————————————

FORM blocked_alv_display .

  CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.

ENDFORM."” blocked_alv_display
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值