一个完整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后台显示有问题
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后台显示有问题
相关文章推荐
- ALV Grid Display ,Top-Of-Page, Variant, DownLoad...
- C常见问题之如何构建一个完整的C项目
- 用OO方法开发ALV(已实现DropdownList,纵向alv head,double_click、top_of_page事件,不断完善中)
- 实现ALV的TOP_OF_PAGE的两种方法(二)
- ALV Grid Display ,Top-Of-Page, Variant, DownLoad...
- CLASS CL_DD_DOCUMENT 显示ALV top_of_page
- SAP alv(lvc)的抬头标题设定(html_top_of_page)
- 实现ALV的TOP_OF_PAGE的两种方法(一)
- ALV LIST 显示 TOP_OF_PAGE 模版 1(面向对象event事件)
- Endian完整论述 - 一个引起小人国战争的问题!:)
- ORACLE:IMP工具ignore=y的一个问题【THE QUESTION OF ORACLE IMP TOOL WHEN USE PARAMETER IGNORE=Y】
- 一个浪费了4个小时的Page_Load运行两次的问题
- 一个私有的PageLoad在Mono下引发的问题
- 用JVM知识解释一个常见的技术问题
- 刚安装Vs2008,安装时它弹出了一个一些常见问题的解决方案页,记录下
- 推荐一个文件搞定操作系统的所有常见问题第1/3页
- 一个常见的数据库连接的问题????????????
- 注册一个公司的费用和常见问题参考
- WSAD-IE在调试中的一个常见的问题
- 简单的问题,用类创建一个对象error C2380: type(s) preceding 'Complex' (constructor with return type, or illegal redefinition of current class-n