CLASS

CL_GUI_HTML_VIEWER

아래 화면처럼 스크린에 HTML 코드로 화면을 출력하고, 이벤트를 사용하는 방법에 대해 알아보겠습니다.

(SAP 참조 패키지: SAPHTML / 참조프로그램: SAPHTML_EVENTS_DEMO)

*참조 프로그램과는 다르게 여기서는 로고와.스크린의 입출력 필드를 사용하지않겠음

 

 

 

 

 

1. 데이터 선언 

DATA:  cl_html TYPE cl_gui_html_viewer,

            cl_con  TYPE cl_gui_custom_container.  

 

CLASS: lcl_event          DEFINITION DEFERRED.

DATA:  event_receiver  TYPE REF TO lcl_event.

 

DATA:   lt_event  TYPE cntl_simple_events,

            ls_event  TYPE cntl_simple_event.

 

DATA:  wa_html      TYPE w3html,

           html_table    TYPE  cnht_w3html_table.

 

DATA:  doc_url(80).

 

CALL SCREEN 100.    "스크린에 컨테이너 이름 'HTML_CON' 으로 생성함

 

 

2. 이벤트 생성

------------------------------------------------------------------------------------------------------------------------

CLASS  lcl_event    DEFINITION. 

PUBLIC SECTION.

  METHODS: on_sapevent FOR EVENT sapevent OF cl_gui_html_viewer

                                           IMPORTING action frame getdata postdata query_table.

ENDCLASS.

------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------

CLASS  lcl_event    IMPLEMENTATION

 

**주로 action 파라미터를 사용함.

   action 은 html 코드에 sapevent로 설정된 값이 들어온다.

   smw0- SAPHTML_EVENTS_DEMO_HOME 에서 찾아보면 'CLICK_ON_ME' 라는 

   이벤트가 존재하고 프로그램실행시 화면에 'Click on me to send an event!'  를

   선택하면 action 파라미터에  CLICK_ON_ME 가 입력된다.

 

CASE action.

   WHEN 'CLICK_ON_ME'.

 **여기서 HTML 값를 새로 변경하거나, 스크린 입출력, ALV 변경 등등과 관련해서

    사용할수 있다. (SCREEN의 USER_COMMAND 처럼)

 

ENDCLASS.

------------------------------------------------------------------------------------------------------------------------

 

 

3. 오브젝트 생성 & 이벤트 설정

------------------------------------------------------------------------------------------------------------------------

MODULE status_0100 OUTPUT.

 

SET PF-STATUS '0100'.

 

IF cl_html IS INITIAL.

  CREATE OBJECT cl_con

  EXPORTING

    container_name = 'HTML_CON'.

 

CREATE OBJECT cl_html

  EXPORTING

         parent   = cl_con.

 

ls_event-eventid        =  cl_html->m_id_sapevetn.

ls_event-appl_event  = 'X'.

APPEND ls_event TO lt_event.

 

CALL METHOD cl_html->set_registered_events

    EXPORTING

         events   =  lt_event. 

 

CREATE OBJECT event_receiver.

 

SET HANDLER event_receiver->on_sapevent

                    FOR cl_html.

 

 

4. html 영역에 출력할 데이터(html) 설정

 

4-1) SMW0에 등록해놓은 HTML 코드를 사용할 수 있음.

 

*맨 위의 사진은 아래 doc를 사용한것임

CALL METHOD cl_html->load_html_document

    EXPORTING

         document_id     =   'SAPHTML_EVENTS_DEMO_HOME'

    IMPORTING   

       assigned_url        =   doc_url

    IMPORTING  

       OTHERS             = 1.

 

4-2) 직접 HTML 코드를 입력해 사용할 수 있음.

 **프로그램 SAPHTML_USE_DEFAULT_CHARSET 참조

 

CALL METHOD cl_html->load_data

    IMPORTING   

       assigned_url        =   doc_url

    CHANGING

       data_table          =   html_table.

 

* 이 method 를 사용하지 않으면 화면에 출력되지 않는다.

CALL METHOD cl_html->show_url

    EXPORTING

                url         =   doc_url

 

ELSE.

CALL METHOD cl_html->do_refresh.

ENDIF.

 

ENDMODULE.

------------------------------------------------------------------------------------------------------------------------

 

 

'CLASS' 카테고리의 다른 글

LONG_TEXT [CL_GUI_TEXTEDIT]저장/조회/삭제 기능  (0) 2024.07.29
CL_GUI_TEXTEDIT 사용하기  (0) 2023.03.23