이글은 아래 링크의 원본 글에 대한 한글 번역 입니다
https://scn.sap.com/community/web-dynpro-abap/blog/2013/12/13/step-by-step-to-create-ui-elements-and-context-node-attribute-in-the-runtime

 

 

 

Jerry Wang

웹딘프로아밥 실행중 동적으로 UI 엘리먼트와 컨텍스트 노트 어트리뷰트 만드는 방법

Posted by Jerry Wang in Web Dynpro ABAP on Dec 13, 2013 11:52:04 AM

clipboard1.png

 

1. 빈 group 을 하나 만듭니다. 동적으로 생성할 UI 엘리먼트를 담아둘 컨테이너입니다. layout은 RowLayout으로 지정합니다.

clipboard2.png

 

2. 빈 컨텍스트 노드를 하나 만듭니다. 이것 역시 동적으로 생성할 컨텍스트 어트리뷰트를 담아둘 컨테이너입니다.

clipboard3.png

 

3. 메소드 WDDOMODIFYVIEW 에서는 단지 view 변수를 저장합니다. view 변수는 나중에 버튼 클릭시 UI 엘리먼트를 조작하기 위해서 필요합니다.

 

method WDDOMODIFYVIEW .
  CHECK first_time = 'X'.
  wd_this->mr_view = view.
endmethod.

 

 

4. 뷰에 새 메소드를 하나 만듭니다.

3번째 줄에서 컨텍스트 노드 DYNAMIC에 대한 참조변수를 가져왔습니다. 노드 정보 오브젝트를 통해서 노드 어트리뷰트를 가져옵니다.

버튼을 클릭할때마다 매번 새로운 어트리뷰트를 만들 필요는 없습니다. 어트리뷰트가 이미 만들어져 있다면 만들지 않고 없다면 새로 만들어 줍니다.

clipboard5.png

 

5. Create 버튼에 대한 액션메소드 구현.

중복된 아이디로 UI 엘리먼트를 추가하는 문제를 피하기 위해서 처음에 빈 group 아래의 자식 UI 엘리먼트를 모두 삭제하는 구문이 필요합니다. 삭제하지 않고 중복된 아이디로 생성하면 런타임 에러가 납니다. 다음으로 label과 text view를 생성합니다. layout 값을 적절히 지정하여 각 label이 새로운 줄로 줄바꿈 되도록 합니다.

 

method ONACTIONCREATE .
  CONSTANTS: cv_label TYPE string VALUE 'LABEL',
             cv_field TYPE string VALUE 'FIELD',
             cv_bind_text TYPE string VALUE 'DYNAMIC.VALUE'.
  DATA: lv_count type i,
        lo_container type ref to cl_Wd_uielement_container.
  wd_context->get_attribute( EXPORTING name = 'NUMBER' IMPORTING value = lv_count ).
  CHECK lv_count > 0.
  create_context( lv_count ).
  DATA(lo_root) = wd_this->mr_view->get_element( 'DYNAMICUI' ).
  lo_container ?= lo_root.
  lo_container->remove_all_children( ).
  DO lv_count TIMES.
    data(lv_field_id) = cv_field && sy-index.
    data(lv_label_id) = cv_label && sy-index.
    data(lv_bind_path) = cv_bind_text && sy-index.
    DATA(lo_text_view) = cl_wd_text_view=>new_text_view( id = lv_field_id bind_text = lv_bind_path ).
    DATA(lo_label) = cl_wd_label=>new_label( id = lv_label_id label_for = lo_text_view->id text = lv_label_id ).
    CL_WD_ROW_HEAD_DATA=>new_row_head_data( element = lo_label ).
    cl_wd_row_data=>new_row_data( element = lo_text_view ).
    lo_container->add_child( the_child = lo_label ).
    lo_container->add_child( the_child = lo_text_view ).
  ENDDO.
endmethod.

 

 

 

이글은 아래 링크의 원본 글에 대한 한글 번역 입니다
https://scn.sap.com/community/web-dynpro-abap/blog/2013/12/13/step-by-step-to-create-ui-elements-and-context-node-attribute-in-the-runtime

+ Recent posts