웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는...

21
웹웹웹웹 웹웹웹웹 웹웹 작작작 : 작작작 작작작 : 2008.02.11

Upload: ciara-colyer

Post on 02-Apr-2015

234 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

웹딘프로 다이나믹 트리

작성인 : 김홍파 작성일 : 2008.02.11

Page 2: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

개요

• 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를

설명하며 샘플 프로그램은 HR 조직도를 사용하여 제작되었다 .

Page 3: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

구현하고저 하는 TREE

• 웹딘프로에서 구현하려고 하는 HR 조직도

Page 4: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

웹딘프로 컴포넌트 생성

• ZCL_WD_ORG_TREE1 이라는 이름으로 웹딘프로 컴포넌트 생성• ORG_TREE 라는 이름으로 VIEW 생성• VIEW 를 MAIN_WINDOW 에 EMBEDDED 시킨다 . • 웹딘프로 애플리케이션 생성

Page 5: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

ROOT 노드 생성

• VIEW 의 CONTEXT 에 ROOT 라는 이름의 노드 생성• 속성은 빨간색으로 표시된 부분 참조

Page 6: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

NODE NODE 생성

• ROOT NODE 의 하위노드에 NODE 라는 이름의 노드를 생성• 속성은 빨간색으로 표시된 부분 참조

Page 7: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

RECURSION NODE 생성

• NODE 에 오른쪽 버튼을 클릭하여 위와 같은 방법으로 RECURSION NODE 를 생성

• NODE 이름은 NODE_CONTENT 로 해주고 REPEATED NODE 는 오른쪽의 SELECT 버튼을 클릭하여 ROOT 하위에 있는 NODE 를 선택하여줌

Page 8: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

TEXT ATTRIBUTE 생성

• NODE 의 하위에 TEXT 라는 이름의 STRING TYPE ATTRIBUTE 를 생성

Page 9: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

HAS_CHILDREN ATTRIBUTE 생성

• NODE 의 하위에 HAS_CHILDREN 이라는 이름으로 WDY_BOOLEAN TYPE 의 ATTRIBUTE 생성

Page 10: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

TREE UI ELEMENT 생성

• VIEW 의 LAYOUT 에서 TREE 라는 이름의 TREE TYPE ELEMENT 생성 • 빨간색으로 표시된 부분에서 버튼을 클릭하여 ROOT 를 선택하여줌

Page 11: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

TREE NODE TYPE 생성

• TREE ELEMENT 에 오른쪽 버튼을 클릭하여 NODE TYPE 을 INSERT 하여 준다 . 이름은 NODE 로 하고 TYPE 은 TREENODETYPE 으로 해준다 .

• DATASOURCE 의 오른쪽 버튼을 클릭하여 NODE 를 선택하여 준다 .• HASCHILDREN 의 오른쪽 버튼을 클릭하여 HAS_CHILDREN 을 선택하여 준다 .• TEXT 의 오른쪽 버튼을 클릭하여 TEXT 를 선택하여 준다 . • ONLOADCHILDREN 의 오른쪽 생성 버튼을 클릭하여 ON_LOAD_CHILDREN 이라는 이벤트 핸들러

메소드를 생성하여 준다 .

Page 12: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

ATTRIBUTE 생성

• View 의 attribute 탭에서 위와 같은 attribute 삽입

Page 13: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

메소드 생성

• View 의 메소드 탭에서 create_node 라는 메소드와 create_element 라는 메소드를 생성하여 준다 .

Page 14: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

CREATE_NODE 메소드

• CREATE_NODE 메소드를 더블클릭한뒤 위와 같은 파라미터 삽입

Page 15: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

CREATE_NODE 코드 내역

• DATA: lr_cur_node TYPE REF TO if_wd_context_node,• number TYPE i.

• TYPES: BEGIN OF objcd,• sobid TYPE string,• END OF objcd.• DATA: wa TYPE objcd.

• DATA: temp_sobid(8) TYPE c.

• CONSTANTS: root_code(8) TYPE c VALUE '10000000'.

• IF wd_this->is_first = ''.• wd_this->org_code = root_code.• wd_this->is_first = 'X'.• ENDIF.

• lr_cur_node = cur_element->get_child_node( node_name ).

• SELECT sobid FROM hrp1001 INTO wa-sobid• WHERE objid = wd_this->org_code• AND rsign = 'B'• AND relat = '002'• AND plvar = '01'.

• SELECT SINGLE sobid FROM hrp1001 INTO temp_sobid• WHERE objid = wa-sobid• AND rsign = 'B'• AND relat = '002'• AND plvar = '01'.

• IF sy-subrc = 0.• wd_this->is_end = ' '.• ELSE.• wd_this->is_end = 'X'.• ENDIF.• IF wd_this->org_code <> root_code AND wd_this->only_one <> 'X'.• wd_this->initialization = 'X'.• wd_this->only_one = 'X'.• ENDIF.

• create_element(• EXPORTING• cur_level = cur_level• max_level = max_level• cur_node = lr_cur_node• org_code = wa-sobid• node_name = node_name ).

• IF wd_this->initialization = 'X'.• wd_this->initialization = ' ' .• ENDIF.

• ENDSELECT.• wd_this->only_one = ' '.

Page 16: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

CREATE_ELEMENT 메소드

• CREATE_ELEMENT 메소드를 더블클릭한뒤 위와 같은 파라미터 삽입

Page 17: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

CREATE_ELEMENT 코드 내역

• DATA:• new_level TYPE i,• number_str TYPE string,• lr_cur_element TYPE REF TO if_wd_context_element,• node_name_tmp TYPE string,• cur_node1 TYPE REF TO if_wd_context_node,• ORG_TEXT TYPE STRING.

• SELECT SINGLE ORGTX FROM T527X• INTO ORG_TEXT• WHERE ORGEH = ORG_CODE• AND SPRSL = '3'• AND BEGDA <= SY-DATUM• AND ENDDA >= SY-DATUM.

• IF wd_this->initialization = 'X'.• lr_cur_element = cur_node->create_element( ).• lr_cur_element->set_attribute( name = 'TEXT' value = org_TEXT ).• IF wd_this->is_end = ' '.• lr_cur_element->set_attribute( name = 'HAS_CHILDREN' value = abap_true ).• ELSE.• lr_cur_element->set_attribute( name = 'HAS_CHILDREN' value = abap_false ).• ENDIF.

• cur_node->bind_element( new_item = lr_cur_element set_initial_elements = abap_true ).

• new_level = cur_level + 1.• IF new_level <= max_level.• IF node_name = 'NODE'.• CONCATENATE node_name '_CONTENT' INTO node_name_tmp.• ELSE.• node_name_tmp = node_name.• ENDIF.

• create_node(• EXPORTING• cur_level = new_level• max_level = max_level• cur_element = lr_cur_element• node_name = node_name_tmp ).

• ENDIF.• ELSE.

• lr_cur_element = cur_node->create_element( ).• lr_cur_element->set_attribute( name = 'TEXT' value = org_TEXT ).• IF wd_this->is_end = ' '.• lr_cur_element->set_attribute( name = 'HAS_CHILDREN' value = abap_true ).• ELSE.• lr_cur_element->set_attribute( name = 'HAS_CHILDREN' value = abap_false ).• ENDIF.

• cur_node->bind_element( new_item = lr_cur_element set_initial_elements = abap_false ).

• new_level = cur_level + 1.• IF new_level <= max_level.• IF node_name = 'NODE'.• CONCATENATE node_name '_CONTENT' INTO node_name_tmp.• ELSE.• node_name_tmp = node_name.• ENDIF.• create_node(• EXPORTING• cur_level = new_level• max_level = max_level• cur_element = lr_cur_element• node_name = node_name_tmp ).• ENDIF.

• ENDIF.

Page 18: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

WDDOINIT 코드내역

• data:• lr_current_node type ref to if_wd_context_node,• lr_current_element type ref to if_wd_context_element.

• lr_current_node = wd_context->get_child_node( 'ROOT' ).• lr_current_element = lr_current_node->get_lead_selection( ).• create_node(• exporting• cur_level = 1• max_level = 5• cur_element = lr_current_element• node_name = 'NODE' ).

Page 19: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

ONACTIONON_LOAD_CHILDREN

• ONACTIONON_LOAD_CHILDREN 메소드를 더블 클릭하고 위와 같은 파라미터 삽입

Page 20: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

ONACTIONON_LOAD_CHILDREN 코드 내역

• DATA: org_text TYPE string.• context_element->get_attribute(• EXPORTING name = 'TEXT'• IMPORTING value = org_text ).

• SELECT SINGLE orgeh FROM t527x• INTO wd_this->org_code• WHERE orgtx = org_text• AND sprsl = '3'• AND begda <= sy-datum• AND endda >= sy-datum.

• create_node(• EXPORTING• cur_level = 1• max_level = 1• cur_element = context_element• node_name = 'NODE_CONTENT' ).

Page 21: 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며

실행결과