1、用OO的方法显示ALV:
2、调用一个标准的method显示ALV:(一般的FM在显示标准的字段例如10位的SO号码-vbeln,当有这个号码有前导0的时候,导出ALV显示结果到Excel的时候会出现少了一位,而用这个method去显示,即使是参考了标准字段,也没有问题。)
注意点是:这里怎么定义fieldcat。(这个只需要定义显示的内表it_output里面的每一个字段都是参考标准的字段的话,那个注释就会自动带出的。)
DATA: lo_alv TYPE REF TO cl_salv_table,
lo_functions TYPE REF TO cl_salv_functions_list,
lx_msg TYPE REF TO cx_salv_msg,
lv_text TYPE string.
* display
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = lo_alv
CHANGING
t_table = it_output ).
lo_functions = lo_alv->get_functions( ).
lo_functions->set_all( ).
lo_alv->display( ).
CATCH cx_salv_msg INTO lx_msg.
lv_text = lx_msg->get_text( ).
MESSAGE lv_text TYPE 'E'.
ENDTRY.
3、Top-of-page的写法:
一个最简单的例子:
代码部分:(实际把这个form放到ALV的function中就可以了)
form frm_top_of_page.
data: lt_header type slis_t_listheader,
wa_header type slis_listheader,
e_date type char10.
call function 'CONVERT_DATE_TO_EXTERNAL'
exporting
date_internal = p_kydat
importing
date_external = e_date
exceptions
date_internal_is_invalid = 1
others = 2
.
if p_duedt = 'X'. "Base on due date
concatenate text-044 e_date into wa_header-info separated by space.
elseif p_bldat = 'X'. "Base on document date
concatenate text-045 e_date into wa_header-info separated by space.
elseif p_budat = 'X'. "Base on Posting Date
concatenate text-046 e_date into wa_header-info separated by space.
elseif p_zfbdt = 'X'. "Base on Baseline Date
concatenate text-047 e_date into wa_header-info separated by space.
endif.
wa_header-typ = 'H'.
append wa_header to lt_header.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = lt_header.
endform. "frm_top_of_page
4、建立自己的ALV显示按钮和user_command(简单例子):
5、fieldcat的所有功能字段:
6、ALV显示数据后,双击可以弹出另外一个ALV报表:
7、通过submit 一个ALV report,还可以得到它的所有信息(cl_salv_bs_runtime_info)
http://scn.sap.com/community/abap/blog/2011/07/07/gain-programmatic-access-to-data-of-sapgui-alv-reports(the layout, field catalog, key fields, filters, etc. plus the data table):
cl_salv_bs_runtime_info=>set(
EXPORTING display = abap_false
metadata = abap_false
data = abap_true ).
SUBMIT (P_PRO) "运行ALV程序
VIA SELECTION-SCREEN
AND RETURN.
"读取ALV程序的the data table
cl_salv_bs_runtime_info=>get_data_ref(
IMPORTING r_data = gt_pro1_data ).
ASSIGN gt_pro1_data->* TO <PRO1_DATA>.
cl_salv_bs_runtime_info=>clear_all( ).
常见问题:
1、显示格式问题
2、显示正常,导出出现漏数
情况一: 一般的FM在显示标准的字段例如10位的SO号码-vbeln,当有这个号码有前导0的时候,导出ALV显示结果到Excel的时候会出现少了一位,而用这个method去显示,即使是参考了标准字段,也没有问题。
情况二:
3、fieldcat的问题导致出现的dump:
4、ALV后台显示有问题