当前位置 : 主页 > 网页制作 > css >

REUSE_ALV_GRID_DISPLAY_LVC-行选择功能

来源:互联网 收集:自由互联 发布时间:2021-06-13
ABAP程序中使用REUSE_ALV_GRID_DISPLAY_LVC显示alv,如何实现行选择功能?方法如下: 1,在输出内表中,定义一个C类型字段用来标记哪些行被选中,选中的为‘X’ 2,在LVC_S_LAYO-BOX_FNAME中指定

ABAP程序中使用REUSE_ALV_GRID_DISPLAY_LVC显示alv,如何实现行选择功能?方法如下:

1,在输出内表中,定义一个C类型字段用来标记哪些行被选中,选中的为‘X’

2,在LVC_S_LAYO-BOX_FNAME 中指定1中定义的行选择字段

完整代码:

REPORT ztest_alv_lvc_selmode.

TYPES:BEGIN OF gty_ekko,
        ebeln TYPE ekko-ebeln,
        verkf TYPE ekko-verkf,
        sel   TYPE c,  "用来标识行选择的字段
      END OF gty_ekko.
DATA:git_ekko TYPE STANDARD TABLE OF gty_ekko,
     gwa_ekko TYPE gty_ekko.

DATA:git_fcat   TYPE lvc_t_fcat,
     gwa_fcat   LIKE LINE OF git_fcat,
     gwa_layout TYPE lvc_s_layo.
CONSTANTS: gco_callback_user_command TYPE slis_formname  VALUE FRM_USER_COMMAND,
           gco_callback_status       TYPE slis_formname  VALUE FRM_USER_STATUS.

START-OF-SELECTION.

  SELECT ebeln
         verkf
    INTO CORRESPONDING FIELDS OF TABLE git_ekko
    FROM ekko
  UP TO 10 ROWS.

  PERFORM frm_set_catalog.

  gwa_layout-zebra = X.
  gwa_layout-box_fname = SEL.  "指定行选择字段
  gwa_layout-cwidth_opt = X.
  CALL FUNCTION REUSE_ALV_GRID_DISPLAY_LVC
    EXPORTING
      i_callback_program       = sy-repid
      is_layout_lvc            = gwa_layout
      it_fieldcat_lvc          = git_fcat
      i_callback_pf_status_set = gco_callback_status
      i_callback_user_command  = gco_callback_user_command
    TABLES
      t_outtab                 = git_ekko[]
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
  IF sy-subrc = 0.

  ENDIF.
*&---------------------------------------------------------------------*
*&      Form  FRM_SET_PF_STATUS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_user_status USING i_it_extab TYPE slis_t_extab.
  SET PF-STATUS S0001 .
ENDFORM.                    " FRM_SET_PF_STATUS

FORM frm_user_command USING i_ucomm       TYPE sy-ucomm
                            i_wa_selfield TYPE slis_selfield.

  DATA:l_count TYPE n,
       l_msg   TYPE char100.
  CASE i_ucomm.
    WHEN POP.  "click POP button in application toolbar
      LOOP AT git_ekko TRANSPORTING NO FIELDS WHERE sel = X.
        l_count = l_count + 1.
      ENDLOOP.
      CONCATENATE Select
                  l_count
                  rows
             INTO l_msg
         SEPARATED BY space.
      MESSAGE l_msg TYPE I.
    WHEN OTHERS.

  ENDCASE.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_SET_CATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_set_catalog .

  DATA:l_pos TYPE i VALUE 1.
  CLEAR: l_pos.
  l_pos = l_pos + 1.
  gwa_fcat-coltext   = PO.
  gwa_fcat-scrtext_l = PO.
  gwa_fcat-scrtext_m = PO.
  gwa_fcat-scrtext_s = PO.
  gwa_fcat-fieldname = EBELN.
  gwa_fcat-col_pos = l_pos.
  gwa_fcat-outputlen = 10.
  APPEND gwa_fcat TO git_fcat.
  l_pos = l_pos + 1.
  gwa_fcat-coltext   = PO item.
  gwa_fcat-scrtext_l = PO item.
  gwa_fcat-scrtext_m = PO item.
  gwa_fcat-scrtext_s = PO item.
  gwa_fcat-fieldname = VERKF.
  gwa_fcat-col_pos = l_pos.
  gwa_fcat-outputlen = 20.
  APPEND gwa_fcat TO git_fcat.

ENDFORM.

为程序创建一个status,并在上面添加一个自定义按钮POPUP

运行效果:

以上。

网友评论