ABAP ALV Report의 페이지 타이틀(TOP_OF_PAGE)를 출력하는 방법


일반적으로 ALV 리포트를 출력할 때 페이지 타이틀은 별도로 출력 되지 않습니다.
하지만 타이틀과 함께 조회 조건 등을 페이지 헤더의 타이틀 부분에 함께 표시해 주면 리포트를 이해하는데 훨씬 도움이 됩니다.

이번 글에서는 ABAP ALV Report의 페이지 타이틀(TOP_OF_PAGE)를 출력하는 방법을 예제를 통해 알아보겠습니다.

WRITE 구문으로 리포트를 만드는 일반 Report 프로그램의 Header를 구현하는 것처럼 ALV 리포트의 헤더 부분에 리포트의 제목을 출력하고, 조회 일자를 출력하고, 조회 결과의 레코드 수를 출력하는 등 여러가지 정보를 페이지 타이틀 부분에 출력할 수 있습니다.

ALV 리포트의 페이지 헤더 타이틀이 출력 된 결과 미리보기

▼ 아래 화면은 ALV 리포트의 페이지 헤더 부분에 리포트의 제목, 조회 일자, 조회 된 레코드 수를 함께 보여주고 있습니다.

ABAP ALV Report의 페이지 타이틀(TOP_OF_PAGE)를 출력하는 방법

ALV Grid에서 리포트 타이틀을 출력하는 ABAP Source 주요 부분

▼ ALV Grid를 실제 출력하는 부분 입니다.

ALV 리포트의 타이틀을 출력하기 위해 i_callback_top_of_page = ‘TOP-OF-PAGE’ 부분을 선언해 주었습니다.

*&———————————————————————*
*& Form DISPLAY_ALV_REPORT
*&———————————————————————*
* Display report using ALV grid
*———————————————————————-*
FORM display_alv_report.
  gd_repid = sy-repid.
  CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
    EXPORTING
      i_callback_program      = gd_repid
      i_callback_top_of_page  = ‘TOP-OF-PAGE’  ” ALV 상단의 타이틀 표시
      it_fieldcat             = fieldcatalog[]
      i_save                  = ‘X’
    TABLES
      t_outtab                = it_ekko
    EXCEPTIONS
      program_error           = 1
      OTHERS                  = 2.
 
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM. ” DISPLAY_ALV_REPORT
 


▼ ALV 리포트의 실제 타이틀을 구성하는 부분입니다.

Header(H), Selection(S), Action(A) 세가지 타입으로 정의해서 타이틀을 구성할 수 있습니다.

CALL FUNCTION ‘REUSE_ALV_COMMENTARY_WRITE’을 사용해서 정의한 타이틀을 출력하게 됩니다.

*——————————————————————-*
* Form TOP-OF-PAGE *
*——————————————————————-*
* ALV Report Header *
*——————————————————————-*
FORM top-of-page.
* ALV Header declarations
  DATA: t_header TYPE slis_t_listheader,
        wa_header TYPE slis_listheader,
        t_line LIKE wa_header-info,
        ld_lines TYPE i,
        ld_linesc(10) TYPE c.
 
* Title 출력
  wa_header-typ = ‘H’.      ” H = Header, S = Selection, A = Action
  wa_header-info = ‘EKKO Table Report’.
  APPEND wa_header TO t_header.
  CLEAR wa_header.
 
* Date 출력
  wa_header-typ = ‘S’.      ” H = Header, S = Selection, A = Action
  wa_header-key = ‘Date: ‘.
  CONCATENATE sy-datum+6(2) ‘.’
    sy-datum+4(2) ‘.’
    sy-datum(4) INTO wa_header-info. “todays date
  APPEND wa_header TO t_header.
  CLEAR: wa_header.
 
* it_ekko의 라인 수 출력
  DESCRIBE TABLE it_ekko LINES ld_lines.
  ld_linesc = ld_lines.
  CONCATENATE ‘Total No. of Records Selected: ‘ ld_linesc
      INTO t_line SEPARATED BY space.
  wa_header-typ = ‘A’.      ” H = Header, S = Selection, A = Action
  wa_header-info = t_line.
  APPEND wa_header TO t_header.
  CLEAR: wa_header, t_line.
 
  CALL FUNCTION ‘REUSE_ALV_COMMENTARY_WRITE’
    EXPORTING
      it_list_commentary = t_header.
 
ENDFORM. “top-of-page
 

※ 참고로 여기에서 FORM으로 정의한 TOP_OF_PAGEABAP 프로그램의 ‘TOP_OF_PAGE’ 이벤트와는 다른 의미입니다.
일반적인 FORM 선언이며 다른 이름으로 정의해서 사용해도 됩니다.





이 글이 도움이 되었기를 바랍니다. ^-^


답글 남기기