而ALV在WEBDYNPRO中的作用就相當于ALV在報表開發(fā)中的作用,幾乎無處不在。SAP為我們提供了標準的組件,我們只需要引用修改就可以了。
下面描述ALV在Web dynpro中的用法:
1. 創(chuàng)建WDA:SE80中選擇來創(chuàng)建,我們定義的名字是Z00WDA_01。2.在此應用中,引用SALV_WD_TABLE組件
3. 在COMPONENTCONTROLLER中,點擊 ,添加對ALV的引用,并創(chuàng)建我們自己的全局上下文節(jié)點。4. 在視圖中,引用ALV組件,并MAPPING SFLIGHT_NODE5.在視圖中,創(chuàng)建我們的LAYOUT:從左側的工具欄中,拖拽“PAGE_HEADER”,“TRAY”,“VIEW_CONTAINER”到編輯區(qū)6.將ALV_TABLE插入到WINDOW的VC結構中
7. 在INTERFACECONTROLLER_USAGE中,將ALV組件的DATA節(jié)點與SFLIGHT_NODE節(jié)點關聯(lián)
8.在MAINVIEW的WDDOINIT方法中,寫入以下代碼:Method WDDOINIT .
DATAlo_nd_sflightTYPEREF TOif_wd_context_node.
DATAlo_el_sflightTYPEREF TOif_wd_context_element.
DATAlt_sflightTYPEwd_this->Elements_sflight_node.
datals_flightlikeline oflt_sflight.*******************************
*... get ALV Component Usage
*******************************
data :
lr_comp_alvtyperef toif_wd_component_usage,
lr_comp_if_alvtyperef toiwci_salv_wd_table,
lr_configtyperef tocl_salv_wd_config_table.* get reference of component_usage interface
lr_comp_alv =wd_this->wd_cpuse_alv_test( ).
* instant component_usage
iflr_comp_alv->has_active_component( ) is initial.
lr_comp_alv->create_component( ).
endif .
* get COMPONENTCONTROLLER
lr_comp_if_alv =wd_this->wd_cpifc_alv_test( ).
* get Configure ALV
lr_config =lr_comp_if_alv->get_model( ).******************************
* binding value for node
******************************
** get node
lo_nd_sflight =wd_context->get_child_node( name ='SFLIGHT_NODE' ).** Fetch data from database table
select *
from sflight
into corresponding fields
oftable lt_sflight
.
** bind table
call methodlo_nd_sflight->bind_table( lt_sflight ).***************************
* set table property of ALV
***************************
data: if_table_setting TYPE REF TOIF_SALV_WD_TABLE_SETTINGS. if_table_setting ?= lr_config.*** set read_only
if_table_setting->set_read_only(ABAP_FALSE ).
* set selection_mode
*AUTO TYPE WDY_UIE_LIBRARY_ENUM_TYPE VALUE '00', "TableSelectionMode.auto
*SINGLE TYPE WDY_UIE_LIBRARY_ENUM_TYPE VALUE '02', "TableSelectionMode.single
*MULTI TYPE WDY_UIE_LIBRARY_ENUM_TYPE VALUE '04', "TableSelectionMode.multi
*NONE TYPE WDY_UIE_LIBRARY_ENUM_TYPE VALUE '06', "TableSelectionMode.none
*SINGLE_NO_LEAD TYPE WDY_UIE_LIBRARY_ENUM_TYPE VALUE '07', "TableSelectionMode.singleNoLead
*MULTI_NO_LEAD TYPE WDY_UIE_LIBRARY_ENUM_TYPE VALUE '08', "TableSelectionMode.multiNoLead
if_table_setting->set_selection_mode(cl_wd_table=>e_selection_mode-multi_no_lead ).
*** set footer navigator
*FOOTER_VISIBLE_TRUE/FOOTER_VISIBLE_FALSE
if_table_setting->SET_FOOTER_VISIBLE(IF_SALV_WD_C_TABLE_SETTINGS=>FOOTER_VISIBLE_TRUE).
*** set text when NO DATA
if_table_setting->SET_EMPTY_TABLE_TEXT( 'No datafound!' ).
*** set visiable rows.
if_table_setting->SET_VISIBLE_ROW_COUNT( 23 ).
*** set table width
if_table_setting->SET_WIDTH('1000' ).
*** SET_TOP_OF_LIST_VISIBLE
*if_table_setting->SET_TOP_OF_LIST_VISIBLE( ABAP_TRUE).
* set tooltip
if_table_setting->set_tooltip('online help' ).
*** set multiple column sort
if_table_setting->SET_MULTI_COLUMN_SORT( ABAP_TRUE).*****************************
* set column property of ALV
****************************** define column table
data: lt_columns typesalv_wd_t_column_ref ,
ls_columns type salv_wd_s_column_ref .
* define UI element
data: lc_input type ref tocl_salv_wd_uie_input_field.* define column header
data: lc_column_header TYPE REF TOCL_SALV_WD_COLUMN_HEADER.
* set columns table
lt_columns =lr_config->if_salv_wd_column_settings~get_columns().
DATA:lc_fieldTYPE REF TO CL_SALV_WD_FIELD.
data: lv_aggr_rule type REF TOCL_SALV_WD_AGGR_RULE.
DATA: LV_SORT_RULE TYPE REF TOCL_SALV_WD_SORT_RULE. loop at lt_columns into ls_columns.
casels_columns-id.
when 'PRICE'.
*** set editablecolumn***********************************************
* create input field
CREATE OBJECT lc_input
EXPORTING
value_fieldname = 'PRICE'.
* set column for editable
ls_columns-r_column->set_cell_editor( value =lc_input ).
************************************************************************* set column headertext********************************************
lc_column_header = ls_columns-r_column->get_header().
lc_column_header->set_ddic_binding_field(
if_salv_wd_c_column_settings=>ddic_bind_none ).
lc_column_header->set_text( '價格' ).
************************************************************************* set headericon***************************************************
* GET IMAGE SOURCE FROM TABLE WDG_UR_WEBICONT.
lc_column_header->SET_IMAGE_SOURCE( '~Icon/Approve').
lc_column_header->SET_IMAGE_FIRST( abap_true).
************************************************************************* SET COLUMNPOSITION.**********************************************
ls_columns-r_column->SET_POSITION( 5 ).
************************************************************************* set columncolor**************************************************
ls_columns-r_column->SET_CELL_DESIGN( '02' ).*** SETTOTAL********************************************************** for PRICE aggregate field
CALL METHODLR_CONFIG->IF_SALV_WD_FIELD_SETTINGS~GET_FIELD
EXPORTING
FIELDNAME = 'PRICE'
RECEIVING
VALUE= lc_field.
* create aggregate rule as total
CALL METHODlc_field->IF_SALV_WD_AGGR~CREATE_AGGR_RULE
EXPORTING
AGGREGATION_TYPE =IF_SALV_WD_C_AGGREGATION=>AGGRTYPE_TOTAL
RECEIVING
value= lv_aggr_rule.
**********************************************************************WHEN 'CURRENCY'.
*** set SORT COLUMN
* for CURRENCY SORT field
CALL METHODLR_CONFIG->IF_SALV_WD_FIELD_SETTINGS~GET_FIELD
EXPORTING
FIELDNAME = 'CURRENCY'
RECEIVING
VALUE= lc_field.
* create sort rule
CALL METHODlc_field->IF_SALV_WD_SORT~CREATE_SORT_RULE
EXPORTING
SORT_ORDER= IF_SALV_WD_C_SORT=>SORT_ORDER_ASCENDING
GROUP_AGGREGATION = ABAP_TRUE
RECEIVING
value= lv_sort_rule.
**********************************************************************

WHEN 'CARRID'.
*** set editable column
* create input field
CREATE OBJECT lc_input
EXPORTING
value_fieldname = 'CARRID'.
* set column for editable
ls_columns-r_column->set_cell_editor( value =lc_input ).
*** set column header text
lc_column_header = ls_columns-r_column->get_header().
lc_column_header->set_ddic_binding_field(
if_salv_wd_c_column_settings=>ddic_bind_none ).
lc_column_header->set_text( '航班ID' ).
* SET COLUMN POSITION.
ls_columns-r_column->SET_POSITION( 5 ).
when 'MANDT'.
*** DELETE/HIDECOLUMN************************************************
lr_config->IF_SALV_WD_COLUMN_SETTINGS~delete_column('MANDT' ).
*ls_columns-r_column->set_visible( '01' ).
*ls_columns-r_column->set_visible( '02' ).
**********************************************************************
WHEN OTHERS.
ENDCASE.
ENDLOOP.**************************************
* Set standard function
**************************************
* (dis)allow pdf exporter and function
lr_config->IF_SALV_WD_STD_FUNCTIONS~SET_PDF_ALLOWED(ABAP_FALSE ).
* (dis)allow calculation
lr_config->IF_SALV_WD_STD_FUNCTIONS~SET_AGGREGATION_ALLOWED(ABAP_TRUE ).
* (dis)allow export excel
lr_config->IF_SALV_WD_STD_FUNCTIONS~SET_EXPORT_ALLOWED(ABAP_FALSE ).
* (dis)allow show graphic
lr_config->IF_SALV_WD_STD_FUNCTIONS~SET_GRAPHIC_ALLOWED(ABAP_TRUE ).
* display as hierarchy (In tab DISPLAY)
lr_config->IF_SALV_WD_STD_FUNCTIONS~SET_HIERARCHY_ALLOWED(ABAP_TRUE ).
* Set display count number
lr_config->IF_SALV_WD_STD_FUNCTIONS~SET_COUNT_RECORDS_ALLOWED(ABAP_TRUE ).
* set show UNDO function
lr_config->IF_SALV_WD_STD_FUNCTIONS~SET_EDIT_UNDO_ALLOWED(ABAP_TRUE ). endmethod.
愛華網

