能做出来就行,无论什么办法
TYPE-POOLS icon.
TYPES:BEGIN OF ty_data,
kk TYPE c LENGTH 4,
END OF ty_data.
*** 定义内表
DATA:gt_data TYPE TABLE OF ty_data,
gs_data TYPE ty_data.
***ALV相关定义
***FILEDCAT定义
DATA:gt_fcat TYPE lvc_t_fcat,
gs_fcat LIKE LINE OF gt_fcat.
***布局定义
DATA:gs_layout TYPE lvc_s_layo.
*** 选择屏幕定义
SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001.
PARAMETERS:p_pwerk TYPE afpo-pwerk.
SELECTION-SCREEN END OF BLOCK bk1.
START-OF-SELECTION.
PERFORM frm_getdata. "取数
PERFORM frm_dealdata."处理数据
PERFORM frm_layout. "布局设置
PERFORM frm_fieldcat. "FIEDLCAT 填充输出的字段
PERFORM frm_dispaly. "报表展示
*&---------------------------------------------------------------------*
*& Form FRM_GETDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_getdata ..
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DEALDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_dealdata .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_LAYOUT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_layout .
gs_layout-zebra = 'X'.
gs_layout-box_fname = 'BOX'."这个可以选中那一行,相当于加了一个字段"
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_FIELDCAT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_fieldcat .
CLEAR gs_fcat.
gs_fcat-fieldname = 'MAKTX'.
gs_fcat-coltext = '物料描述'.
APPEND gs_fcat TO gt_fcat.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPALY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_dispaly .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'FRM_SET_PF_STATUS'
i_callback_user_command = 'FRM_USER_COMMAND'
is_layout_lvc = gs_layout
it_fieldcat_lvc = gt_fcat
TABLES
t_outtab = gt_data.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
FORM frm_set_pf_status USING rt_extab TYPE slis_t_extab..
SET PF-STATUS 'STANDARD' EXCLUDING rt_extab.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA:lr_grid TYPE REF TO cl_gui_alv_grid.
DATA:lv_msg TYPE string.
DATA:lv_index TYPE string.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lr_grid.
CALL METHOD lr_grid->check_changed_data.
rs_selfield-refresh = 'X'.
CASE r_ucomm.
WHEN '&ZCREATE'.
MESSAGE '测试' TYPE 'I'.
WHEN OTHERS.
ENDCASE.
* ***刷新屏幕
rs_selfield-refresh = 'X'. " REFESH ALV
* CALL METHOD LR_GRID->REFRESH_TABLE_DISPLAY.
ENDFORM. "FRM_USER_COMMAND