ABAP程序中使用REUSE_ALV_GRID_DISPLAY_LVC显示alv,如何实现行选择功能?方法如下:
1,在输出内表中,定义一个C类型字段用来标记哪些行被选中,选中的为‘X’
2,在LVC_S_LAYO-BOX_FNAME 中指定1中定义的行选择字段

完整代码:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | 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

运行效果:

以上。


发表评论