您的位置:首页 > 运维架构

一个完整ALV(常见问题包括top-of-page等)

2014-10-08 12:02 761 查看
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后台显示有问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: