ABAP ALV Report의 페이지 헤더에 로고 이미지를 삽입해서 보여주는 방법


SAP에서 ABAP 프로그램으로 보고서를 만들 때 ALV를 사용하면 무척 간단하게 보고서를 만들 수 있습니다.

ALV를 사용하게 되면 ABAP 프로그래밍에서 소스의 코딩 양도 많이 줄일 수 있습니다. 뿐만 아니라 보고서의 컬럼이 추가되거나 삭제될 때 간단하게 처리할 수도 있습니다.
만약 WRITE 구문으로 보고서를 만든 경우 리포트 중간에 컬럼이 추가되거나 삭제된다면 다시 전체 리포트의 위치를 조정하기 위해 많은 시간을 소요 하게 됩니다.

보고서 리포트를 만들 때 대외적인 보고서인 경우 회사나 단체의 로고 이미지를 보고서 상단에 표시하는 경우가 많습니다.
대외적인 보고서가 아니더라도 통일된 보고서 형식을 갖추기 위해 보고서의 특정 위치에 로고 이미지를 삽입하는 경우도 많습니다.

이번 글에서는 ABAP ALV Report의 페이지 헤더에 로고 이미지를 삽입해서 보여주는 방법에 대해 알아보겠습니다.

ALV에서 사용할 로고 이미지를 Business Document Navigator에 Upload 하는 방법

▶ ALV에서 로고 이미지를 사용하기 위해서는 먼저 이미지를 ‘비즈니스 문서 내비게이터‘에 업로드를 해주어야 합니다.

1. 트랜잭션코드 ‘OAOR‘를 실행해서 ‘Business Document Navigator‘로 이동합니다.

2. Class name을 적당한 이름을 입력합니다. 예제에서는 ‘PICTURES‘라고 입력했습니다.

3. Class type을 선택해 줍니다. ‘OT‘로 선택해 주었습니다. 선택할 수 있는 Class type에는 3가지가 있습니다.

  • BO : Business Object Repository object
  • CL : Object from class library
  • OT : Other objects

4. Object key에 ALV에서 사용할 로고 이름을 입력해 줍니다. ‘ALVLOGO‘라고 입력해 주었습니다.

5. 3가지 모두 입력했으면 [실행]을 클릭해서 다음 화면으로 넘어갑니다.

ALV에서 사용할 로고 이미지를 Business Document Navigator에 업로딩하는 방법 - Object key 지정

6. 첫 화면에서 [실행]을 하면 약간의 지연시간이 경과하고 아래 화면으로 넘어오게 됩니다.

7. 왼쪽 하단 패널에서 [표준 문서 유형]을 확장하고, [화면]을 마우스 더블클릭 해 줍니다.

ALV에서 사용할 로고 이미지를 Business Document Navigator에 업로딩하는 방법 - 표준 문서 유형 화면 선택

8. 업로드할 파일을 선택하는 팝업 창이 열리면 ALV에서 로고로 사용할 이미지 파일을 선택하고 [열기]를 클릭합니다.

ALV에서 사용할 로고 이미지를 Business Document Navigator에 업로딩하는 방법 - 로고 이미지 선택

9. ‘비즈니스 문서 내비게이터’에서 구분할 수 있는 설명을 ‘내역‘에 입력하고 [계속] 버튼을 클릭합니다.

ALV에서 사용할 로고 이미지를 Business Document Navigator에 업로딩하는 방법 - 로고 이미지 내역

10. 그럼 ‘Document stored successfully‘라는 안내 메시지가 표시되고, 상단 패널에 [화면]을 확장하면 방금 업로드한 파일이 추가된 것을 확인할 수 있습니다.

ALV에서 사용할 로고 이미지를 Business Document Navigator에 업로딩하는 방법

ALV 페이지 헤더에 로고 이미지를 표시하기 위한 ABAP 프로그램 소스(Source)

▼ 아래 ABAP 프로그램은 EKPO(구매문서품목) 테이블에서 10건의 레코드를 가져와서 ALV로 출력하는 간단한 예제 입니다.

REPORT  YMM0001 MESSAGE-ID ZCA001.
 
 
TABLES: EKKO.
TYPE-POOLS: SLIS. “ALV Declarations
 
 
DATA: IT_EKKO TYPE STANDARD TABLE OF EKKO.
 
*ALV data declarations
DATA: FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
  GD_TAB_GROUP TYPE SLIS_T_SP_GROUP_ALV,
  GD_LAYOUT TYPE SLIS_LAYOUT_ALV,
  GD_REPID LIKE SY-REPID,
  GT_EVENTS TYPE SLIS_T_EVENT,
  GD_PRNTPARAMS TYPE SLIS_PRINT_ALV.
 
************************************************************************
*Start-of-selection.
START-OF-SELECTION.
 
  SELECT *
    UP TO 10 ROWS
    FROM EKPO
    INTO CORRESPONDING FIELDS OF TABLE IT_EKKO.
 
  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_STRUCTURE_NAME       = ‘EKKO’
      I_SAVE                 = ‘X’
    TABLES
      T_OUTTAB               = IT_EKKO
    EXCEPTIONS
      PROGRAM_ERROR          = 1
      OTHERS                 = 2.
 
 
 
*——————————————————————-*
* 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
      I_LOGO             = ‘ALVLOGO’.
 
ENDFORM. “top-of-page
  • ALV 페이지 헤더를 표시하기 위해 FORM TOP-OF-PAGE.를 선언해 주었습니다.
  • 실제 페이지 헤더를 표시하는 CALL FUNCTION ‘REUSE_ALV_COMMENTARY_WRITE’에서 로고를 추가하기 위해 [I_LOGO = ‘ALVLOGO’]를 선언해 주었습니다.
  • 여기서 ‘ALVLOGO‘가 앞에서 ‘비즈니스 문서 내비게이터’에서 사용한 [Object key] 입니다.


▼ 아래 화면이 위의 ABAP 프로그램을 실행했을 때 실행 결과 화면입니다.
– ALV 페이지 타이틀의 우측에 로고 이미지가 추가되어 표시되는 것을 확인할 수 있습니다.

ABAP ALV Report의 페이지 헤더에 로고 이미지를 삽입해서 보여주는 방법

SAP 비즈니스 문서 내비게이터에 추가한 파일을 삭제하는 방법

▶ 다음은 SAP Business Document Navigator에 업로드한 파일을 삭제하는 방법에 대한 설명입니다.

1. ‘비즈니스 문서 내비게이터‘의 상단 패널에서 삭제할 파일을 찾습니다.

2. 파일 이름 앞에 체크박스를 체크하고, [삭제] 버튼을 클릭해 줍니다.

SAP 비즈니스 문서 내비게이터에 추가한 파일을 삭제하는 방법 - 파일 선택

3. 삭제할 것인지 물어보는 팝업 창이 뜨면 []를 클릭해 줍니다.

SAP 비즈니스 문서 내비게이터에 추가한 파일을 삭제하는 방법 - 삭제 확인

4. 삭제할 문서에 대해 전송 요청을 생성할 것인지 묻는 팝업 창이 뜨면 [아니오]를 클릭해 줍니다.

SAP 비즈니스 문서 내비게이터에 추가한 파일을 삭제하는 방법 - 전송 확인

5. ‘비즈니스 문서 내비게이터‘에 등록된 파일은 삭제되고, 목록에 나타나지 않게 됩니다.


※ 만약 ALV 프로그램에서 로고로 사용 중인 파일을 삭제하면 어떻게 될까요?
ALV 프로그램을 실행하는데 있어 오류는 발생하지 않습니다. 하지만 로고는 당연히 나타나지 않게 됩니다.





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


답글 남기기