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

 

激活所有對象。右鍵程序測試

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM