ALV 위에 리포트 제목 · 조회 조건 요약 · 회사 로고 같은 헤더 영역을 띄우고 싶을 때 쓰는 이벤트가 TOP-OF-PAGE 입니다. 그리드 자체가 출력되기 전에 한 번 발생하는 이벤트라, 여기서 텍스트 라인이나 도표를 그려 두면 ALV 가 그 아래에 깔립니다.
구현 방법은 두 갈래입니다. (1) REUSE_ALV 클래식 — SLIS 타입 + 콜백 FORM 기반, 가장 간단하고 짧은 코드로 끝납니다. (2) OO 방식 — CL_DD_DOCUMENT + list_processing_events, CL_GUI_ALV_GRID 와 자연스럽게 결합되고 스타일 자유도가 훨씬 높습니다.
이 글에서는 두 패턴을 모두 다룹니다. REUSE_ALV 로 가장 빠른 헤더부터 그려 보고, 그다음 OO 방식으로 색·굵기·테이블 형태의 헤더를 짜 봅니다. 데이터는 SAP 스탠다드 학습 환경 테이블 SFLIGHT 기준.
핵심 — REUSE_ALV vs OO 방식
| 구분 | REUSE_ALV 클래식 | OO 방식 (CL_DD_DOCUMENT) |
|---|---|---|
| 그리드 출력 | REUSE_ALV_GRID_DISPLAY FM |
CL_GUI_ALV_GRID + Container |
| 헤더 데이터 타입 | SLIS_T_LISTHEADER (TYP·KEY·INFO) |
자유 구조체 + DD Document 메소드 호출 |
| 이벤트 등록 | SLIS_T_EVENT + FORM 콜백 |
SET HANDLER + list_processing_events |
| 출력 메소드 | REUSE_ALV_COMMENTARY_WRITE |
add_table·add_text·display_document |
| 스타일 자유도 | 3가지 라인 타입 (H·S·A) + 로고 | 색·굵기·크기·테이블 형태 자유 |
| 적합 시나리오 | 간단 조회 리포트 / 출력만 필요 | 편집 ALV / Docking + Splitter 결합 / 색상 강조 |
두 방식 모두 그리드가 그려지기 직전 TOP-OF-PAGE 이벤트가 발생 → 거기에 미리 만든 헤더 텍스트를 출력 → ALV 가 그 아래 그려지는 흐름은 같습니다. 차이는 "헤더를 어떤 데이터 구조에 담고 어떤 메소드로 출력하느냐"입니다.
1단계 — REUSE_ALV 클래식 패턴
가장 짧은 코드로 헤더가 붙은 ALV 를 만들 수 있는 방식입니다. SLIS 그룹에 정의된 스탠다드 타입 두 개(SLIS_T_LISTHEADER·SLIS_T_EVENT) 만 알면 됩니다.
헤더 라인 타입
SLIS_T_LISTHEADER 의 각 행은 TYP·KEY·INFO 세 컬럼으로 구성되고, TYP 값 한 글자로 출력 형식이 달라집니다.
| TYP | 의미 | 출력 형태 |
|---|---|---|
| H | Header | 제목 (큰 글씨·굵게) — INFO 만 사용 |
| S | Selection | "KEY : INFO" 형태 (라벨 + 값) |
| A | Action | 강조 라인 (조회 시각 · 사용자명 등) — INFO 만 사용 |
이벤트 등록 + 출력 FORM
SLIS_T_EVENT 테이블에 name = 'TOP_OF_PAGE' · form = 'TOP_LINE' 한 줄을 넣어 REUSE_ALV_GRID_DISPLAY 의 IT_EVENTS 인자로 넘기면, 그리드가 그려지기 직전 자기 프로그램의 FORM TOP_LINE 을 호출해 줍니다. 거기서 REUSE_ALV_COMMENTARY_WRITE 로 헤더 테이블을 출력합니다.
DATA : it_header TYPE slis_t_listheader,
lv_comment LIKE LINE OF it_header,
it_flight LIKE TABLE OF sflight,
it_event TYPE slis_t_event,
lv_event LIKE LINE OF it_event.
START-OF-SELECTION.
* H : Header 라인 (제목)
lv_comment-typ = 'H'.
lv_comment-info = '항공편 조회 리포트'.
APPEND lv_comment TO it_header.
* S : Selection 라인 (조회 조건)
CLEAR lv_comment.
lv_comment-typ = 'S'.
lv_comment-key = '조회 대상'.
lv_comment-info = '전 항공사 (SFLIGHT)'.
APPEND lv_comment TO it_header.
* A : Action 라인 (실행 정보)
CLEAR lv_comment.
lv_comment-typ = 'A'.
lv_comment-info = |조회 시각 : { sy-datum DATE = USER } { sy-uzeit }|.
APPEND lv_comment TO it_header.
* TOP_OF_PAGE 이벤트 → FORM TOP_LINE 콜백
lv_event-name = 'TOP_OF_PAGE'.
lv_event-form = 'TOP_LINE'.
APPEND lv_event TO it_event.
SELECT * FROM sflight INTO TABLE it_flight UP TO 50 ROWS.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_structure_name = 'SFLIGHT'
i_callback_program = sy-repid
it_events = it_event
TABLES
t_outtab = it_flight
EXCEPTIONS
program_error = 1
OTHERS = 2.
FORM top_line.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_header
i_logo = 'WRITE_TOP_OF_PAGE'.
ENDFORM.
i_logo 인자에는 SE78(Form Graphics) 에 등록한 BMP 로고 이름을 넘기면 우측에 표시됩니다. 등록 안 된 이름을 넘기면 그냥 무시되니 비워둬도 OK.
2단계 — OO 방식: CL_DD_DOCUMENT 로 헤더 그리기
CL_GUI_ALV_GRID 를 쓰는 모듈풀에서 헤더를 띄우려면 CL_DD_DOCUMENT 객체를 별도로 만들어 색·굵기·테이블 형식을 자유롭게 구성합니다. 그리고 ALV 그리드의 list_processing_events 메소드로 DD Document 객체를 연결해 주면, TOP_OF_PAGE 이벤트가 발생할 때 자동으로 그 문서가 그려집니다.
주요 함수 — CL_DD_DOCUMENT 클래스 8가지 메소드
CL_DD_DOCUMENT 의 메소드는 많지만 TOP-OF-PAGE 구현에 실제로 쓰는 건 8가지로 정리됩니다. 노션 정리 노트의 분류 그대로:
| 메소드 | 역할 | 호출 시점·주의 |
|---|---|---|
add_table |
문서 상단에 Table 의 전체 규격(column) 생성 | no_of_columns·width·border 필수 (border '0'=table 굵기, '1'=테두리) |
add_column |
add_table 로 만든 Table 에 Column 추가 | 반환 column(CL_DD_AREA) 을 받아 add_text 호출용으로 보관 |
add_text |
Column 에 문구 추가 | sap_emphasis·sap_color·sap_fontsize 로 스타일 지정 (3단계 참조) |
new_line |
현재 커서 라인에서 줄바꿈 | table 안이 아니라 자유 텍스트 흐름일 때 한 줄 띄우기 |
initialize_document |
TOP-OF-PAGE 문서 초기화 | 핸들러 진입 시 매번 첫 호출 — 빠뜨리면 누적·깜박임 발생 |
merge_document |
TOP-OF-PAGE 문서 작업 병합 | 조각 문서 여러 개를 한 문서로 합칠 때 (제목·로고·표를 따로 만든 후 병합) |
display_document |
TOP-OF-PAGE 문서 출력 | 최종 호출로 헤더 영역(parent 컨테이너) 에 그리기 |
list_processing_events |
TOP-OF-PAGE 이벤트 실행 | 이건 CL_DD_DOCUMENT 가 아니라 CL_GUI_ALV_GRID 메소드 — DD Document 와 이벤트를 그리드에 등록 |
흐름은 단순합니다. initialize_document → add_table·add_column·add_text·new_line 로 문서 구성 → 필요하면 merge_document 로 조각 합치기 → display_document 로 영역에 출력. list_processing_events 는 이 모든 흐름을 ALV 의 top_of_page 이벤트에 묶어 주는 글루(접착) 메소드.
필수 메소드 — 최소 3개로 헤더 띄우기
위 8개 중 딱 세 개 만 알면 헤더가 화면에 뜹니다. 표·컬럼·줄바꿈 같은 구성은 디자인 욕심에 따라 나중에 추가하면 됩니다.
| 순서 | 메소드 | 하는 일 |
|---|---|---|
| 1 | add_text |
Column 에 문구 추가 (= 헤더에 표시할 글자 박기) |
| 2 | display_document |
TOP-OF-PAGE 문서 출력 (= 만든 글자를 화면에 그리기) |
| 3 | list_processing_events |
TOP-OF-PAGE 이벤트 실행 (= ALV 가 헤더를 자기 위에 띄우도록 연결) |
이 세 개의 짝지음이 OO TOP-OF-PAGE 의 골격입니다. 표 모양이 필요하면 add_table·add_column 을, 줄바꿈이 필요하면 new_line 을, 헤더가 누적/깜박이면 initialize_document 를, 여러 조각으로 만들었다면 merge_document 를 끼워 넣는 식.
3단계 — 헤더 스타일링: sap_emphasis · sap_color · sap_fontsize
add_text 의 세 인자(sap_emphasis·sap_color·sap_fontsize) 가 헤더의 시각적 분위기를 결정합니다. 값은 CL_DD_AREA·CL_DD_DOCUMENT 의 정적 상수에서 가져옵니다.
| 속성 | 자주 쓰는 상수 (의미) |
|---|---|
sap_emphasis (강조) |
cl_dd_area=>strong (굵게), cl_dd_area=>emph (강조) |
sap_color (배경/색) |
list_heading_int (제목), list_group_int (그룹), list_negative_int (경고), list_total_int (강조) |
sap_fontsize (크기) |
cl_dd_document=>small · medium · large |
스타일을 박는 짧은 예:
lo_key->add_text(
text = '조회 대상'
sap_emphasis = cl_dd_area=>strong " 굵게
sap_color = cl_dd_area=>list_heading_int " 제목 색 (파랑 톤)
sap_fontsize = cl_dd_document=>medium ). " 중간 크기
sap_color 는 글자 색이 아니라 테이블 셀 배경 톤 에 가깝습니다. 같은 행 안에서 색을 섞어 쓰면 부자연스러우니 한 테이블 안에서는 1~2가지 톤으로 유지하는 게 깔끔합니다.
4단계 — list_processing_events 로 이벤트 연결
OO 방식의 TOP-OF-PAGE 는 이벤트 핸들러 클래스를 만들어 ALV Grid 에 등록합니다. 세 가지가 짝지어 동작합니다.
(a) 이벤트 핸들러 클래스 정의
CLASS lcl_event DEFINITION.
PUBLIC SECTION.
METHODS handle_top_of_page
FOR EVENT top_of_page OF cl_gui_alv_grid
IMPORTING e_dyndoc_id.
ENDCLASS.
CLASS lcl_event IMPLEMENTATION.
METHOD handle_top_of_page.
PERFORM build_top_of_page USING e_dyndoc_id.
ENDMETHOD.
ENDCLASS.
e_dyndoc_id 는 TYPE REF TO cl_dd_document 타입의 DD Document 참조로, 이 객체에 add_text 등을 호출하면 곧 헤더 영역에 그려집니다.
(b) 핸들러 등록 + list_processing_events 호출
DATA go_event TYPE REF TO lcl_event.
CREATE OBJECT go_event.
SET HANDLER go_event->handle_top_of_page FOR go_grid.
go_grid->list_processing_events(
EXPORTING
i_event_name = 'TOP_OF_PAGE'
i_dyndoc_id = go_doc ).
list_processing_events 가 핵심 — DD Document 객체(go_doc) 와 이벤트 이름을 ALV 그리드에 등록해 줍니다. 이걸 빠뜨리면 핸들러는 호출되어도 화면에 출력이 안 됩니다.
(c) Splitter + Docking 으로 헤더 자리 확보
OO 방식의 TOP-OF-PAGE 는 화면 상단에 별도 영역을 잡아 둬야 그릴 곳이 생깁니다. 보통 CL_GUI_DOCKING_CONTAINER 안에 CL_GUI_SPLITTER_CONTAINER 로 2행(상=헤더 / 하=ALV) 분할.
go_dock = NEW #( repid = sy-repid
dynnr = sy-dynnr
side = cl_gui_docking_container=>dock_at_bottom
extension = 3000 ).
splitter = NEW #( parent = go_dock rows = 2 columns = 1 ).
go_top = splitter->get_container( row = 1 column = 1 ).
go_bot = splitter->get_container( row = 2 column = 1 ).
splitter->set_row_height( id = 1 height = 15 ).
go_grid = NEW #( i_parent = go_bot ).
go_doc = NEW #( style = 'ALV_GRID' ).
style = 'ALV_GRID' 은 DD Document 가 ALV 그리드 톤(폰트·간격) 에 맞춰지도록 하는 옵션. 빼면 더 기본적인 모양으로 그려집니다.
자주 빠뜨리는 함정
REUSE_ALV — i_callback_program 누락
REUSE_ALV_GRID_DISPLAY 호출 시 i_callback_program = sy-repid 를 빠뜨리면 it_events 의 FORM 콜백을 찾지 못해 TOP-OF-PAGE 가 그려지지 않습니다. sy-repid 만 박으면 거의 끝.
REUSE_ALV — FORM 시그니처 차이
TOP_OF_PAGE 콜백 FORM 은 인자가 없습니다. FORM top_line. · ENDFORM. 만 있으면 되고 USING 인자를 추가하면 동적 콜 실패. 대신 USER_COMMAND 콜백은 USING ucomm selfield 두 인자 필수라 헷갈리기 쉽습니다.
OO — list_processing_events 호출 누락
이벤트 핸들러는 SET HANDLER 로 잘 걸어 두고 list_processing_events 호출을 빠뜨리면 핸들러는 트리거되어도 화면에 아무 것도 안 나옵니다. set_table_for_first_display 호출 전에 등록해야 합니다.
OO — initialize_document 중복 호출 시 헤더 깜박임
refresh_table_display 후 TOP_OF_PAGE 가 다시 호출될 때 핸들러에서 무조건 initialize_document 부터 새로 호출해야 합니다. 이전 내용이 남아 누적되거나 깜박이는 현상은 거의 이걸 빠뜨려서 발생.
OO — DD Document 생성 누락
go_doc = NEW cl_dd_document( style = 'ALV_GRID' ) 인스턴스 생성을 빠뜨리면 list_processing_events 의 i_dyndoc_id 인자가 INITIAL 이라 헤더가 안 그려집니다.
Splitter 분할 비율
헤더 영역이 너무 작으면 add_text 가 잘려서 안 보입니다. splitter->set_row_height( id = 1 height = N ) 으로 픽셀 단위가 아닌 비율 단위(전체를 100 이라고 보면 N) 로 지정. 줄 수가 많으면 20
30, 한두 줄이면 10
15 정도.
한글 깨짐
DD Document 의 add_text 의 text 파라미터는 SDYDO_TEXT_ELEMENT(255자) 입니다. 한글 + 영문 혼합 시 인코딩이 깨지면 시스템 로케일·로그온 언어 확인. 한글 환경 SAP 라면 정상 동작합니다.
전체 코드 — 복사용 통합본 (OO 방식)
OO 방식은 CALL SCREEN 을 쓰는 모듈풀이라 SAP 스탠다드 INCLUDE 6분할(T / C / SCR / O / I / F) 로 구성합니다. SE51 에서 Screen 100 을 빈 화면으로 만들고 Flow Logic 에 status_0100 · create_alv (PBO) · user_command_0100 (PAI) 만 연결.
*&---------------------------------------------------------------------*
*& Report ZRXX_ALV_TOP_OF_PAGE (메인)
*&---------------------------------------------------------------------*
REPORT zrxx_alv_top_of_page.
INCLUDE zrxx_alv_top_of_page_t. " TOP - 전역 선언
INCLUDE zrxx_alv_top_of_page_c. " CLASS - 로컬 이벤트 클래스
INCLUDE zrxx_alv_top_of_page_scr. " SCR - 셀렉션 스크린 (사용 안 함)
INCLUDE zrxx_alv_top_of_page_o. " PBO - OUTPUT 모듈
INCLUDE zrxx_alv_top_of_page_i. " PAI - INPUT 모듈
INCLUDE zrxx_alv_top_of_page_f. " FORM - 서브루틴
START-OF-SELECTION.
SELECT * FROM sflight
INTO CORRESPONDING FIELDS OF TABLE gt_sflight
UP TO 50 ROWS.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& INCLUDE ZRXX_ALV_TOP_OF_PAGE_T (TOP)
*&---------------------------------------------------------------------*
* Splitter / Docking
DATA : splitter TYPE REF TO cl_gui_splitter_container,
go_top TYPE REF TO cl_gui_container,
go_bot TYPE REF TO cl_gui_container,
go_dock TYPE REF TO cl_gui_docking_container.
* ALV Grid
DATA : go_grid TYPE REF TO cl_gui_alv_grid.
* TOP-OF-PAGE DD Document
DATA : go_doc TYPE REF TO cl_dd_document.
* 헤더 라인 구조 (제목/조회조건 컬렉션)
DATA : BEGIN OF gs_title,
typ TYPE c LENGTH 1,
key TYPE c LENGTH 30,
info TYPE c LENGTH 200,
END OF gs_title,
gt_title LIKE TABLE OF gs_title.
* OK_CODE
DATA : ok_code LIKE sy-ucomm.
* 데이터
DATA : gs_sflight LIKE sflight,
gt_sflight LIKE TABLE OF gs_sflight.
* 이벤트 핸들러 참조 (C INCLUDE 에서 정의)
DATA go_event TYPE REF TO lcl_event.
*&---------------------------------------------------------------------*
*& INCLUDE ZRXX_ALV_TOP_OF_PAGE_C (CLASS)
*&---------------------------------------------------------------------*
CLASS lcl_event DEFINITION.
PUBLIC SECTION.
METHODS handle_top_of_page
FOR EVENT top_of_page OF cl_gui_alv_grid
IMPORTING e_dyndoc_id.
ENDCLASS.
CLASS lcl_event IMPLEMENTATION.
METHOD handle_top_of_page.
PERFORM build_top_of_page USING e_dyndoc_id.
ENDMETHOD.
ENDCLASS.
*&---------------------------------------------------------------------*
*& INCLUDE ZRXX_ALV_TOP_OF_PAGE_SCR (SCR)
*&---------------------------------------------------------------------*
* (이 글에서는 셀렉션 스크린 사용 안 함)
*&---------------------------------------------------------------------*
*& INCLUDE ZRXX_ALV_TOP_OF_PAGE_O (PBO)
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'S100'.
SET TITLEBAR 'T100'.
ENDMODULE.
MODULE create_alv OUTPUT.
IF go_dock IS INITIAL.
PERFORM create_docking.
PERFORM set_event.
PERFORM display_alv.
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& INCLUDE ZRXX_ALV_TOP_OF_PAGE_I (PAI)
*&---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'BACK' OR 'EXIT' OR 'CANC'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& INCLUDE ZRXX_ALV_TOP_OF_PAGE_F (FORM)
*&---------------------------------------------------------------------*
* Docking + Splitter (상=헤더 / 하=ALV)
FORM create_docking.
go_dock = NEW #( repid = sy-repid
dynnr = sy-dynnr
side = cl_gui_docking_container=>dock_at_bottom
extension = 3000 ).
splitter = NEW #( parent = go_dock
rows = 2
columns = 1 ).
go_top = splitter->get_container( row = 1 column = 1 ).
go_bot = splitter->get_container( row = 2 column = 1 ).
splitter->set_row_height( id = 1 height = 15 ).
go_grid = NEW #( i_parent = go_bot ).
go_doc = NEW #( style = 'ALV_GRID' ).
ENDFORM.
* 이벤트 핸들러 등록 + list_processing_events
FORM set_event.
CREATE OBJECT go_event.
SET HANDLER go_event->handle_top_of_page FOR go_grid.
go_grid->list_processing_events(
EXPORTING
i_event_name = 'TOP_OF_PAGE'
i_dyndoc_id = go_doc ).
ENDFORM.
* ALV 출력
FORM display_alv.
go_grid->set_table_for_first_display(
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
it_outtab = gt_sflight ).
ENDFORM.
* TOP-OF-PAGE 핸들러 본체 — gs_title 채우고 출력 폼 호출
FORM build_top_of_page USING e_dyndoc_id TYPE REF TO cl_dd_document.
CLEAR : gs_title, gt_title.
gs_title-typ = 'H'.
gs_title-info = '항공편 조회 리포트'.
APPEND gs_title TO gt_title.
gs_title-typ = 'S'.
gs_title-key = '조회 시각'.
gs_title-info = |{ sy-datum DATE = USER } { sy-uzeit TIME = USER }|.
APPEND gs_title TO gt_title.
PERFORM render_top USING e_dyndoc_id.
ENDFORM.
* DD Document 에 표 그리기
FORM render_top USING p_dyndoc_id TYPE REF TO cl_dd_document.
DATA : lo_table TYPE REF TO cl_dd_table_element,
lo_key TYPE REF TO cl_dd_area,
lo_info TYPE REF TO cl_dd_area.
DATA : lv_text TYPE sdydo_text_element.
p_dyndoc_id->initialize_document( ).
* 2 컬럼 테이블 생성 (key, info)
p_dyndoc_id->add_table(
EXPORTING
no_of_columns = 2
width = '500'
border = '1'
IMPORTING
table = lo_table ).
lo_table->add_column( IMPORTING column = lo_key ).
lo_table->add_column( IMPORTING column = lo_info ).
LOOP AT gt_title INTO gs_title.
CASE gs_title-typ.
WHEN 'H'.
* Header — 한 셀에 큰 글씨로
lv_text = gs_title-info.
lo_key->add_text(
text = lv_text
sap_emphasis = cl_dd_area=>strong
sap_fontsize = cl_dd_document=>large
sap_color = cl_dd_area=>list_heading_int ).
WHEN 'S'.
* Selection — key / info 두 셀
lv_text = gs_title-key.
lo_key->add_text(
text = lv_text
sap_emphasis = cl_dd_area=>strong
sap_fontsize = cl_dd_document=>medium
sap_color = cl_dd_area=>list_heading_int ).
lv_text = gs_title-info.
lo_info->add_text(
text = lv_text
sap_fontsize = cl_dd_document=>medium
sap_color = cl_dd_area=>list_group_int ).
ENDCASE.
p_dyndoc_id->new_line( ).
ENDLOOP.
p_dyndoc_id->display_document(
EXPORTING
parent = go_top ).
ENDFORM.
요약
| 단계 | 방식 | 핵심 |
|---|---|---|
| 1 | REUSE_ALV 클래식 | SLIS_T_LISTHEADER (H/S/A 라인) + SLIS_T_EVENT → FORM REUSE_ALV_COMMENTARY_WRITE |
| 2 | OO 핸들러 클래스 | METHODS handle_top_of_page FOR EVENT top_of_page OF cl_gui_alv_grid |
| 3 | 스타일링 | add_text(sap_emphasis·sap_color·sap_fontsize) |
| 4 | 이벤트 연결 | SET HANDLER + list_processing_events( i_event_name = 'TOP_OF_PAGE' i_dyndoc_id = go_doc ) |
| 5 | 화면 구성 | Docking + Splitter (상=헤더 / 하=ALV) + DD Document style = 'ALV_GRID' |
TOP-OF-PAGE 의 본질은 "그리드 출력 직전에 한 번 발생하는 이벤트 훅". REUSE_ALV 에서는 FORM 콜백으로, OO 방식에서는 핸들러 메소드로 받습니다. 간단 조회 리포트라면 클래식이 짧아서 좋고, 편집 ALV 나 Docking + Splitter 결합 화면에서는 OO 방식이 자연스럽고 스타일 자유도도 높습니다. 두 패턴 모두 헤더는 "데이터 채우기 → 표·텍스트로 그리기 → ALV 가 그 아래" 3단계의 같은 흐름.
Disclaimer — 이 포스트는 실무 정리 노트를 바탕으로 AI 보조로 정리되었습니다. REUSE_ALV_GRID_DISPLAY·REUSE_ALV_COMMENTARY_WRITE FM 과 SLIS_T_LISTHEADER·SLIS_T_EVENT 타입 · CL_GUI_ALV_GRID 의 list_processing_events·top_of_page 이벤트 · CL_DD_DOCUMENT · CL_GUI_DOCKING_CONTAINER · CL_GUI_SPLITTER_CONTAINER 는 NetWeaver 스탠다드 정의(ECC 6.0 / S/4HANA on-premise 기준) 입니다. SFLIGHT 는 SAP 스탠다드 학습 환경(IDES) 테이블이며 실무 적용 시 운영 테이블로 교체하시기 바랍니다. SE78 에 등록한 로고(i_logo) 는 환경별로 다르므로 운영 시스템의 실제 등록명을 사용하시기 바랍니다.