转 ALV基础知识
ALV基础知识
一、ALV基础
ALV :Application List viewer。
样式:1.REUSE_ALV_GRID_DISPLAY ;
2.REUSE_ALV_LIST_DISPLAY。
二、定义ALV输出
*&---------------------------------------------------------------------*
*& Form frm_alv_display
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_alv_display.
TYPE-POOLS:slis. "调用类型组
DATA: gw_layout TYPEslis_layout_alv. "ALV格式
DATA: myrepid LIKEsy-repid. "程序为当前程序
DATA: allfields TYPE slis_t_fieldcat_alv."用来存储将要在ALV区域显示出来的表列名及数据
DATA: wa_allfields TYPE LINE OFslis_t_fieldcat_alv. "用来存储每一列的字段名和描述
* DATA: e_status TYPE slis_forname VALUE'STANDARD_ER01'. "ALV自定义非标准按钮
gw_layout-box_fieldname ='TBKEY'. "定义选择行标识
gw_layout-colwidth_optimize ='X'. "自动调整列宽
gw_layout-zebra ='X'. "变换行颜色
myrepid = sy-repid.
DATA: pos TYPE i.
DEFINEalv_append_field. "定义调用列变量
wa_allfields-col_pos =pos. "列标志
wa_allfields-fieldname =&1. "字段名
wa_allfields-seltext_l =&2. "字段描述
* wa_allfields-icon =&3. "以图标来显示
* wa_allfields-no_zero =&3. "去0
appendwa_allfields toallfields. "写进所标志的当前列取得的字段名和描述
clearwa_allfields.
pos = pos +1. "进入下一列
END-OF-DEFINITION.
REFRESH allfields.
pos = 1.
CLEAR wa_allfields.
alv_append_field '字段名' '字段描述' .
CALL FUNCTION'REUSE_ALV_GRID_DISPLAY' "statt LIST
EXPORTING
i_callback_program = myrepid
* i_callback_pf_status_set = e_status
is_layout = gw_layout
* i_callback_user_command = 'USER_COMMAND'
it_fieldcat = allfields
i_save = 'A'
TABLES
t_outtab = itab_out
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. "frm_alv_display
四、ALV使用注意事项
1.在ALV中,需要注意所有添加的需要显示的列,都必须在相应的内表中有对应的字段,否则,只要使用合计或者分类汇总都会导致程序的崩溃。
2.在SAPABAP程序中,字符串的大小写很重要,在单引号包围的字符串中,一般来说都应该用大写,特别是在调用一些系统的方法时传入字符串参数时,否则就会出现Perform_not_found的系统错误。
3.另外,传入到ALV中的列对应的字段名称也必须使用大写字母,否则数据不会显示出来