1. 程式人生 > 其它 >WDA基礎八:ROWREPEATER的使用

WDA基礎八:ROWREPEATER的使用

元件:Row-Repeater

1.新建WDA程式並激活  ZLYWDA02

2.進入VIEW,建立CONTEXT:

表:0..n

選擇行:單選

初始化選擇行

 

3.建立迴圈節點  右鍵HCONTEXT建立迴圈節點HCONTEXT_REC

   給HCONTEXT新增屬性:

TEXT:STRING       顯示

CARRID:STRING   第一層

CONNID:STRING   第二層

 

VIEW的INIT中初始化節點:

METHOD WDDOINIT .
  TYPES:
    BEGIN OF TYP_FLIGHT,
      CARRID TYPE STRING,
      CONNID TYPE STRING,
      NAME   TYPE STRING,
    END OF TYP_FLIGHT.

  DATA:
    LS_FLIGHT TYPE TYP_FLIGHT,
    LT_FLIGHT TYPE STANDARD TABLE OF TYP_FLIGHT.


* set the internal table
  CLEAR:LS_FLIGHT.
  LS_FLIGHT-CARRID = 'CA-01'.
  LS_FLIGHT-CONNID = 'CA-01-CO-01'.
  LS_FLIGHT-NAME = 'CA-01-CO-01:item1'.
  APPEND LS_FLIGHT TO LT_FLIGHT.
  CLEAR:LS_FLIGHT.
  LS_FLIGHT-CARRID = 'CA-01'.
  LS_FLIGHT-CONNID = 'CA-01-CO-01'.
  LS_FLIGHT-NAME = 'CA-01-CO-01:item2'.
  APPEND LS_FLIGHT TO LT_FLIGHT.
  CLEAR:LS_FLIGHT.
  LS_FLIGHT-CARRID = 'CA-01'.
  LS_FLIGHT-CONNID = 'CA-01-CO-01'.
  LS_FLIGHT-NAME = 'CA-01-CO-01:item3'.
  APPEND LS_FLIGHT TO LT_FLIGHT.
  CLEAR:LS_FLIGHT.
  LS_FLIGHT-CARRID = 'CA-01'.
  LS_FLIGHT-CONNID = 'CA-01-CO-02'.
  LS_FLIGHT-NAME = 'CA-01-CO-02:item1'.
  APPEND LS_FLIGHT TO LT_FLIGHT.
  CLEAR:LS_FLIGHT.
  LS_FLIGHT-CARRID = 'CA-01'.
  LS_FLIGHT-CONNID = 'CA-01-CO-03'.
  LS_FLIGHT-NAME = 'CA-01-CO-03:item1'.
  APPEND LS_FLIGHT TO LT_FLIGHT.
  CLEAR:LS_FLIGHT.
  LS_FLIGHT-CARRID = 'CA-02'.
  LS_FLIGHT-CONNID = 'CA-02-CO-01'.
  LS_FLIGHT-NAME = 'CA-02-CO-01:item1'.
  APPEND LS_FLIGHT TO LT_FLIGHT.
  CLEAR:LS_FLIGHT.
  LS_FLIGHT-CARRID = 'CA-03'.
  LS_FLIGHT-CONNID = 'CA-03-CO-01'.
  LS_FLIGHT-NAME = 'CA-03-CO-01:item1'.
  APPEND LS_FLIGHT TO LT_FLIGHT.
  CLEAR:LS_FLIGHT.
  LS_FLIGHT-CARRID = 'CA-03'.
  LS_FLIGHT-CONNID = 'CA-03-CO-02'.
  LS_FLIGHT-NAME = 'CA-03-CO-02:item1'.
  APPEND LS_FLIGHT TO LT_FLIGHT.
  CLEAR:LS_FLIGHT.
  LS_FLIGHT-CARRID = 'CA-04'.
  LS_FLIGHT-CONNID = 'CA-04-CO-01'.
  LS_FLIGHT-NAME = 'CA-04-CO-01:item1'.
  APPEND LS_FLIGHT TO LT_FLIGHT.
  SORT LT_FLIGHT BY CARRID CONNID NAME.
* set the context
  DATA:
    LO_NODE      TYPE REF TO IF_WD_CONTEXT_NODE,
    LO_ELEM      TYPE REF TO IF_WD_CONTEXT_ELEMENT,
    LO_NODE_REC  TYPE REF TO IF_WD_CONTEXT_NODE,
    LO_ELEM2     TYPE REF TO IF_WD_CONTEXT_ELEMENT,
    LO_NODE_REC2 TYPE REF TO IF_WD_CONTEXT_NODE,
    LS_CONTEXT   TYPE WD_THIS->ELEMENT_HCONTEXT,
    LW_CARRID    TYPE STRING,
    LW_CONNID    TYPE STRING.
  LOOP AT LT_FLIGHT INTO LS_FLIGHT.
* new Carrid, 1st level.
*    IF LW_CARRID <> LS_FLIGHT-CARRID.
    IF LW_CARRID <> LS_FLIGHT-CONNID.
      LW_CARRID = LS_FLIGHT-CONNID.
      CONCATENATE '1st level:'
      LS_FLIGHT-CARRID
      INTO LS_CONTEXT-TEXT.
      LS_CONTEXT-CARRID = LS_FLIGHT-CARRID.
      LS_CONTEXT-CONNID = LS_FLIGHT-CONNID.
* node
      LO_NODE = WD_CONTEXT->GET_CHILD_NODE( NAME = 'HCONTEXT' ).
* bind structure
      LO_ELEM = LO_NODE->BIND_STRUCTURE( NEW_ITEM = LS_CONTEXT
      SET_INITIAL_ELEMENTS = ABAP_FALSE ).
* create dependent node for recurion
      LO_NODE_REC = LO_ELEM->GET_CHILD_NODE( 'HCONTEXT_REC' ).
    ENDIF.
* for the 2rd level
    CONCATENATE '2rd level:'
    LS_FLIGHT-NAME
    INTO LS_CONTEXT-TEXT.
    LS_CONTEXT-CARRID = LS_FLIGHT-CARRID.
    LS_CONTEXT-CONNID = LS_FLIGHT-CONNID.
* bind
    LO_NODE_REC->BIND_STRUCTURE( NEW_ITEM = LS_CONTEXT
    SET_INITIAL_ELEMENTS = ABAP_FALSE ).
  ENDLOOP.
ENDMETHOD.

 

效果:

搜尋

複製