WDA基础五:ALV组件的使用

说明,因为ALV的功能比TABLE强大,所以在很多时候都习惯性的选择ALV显示。

ALV是WDA的组件,封装好的,和SELECT OPTION一样。所以使用的方法一般就是:引入组件,初始化组件,数据绑定,数据显示。。。

1.

1.1程序组件引入ALV组件:

在程序组件中引入ALV组件,命名为ALV。

1.2视图引入组件中集成的ALV对象

视图Properties页签中引入ALV对象

 

2.初始化ALV

视图method页签中新建方法

将INIT_ALV方法加入到WDDOINIT

INIT_ALV).

INIT_ALV添加初始化代码:

 

METHOD INIT_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_TABLE TYPE REF TO IWCI_SALV_WD_TABLE.
  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.

  LR_SALV_WD_TABLE = WD_THIS->WD_CPIFC_ALV( ).
  WD_THIS->ALV_CONFIG_TABLE = LR_SALV_WD_TABLE->GET_MODEL( ).


  LR_TABLE_SETTINGS ?= 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( '50%' )."设置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_FALSE ).  "使列宽可自动调节
  LR_TABLE_SETTINGS->SET_DISPLAY_EMPTY_ROWS( ABAP_FALSE ).  "不展示空表

*---->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( 'ZRENO' ).
  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 NO.' ).
  "此处使用INPUT_FIELD 是为了展示前面设置的可编辑属性(默认都是text,不可编辑,所以有要编辑的列,需要这里设置一下)
  DATA: LR_INPUT_FIELD TYPE REF TO CL_SALV_WD_UIE_INPUT_FIELD.
  CREATE OBJECT LR_INPUT_FIELD
    EXPORTING
      VALUE_FIELDNAME = 'ZRENO'."此ID要与COLUMN对应,或者用GET_COLUMNS,然后循环处理列属性

  LR_COLUMN->SET_CELL_EDITOR( LR_INPUT_FIELD ).



  "设置ALV按钮排除
  WD_THIS->ALV_CONFIG_TABLE->IF_SALV_WD_FUNCTION_SETTINGS~DELETE_FUNCTION( ID = 'SALV_WD_PDF' ).
  WD_THIS->ALV_CONFIG_TABLE->IF_SALV_WD_FUNCTION_SETTINGS~DELETE_FUNCTION( ID = 'SALV_WD_VIEW_LOAD' ).
  WD_THIS->ALV_CONFIG_TABLE->IF_SALV_WD_FUNCTION_SETTINGS~DELETE_FUNCTION( ID = 'SALV_WD_INPUT_APPEND_ROW' ).
  WD_THIS->ALV_CONFIG_TABLE->IF_SALV_WD_FUNCTION_SETTINGS~DELETE_FUNCTION( ID = 'SALV_WD_INPUT_INSERT_ROW' ).
  WD_THIS->ALV_CONFIG_TABLE->IF_SALV_WD_FUNCTION_SETTINGS~DELETE_FUNCTION( ID = 'SALV_WD_INPUT_DELETE' ).
  WD_THIS->ALV_CONFIG_TABLE->IF_SALV_WD_FUNCTION_SETTINGS~DELETE_FUNCTION( ID = 'SALV_WD_INPUT_CHECK' ).
ENDMETHOD.

 

 

3.COMPONENTCONTROLLER中创建全局节点(之前创建的节点是在视图中,现在ALV需要绑定数据)

与前面的创建相同

 

在ALV组件中绑定数据到ALV

绑定成功后,DATA变成双向箭头

在视图中,绑定ITEM节点到COMPONENTCONTROLLER的节点,同上

(注,如果ALV数据只在单个VIEW里使用可以在VIEW中,将ITEM节点绑定到ALV的DATA节点)

 

4.ALV控制器创建,并在窗口中添加

为了程序效果,这里会将原有的TABLE保留,并将ALV放到TABLE下面

在LAYOUT中创建ViewContainerUIElement容器,放在TABLE后面

 

此时窗口显示

在窗口的ALV上,右键->嵌套视图  如下:

待嵌套的视图,F4:如下图

选择ALV table

 

激活所有对象。右键程序测试

 

转载于:https://www.cnblogs.com/sapSB/p/6781745.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值