아래 화면처럼 스크린에 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 |