http://wiki.sdn.sap.com/wiki/display/WDABAP/Webdynpro+Applications+Integration

if_wd_view_controller 의 prepare_dynamic_navigation 메소드를 활용하여 다른 웹딘프로아밥 화면을 포함시킬 수 있습니다.

실행화면

2개의 다른 프로그램이 목록에 나타납니다.

그중 하나를 선택하면 해당 프로그램 화면이 아래 Display Application 영역에 포함되어 나타납니다.

 

웹딘프로아밥 Application Parameters 전체 세팅 WD_GLOBAL_SETTING (http://boy0.tistory.com/18)
와 같은 내용에 업그레이드 된 7.02 기준의 문서입니다.

http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/9010b5e3-75b3-2e10-1cb1-c5c8a8b82672
7.02에서 변화가 보이네요.
전체 세팅하는 프로그램도 WD_GLOBAL_SETTING 에서 WD_GLOBAL_PARAMETERS 으로 변경되었습니다.

 

구글 검색하면 많이 나오는 내용이긴 합니다만, 웹딘프로아밥에서 필수값 체크하는 방법입니다.

http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/207e4467-227e-2e10-6fbb-e3a562038296

링크에 나온 내용처럼 wdDoBeforeAction에 넣어도 되고,
그냥 필요할때 이벤트처리 메소드에 넣어도 무방합니다.


cl_wd_dynamic_tool=>check_mandatory_attr_on_view( wd_this->wd_get_api( ) ).

중요한 키워드는 사실 위 한줄이죠.
 

개념 이해:
NET312 pdf 파일의 22~27 (내부페이지 14~19)
Dynamically changing the UI 부분을 읽는다.

실습 예제:
Creating UI Elements Dynamically in Abap Webdynpro Application
http://wiki.sdn.sap.com/wiki/display/WDABAP/Creating+UI+Elements+Dynamically+in+Abap+Webdynpro+Application




 

아래 첨부파일은 SAPLINK 프로그램을 이용하여 Import Slinkee 하면 볼 수 있습니다.

WDYA_YDBLIM_TEST_POPUP.zip
다운로드

 

 

 


애플리케이션은 두개 입니다.

1. 본 창닫기 테스트


2. 내부 팝업 닫기 테스트



본 창 닫기를 위한 작업입니다. (내부 팝업엔 필요없음)
윈도우에 아웃바운드 플러그를 하나 만들고 타입은 Exit 으로하고 파라미터 CLOSE_WINDOW를 추가합니다.




닫는 로직은 이렇습니다.

METHOD close_popup .
* 하나의 메소드로 통합된 창닫기.
* 이 로직으로 내부 팝업, 본 창 무엇으로 사용되더라도 닫을 수 있다.

  DATA lo_api_view TYPE REF TO if_wd_view_controller.
   lo_api_view = wd_this->wd_get_api( ).

  DATA lo_api_window TYPE REF TO if_wd_window_controller.
   lo_api_window = lo_api_view->get_embedding_window_ctlr( ).

* lo_window 는 내부 팝업인 경우에 값이 있다.
  DATA: lo_window TYPE REF TO if_wd_window.
   lo_window = lo_api_window->get_window( ).

  IF lo_window IS BOUND.
* 내부 팝업 닫기
    lo_window->close( ).
  ELSE.
* 본 창은 lo_window가 없으므로 윈도우의 outbound plug를 호출하여 창을 닫는다.
* wd_this->fire_close_plg( close_window = abap_true ).

    DATA: lt_param TYPE wdr_event_parameter_list,
     ls_param LIKE LINE OF lt_param.

    ls_param-name = 'CLOSE_WINDOW'.
    GET REFERENCE OF abap_true INTO ls_param-value.
    INSERT ls_param INTO TABLE lt_param.

    lo_api_window->fire_plug(
      EXPORTING
        parameters = lt_param " Parameter of Outbound Plug
         plug_name = 'CLOSE' " Web Dynpro: Runtime Structure of In/Outbound Plugs
    ).
  ENDIF.

ENDMETHOD.

웹으로만 화면을 구성하고 있는데 SAP GUI 트랜젝션을 호출해야만 하는 경우
이방법을 사용하면 빠르게 대처할 수 있습니다. (그럭저럭 쓸만합니다)
SAP GUI 화면을 웹에서 볼 수 있는 Web GUI가 있습니다.

Web GUI의 URL 구성은 아래와 같습니다.

 http://<host>:<port>/sap/bc/gui/sap/its/webgui/?~transaction=<T-Code>

아래의 코드를 호출하면 위처럼 URL을 구성해줍니다.

DATA: lv_url TYPE string.
cl_its_runtime=>get_url(
  EXPORTING
    in_transaction    = 'SE80'
  IMPORTING
    out_abs_url       = lv_url
).

현재 접속된 서버(AP)를 기준으로 URL이 생성되기 때문에
여러 AP를 도메인 등록 없이 운영하고 Load Balancer만 도메인 등록한 경우 문제가 있습니다.
이럴때는 cl_its_runtime=>get_url 메소드의 파라미터 in_host, in_port 를 L4에 맞게 추가로 주면 됩니다.



1장의 그림으로 설명합니다.

웹딘프로의 UI Element 속성들 대부분은 바인딩이 가능한데,
바인딩을 통해 값을 조절하면 화면이 변경됩니다.
visible은 원칙적으로 WDUI_VISIBILITY 타입으로 해야 하지만 WDY_BOOLEAN으로도 할 수 있도록 봐줍니다 :)


 


UI Element를 자세히 살펴 볼수 있는 몇가지를 방법을 알려드리겠습니다.

1. 데모 프로그램
서버에 접속하여 SE80으로 이동후
웹딘프로 아이디 WDR_TEST_UI_ELEMENTS 를 찾습니다.

application을 실행합니다.

모든 UI Elemet를 한 화면에서 속성 변경해 가며 테스트 할 수 있는 데모 입니다.




2. NET312: UI Development with Web Dynpro for ABAP
정식 교육교재입니다. pdf 파일은 각자 알아서 구하시면 됩니다.


3. WDA UI Elements Reference (공식 도움말 페이지)
링크: http://help.sap.com/saphelp_nw2004s/helpdata/EN/cd/422b035f01914e80251a660e39ab14/frameset.htm




4. WDJ UI Elements Reference (웹딘프로 자바 도움말 페이지이지만 UI는 거의 같기 때문에 참고가 됩니다)
링크: http://help.sap.com/saphelp_nw04/helpdata/en/8f/aa63688343bd40aafc537971aee068/frameset.htm


아래의 예는 MARA-MTART 타입으로 웹딘프로아밥 드랍다운 구성하는 예입니다.

DATA: lo_nd_search_input TYPE REF TO if_wd_context_node,
      lo_node_info TYPE REF TO if_wd_context_node_info,
      ls_shlp_descr TYPE shlp_descr,
      lt_value_set TYPE TABLE OF wdr_context_attr_value,
      ls_value_set TYPE wdr_context_attr_value.

lo_nd_search_input = wd_context->get_child_node( name = wd_this->wdctx_search_input ).
lo_node_info = lo_nd_search_input->get_node_info( ).

CLEAR: ls_shlp_descr, lt_value_set.
CALL FUNCTION 'DPWTY_SEARCH_HELP'
  EXPORTING
    iv_db_tabname   = 'MARA'
    iv_db_fieldname = 'MTART'
    is_shlp         = ls_shlp_descr
    iv_drop_down    = 'X'
  IMPORTING
    et_values       = lt_value_set.

CLEAR: ls_value_set.
INSERT ls_value_set INTO lt_value_set INDEX 1.

lo_node_info->set_attribute_value_set(
   EXPORTING
     name      = 'MTART'
     value_set = lt_value_set
 ).


 

타입마다 다른 로직이 아니라서 좋은 방법입니다.


+ Recent posts