본문 바로가기
ABAP/Function|Class

[Class] CL_GUI_FRONTEND_SERVICES=>GET_SCREENSHOT

by name_text 2023. 7. 3.

CL_GUI_FRONTEND_SERVICES

GET_SCREENSHOT

현재 화면 스크리샷 생성

 

어디에 써먹는게 좋을지 생각은 안나지만... CL_GUI_FRONTEND_SERVICES 클래스에 재밌는 메소드가 있어서 테스트를 해봤습니다.

실행하면 현재 활성 화면을 캡쳐해서 xstring으로 반환하는 메소드입니다.

 

# 사용 방법

CALL METHOD CL_GUI_FRONTEND_SERVICES=>GET_SCREENSHOT
  IMPORTING
    MIME_TYPE_STR        = DATA(LV_MIME)
    IMAGE                = DATA(LV_IMAGE)
  EXCEPTIONS
    ACCESS_DENIED        = 1
    CNTL_ERROR           = 2
    ERROR_NO_GUI         = 3
    NOT_SUPPORTED_BY_GUI = 4
    OTHERS               = 5
        .
ABAP

 

# 사용 예시

현재 화면 스크린샷을 생성하여 CL_GUI_PICTURE로 미리보기 출력

REPORT YTEMP_SANDBOX.

"현재 화면 스크린샷
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GET_SCREENSHOT
  IMPORTING
    MIME_TYPE_STR        = DATA(LV_MIME)
    IMAGE                = DATA(LV_IMAGE)
  EXCEPTIONS
    ACCESS_DENIED        = 1
    CNTL_ERROR           = 2
    ERROR_NO_GUI         = 3
    NOT_SUPPORTED_BY_GUI = 4
    OTHERS               = 5
        .
IF SY-SUBRC <> 0.
  EXIT.
ELSE.
  WRITE:/ LV_MIME.
ENDIF.

"이미지 미리보기
DATA: LO_IMAGE TYPE REF TO CL_GUI_PICTURE,
      LO_CONTA TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
      LV_TYPE(50)     TYPE C,
      LV_SUBTYPE(50)  TYPE C,
      LV_URL   TYPE CNDP_URL,
      LV_LEN   TYPE I,
      LT_BTAB  TYPE SOLIX_TAB.

SPLIT LV_MIME AT '/' INTO LV_TYPE LV_SUBTYPE.

"XSTRING을 Binary ITab으로 변환
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
  EXPORTING
    BUFFER                = LV_IMAGE
*   APPEND_TO_TABLE       = ' '
  IMPORTING
    OUTPUT_LENGTH         = LV_LEN
  TABLES
    BINARY_TAB            = LT_BTAB
          .

"Binary Data의 SAP 내부 URL 생성
CALL FUNCTION 'DP_CREATE_URL'
  EXPORTING
    TYPE                       = LV_TYPE
    SUBTYPE                    = LV_SUBTYPE
    SIZE                       = LV_LEN
*   DATE                       =
*   TIME                       =
*   DESCRIPTION                =
    LIFETIME                   = CNDP_LIFETIME_TRANSACTION
*   CACHEABLE                  =
*   SEND_DATA_AS_STRING        =
*   FIELDS_FROM_APP            =
  TABLES
    DATA                       = LT_BTAB
*   FIELDS                     =
*   PROPERTIES                 =
*   COLUMNS_TO_STRETCH         =
  CHANGING
    URL                        = LV_URL
  EXCEPTIONS
    DP_INVALID_PARAMETER       = 1
    DP_ERROR_PUT_TABLE         = 2
    DP_ERROR_GENERAL           = 3
    OTHERS                     = 4
          .
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

"이미지 뷰어 생성
CREATE OBJECT LO_IMAGE
  EXPORTING
    PARENT  = CL_GUI_CONTAINER=>SCREEN0.

LO_IMAGE->SET_DISPLAY_MODE( CL_GUI_PICTURE=>DISPLAY_MODE_FIT_CENTER ).
LO_IMAGE->LOAD_PICTURE_FROM_URL( LV_URL ).
ABAP

댓글