Presentation is loading. Please wait.

Presentation is loading. Please wait.

웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며 샘플 프로그램은 HR 조직도를 사용하여 제작되었다.

Similar presentations


Presentation on theme: "웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며 샘플 프로그램은 HR 조직도를 사용하여 제작되었다."— Presentation transcript:

1 웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 :

2 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며 샘플 프로그램은 HR 조직도를 사용하여 제작되었다.

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

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

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

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

7 RECURSION NODE 생성 NODE 에 오른쪽 버튼을 클릭하여 위와 같은 방법으로 RECURSION NODE 를 생성 NODE 이름은 NODE_CONTENT 로 해주고 REPEATED NODE 는 오른쪽의 SELECT 버튼을 클릭하여 ROOT 하위에 있는 NODE 를 선택하여줌

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

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

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

11 TREE NODE TYPE 생성 TREE ELEMENT 에 오른쪽 버튼을 클릭하여 NODE TYPE 을 INSERT 하여 준다. 이름은 NODE 로 하고 TYPE 은 TREENODETYPE 으로 해준다. DATASOURCE 의 오른쪽 버튼을 클릭하여 NODE 를 선택하여 준다. HASCHILDREN 의 오른쪽 버튼을 클릭하여 HAS_CHILDREN 을 선택하여 준다. TEXT 의 오른쪽 버튼을 클릭하여 TEXT 를 선택하여 준다. ONLOADCHILDREN 의 오른쪽 생성 버튼을 클릭하여 ON_LOAD_CHILDREN 이라는 이벤트 핸들 러 메소드를 생성하여 준다.

12 ATTRIBUTE 생성 View 의 attribute 탭에서 위와 같은 attribute 삽입

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

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

15 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 ' '. 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 = ' '.

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

17 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.

18 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' ).

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

20 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' ).

21 실행결과


Download ppt "웹딘프로 다이나믹 트리 작성인 : 김홍파 작성일 : 2008.02.11. 개요 본 문서는 웹딘프로에서 어떻게 다이나믹 트리를 구현하는가를 설명 하며 샘플 프로그램은 HR 조직도를 사용하여 제작되었다."

Similar presentations


Ads by Google