ABAP中定义一个webdynpro,已做好layout,如何用ALV方式查询数据?请教详细步骤!如哪定义ALV。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ABAP中定义一个webdynpro,已做好layout,如何用ALV方式查询数据?请教详细步骤!如哪定义ALV。相关的知识,希望对你有一定的参考价值。
我想你是要放一个ALV table在界面上。1.在界面上放一个view container。
2.在component usage 标签下,声明SALV_WD_TABLE 的 usage。
3.到相应的window中把ALV usage的interview view embed 到view container 中。
4.在view 的init method中config alv table,例如:
METHOD wddoinit .
* create an instance of ALV component
DATA:
lr_salv_wd_table_usage TYPE REF TO if_wd_component_usage.
lr_salv_wd_table_usage = wd_this->wd_cpuse_alv( ).
IF lr_salv_wd_table_usage->has_active_component( ) IS INITIAL.
lr_salv_wd_table_usage->create_component( ).
ENDIF.
* get ALV component
DATA:
lr_salv_wd_table TYPE REF TO iwci_salv_wd_table.
lr_salv_wd_table = wd_this->wd_cpifc_alv( ).
wd_this->alv_config_table = lr_salv_wd_table->get_model( ).
* set visible row count
DATA:
lr_table_settings TYPE REF TO if_salv_wd_table_settings.
lr_table_settings ?= wd_this->alv_config_table.
lr_table_settings->set_visible_row_count( '3' ).
* hide column CURR_ISO
DATA:
lr_column_settings TYPE REF TO if_salv_wd_column_settings,
lr_column TYPE REF TO cl_salv_wd_column.
lr_column_settings ?= wd_this->alv_config_table.
lr_column = lr_column_settings->get_column( 'CURR_ISO' ).
lr_column->set_visible( if_wdl_core=>visibility_none ).
ENDMETHOD.
5. 在你需要的地方将数据load起来,然后绑定到context node上。
注意: 需要在ALV component usage 和 数据所在的controller中间做context mapping,那样才能显示数据。追问
非常感谢您的回答,不过有些地方还是不太懂。我创建了组建SALV_WD_TABLE,INTERFACECONTROLLER_USAGE里也加了COMPONENTCONTROLLER,在WDDOINIT中我调用了ALV初始化(INIT_ALV),提示我错误INIT_ALV好像写的有问题,不知道怎么写。错误信息:调用 SALV_WD_TABLE GET_MODEL 时没有数据,是UNCAUGHT_EXCEPTION。请教,谢谢!
追答没有具体看到代码很难分析。。。
这里有个链接,写一个web dynpro alv的步骤,你照着做应该能做出来
http://www.saptechnical.com/Tutorials/WebDynproABAP/ALV/page1.htm
还有,如果要问类似的问题的话最好去SDN,那里有很多热心的专家很快会回答你问题。
www.sdn.sap.com
非常感谢您的耐心解答,已经照着做了,可是还是报错,不知道哪里出了问题,呵呵。
参考技术A REPORT z_demo_alv05 NO STANDARD PAGE HEADING.*General Data
TYPE-POOLS: slis.
DATA: BEGIN OF gt_outtab OCCURS 0. "定义输出内表
INCLUDE STRUCTURE sflight.
DATA: END OF gt_outtab.
DATA: gs_layout TYPE slis_layout_alv, "定义ALV列表布局属性参数
g_repid LIKE sy-repid. "定义调用主程序名称
*Callback
DATA: gt_list_top_of_page TYPE slis_t_listheader, "定义标题列表
g_top_of_page TYPE slis_formname VALUE 'ALV_TOP_OF_PAGE'. "定义top of page相应参数
*Variants
DATA: gs_variant LIKE disvariant,
g_save TYPE c.
INITIALIZATION. "响应初始化事件
g_repid = sy-repid.
PERFORM layout_init USING gs_layout. "调用子程序设置列表布局属性
gs_variant-report = g_repid.
gs_variant-VARIANT = '/T101'.
g_save = 'A'.
START-OF-SELECTION.
*Data Selection
PERFORM select_data TABLES gt_outtab. "调用子程序查询数据
END-OF-SELECTION.
*List Header for Top-Of-Page
PERFORM comment_build USING gt_list_top_of_page[]. "调用子程序设置报表标题
*Display List
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_background_id = 'ALV_BACKGROUND' "报表背景
i_buffer_active = 'X'
i_callback_program = g_repid "主程序名称
i_callback_top_of_page = g_top_of_page "响应top of page事件的子程序名称
i_structure_name = 'SFLIGHT' "数据结构
is_layout = gs_layout "报表布局属性列表
i_save = g_save "设置为可保存布局
is_variant = gs_variant "引用显示布局
TABLES
t_outtab = gt_outtab "报表数据内表
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE e001(ok) WITH 'ERROR IN ALV LIST'.
ELSE.
* Fatal error callin ALV
* MESSAGE AXXX(XY) WITH ...
ENDIF.
*Form routines
*&---------------------------------------------------------------------*
*& Form SELECT_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_OUTTAB text
*----------------------------------------------------------------------*
FORM select_data TABLES rt_outtab LIKE gt_outtab[]. "查询数据子程序
SELECT * FROM sflight
INTO CORRESPONDING FIELDS
OF TABLE rt_outtab
UP TO 20 ROWS.
ENDFORM. "SELECT_DATA
*&---------------------------------------------------------------------*
*& Form LAYOUT_INIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RS_LAYOUT text
*----------------------------------------------------------------------*
FORM layout_init USING rs_layout TYPE slis_layout_alv. "设置布局属性子程序
*Build layout for list display
rs_layout-detail_popup = 'X'.
ENDFORM. "LAYOUT_INIT
*&---------------------------------------------------------------------*
*& Form ALV_TOP_OF_PAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM alv_top_of_page. "输出标题子程序
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'ZLOGOCOVICS'
it_list_commentary = gt_list_top_of_page.
ENDFORM. "ALV_TOP_OF_PAGE
*&---------------------------------------------------------------------*
*& Form COMMENT_BUILD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->LT_TOP_OF_PAGE text
*----------------------------------------------------------------------*
FORM comment_build USING lt_top_of_page TYPE slis_t_listheader. "设置标题值的子程序
DATA: ls_line TYPE slis_listheader.
* LIST HEADING LINE: TYPE H
CLEAR ls_line.
ls_line-typ = 'H'.
* LS_LINE-KEY: NOT USED FOR THIS TYPE
ls_line-info = text-100.
APPEND ls_line TO lt_top_of_page.
* STATUS LINE: TYPE S
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-key = text-101.
ls_line-info = text-102.
APPEND ls_line TO lt_top_of_page.
* ls_line-key = text-103.
ls_line-info = text-104.
APPEND ls_line TO lt_top_of_page.
* ACTION LINE: TYPE A
CLEAR ls_line.
ls_line-typ = 'A'.
* LS_LINE-KEY: NOT USED FOR THIS TYPE
ls_line-info = text-105.
APPEND ls_line TO lt_top_of_page.
ENDFORM. "COMMENT_BUILD
主要内容有:
1.布局;
2.列内容格式设置;
3.事件响应
希望对你有帮助.追问
对我很有帮助,感谢您的回答!我现在没有使用REPORT来做,se80定义了webdynpro,不知道怎么写Action和Methods,ALV也不知道哪里定义。
追答呃...webdynpro我还没有做过,不好发言.
追问我试了代码,没有显示数据,是什么原因呢?谢谢!
以上是关于ABAP中定义一个webdynpro,已做好layout,如何用ALV方式查询数据?请教详细步骤!如哪定义ALV。的主要内容,如果未能解决你的问题,请参考以下文章
ABAP webdynpro的view navigation和WebUI的view navigation
如何使用 NSURLRequest 访问 WebDynpro 页面