*------- alv data definition -----------------------------------------
TYPE-POOLS: slis.
DATA: it_cat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DEFINE alv_head.
clear it_cat.
it_cat-fieldname = &1. "字段名
it_cat-seltext_m = &2. "字段文本
it_cat-col_pos = &3. "字段位置
it_cat-outputlen = &4. "字段长度
it_cat-emphasize = &5. "强调颜色
it_cat-key = &6. "关键字
it_cat-no_zero = 'X'. "不显示0数据
it_cat-edit = 'X'. "设置某字段可编辑 ,最左边会出现一列box
append it_cat.
END-OF-DEFINITION.
*--- ls_layout
DATA: ls_layout TYPE slis_layout_alv.
ls_layout-zebra = 'X'. "斑马线
ls_layout-colwidth_optimize = 'X'. "宽度自动优化
ls_layout-box_fieldname = 'ZSEL'. "Box
ls_layout-info_fieldname = 'COLOR'. "设置显示颜色用,这个字段也要在内表中
*&---------------------------------------------------------------------*
*& Form display_data
*&---------------------------------------------------------------------*
FORM display_data .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'FRM_SET_PF_STATUS'
i_callback_user_command = 'FRM_ALV_COMMAND'
is_layout = ls_layout
it_fieldcat = it_cat[]
* i_screen_start_column = 30 "显示位置及大小,显示出来后大小不成调整
* i_screen_start_line = 2
* i_screen_end_column = 97
* i_screen_end_line = 20
TABLES
t_outtab = it_detail.
ENDFORM. "display_data
*&---------------------------------------------------------------------*
*& Form set_pf_status
*&---------------------------------------------------------------------*
FORM frm_set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STATUS1'."双击建立
ENDFORM. "display_data
*&---------------------------------------------------------------------*
*& Form frm_salv_commond
*&---------------------------------------------------------------------*
FORM frm_alv_command USING p_ucomm LIKE sy-ucomm
rs TYPE slis_selfield.
DATA: lr_grid TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' "这个函数不能用于alv_list,会报错
IMPORTING
e_grid = lr_grid.
CALL METHOD lr_grid->check_changed_data.
rs-refresh = 'X'.
CASE p_ucomm.
WHEN '&IC1'. "双击鼠标显示明细数据
ENDCASE.
ENDFORM. "display_data
*------- 自定义子屏幕101 ---------------------------------------------------
SELECTION-SCREEN BEGIN OF SCREEN 101 .
SELECTION-SCREEN BEGIN OF BLOCK sc1 WITH FRAME TITLE text-001.
PARAMETERS :
p_carrid LIKE spfli-carrid,
p_connid LIKE spfli-connid,
p_cofr LIKE spfli-countryfr,
p_coto LIKE spfli-countryto.
SELECTION-SCREEN END OF BLOCK sc1.
SELECTION-SCREEN END OF SCREEN 101.
"用于call selection-screen 101来调用
*------- 自动获得并处理自定义类型的各个字段 -------------------------------------------
DATA: lt_fieldcat TYPE slis_t_fieldcat_alv,
ls_fieldcat TYPE slis_fieldcat_alv.
CALL FUNCTION'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = v_repid
i_internal_tabname = 'TYP_SPFLI'
"i_structure_name = 'SPFLI'
i_inclname = v_repid
i_bypassing_buffer = 'X'
i_buffer_active = ''
CHANGING
ct_fieldcat = lt_fieldcat.
LOOP AT lt_fieldcat INTO ls_fieldcat.
IF ls_fieldcat-fieldname = 'MYFIELD'.
ls_fieldcat-seltext_s = '我的字段'.
ls_fieldcat-seltext_m = '我的字段'.
ls_fieldcat-seltext_l = '我的字段'.
ENDIF.
MODIFY lt_fieldcat FROM ls_fieldcat.
ENDLOOP.
DELETE lt_fieldcat WHERE fieldname = 'L_SEL'.
*------- 关于 i_save = 'A'----------------------------------------------
*保存格式参数的选择。
*显示出来alv之后,菜单:设置->格式->保存或布局管理,可以保存成一种布局,
*如果去掉i_save = 'A',则不能保存布局
*------- 在alv中自定义工具栏下的write ------------------------------------------
CASE p_ucomm.
WHEN 'PRT'.
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0."这个很重要
WRITE: 'PRT'.
ENDCASE.
*------- 在ALV上WIRTE---------------------------------------------------
* 在ALV上WIRTE并且能够返回:(下列步骤一个也不能少)
CALL SCREEN '101'.
LOOP AT return_tab.
WRITE:/ '交货单:',return_tab-vbeln,',发货过账失败,原因:',return_tab-text.
ENDLOOP.
*----------------------------------------------------------------------*
* MODULE status_0101 OUTPUT
*----------------------------------------------------------------------*
MODULE status_0101 OUTPUT.
SET PF-STATUS 'M101'.
SUPPRESS DIALOG.
WRITE:/ 'XXXXXX'.
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
ENDMODULE. "status_0101 OUTPUT
*----------------------------------------------------------------------*
* MODULE user_command_0101 INPUT
*----------------------------------------------------------------------*
MODULE user_command_0101 INPUT.
DATA: save_ok LIKE sy-ucomm,
ok_code LIKE sy-ucomm.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. "user_command_0101 INPUT
评论