ABAP 프로그램에서 윈도우 클립보드(Clipboard)에 있는 내용을 가져와서 활용 하는 방법


SAP에서 ABAP 프로그램으로 구현하기 힘든 작업을 별도의 외부 프로그램을 활용해서 구현하게 됩니다.
외부 프로그램을 실행해서 결과 값을 클립보드에 저장하고, ABAP에서는 클립보드에 있는 내용을 가져와서 후속 작업을 처리하는 과정으로 프로그램을 개발해야 하는 경우가 생기게 됩니다.

예를 들어 전자 저울 계측 값을 가져와서 처리해야 하는 경우 외부 프로그램을 이용하여 계측 값을 클립보드에 저장하게 하고, ABAP 프로그램에서 클립보드에 저장된 계측 값을 읽어와서 처리를 하거나 또는 웹 상에서 정규 형태로 만들어진 문서를 Drag하여 복사해서 클립보드에 저장하고 ABAP에서는 클립보드에 있는 내용을 인터널테이블로 읽어온 다음 적당히 문자열을 분리하여 사용하는 등의 작업이 있을 수 있습니다.

이번 글에서는 ABAP 프로그램에서 윈도우 클립보드(Clipboard)에 있는 내용을 가져와서 활용 하는 방법에 대해 알아보겠습니다.

ABAP 프로그램에서 윈도우 클립보드(Clipboard)에 있는 내용을 가져와서 활용 하는 방법

ABAP에서 윈도우 클립보드(Clipboard)를 활용하는 방법

▼ 아래 예제 프로그램은 ‘C:\SAPRUN\BALANCE.EXE’ 외부 프로그램을 실행하고, 실행 결과 클립보드(Clipboard)에 저장된 내용을 가져와서 처리하는 프로그램 소입니다.

  • ABAP 프로그램에서 윈도우 클립보드의 내용을 가져오는 Function 모듈은 ‘CLPB_IMPORT‘ 입니다.
  DATA: BEGIN OF CLIP_DATA OCCURS 1,
          TEXT(20) TYPE C,
        END OF CLIP_DATA.
  DATA  EMPTY(1).
 
*===================================================
*– 외부 프로그램 실행
*—————————————————
  CALL METHOD CL_GUI_FRONTEND_SERVICES=>EXECUTE
    EXPORTING
      APPLICATION            = ‘C:\SAPRUN\BALANCE.EXE’
      MAXIMIZED              = ‘X’
      OPERATION              = ‘OPEN’
    EXCEPTIONS
      cntl_error             = 1
      error_no_gui           = 2
      bad_parameter          = 3
      file_not_found         = 4
      path_not_found         = 5
      file_extension_unknown = 6
      error_execute_failed   = 7
      synchronous_failed     = 8
      not_supported_by_gui   = 9
      OTHERS                 = 10.
 
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
 
*===================================================
*   CLIPBOARD에 저장된 데이타를 가져오기 위해서는
*   약간의 지연시간이 필요하다.
*—————————————————
  WAIT UP TO 1 SECONDS.
*====================================================
 
  CLEAR EMPTY.
  REFRESH CLIP_DATA.
  FREE CLIP_DATA.
 
*—————————————————
*   클립보드의 값을 CLIP_DATA이라는 인터널테이블로 받아온다.
*—————————————————
  CALL FUNCTION ‘CLPB_IMPORT’
    IMPORTING
      EMPTY      = EMPTY
    TABLES
      DATA_TAB   = CLIP_DATA
    EXCEPTIONS
      CLPB_ERROR = 01.
 
*—————————————————
* 클립보드의 내용을 처리하는 구문 작성
*—————————————————
  LOOP AT CLIP_DATA.
 
 
  ENDLOOP.
  • 외부 프로그램을 실행하고 클립보드의 내용을 읽어 올 때 약간의 지연 시간을 줄 필요가 있습니다.
    외부 프로그램에서 클립보드에 저장하는 시간과 ABAP 에서 클립보드의 내용을 읽어오는 시간에 약간의 간격이 필요합니다.
  • 클립보드의 내용을 인터널테이블로 가져옵니다. 따라서 멀티 라인의 데이터를 가져올 수도 있습니다.

결론

윈도우 클립보드의 내용을 ABAP 프로그램에서 활용할 일은 그리 많지는 않지만 그래도 가끔은 구현해야 하는 로직 입니다.

클립보드를 적절히 활용하면 좀 더 효율적인 프로그램 개발이 가능해 집니다.

참고로 ABAP에서 클립보드(Clipboard)로 데이터를 저장하는 Function 모듈인 ‘CLPB_EXPORT‘도 알아 두면 유용하게 사용할 수 있습니다.





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


답글 남기기