이글은 아래 링크의 원본 글에 대한 한글 번역 입니다

https://sites.google.com/site/vivekgoenka/web-dynpro-abap/sample-codes

 

Sample Codes

1. 접속한 컴퓨터의 IP 주소를 가져오는 방법
   DATA lo_request TYPE REF TO if_http_request.
   DATA lv_ip_address TYPE string.

   lo_request = wdr_task=>request.

   CALL METHOD lo_request->get_header_field
     EXPORTING
       name  = '~remote_addr'
     RECEIVING
       value = lv_ip_address.
2. URL 파라미터를 하나씩 읽는 방법
   DATA lv_para_value TYPE string.

   CALL METHOD wdr_task=>client_window->if_wdr_client_info_object~get_parameter
     EXPORTING
       name  = 'ParaName'
     RECEIVING
       value = lv_para_value.
[주의: 파라미터 이름은 대소문자를 구분하지 않지만 값은 대소문자 구분함.]
                            또는
 lv_para_value = CL_WD_RUNTIME_SERVICES=>GET_URL_PARAMETER( 'ParaName').

3. URL 파라미터 전체를 인터널 테이블로 읽는 방법


   DATA lt_parameters TYPE wdr_name_value_list_sorted.
   lt_parameters = wdr_task=>client_window->if_wdr_client_info_object~parameters.


4. HTTP 헤더 필드 전체를 인터널 테이블로 읽는 방법


   DATA lo_request TYPE REF TO if_http_request.
   DATA lt_param TYPE tihttpnvp.

   lo_request = wdr_task=>request.

   CALL METHOD lo_request->get_header_fields
     CHANGING
       fields = lt_param.



5. 파일 다운로드 하는 방법


   CL_WD_RUNTIME_SERVICES=>ATTACH_FILE_TO_RESPONSE



6. iView 에서 포탈 접속 ID를 웹딘프로아밥 어플리케이션에 전달하는 방법


  아래 그림처럼 포털 접속 ID는 파라미터 "iv_user"로 전달 됩니다.
  이 스크린샷은 포탈에서 웹딘프로아밥 iView 설정창 입니다.



7. 액션/이벤트 핸들러 메소드에 파라미터 전달하는 방법


이벤트 핸들러 메소드에서 파라미터를 동일한 이름으로 만들어 놓습니다. 아래 예제 코드는 입력 파라미터 MYID를 타입 string으로 만드는 예제입니다. 

아래 코드를 wddomodifyview( ) 메소드에 넣습니다.


METHOD wddomodifyview .
   DATA:
    lt_parameters LIKE if_wd_event=>parameters,
    parameter     LIKE LINE OF lt_parameters,
    lr_link1      TYPE REF TO cl_wd_link_to_action,
    lr_link2      TYPE REF TO cl_wd_link_to_action.

   CHECK first_time = abap_true.

* LINK_IMG1 & LINK_IMG2 are the UI element ID
   lr_link1 ?= view->get_element( 'LINK_IMG1' ).
   lr_link2 ?= view->get_element( 'LINK_IMG2' ).

   parameter-name  = 'MYID'.
   parameter-value = 1.
   parameter-type  = 'g'. " g = String
   INSERT parameter INTO TABLE lt_parameters.
   lr_link1->map_on_action( lt_parameters ).

   CLEAR lt_parameters[].

   parameter-name  = 'MYID'.
   parameter-value = 2.
   parameter-type  = 'g'. " g = String
   INSERT parameter INTO TABLE lt_parameters.
   lr_link2->map_on_action( lt_parameters ).

ENDMETHOD.
  • 인풋필드의 "State" 속성을 "required"로 지정합니다.
  • 아래 코드를 체크를 실행할 메소드에 넣습니다.
   DATA: lt_msg TYPE cl_wd_dynamic_tool=>t_check_result_message_tab,
         lo_view_controller TYPE REF TO if_wd_view_controller.

   lo_view_controller ?= wd_this->wd_get_api( ).
   cl_wd_dynamic_tool=>check_mandatory_attr_on_view(
     EXPORTING
       view_controller = lo_view_controller
       display_messages = abap_true
     IMPORTING
       messages = lt_msg
   ).

9. 웹딘프로 어플리케이션의 프로토콜, 호스트, 포트 정보 얻는 방법


   DATA lv_protocol TYPE string.
   DATA lv_host TYPE string.
   DATA lv_port TYPE string.

  CALL METHOD cl_http_server=>get_location
     EXPORTING
       server       = cl_wdr_task=>server
     IMPORTING
       host         = lv_host
       port         = lv_port
       out_protocol = lv_protocol.






10. 웹브라우저 창을 닫는 방법


선행조건
  • 윈도우에 "Exit" 타입의 아웃바운드 플러그에 파라미터 "URL"을 string 타입으로 만듭니다.
  • 윈도우는 "Properties" 탭의 "Used Controllers/Components"에 추가 합니다.
 
  DATA cached_response TYPE REF TO if_http_response.
  DATA lv_str_java_script TYPE string.
  DATA lv_file_content TYPE xstring.
  DATA lv_host TYPE string.
  DATA lv_port TYPE string.
  DATA lv_protocol TYPE string.
  DATA url TYPE string.
  DATA guid TYPE guid_32.

  lv_str_java_script = ''.

  CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
    EXPORTING
      text   = lv_str_java_script
    IMPORTING
      buffer = lv_file_content.

  CREATE OBJECT cached_response
    TYPE
      cl_http_response
    EXPORTING
      add_c_msg        = 1.

  cached_response->set_data( lv_file_content ).

  cached_response->set_header_field( name  = if_http_header_fields=>content_type
                                     value = 'text/html' ).

  cached_response->set_status( code = 200 reason = 'OK' ).
***Set the Cache Timeout - 60 seconds
  cached_response->server_cache_expire_rel( expires_rel = 60 ).

  CALL METHOD cl_http_server=>get_location
    EXPORTING
      server       = cl_wdr_task=>server
    IMPORTING
      host         = lv_host
      port         = lv_port
      out_protocol = lv_protocol.



***Using Guid as random filename

  CALL FUNCTION 'GUID_CREATE'
    IMPORTING
      ev_guid_32 = guid.


  CONCATENATE
    lv_protocol '://' lv_host ':' lv_port '/sap/bc/webdynpro/sap/'
    guid '.html'
    INTO url.

  cl_http_server=>server_cache_upload( url      = url
                                       response = cached_response ).

  DATA lo_win TYPE REF TO ig_ .
  lo_win = wd_this->get__ctr( ).

  lo_win->fire__plg(
    url = url     " string
  ).
[주의: 위 코드는 파이어폭스에서 동작하지 않습니다. 파이어폭스는 웹브라우저를 닫는 스크립트를 지원하지 않습니다]

 

이글은 아래 링크의 원본 글에 대한 한글 번역 입니다

https://sites.google.com/site/vivekgoenka/web-dynpro-abap/sample-codes

+ Recent posts