본문 바로가기
ABAP 문법 & 기법

[SAP ABAP] REPORT NO STANDARD PAGE HEADING — 실행 시 프로그램명/페이지 헤더 숨기는 법

by Song.sh 2026. 5. 15.

ABAP 의 클래시컬 리포트(WRITE 문 또는 List 출력) 를 실행하면 화면 맨 위에 "REPORT 프로그램명" 이 자동으로 출력됩니다. 운영 사용자 입장에선 이 라인이 화면을 차지할 뿐 가치가 없고, 보안 관점에서도 내부 프로그램 네이밍 규칙(ZRMM*·ZSD*) 이 노출되는 게 부담스럽습니다.

 

해결은 한 단어 — REPORT 구문 뒤에 NO STANDARD PAGE HEADING 옵션을 붙이는 것. 이 한 줄로 SAP 가 자동으로 박아주던 표준 페이지 헤더(프로그램명·List Heading·페이지 번호) 가 모두 사라지고, 사용자가 TOP-OF-PAGE 이벤트로 직접 헤더를 그릴 수 있게 됩니다.

 

이 글은 REPORT 명을 숨기는 표준 방법 + TOP-OF-PAGE 커스텀 헤더 + 관련 REPORT 옵션(LINE-SIZE / LINE-COUNT / MESSAGE-ID) + ALV 와의 차이 를 한 번에 정리한 메모입니다.


핵심 원리

표준 페이지 헤더의 구성과 NO STANDARD PAGE HEADING 의 효과 비교.

출력 항목 옵션 없음 (기본) NO STANDARD PAGE HEADING
프로그램명 라인 report ZXXX_XXXX 자동 출력 출력 안 됨
List Heading 속성에 등록된 List Heading 자동 출력 출력 안 됨
페이지 번호 우측 상단 자동 표시 출력 안 됨
가로 구분선 헤더 하단에 자동 출력 출력 안 됨
TOP-OF-PAGE 표준 헤더 아래에 추가됨 그것만 출력 — 헤더 전부 사용자 책임

핵심 트레이드오프: 표준 헤더가 친절 하지만 사용자 화면을 더럽히고 내부 네이밍이 노출됩니다. NO STANDARD PAGE HEADING 으로 완전히 끄고 필요한 경우만 TOP-OF-PAGE 로 직접 헤더를 그리는 게 표준 패턴.


1단계 — REPORT 명령어에 옵션 추가

REPORT 구문 한 줄에 NO STANDARD PAGE HEADING 을 붙이면 끝.

REPORT zexample_no_header MESSAGE-ID ze
       NO STANDARD PAGE HEADING.

 

이렇게 선언하면:

  • 실행 시 화면 상단의 report ZXXX_XXXX 라인이 사라짐
  • 프로그램 속성(SE38 → Goto → Text Elements → List Headings) 에 등록된 List Heading 도 자동 출력 안 됨
  • 페이지 번호·구분선도 자동 출력되지 않음


2단계 — REPORT 옵션 풀세팅

REPORT 구문에는 다양한 옵션이 있습니다. 자주 쓰는 것 정리.

옵션 역할
NO STANDARD PAGE HEADING 표준 페이지 헤더(프로그램명·List Heading) 끄기
MESSAGE-ID zex 프로그램 전체의 기본 메시지 클래스 지정 — MESSAGE ... TYPE 'E' 단축
LINE-SIZE 200 한 줄의 폭(컬럼 수) — 기본 83, 와이드 리스트는 200~255
LINE-COUNT 65 한 페이지의 줄 수 — 인쇄용 페이징 제어
DEFINING DATABASE xxx Logical Database 지정 (오래된 패턴 — 신규 사용 X)
REDUCED FUNCTIONALITY 일부 ABAP 명령 제한 (특수 케이스 외 비추)

여러 옵션을 한 줄에 같이 쓸 수 있습니다 — 순서는 자유.

REPORT zexample_no_header  MESSAGE-ID ze
                           NO STANDARD PAGE HEADING
                           LINE-SIZE  200
                           LINE-COUNT 65.

3단계 — TOP-OF-PAGE 로 커스텀 헤더 그리기

표준 헤더는 껐지만 화면 상단에 사용자 정의 헤더 가 필요하다면 TOP-OF-PAGE 이벤트를 사용합니다.

REPORT zexample_no_header NO STANDARD PAGE HEADING LINE-SIZE 200.

TOP-OF-PAGE.
  WRITE: / sy-uline(120).
  FORMAT COLOR 1 INTENSIFIED OFF.
  WRITE: / '   자재 현황 조회',
         AT 60 '실행자 :', sy-uname,
         AT 100 '실행일자 :', sy-datum.
  FORMAT COLOR OFF.
  WRITE: / sy-uline(120).

START-OF-SELECTION.
  PERFORM read_data.
  PERFORM display_list.

핵심 포인트:

  • TOP-OF-PAGE이벤트 — 새 페이지가 시작될 때마다 자동 호출
  • FORMAT 으로 색상·강조 제어 (COLOR 1~7)
  • sy-uline 로 구분선 출력
  • AT n 으로 컬럼 위치 지정

드릴다운 리스트(2차 리스트) 의 헤더는 TOP-OF-PAGE DURING LINE-SELECTION 으로 별도 정의 가능.

TOP-OF-PAGE DURING LINE-SELECTION.
  WRITE: / '   상세 조회 결과', AT 60 '실행자 :', sy-uname.

4단계 — ALV / Selection Screen 인 경우

표시 방식별로 헤더 제어 방법이 다릅니다.

표시 방식 헤더 제어 방법
클래시컬 리스트 REPORT ... NO STANDARD PAGE HEADING + TOP-OF-PAGE
SAP List Viewer (ALV) 파라미터 i_callback_top_of_page 로 콜백 FORM 지정
객체 지향 ALV (CL_GUI_ALV_GRID) ALV Container 위쪽에 별도 Docking Container 로 헤더 영역 만듦
Selection Screen 자동으로 헤더 없음 — NO STANDARD PAGE HEADING 영향 없음

요점: NO STANDARD PAGE HEADING클래시컬 리스트(WRITE 기반) 한정 효과. ALV 결과 화면의 상단 헤더는 별도 API 로 제어해야 합니다.


흔히 빠뜨리는 함정

REPORT 구문 외 위치에 쓰면 컴파일 에러

NO STANDARD PAGE HEADINGREPORT 문법 옵션 — 프로그램 첫 줄에만 가능. 중간에 동적으로 끄거나 켤 수 없습니다.

헤더가 사라졌는데 ALV 결과 화면 헤더는 그대로

ALV 사용 중이면 NO STANDARD PAGE HEADING 영향 없음. ALV 헤더는 i_callback_top_of_page 콜백 또는 Docking Container 로 따로 제어.

Include 프로그램은 REPORT 안 씀

INCLUDE 프로그램은 REPORT 가 아닌 INCLUDE 키워드로 시작 — 헤더 옵션 불가. 메인 프로그램의 REPORT 옵션을 따라갑니다.

TOP-OF-PAGE 이벤트가 안 호출됨

TOP-OF-PAGEWRITE 로 첫 출력이 발생할 때 트리거. 데이터가 0건이면 호출 안 됨. 빈 결과라도 헤더는 출력하고 싶다면 WRITE: / ''. 같은 더미라도 출력.

List Heading 은 Text Elements 에 있음

표준 헤더에 표시되던 List Heading 텍스트는 SE38 → Goto → Text Elements → List Headings 에 저장. NO STANDARD PAGE HEADING 으로 출력은 꺼져도 텍스트 자체는 남아있으니, 다른 언어 번역 시 헷갈리지 않게 정리.

LINE-SIZE 안 늘리면 컬럼 잘림

ALV 가 아닌 WRITE 기반 리스트에서 가로로 길게 출력하려면 LINE-SIZE 200 식으로 늘려줘야 함. 기본 83 으로는 우측 잘림.

NO STANDARD PAGE HEADING 만 쓰고 헤더 빈 채로 두기

표준 헤더 끄고 TOP-OF-PAGE 도 없으면 화면이 데이터부터 바로 시작 — 사용자가 "여기가 뭐지?" 헷갈릴 수 있음. 반드시 커스텀 헤더 정의 권장.


전체 코드 — 복사용 통합본

위 단계를 하나의 ABAP 프로그램으로 합친 통합본입니다. SE38 에 그대로 복사해 활성화하면 동작합니다.

*&---------------------------------------------------------------------*
*& 표준 페이지 헤더(REPORT 명) 숨기기 + TOP-OF-PAGE 커스텀 헤더
*&---------------------------------------------------------------------*
REPORT zexample_no_header MESSAGE-ID ze
                          NO STANDARD PAGE HEADING
                          LINE-SIZE  200
                          LINE-COUNT 65.

*-----------------------------------------------------------------------
* 데이터 선언
*-----------------------------------------------------------------------
TABLES: mara.

SELECT-OPTIONS: s_matnr FOR mara-matnr.

DATA: gt_mara TYPE TABLE OF mara,
      gs_mara TYPE mara.

*-----------------------------------------------------------------------
* TOP-OF-PAGE — 새 페이지마다 자동 호출
*   표준 헤더 끄고 사용자 정의 헤더를 직접 그림
*-----------------------------------------------------------------------
TOP-OF-PAGE.
  WRITE: / sy-uline(120).
  FORMAT COLOR 1 INTENSIFIED ON.
  WRITE: /  '   자재 마스터 조회 리포트',
         AT 60 '실행자 :', sy-uname,
         AT 100 '일자 :',  sy-datum, sy-uzeit.
  FORMAT COLOR OFF.
  WRITE: / sy-uline(120).
  WRITE: / '   No.', AT 12 '자재번호', AT 30 '자재유형',
                     AT 42 '산업코드', AT 55 '생성자', AT 75 '생성일'.
  WRITE: / sy-uline(120).

*-----------------------------------------------------------------------
* 드릴다운 시 TOP-OF-PAGE — 2차 리스트 헤더
*-----------------------------------------------------------------------
TOP-OF-PAGE DURING LINE-SELECTION.
  FORMAT COLOR 4 INTENSIFIED ON.
  WRITE: / '   ▶ 자재 상세 정보',
         AT 60 '실행자 :', sy-uname.
  FORMAT COLOR OFF.
  WRITE: / sy-uline(120).

*-----------------------------------------------------------------------
* END-OF-PAGE — 페이지 하단 (예: 푸터·페이지 번호)
*-----------------------------------------------------------------------
END-OF-PAGE.
  WRITE: / sy-uline(120).
  WRITE: AT 100 'Page :', sy-pagno.

*-----------------------------------------------------------------------
* START-OF-SELECTION
*-----------------------------------------------------------------------
START-OF-SELECTION.

  SELECT * INTO TABLE gt_mara
    FROM mara
    UP TO 50 ROWS
   WHERE matnr IN s_matnr.

  IF sy-subrc <> 0.
*   ★ 데이터 0건이면 TOP-OF-PAGE 가 호출 안 되므로 직접 호출용 더미
    WRITE: / '조회 결과가 없습니다.'.
    EXIT.
  ENDIF.

  DATA(lv_seq) = 0.
  LOOP AT gt_mara INTO gs_mara.
    lv_seq = lv_seq + 1.
    WRITE: / lv_seq        UNDER '   No.',
             gs_mara-matnr UNDER '자재번호',
             gs_mara-mtart UNDER '자재유형',
             gs_mara-mbrsh UNDER '산업코드',
             gs_mara-ernam UNDER '생성자',
             gs_mara-ersda UNDER '생성일'.
  ENDLOOP.

* ※ 참고:
*   - NO STANDARD PAGE HEADING 은 REPORT 첫 줄에만 사용 가능 (동적 변경 X)
*   - ALV 결과 화면의 헤더는 i_callback_top_of_page 콜백으로 따로 제어
*   - LINE-SIZE 안 늘리면 가로로 잘림 — 와이드 리스트는 200~255 권장
*   - List Heading 자동 출력도 같이 꺼짐 — Text Elements 의 List Heading 무시됨

요약

단계 처리 핵심
1 REPORT 옵션 추가 REPORT name NO STANDARD PAGE HEADING. — 프로그램 첫 줄에만
2 관련 REPORT 옵션 MESSAGE-ID · LINE-SIZE · LINE-COUNT 함께 사용
3 TOP-OF-PAGE 사용자 정의 헤더를 그릴 이벤트 (1차 리스트용)
4 드릴다운 헤더 TOP-OF-PAGE DURING LINE-SELECTION — 2차 리스트용
5 ALV 는 다름 ALV 헤더는 i_callback_top_of_page 콜백 또는 Docking Container 로 별도 제어

REPORT 실행 시 상단에 자동으로 박히는 프로그램명은 REPORT name NO STANDARD PAGE HEADING. 한 줄이면 사라집니다. 표준 헤더를 끈 자리에 정보를 보이고 싶다면 TOP-OF-PAGE 이벤트로 직접 그리고, 드릴다운에는 TOP-OF-PAGE DURING LINE-SELECTION 을 추가하는 게 표준. ALV 결과 화면의 헤더는 별도 콜백 API 로 제어해야 한다는 점만 기억하면 됩니다.


Disclaimer — 이 포스트는 실무 정리 노트를 바탕으로 AI 보조로 정리되었습니다. REPORT 구문 옵션·TOP-OF-PAGE·END-OF-PAGE 이벤트는 SAP NetWeaver 표준 ABAP 문법으로 시스템 버전 의존 없이 동작합니다. 다만 NO STANDARD PAGE HEADING 은 WRITE 기반 클래시컬 리스트에만 효과가 있고, ALV(REUSE_ALV_* · CL_GUI_ALV_GRID) 결과 화면 헤더는 별도 API 로 제어해야 합니다. 운영 적용 전 출력 결과·페이지 번호·드릴다운 동작을 충분히 테스트하시기 바랍니다.