首先在项目引入组件
在视图中点击创建,引入已经使用的组件
在view的layout中绘制ALV container
在ALV Container 中嵌套ALV的TABLE 视图
ALVCONTAINER做好后,打开组件用途中的ALV组件,将全局的TABLE映射到DATA中(拖拽),如果没有数据源,要点击控制器的用法,把全局的CONTAINER引用进来
声明ALV对象
之后是编码
首先在WDDOINIT中初始化ALV,
DATA: LR_SALV_WD_TABLE_USAGE TYPE REF TO IF_WD_COMPONENT_USAGE.
DATA: LR_TABLE_SETTINGS TYPE REF TO IF_SALV_WD_TABLE_SETTINGS.
DATA LR_SALV_WD_STD_FUNCTIONS TYPE REF TO IF_SALV_WD_STD_FUNCTIONS .
DATA: LR_SALV_WD_TABLE TYPE REF TO IWCI_SALV_WD_TABLE.
LR_SALV_WD_TABLE_USAGE = WD_THIS->WD_CPUSE_ALV2( ).
IF LR_SALV_WD_TABLE_USAGE->HAS_ACTIVE_COMPONENT( ) IS INITIAL.
LR_SALV_WD_TABLE_USAGE->CREATE_COMPONENT( ).
ENDIF.
LR_SALV_WD_TABLE = WD_THIS->WD_CPIFC_ALV2( ).
WD_THIS->ALV_CONFIG_TABLE = LR_SALV_WD_TABLE->GET_MODEL( ).
LR_TABLE_SETTINGS ?= WD_THIS->ALV_CONFIG_TABLE.
LR_SALV_WD_STD_FUNCTIONS ?= WD_THIS->ALV_CONFIG_TABLE .
LR_TABLE_SETTINGS->SET_VISIBLE_ROW_COUNT( '10' )."设置可见行
LR_TABLE_SETTINGS->SET_ROW_SELECTABLE( ABAP_TRUE )."设置行选择
LR_TABLE_SETTINGS->SET_WIDTH( '80%' )."设置ALV宽度
LR_TABLE_SETTINGS->SET_EDIT_MODE( IF_SALV_WD_C_TABLE_SETTINGS=>EDIT_MODE )."设置编辑模式
* LR_TABLE_SETTINGS->SET_EDIT_MODE( IF_SALV_WD_C_TABLE_SETTINGS=>EDIT_MODE_STANDARD )."设置不可编辑模式
LR_TABLE_SETTINGS->SET_READ_ONLY( ABAP_FALSE )."设置ALV整体不可编辑
LR_TABLE_SETTINGS->SET_SCROLLABLE_COL_COUNT( '10' )."设置滚动条
LR_TABLE_SETTINGS->SET_ENABLED( ABAP_TRUE ) ."可处理的
LR_TABLE_SETTINGS->SET_EMPTY_TABLE_TEXT( 'Empty' ) ."设置空表时显示的文本
LR_TABLE_SETTINGS->SET_FIXED_TABLE_LAYOUT( ABAP_TRUE ). "使列宽可自动调节
LR_TABLE_SETTINGS->SET_DISPLAY_EMPTY_ROWS( ABAP_FALSE ). "不展示空表
LR_TABLE_SETTINGS->SET_CELL_ACTION_EVENT_ENABLED( ABAP_FALSE ).
LR_SALV_WD_STD_FUNCTIONS->SET_PDF_ALLOWED( ABAP_TRUE ).
LR_SALV_WD_STD_FUNCTIONS->SET_EXPORT_ALLOWED( ABAP_TRUE ).
LR_SALV_WD_STD_FUNCTIONS->SET_FILTER_COMPLEX_ALLOWED( ABAP_TRUE ).
LR_SALV_WD_STD_FUNCTIONS->SET_EXCEL_INPLACE_ALLOWED( ABAP_TRUE ).
LR_SALV_WD_STD_FUNCTIONS->SET_SORT_HEADERCLICK_ALLOWED( ABAP_TRUE ).
LR_SALV_WD_STD_FUNCTIONS->SET_VIEW_LIST_ALLOWED( ABAP_TRUE ).
LR_SALV_WD_STD_FUNCTIONS->SET_SORT_COMPLEX_ALLOWED( ABAP_TRUE ).
*---->ALV COLUMN CONFIGURE
DATA:
LR_COLUMN_SETTINGS TYPE REF TO IF_SALV_WD_COLUMN_SETTINGS,
LR_COLUMN TYPE REF TO CL_SALV_WD_COLUMN,
LR_COLUMN_HEADER TYPE REF TO CL_SALV_WD_COLUMN_HEADER.
LR_COLUMN_SETTINGS ?= WD_THIS->ALV_CONFIG_TABLE.
"排除不显示的字段
* LR_COLUMN = LR_COLUMN_SETTINGS->GET_COLUMN( 'PROCESS_TYPE' ).
* LR_COLUMN->SET_VISIBLE( IF_WDL_CORE=>VISIBILITY_NONE ).
*
* LR_COLUMN = LR_COLUMN_SETTINGS->GET_COLUMN( 'RETAILER_PARTNER' ).
* LR_COLUMN->SET_VISIBLE( IF_WDL_CORE=>VISIBILITY_NONE ).
"设置字段属性(下拉,按钮等)
LR_COLUMN = LR_COLUMN_SETTINGS->GET_COLUMN( 'ID' ).
LR_COLUMN_HEADER = LR_COLUMN->GET_HEADER( ).
LR_COLUMN_HEADER = LR_COLUMN->DELETE_HEADER( ).
LR_COLUMN_HEADER = LR_COLUMN->CREATE_HEADER( ).
* LR_COLUMN_HEADER->SET_TEXT( CL_WD_UTILITIES=>GET_OTR_TEXT_BY_ALIAS( 'ZCRM/SORG' ) ).
LR_COLUMN_HEADER->SET_TEXT( 'TEST_FIELD' ).
设置ALV某一列可编辑
"设置字段属性(下拉,按钮等)
LR_COLUMN = LR_COLUMN_SETTINGS->GET_COLUMN( 'COUNTRYFR' ).
DATA: LR_INPUT_FIELD TYPE REF TO CL_SALV_WD_UIE_INPUT_FIELD.
CREATE OBJECT LR_INPUT_FIELD
EXPORTING
VALUE_FIELDNAME = 'COUNTRYFR'. "此ID要与COLUMN对应,或者用GET_COLUMNS,然后循环处理列属性
LR_COLUMN->SET_CELL_EDITOR( LR_INPUT_FIELD ).
效果: