例子程序1 excel批导
例子程序2(最最简单alv下传按钮)
例子程序3(最最简单alv按钮 改底表)
例子程序4(最简单alv报表,最简单)
例子程序1 excel批导
zmmrsk00500
Description: 物料主数据 ***** 批导
*&---------------------------------------------------------------------*
*& Report ZMMRSK00500
*&
*&**********************************************************************
*& PROGRAM NAME : *
*& Apply Author : panjin *
*& Author : panjin *
*& Started on : 2021- *
*& Transaction : ZMMRSK00500 *
*& Program type : REPORT *
*& SAP Release : ECC 6.0 *
*& *
*&*&********************************************************************
*& REVISION LOG *
*& *
*& LOG# DATE AUTHOR DESCRIPTION *
*& ---- ---- ------ ----------- *
* **** create 202101
*&**********************************************************************
REPORT ZMMRSK00500 MESSAGE-ID ZMMSK01.
include ZMMRSK00500_top.
include ZMMRSK00500_srm.
include ZMMRSK00500_alv.
include ZMMRSK00500_pai.
include ZMMRSK00500_pbo.
include ZMMRSK00500_f01.
zmmrsk00500_alv
zmmrsk00500_f01
*&---------------------------------------------------------------------*
*& 包含 ZMMRSK00500_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form FM_GET_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_P_FNAME text
*----------------------------------------------------------------------*
FORM frm_get_file CHANGING CV_fname.
DATA: l_work_rc TYPE i. "Return Code
DATA: l_lstr_filter TYPE string.
DATA: lt_ltb_file_table TYPE filetable,
ls_lwk_file_table TYPE filename.
CONCATENATE 'Excel 2007-2019(*.XLSX)|*.XLSX|' 'Excel(*.XLSX)|*.XLSX'
INTO l_lstr_filter.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Select the file '
* DEFAULT_EXTENSION =
default_filename = ''
file_filter = l_lstr_filter
initial_directory = 'C:'
* MULTISELECTION =
* WITH_ENCODING =
CHANGING
file_table = lt_ltb_file_table
rc = l_work_rc
* USER_ACTION =
* FILE_ENCODING =
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
IF sy-subrc = 0.
LOOP AT lt_ltb_file_table INTO ls_lwk_file_table.
MOVE ls_lwk_file_table TO CV_fname.
EXIT.
ENDLOOP.
ELSE.
MESSAGE text-t10 TYPE 'E'.
ENDIF.
ENDFORM. " FM_GET_FILE
*&---------------------------------------------------------------------*
*& Form FM_GET_FILEPATH
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_get_filepath .
DATA:L_window_title TYPE STRING,
L_file_filter TYPE STRING,
l_filename TYPE string,
l_path TYPE string,
l_fullpath TYPE string,
l_title TYPE string.
g_co_objid = 'ZMMRSK00500'.
L_WINDOW_TITLE = text-t27.
L_file_filter = text-t28 .
L_TITLE = text-t29.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title = L_window_title " '模板保存为EXCEL' "text-t27 "'模板保存为EXCEL'
default_extension = 'xlsx'
default_file_name = l_title
* file_filter = '.xls'
file_filter = l_file_filter "'Excel 文件 (*.XLSX)' "text-t28 " 'Excel 文件 (*.XLS)'
initial_directory = 'C:/'
* DEFAULT_FILE_NAME = p_filename
CHANGING
filename = l_filename
path = l_path
fullpath = g_fullpath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
STOP.
ENDIF.
IF g_fullpath IS INITIAL.
MESSAGE text-t11 TYPE 'E'.
ENDIF.
ENDFORM. " FM_GET_FILEPATH
*&---------------------------------------------------------------------*
*& Form FM_DOWNM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_downm .
DATA: ls_indcatortxt TYPE string,
l_filename TYPE sapb-sappfad.
DATA: lo_objdata LIKE wwwdatatab,
lo_mime LIKE w3mime,
ls_destination LIKE rlgrap-filename,
ls_objnam TYPE string,
l_rc LIKE sy-subrc,
ls_errtxt TYPE string.
l_filename = g_fullpath.
ls_indcatortxt = text-t03. "'程序正在下载模板'.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 0
text = ls_indcatortxt.
CONCATENATE g_co_objid '.XLSX' INTO ls_objnam.
CONDENSE ls_objnam NO-GAPS.
SELECT SINGLE relid objid FROM wwwdata
INTO CORRESPONDING FIELDS OF lo_objdata
WHERE srtf2 = 0
AND relid = 'MI'
AND objid = g_co_objid.
IF sy-subrc NE 0 OR lo_objdata-objid EQ space.
CONCATENATE text-t04 ls_objnam text-t05 INTO ls_errtxt.
MESSAGE E000(ZMMSK01) WITH ls_errtxt.
ENDIF.
ls_destination = g_fullpath.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = lo_objdata
destination = ls_destination
IMPORTING
rc = l_rc.
IF l_rc NE 0.
CONCATENATE text-t04 ls_objnam text-t06 INTO ls_errtxt.
MESSAGE e000(ZMMSK01) with ls_errtxt.
ENDIF.
ENDFORM. " FM_DOWNM
*&---------------------------------------------------------------------*
*& Form FM_FILE_READ
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_file_read .
CLEAR: gt_iexcel, "
gt_iexcel[], "
gt_itab. "
call function 'ZALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_fname
i_begin_col = g_cns_excel_scol
i_begin_row = g_cns_excel_srow
i_end_col = g_cns_excel_ecol
i_end_row = g_cns_excel_erow
TABLES
intern = gt_iexcel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE text-t07 TYPE 'E'.
EXIT.
ENDIF.
SORT gt_iexcel BY row col.
CLEAR gt_itab.
PERFORM frm_read_ycl.
IF gt_itab[] IS INITIAL.
MESSAGE text-t08 TYPE 'E'.
EXIT.
ELSE.
ENDIF.
ENDFORM. " FM_FILE_READ
zmmrsk00500_pai
*&---------------------------------------------------------------------*
*& 包含 ZMMRSK00500_PAI
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->IN_UCOMM text
* -->IN_SELFIELD text
*----------------------------------------------------------------------*
FORM FRM_user_command USING PV_ucomm LIKE sy-ucomm
PS_selfield TYPE slis_selfield.
PS_selfield-refresh = 'X'.
DATA: lr_grid TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lr_grid.
CALL METHOD lr_grid->check_changed_data.
CASE PV_ucomm.
WHEN '&SEL'.
PERFORM frm_SELECT.
WHEN '&DESEL'.
PERFORM frm_DESELECT.
WHEN '&IC1'.
* IF in_selfield-fieldname = 'MATNR' .
* SET PARAMETER ID 'MAT' FIELD in_selfield-value.
* CALL TRANSACTION 'CS03' .
* ENDIF.
WHEN '&UPLOAD'.
PERFORM frm_upload.
ENDCASE.
ENDFORM. "user_command
*&---------------------------------------------------------------------*
*& Form FRM_SELECT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_SELECT .
LOOP AT gt_itab WHERE SEL = 'X'.
gt_itab-chkbox = 'X'.
MODIFY gt_itab TRANSPORTING chkbox.
ENDLOOP.
ENDFORM. " FRM_SELECT
*&---------------------------------------------------------------------*
*& Form FRM_DESELECT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_DESELECT .
LOOP AT gt_itab WHERE SEL = 'X'.
gt_itab-chkbox = ''.
MODIFY gt_itab TRANSPORTING chkbox.
ENDLOOP.
ENDFORM. " FRM_DESELECT
*&---------------------------------------------------------------------*
*& Form FRM_UPLOAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_UPLOAD .
data:lt_ZMMTSK00090 type TABLE OF ZMMTSK00090 WITH HEADER LINE.
LOOP AT gt_itab WHERE chkbox = 'X'.
MOVE-CORRESPONDING gt_itab to lt_ZMMTSK00090. "
append lt_ZMMTSK00090. "
CLEAR:lt_ZMMTSK00090. "
ENDLOOP.
IF sy-subrc ne 0.
MESSAGE text-e01 type 'E'. "请先选择
exit.
ENDIF.
IF lt_ZMMTSK00090[] is not INITIAL.
MODIFY ZMMTSK00090 FROM TABLE lt_ZMMTSK00090.
commit WORK.
ENDIF.
REFRESH:lt_ZMMTSK00090[].
LOOP AT gt_itab WHERE chkbox = 'X'.
gt_itab-icon = ICON_GREEN_LIGHT.
modify gt_itab.
ENDLOOP.
MESSAGE text-t30 type 'S'.
ENDFORM. " FRM_UPLOAD
zmmrsk00500_pbo
*&---------------------------------------------------------------------*
*& 包含 ZMMRSK00500_PBO
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_display .
PERFORM frm_build_fact.
PERFORM frm_set_layout.
PERFORM frm_display_alv.
ENDFORM. " DISPLAY
*&---------------------------------------------------------------------*
*& Form BUILD_FACT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_build_fact .
DEFINE def_fieldcat.
clear gs_fieldcat.
gs_fieldcat-fieldname = &1.
gs_fieldcat-reptext = &2.
gs_fieldcat-edit = &3.
gs_fieldcat-no_zero = &4.
gs_fieldcat-fix_column(1) = &5.
gs_fieldcat-just = &6.
** if &1 = 'C'.
** gw_fieldcat-checkbox = 'X'.
** endif.
* if &1 = 'BANFN'.
* gw_fieldcat-hotspot = 'X'.
* gw_fieldcat-emphasize = 'C500'.
* endif.
append gs_fieldcat to gt_fieldcat.
END-OF-DEFINITION.
REFRESH gt_fieldcat[].
gs_fieldcat-fieldname = 'CHKBOX'.
gs_fieldcat-datatype = 'CHAR'.
gs_fieldcat-intlen = 1.
gs_fieldcat-COLTEXT = text-t24.
gs_fieldcat-checkbox = 'X'.
gs_fieldcat-edit = 'X'.
gs_fieldcat-FIX_COLUMN = 'X'.
append gs_fieldcat to gt_fieldcat.
CLEAR gs_fieldcat.
def_fieldcat 'ICON' text-T01 '' 'X' '' ''.
def_fieldcat 'MATNR_FR' text-T12 '' 'X' '' ''.
def_fieldcat 'MATNR_TO' text-T13 '' '' '' ''.
def_fieldcat 'KLART' text-T14 '' '' '' ''. "
def_fieldcat 'CLASS' text-T15 '' '' '' ''.
def_fieldcat 'ZSFZJ' text-T16 '' '' '' ''.
def_fieldcat 'ZAUTO' text-T17 '' '' '' ''.
def_fieldcat 'LGORT' text-T18 '' '' '' ''.
def_fieldcat 'UMLGO' text-T19 '' '' '' ''.
def_fieldcat 'BWART' text-T20 '' '' '' ''.
def_fieldcat 'XCHPF_H' text-T21 '' '' '' ''.
def_fieldcat 'XCHPF_X' text-T22 '' '' '' ''.
def_fieldcat 'ZNOTE' text-T23 '' '' '' ''.
ENDFORM. " BUILD_FACT
*&---------------------------------------------------------------------*
*& Form SET_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_set_layout .
gs_layo-zebra = 'X'.
gs_layo-cwidth_opt = 'X'.
gs_layo-box_fname = 'SEL'.
ENDFORM. " SET_LAYOUT
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_display_alv .
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_pf_status_set = 'FRM_STATUS'
i_callback_user_command = 'FRM_USER_COMMAND'
* i_callback_top_of_page = 'FM_ALV_TOP'
i_callback_program = g_repid
it_fieldcat_lvc = gt_fieldcat
is_layout_lvc = gs_layo
TABLES
t_outtab = gt_itab[].
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " DISPLAY_ALV
*&---------------------------------------------------------------------*
*& Form set_pf_status
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_EXTAB text
*----------------------------------------------------------------------*
FORM frm_status USING ps_extab TYPE slis_t_extab.
SET PF-STATUS '0100' EXCLUDING ps_extab.
ENDFORM. "set_pf_status
*&---------------------------------------------------------------------*
*& Form READ_YCL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_read_ycl .
DATA:lv_col TYPE i.
FIELD-SYMBOLS:<l_field> type any.
LOOP AT gt_iexcel.
CASE gt_iexcel-col.
WHEN '0001'.
IF strlen( gt_iexcel-value ) <= 16.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = gt_iexcel-value
IMPORTING
output = gt_itab-MATNR_FR.
ELSE.
gt_itab-MATNR_FR = gt_iexcel-value.
ENDIF.
WHEN '0002'.
IF strlen( gt_iexcel-value ) <= 16.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = gt_iexcel-value
IMPORTING
output = gt_itab-MATNR_TO.
ELSE.
gt_itab-MATNR_TO = gt_iexcel-value.
ENDIF.
WHEN OTHERS.
CONDENSE gt_iexcel-value NO-GAPS.
TRANSLATE gt_iexcel-value TO UPPER CASE.
lv_col = gt_iexcel-col + 1.
ASSIGN COMPONENT lv_col OF STRUCTURE gt_itab TO <l_field>.
IF sy-subrc = 0.
TRY.
<l_field> = gt_iexcel-value.
CATCH cx_sy_conversion_no_number."非数值
ENDTRY.
ENDIF.
ENDCASE.
AT END OF row.
* if sy-subrc ne 0.
* gt_itab-msg = '此组件在此工厂不存在 '.
* gt_itab-ICON = '@0A@'.
* endif.
gt_itab-CHKBOX = 'X'.
APPEND gt_itab.
CLEAR: gt_itab.
ENDAT.
ENDLOOP.
ENDFORM. " READ_YCL
zmmrsk00500_srm
*&---------------------------------------------------------------------*
*& 包含 ZMMRSK00500_SRM
*&---------------------------------------------------------------------*
INITIALIZATION.
g_functxt-icon_id = icon_export.
g_functxt-icon_text = TEXT-T25. "'下载EXCEL模板'.
g_functxt-quickinfo = TEXT-T25. "'下载EXCEL模板'.
sscrfields-functxt_01 = g_functxt.
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN 'FC01'.
PERFORM frm_get_filepath.
PERFORM frm_downm.
WHEN 'ONLI'.
IF p_fname IS INITIAL.
SET CURSOR FIELD 'P_FNAME'.
MESSAGE text-t09 TYPE 'E'.
ENDIF.
ENDCASE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
PERFORM frm_get_file CHANGING p_fname.
START-OF-SELECTION.
PERFORM frm_file_read.
PERFORM frm_display.
zmmrsk00500_top
*&---------------------------------------------------------------------*
*& 包含 ZMMRSK00500_TOP
*&---------------------------------------------------------------------*
TYPE-POOLS: slis,icon.
TABLES:sscrfields.
TYPES: BEGIN OF ty_data.
include structure ZMMTSK00090.
TYPES:
icon(30),
msg TYPE string,
chkbox(1),
sel(1),
END OF ty_data.
DATA: gt_itab TYPE TABLE OF ty_data WITH HEADER LINE,
gt_itab_tmp TYPE TABLE OF ty_data WITH HEADER LINE.
DATA: g_co_objid TYPE wwwdatatab-objid .
data : g_cns_excel_scol TYPE i VALUE 1, "EXCEL START COL
g_cns_excel_srow TYPE i VALUE 2, "EXCEL START ROW
g_cns_excel_ecol TYPE i VALUE 50, "EXCEL END COL
g_cns_excel_erow TYPE i VALUE 50000. "EXCEL END ROW
DATA:BEGIN OF gt_iexcel OCCURS 0.
INCLUDE STRUCTURE alsmex_tabline.
DATA:END OF gt_iexcel.
DATA: g_functxt TYPE smp_dyntxt,
g_fullpath TYPE string.
DATA: gt_fieldcat TYPE lvc_t_fcat,
gs_fieldcat TYPE lvc_s_fcat,
g_repid TYPE sy-repid VALUE sy-repid,
gs_layo TYPE lvc_s_layo.
SELECTION-SCREEN: FUNCTION KEY 1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-t26.
PARAMETERS:p_fname TYPE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK b2.
例子程序2 最最简单alv下传按钮 me
**&*********************************************************************
*& PROGRAM NAME :****** *
*& Module Name : * *
*& Apply Author : *
*& Author : *
*& Started on : 2020-10 *
*& Transaction : ZWMESK00640 *
*& Program type : Reprot *
*& SAP Release : 46C/ECC 6.0 *
*& Program ID : ZWMESK00640 *
*& Program Description : ******** *
*&*&********************************************************************
*& REVISION LOG *
*& LOG# DATE AUTHOR DESCRIPTION *
*& ---- ---- ------ ----------- ----------- ----------- ----------- ---*
*& 0001 2020-10 **** Initial Creation *
*&**********************************************************************
REPORT ZWMESK00640.
TABLES: ZMMTSK00110,ZMMTHQ00062.
type-pools:slis.
data:BEGIN OF gt_itab OCCURS 10.
include structure ZMMTSK00110.
data:chkbox(1),
sel(1),
icon(30),
id TYPE int4.
data:end of gt_itab.
data:gt_ZMMTSK00100 LIKE TABLE OF ZMMTSK00100 WITH HEADER LINE.
data: gt_exclude type ui_functions .
*==alv
DATA: gt_fieldcat TYPE lvc_t_fcat, "SLIS_T_FIELDCAT_ALV .
gs_fieldcat TYPE lvc_s_fcat,
gs_layout TYPE lvc_s_layo, "SLIS_LAYOUT_ALV ,
gs_glay TYPE lvc_s_glay.
DATA: gt_events TYPE slis_t_event,
gt_event_exit TYPE slis_t_event_exit,
gt_list_comments TYPE slis_t_listheader,
gt_excluding TYPE slis_t_extab.
DATA: gs_events LIKE LINE OF gt_events,
gs_event_exit LIKE LINE OF gt_event_exit,
gs_list_comments LIKE LINE OF gt_list_comments,
gs_excluding LIKE LINE OF gt_excluding.
DATA: g_repid LIKE sy-repid ,
g_title TYPE lvc_title,
g_html_top_of_page TYPE slis_formname.
selection-screen begin of block bl1 with frame title text-001.
select-options s_werks for ZMMTSK00110-werks memory id WRK.
select-options s_mblnr for ZMMTSK00110-mblnr .
select-options s_datum for ZMMTSK00110-datum.
select-options s_FLAG for ZMMTSK00110-FLAG.
selection-screen end of block bl1.
START-OF-SELECTION.
PERFORM frm_get_data.
PERFORM frm_process_data.
PERFORM frm_alv.
FORM frm_get_data .
SELECT * FROM ZMMTSK00110
INTO CORRESPONDING FIELDS OF TABLE gt_itab
WHERE werks in s_werks
and mblnr in s_mblnr
and datum in s_datum
and flag in s_flag.
sort gt_itab by DATUM DESCENDING UZEIT DESCENDING.
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_ZMMTSK00100 "收件人表
FROM ZMMTSK00100
WHERE del ne 'X'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_PROCESS_DATA .
LOOP AT gt_itab.
gt_itab-id = sy-tabix.
* SELECT SINGLE name1
* INTO gt_itab-werks_txt
* FROM t001w
* WHERE werks eq gt_itab-werks.
modify gt_itab.
CLEAR:gt_itab.
ENDLOOP.
ENDFORM.
FORM frm_alv.
DEFINE alv_field.
clear gs_fieldcat.
gs_fieldcat-fieldname = &1.
gs_fieldcat-coltext = &2.
gs_fieldcat-fix_column = &3.
gs_fieldcat-emphasize = &4.
gs_fieldcat-edit_mask = &5.
gs_fieldcat-no_zero = &6.
IF &1 EQ 'MBLNR'.
gs_fieldcat-HOTSPOT = 'X'..
ENDIF.
append gs_fieldcat to gt_fieldcat.
END-OF-DEFINITION.
refresh gt_events.
refresh gt_fieldcat.
gs_fieldcat-fieldname = 'CHKBOX'.
gs_fieldcat-datatype = 'CHAR'.
gs_fieldcat-intlen = 1.
gs_fieldcat-coltext = text-t36 . "'选择'.
gs_fieldcat-checkbox = 'X'.
gs_fieldcat-edit = 'X'.
gs_fieldcat-fix_column = 'X'.
append gs_fieldcat to gt_fieldcat.
CLEAR gs_fieldcat.
* alv_field 'ID' text-t09 '' '' '' '' . "
alv_field 'ICON' text-t10 '' '' '' '' . "
alv_field 'WERKS' text-t01 '' '' '' '' . "
alv_field 'MBLNR' text-t02 '' '' '' '' . "
alv_field 'MJAHR' text-t03 '' '' '' '' . "
alv_field 'MB_DATUM' text-t14 '' '' '' '' . "
alv_field 'MB_BUDAT' text-t15 '' '' '' '' . "
alv_field 'FLAG' text-t04 '' '' '' '' .
alv_field 'DATUM' text-t05 '' '' '' '' .
alv_field 'UZEIT' text-t06 '' '' '' '' .
alv_field 'UNAME' text-t07 '' '' '' '' .
alv_field 'MSG' text-t08 '' '' '' '' .
g_repid = sy-repid.
gs_layout-cwidth_opt = 'X'.
* gs_layout-sel_mode = 'A'.
gs_layout-box_fname = 'SEL'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_pf_status_set = 'FRM_SET_STATUS'
i_callback_program = g_repid
i_callback_user_command = 'FRM_USER_COMMAND'
* I_GRID_TITLE = G_TITLE
i_grid_settings = gs_glay
is_layout_lvc = gs_layout
it_fieldcat_lvc = gt_fieldcat
i_default = 'X'
i_save = 'X'
TABLES
t_outtab = gt_itab[]
EXCEPTIONS
program_error = 1
others = 2.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
ENDFORM.
*---------------------------------------------------------------------*
* FORM fRM_user_command *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> pv_ucomm *
* --> ps_rs_selfield *
*---------------------------------------------------------------------*
FORM frm_user_command USING pv_ucomm TYPE sy-ucomm
ps_selfield TYPE slis_selfield .
ps_selfield-refresh = 'X'.
data:lo_grid type ref to cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING "
e_grid = lo_grid. "
CALL METHOD lo_grid->check_changed_data. "
CASE pv_ucomm.
WHEN '&SEL'.
PERFORM frm_select.
WHEN '&DESEL'.
PERFORM frm_deselect.
WHEN '&TRANS'.
PERFORM frm_trans .
WHEN '&IC1'.
check not ps_selfield-value is initial.
case ps_selfield-fieldname.
when 'MBLNR'.
set parameter id 'MBN' field ps_selfield-value.
call transaction 'MB03' and skip first screen.
endcase.
WHEN OTHERS.
ENDCASE.
endform.
*---------------------------------------------------------------------*
* FORM FRM_SET_STATUS *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> P_EXTAB *
*---------------------------------------------------------------------*
FORM frm_set_status USING pt_extab TYPE slis_t_extab.
SET PF-STATUS '0100'.
ENDFORM. "FRM_SET_STATUS
*&---------------------------------------------------------------------*
*& Form FRM_SELECT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_select .
LOOP AT gt_itab WHERE sel = 'X'.
gt_itab-chkbox = 'X'.
MODIFY gt_itab TRANSPORTING chkbox.
ENDLOOP.
ENDFORM. " FRM_SELECT
*&---------------------------------------------------------------------*
*& Form FRM_DESELECT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_deselect .
LOOP AT gt_itab WHERE sel = 'X'.
gt_itab-chkbox = ''.
MODIFY gt_itab TRANSPORTING chkbox.
ENDLOOP.
ENDFORM. " FRM_DESELECT
*&---------------------------------------------------------------------*
*& Form FRM_TRANS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_TRANS .
data:lt_matnr type TABLE OF ZMMSSK00060 WITH HEADER LINE,
lt_matnr_tmp type TABLE OF ZMMSSK00060 WITH HEADER LINE.
data:ls_wa type ZMMTSK00110.
data:BEGIN OF lt_mblnr OCCURS 10,
mblnr type mblnr,
mjahr type mjahr,
END OF lt_mblnr.
data:lv_flag type CHAR1,
lv_msg type CHAR200.
LOOP AT gt_itab WHERE chkbox = 'X'.
lt_mblnr-mblnr = gt_itab-mblnr.
lt_mblnr-mjahr = gt_itab-mjahr.
append lt_mblnr.
CLEAR:lt_mblnr.
ENDLOOP.
IF sy-subrc ne 0.
MESSAGE text-e01 type 'E'. "请先选择
exit.
ENDIF.
IF lt_mblnr[] is not INITIAL.
SELECT mseg~MBLNR mseg~MJAHR mseg~matnr mseg~charg
mseg~erfmg as menge mseg~erfme as meins mseg~bwart
mkpf~USNAM
INTO CORRESPONDING FIELDS OF TABLE lt_matnr
FROM mseg INNER JOIN mkpf on mkpf~mblnr eq mseg~mblnr and mseg~mjahr eq mkpf~mjahr
FOR ALL ENTRIES IN lt_mblnr
where mseg~mblnr eq lt_mblnr-mblnr
and mseg~mjahr eq lt_mblnr-mjahr
and mseg~shkzg eq 'H'
and mseg~werks eq 'SKM1'
and mseg~MATNR ne space
and mseg~charg ne space
.
ENDIF.
LOOP AT lt_matnr.
SELECT SINGLE * FROM ZMMTHQ00062
WHERE matnr eq lt_matnr-matnr
.
IF sy-subrc ne 0 or ZMMTHQ00062-FERTH is INITIAL.
delete lt_matnr.
ENDIF.
ENDLOOP.
sort lt_matnr by matnr charg meins mblnr mjahr.
delete ADJACENT DUPLICATES FROM lt_matnr COMPARING ALL FIELDS.
LOOP AT gt_itab WHERE chkbox = 'X'.
MOVE-CORRESPONDING gt_itab to ls_wa.
lt_matnr_tmp[] = lt_matnr[].
delete lt_matnr_tmp WHERE mblnr ne gt_itab-mblnr or mjahr ne gt_itab-mjahr.
call function 'ZFM_MM_SK_MAIL'
EXPORTING
IS_WA = ls_wa
IMPORTING
EV_FLAG = LV_FLAG
EV_MSG = LV_MSG
TABLES
IT_MATNR = lt_matnr_tmp
IT_ADDRESS = gt_ZMMTSK00100.
gt_itab-flag = lv_flag.
IF lv_msg is not INITIAL.
gt_itab-icon = icon_led_red.
gt_itab-msg = lv_msg.
else.
gt_itab-icon = ICON_GREEN_LIGHT.
ENDIF.
modify gt_itab.
CLEAR:gt_itab,lv_msg,lv_flag.
REFRESH:lt_matnr_tmp[].
ENDLOOP.
SUBMIT rsconn01 WITH mode = 'INT' "立即执行
"WITH output = 'X'
AND RETURN.
REFRESH:lt_mblnr[],lt_matnr[].
ENDFORM. " FRM_TRANS
例子程序3(最最简单alv按钮 改底表me)
**&*********************************************************************
*& PROGRAM NAME : ******* *
*& Module Name : **** *
*& Author : ***** *
*& Started on : 2021.01 *
*& Transaction : ZPSRSK00010 *
*& Program type : REPROT *
*& Program ID : ZPSRSK00010 *
*& Program Description : sm30 维护 Z 表 *
*&*&********************************************************************
*& LOG# DATE AUTHOR DESCRIPTION *
*& ---- ------ ------ ----- *
*
*&**********************************************************************
REPORT ZPSRSK00030.
TABLES: PRPS.
type-pools:slis.
data:BEGIN OF gt_itab OCCURS 10.
INCLUDE STRUCTURE prps.
data:chkbox(1),
sel(1),
icon(30),
id TYPE int4.
data:end of gt_itab.
*data:gt_ZMMTSK00100 LIKE TABLE OF ZMMTSK00100 WITH HEADER LINE.
data: gt_exclude type ui_functions .
*==alv
DATA: gt_fieldcat TYPE lvc_t_fcat, "SLIS_T_FIELDCAT_ALV .
gs_fieldcat TYPE lvc_s_fcat,
gs_layout TYPE lvc_s_layo, "SLIS_LAYOUT_ALV ,
gs_glay TYPE lvc_s_glay.
DATA: gt_events TYPE slis_t_event,
gt_event_exit TYPE slis_t_event_exit,
gt_list_comments TYPE slis_t_listheader,
gt_excluding TYPE slis_t_extab.
DATA: gs_events LIKE LINE OF gt_events,
gs_event_exit LIKE LINE OF gt_event_exit,
gs_list_comments LIKE LINE OF gt_list_comments,
gs_excluding LIKE LINE OF gt_excluding.
DATA: g_repid LIKE sy-repid ,
g_title TYPE lvc_title,
g_html_top_of_page TYPE slis_formname.
selection-screen begin of block bl1 with frame title text-001.
select-options s_WBS for PRPS-POSID.
selection-screen end of block bl1.
START-OF-SELECTION.
PERFORM frm_get_data.
PERFORM frm_process_data.
PERFORM frm_alv.
FORM frm_get_data .
SELECT * FROM prps
INTO CORRESPONDING FIELDS OF TABLE gt_itab
WHERE POSID in s_wbs
and werks like 'SK%'
.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_PROCESS_DATA .
LOOP AT gt_itab.
gt_itab-id = sy-tabix.
* SELECT SINGLE name1
* INTO gt_itab-werks_txt
* FROM t001w
* WHERE werks eq gt_itab-werks.
modify gt_itab.
CLEAR:gt_itab.
ENDLOOP.
ENDFORM.
FORM frm_alv.
DEFINE alv_field.
clear gs_fieldcat.
gs_fieldcat-fieldname = &1.
gs_fieldcat-coltext = &2.
gs_fieldcat-fix_column = &3.
gs_fieldcat-emphasize = &4.
gs_fieldcat-edit = &5.
gs_fieldcat-no_zero = &6.
IF &1 EQ 'POSID'.
gs_fieldcat-HOTSPOT = 'X'..
ENDIF.
append gs_fieldcat to gt_fieldcat.
END-OF-DEFINITION.
refresh gt_events.
refresh gt_fieldcat.
gs_fieldcat-fieldname = 'CHKBOX'.
gs_fieldcat-datatype = 'CHAR'.
gs_fieldcat-intlen = 1.
gs_fieldcat-coltext = text-t00 . "'选择'.
gs_fieldcat-checkbox = 'X'.
gs_fieldcat-edit = 'X'.
gs_fieldcat-fix_column = 'X'.
append gs_fieldcat to gt_fieldcat.
CLEAR gs_fieldcat.
alv_field 'ICON' text-t01 '' '' '' '' . "
alv_field 'POSID' text-t02 '' '' '' '' . "
alv_field 'POST1' text-t03 '' '' '' '' . "
alv_field 'CUSFILD40' text-t04 '' '' 'X' '' . "
alv_field 'CUSFILD43' text-t05 '' '' 'X' '' . "
alv_field 'CUSFILD91' text-t06 '' '' 'X' '' . "
alv_field 'CUSFILD92' text-t07 '' '' 'X' '' .
alv_field 'CUSFILD94' text-t08 '' '' 'X' '' .
alv_field 'XMZTZ' text-t09 '' '' 'X' '' .
alv_field 'EJDW' text-t10 '' '' 'X' '' .
g_repid = sy-repid.
gs_layout-cwidth_opt = 'X'.
* gs_layout-sel_mode = 'A'.
gs_layout-box_fname = 'SEL'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_pf_status_set = 'FRM_SET_STATUS'
i_callback_program = g_repid
i_callback_user_command = 'FRM_USER_COMMAND'
* I_GRID_TITLE = G_TITLE
i_grid_settings = gs_glay
is_layout_lvc = gs_layout
it_fieldcat_lvc = gt_fieldcat
i_default = 'X'
i_save = 'X'
TABLES
t_outtab = gt_itab[]
EXCEPTIONS
program_error = 1
others = 2.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
ENDFORM.
*---------------------------------------------------------------------*
* FORM fRM_user_command *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> pv_ucomm *
* --> ps_rs_selfield *
*---------------------------------------------------------------------*
FORM frm_user_command USING pv_ucomm TYPE sy-ucomm
ps_selfield TYPE slis_selfield .
ps_selfield-refresh = 'X'.
data:lo_grid type ref to cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING "
e_grid = lo_grid. "
CALL METHOD lo_grid->check_changed_data. "
CASE pv_ucomm.
WHEN '&SEL'.
PERFORM frm_select.
WHEN '&DESEL'.
PERFORM frm_deselect.
WHEN '&TRANS'.
PERFORM frm_edit .
WHEN '&IC1'.
check not ps_selfield-value is initial.
case ps_selfield-fieldname.
when 'POSID'.
set parameter id 'CAC' field 'SINO'.
set parameter id 'PSP' field ''.
set parameter id 'PRO' field ps_selfield-VALUE.
call transaction 'CJ20' and skip first screen.
endcase.
WHEN OTHERS.
ENDCASE.
endform.
*---------------------------------------------------------------------*
* FORM FRM_SET_STATUS *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> P_EXTAB *
*---------------------------------------------------------------------*
FORM frm_set_status USING pt_extab TYPE slis_t_extab.
SET PF-STATUS '0100'.
ENDFORM. "FRM_SET_STATUS
*&---------------------------------------------------------------------*
*& Form FRM_SELECT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_select .
LOOP AT gt_itab WHERE sel = 'X'.
gt_itab-chkbox = 'X'.
MODIFY gt_itab TRANSPORTING chkbox.
ENDLOOP.
ENDFORM. " FRM_SELECT
*&---------------------------------------------------------------------*
*& Form FRM_DESELECT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_deselect .
LOOP AT gt_itab WHERE sel = 'X'.
gt_itab-chkbox = ''.
MODIFY gt_itab TRANSPORTING chkbox.
ENDLOOP.
ENDFORM. " FRM_DESELECT
*&---------------------------------------------------------------------*
*& Form FRM_TRANS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_EDIT .
data:lw_prps type prps.
BREAK PJPAN.
LOOP AT gt_itab WHERE chkbox = 'X'
and ( CUSFILD40 is not INITIAL
or CUSFILD43 is not INITIAL
or CUSFILD91 is not INITIAL
or CUSFILD92 is not INITIAL
or CUSFILD94 is not INITIAL
or XMZTZ is not INITIAL
or EJDW is not INITIAL ).
ENDLOOP.
IF sy-subrc ne 0.
MESSAGE text-e01 type 'E'. "请先选择
exit.
ENDIF.
LOOP AT gt_itab WHERE chkbox = 'X'.
SELECT SINGLE * INTO lw_prps
FROM prps
where PSPNR eq gt_itab-PSPNR.
IF sy-subrc = 0.
IF gt_itab-CUSFILD40 is not INITIAL.
lw_prps-CUSFILD40 = gt_itab-CUSFILD40.
ENDIF.
IF gt_itab-CUSFILD43 is not INITIAL.
lw_prps-CUSFILD43 = gt_itab-CUSFILD43.
ENDIF.
IF gt_itab-CUSFILD91 is not INITIAL.
lw_prps-CUSFILD91 = gt_itab-CUSFILD91.
ENDIF.
IF gt_itab-CUSFILD92 is not INITIAL.
lw_prps-CUSFILD92 = gt_itab-CUSFILD92.
ENDIF.
IF gt_itab-CUSFILD94 is not INITIAL.
lw_prps-CUSFILD94 = gt_itab-CUSFILD94.
ENDIF.
IF gt_itab-XMZTZ is not INITIAL.
lw_prps-XMZTZ = gt_itab-XMZTZ.
ENDIF.
IF gt_itab-EJDW is not INITIAL.
lw_prps-EJDW = gt_itab-EJDW.
ENDIF.
modify prps FROM lw_prps.
commit WORK. ""#EC CI_SEL_NESTED
gt_itab-icon = ICON_GREEN_LIGHT.
else.
gt_itab-icon = icon_led_red.
ENDIF.
modify gt_itab.
CLEAR:gt_itab,lw_prps.
ENDLOOP.
ENDFORM. " FRM_TRANS
例子程序4(zqmrsk00010 ,最简单alv报表,最简单 me)
*&---------------------------------------------------------------------*
*& PROGRAM NAME : Quality inspection result *
*& Module Name : QM *
*& Apply Author : *** *
*& Author : ***** *
*& Started on : 2020-10-20 *
*& Transaction : ZQMRSK00010 *
*& Program type : Interactive Report *
*& SAP Release : 46C/ECC 6.0 *
*& Program ID : ZQMRSK00010 *
*& Program Description : Quality inspection result *
*&---------------------------------------------------------------------*
*& REVISION LOG *
*& *
*& LOG# DATE AUTHOR DESCRIPTION *
*& ---- ---------- ---------- ---------------- *
*& 0001 2020-10-20 panjin Initial Creation(移植) *
*& 原事务码:***** *
*&---------------------------------------------------------------------*
REPORT zqmrsk00010.
TABLES: zqmtsk00010.
TYPE-POOLS:slis.
DATA:BEGIN OF gt_itab OCCURS 10.
include structure zqmtsk00010.
DATA:werks_txt(100).
DATA:END OF gt_itab.
DATA: gt_exclude TYPE ui_functions .
*==alv
DATA: gt_fieldcat TYPE lvc_t_fcat, "SLIS_T_FIELDCAT_ALV .
gs_fieldcat TYPE lvc_s_fcat,
gs_layout TYPE lvc_s_layo, "SLIS_LAYOUT_ALV ,
gs_glay TYPE lvc_s_glay.
DATA: gt_events TYPE slis_t_event,
gt_event_exit TYPE slis_t_event_exit,
gt_list_comments TYPE slis_t_listheader,
gt_excluding TYPE slis_t_extab.
DATA: gs_events LIKE LINE OF gt_events,
gs_event_exit LIKE LINE OF gt_event_exit,
gs_list_comments LIKE LINE OF gt_list_comments,
gs_excluding LIKE LINE OF gt_excluding.
DATA: g_repid LIKE sy-repid ,
g_title TYPE lvc_title,
g_html_top_of_page TYPE slis_formname.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
*SELECT-OPTIONS s_werks FOR zqmtsk00010-werks MEMORY ID wrk.
*SELECT-OPTIONS s_charg FOR zqmtsk00010-charg .
*SELECT-OPTIONS s_budat FOR zqmtsk00010-budat.
*SELECT-OPTIONS s_crdat FOR zqmtsk00010-crdat.
SELECT-OPTIONS: s_cbeln FOR zqmtsk00010-cbeln,
s_werks FOR zqmtsk00010-werks DEFAULT 'SKH1' MEMORY ID wrk,
s_charg FOR zqmtsk00010-charg,
s_atnam FOR zqmtsk00010-atnam,
s_pmtnr FOR zqmtsk00010-pmtnr,
s_atwrt FOR zqmtsk00010-atwrt,
s_inval FOR zqmtsk00010-inval,
s_budat FOR zqmtsk00010-budat,
s_uzeit FOR zqmtsk00010-uzeit,
s_crdat FOR zqmtsk00010-crdat DEFAULT sy-datum,
s_crtim FOR zqmtsk00010-crtim.
SELECTION-SCREEN SKIP.
PARAMETERS: p_lines TYPE i DEFAULT 500.
SELECTION-SCREEN END OF BLOCK bl1.
START-OF-SELECTION.
PERFORM frm_get_data.
PERFORM frm_process_data.
PERFORM frm_alv.
*&---------------------------------------------------------------------*
*& Form frm_get_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_get_data .
************
************
** 获取数据
SELECT *
FROM zqmtsk00010
UP TO p_lines ROWS
INTO CORRESPONDING FIELDS OF TABLE gt_itab
WHERE cbeln IN s_cbeln
AND werks IN s_werks
AND charg IN s_charg
AND atnam IN s_atnam
AND pmtnr IN s_pmtnr
AND atwrt IN s_atwrt
AND inval IN s_inval
AND budat IN s_budat
AND uzeit IN s_uzeit
AND crdat IN s_crdat
AND crtim IN s_crtim.
SORT gt_itab BY cbeln.
ENDFORM. "frm_get_data
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_process_data .
LOOP AT gt_itab.
SELECT SINGLE name1
INTO gt_itab-werks_txt
FROM t001w
WHERE werks EQ gt_itab-werks.
MODIFY gt_itab.
CLEAR:gt_itab.
ENDLOOP.
ENDFORM. "FRM_PROCESS_DATA
*&---------------------------------------------------------------------*
*& Form frm_alv
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_alv.
DEFINE alv_field.
clear gs_fieldcat.
gs_fieldcat-fieldname = &1.
gs_fieldcat-coltext = &2.
gs_fieldcat-fix_column = &3.
gs_fieldcat-emphasize = &4.
gs_fieldcat-edit_mask = &5.
gs_fieldcat-no_zero = &6.
append gs_fieldcat to gt_fieldcat.
END-OF-DEFINITION.
REFRESH gt_events.
REFRESH gt_fieldcat.
alv_field 'WERKS' text-t01 '' '' '' '' . "
alv_field 'WERKS_TXT' text-t02 '' '' '' '' . "
alv_field 'CBELN' text-t03 '' '' '' '' . "
alv_field 'ATNAM' text-t04 '' '' '' '' .
alv_field 'PMTNR' text-t05 '' '' '' '' .
alv_field 'CHARG' text-t06 '' '' '' '' .
alv_field 'ATWRT' text-t07 '' '' '' '' .
alv_field 'INVAL' text-t08 '' '' '' '' .
alv_field 'BUDAT' text-t09 '' '' '' '' .
alv_field 'UZEIT' text-t10 '' '' '' '' .
alv_field 'CRDAT' text-t11 '' '' '' '' .
alv_field 'CRTIM' text-t12 '' '' '' '' .
g_repid = sy-repid.
gs_layout-cwidth_opt = 'X'.
gs_layout-sel_mode = 'A'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_pf_status_set = 'FRM_SET_STATUS'
i_callback_program = g_repid
i_callback_user_command = 'FRM_USER_COMMAND'
* I_GRID_TITLE = G_TITLE
i_grid_settings = gs_glay
is_layout_lvc = gs_layout
it_fieldcat_lvc = gt_fieldcat
i_default = 'X'
i_save = 'X'
TABLES
t_outtab = gt_itab[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. "frm_alv
*---------------------------------------------------------------------*
* FORM fRM_user_command *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> pv_ucomm *
* --> ps_rs_selfield *
*---------------------------------------------------------------------*
FORM frm_user_command USING pv_ucomm TYPE sy-ucomm
ps_rs_selfield TYPE slis_selfield .
ps_rs_selfield-refresh = 'X' .
ps_rs_selfield-col_stable = 'X'."基于行的稳定刷新
ps_rs_selfield-row_stable = 'X'." 基于列稳定刷新
CASE pv_ucomm.
WHEN '&IC1'.
WHEN OTHERS.
ENDCASE.
ENDFORM. "FRM_USER_COMMAND
*---------------------------------------------------------------------*
* FORM FRM_SET_STATUS *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> P_EXTAB *
*---------------------------------------------------------------------*
FORM frm_set_status USING pt_extab TYPE slis_t_extab.
SET PF-STATUS '0100'.
ENDFORM. "FRM_SET_STATUS