zoukankan      html  css  js  c++  java
  • REUSE_ALV_GRID_DISPLAY_LVC-行选择功能

    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

    运行效果:

    以上。

  • 相关阅读:
    Java8中的LocalDateTime工具类
    纳德拉再造微软:市值如何重回第一阵营(思维确实变了,不再是以windows为中心,拥抱其它各种平台,敢在主战场之外找到适合自己的新战场)
    马化腾,直接把360做特了!(人从一生下来牙牙学语开始,就在模仿,关键在于在已有的基础上进行改进,提高用户体验!)
    RISC-V首度被我国列入扶持对象,上海已成RISC-V重要“据点”
    Oracle高水位线
    oracle优化:避免全表扫描
    oracle中in和exists的区别
    分库、分表
    missing required source folder
    varnish页面缓存服务
  • 原文地址:https://www.cnblogs.com/datie/p/11435437.html
Copyright © 2011-2022 走看看