ALV 报表总共分为三部分:
一、定义部分
二、取数部分
三、展示部分
一、定义部分:
固定定义代码:
type-pools:slis.
DATA: wt_fieldcat TYPE lvc_t_fcat,
ws_layout_lvc TYPE lvc_s_layo.
二、取数部分:
根据逻辑sql取数即可
三、展示部分:
可固定代码:
"界面布局参数,常规zebra斑马线、cwidth_opt最优列宽
"box_fname报表最左边的选择空间,需在展示内表中定义字段SEL TYPE SEL
ws_layout_lvc-zebra = 'X'.
ws_layout_lvc-cwidth_opt = 'X'.
ws_layout_lvc-box_fname = 'SEL'.
"将要展示的字段放入FIELDCAT内表中
PERFORM add_fieldcat USING 'BSART' '采购订单类型' '' '' '' '' '' '' '' ''.
PERFORM add_fieldcat USING 'BATXT' '采购订单类型描述' '' '' '' '' '' '' '' ''.
PERFORM add_fieldcat USING 'LIFNR' '供应商编码' '' '' '' '' '' '' '' ''.
PERFORM add_fieldcat USING 'NAME1' '供应商描述' '' '' '' '' '' '' '' ''.
PERFORM add_fieldcat USING 'EBELN' '采购订单' '' '' '' '' '' '' '' ''.
"展示函数
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'SET_DATA_STATUS'
* i_callback_user_command = 'DATA_COMMAND'
is_layout_lvc = ws_layout_lvc
it_fieldcat_lvc = wt_fieldcat
i_default = 'X'
i_save = 'A'
TABLES
t_outtab = gt_alv. "展示的内表
"feildcat的form
FORM add_fieldcat USING wlv_s1 wlv_s2 wlv_s3 wlv_s4 wlv_s5 wlv_s6 wlv_s7 wlv_s8 wlv_s9 wlv_s10.
DATA wls_fieldcat TYPE lvc_s_fcat.
wls_fieldcat-fieldname = wlv_s1.
wls_fieldcat-coltext = wlv_s2.
wls_fieldcat-scrtext_l = wlv_s2.
wls_fieldcat-scrtext_m = wlv_s2.
wls_fieldcat-scrtext_s = wlv_s2.
wls_fieldcat-tooltip = wlv_s2.
wls_fieldcat-fix_column = wlv_s3.
wls_fieldcat-edit = wlv_s4.
wls_fieldcat-hotspot = wlv_s5.
wls_fieldcat-lzero = wlv_s6.
wls_fieldcat-ref_table = wlv_s7.
wls_fieldcat-ref_field = wlv_s8.
wls_fieldcat-convexit = wlv_s9.
wls_fieldcat-just = wlv_s10.
APPEND wls_fieldcat TO wt_fieldcat.
CLEAR wls_fieldcat.
ENDFORM.
"gui状态,即报表的菜单栏
FORM set_data_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZMMR033_100'.
ENDFORM.
四、gui状态可以直接使用标准的gui状态即可,下面讲述如何复制标准gui状态:
4.1、直接双击此函数:
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY_LVC’
4.2、接入函数界面后
4.3、选择第一个状态,右击复制即可:
4.4、回到程序,刷新后,激活gui状态。