콘텐츠로 이동

EXTUI PASTE

목적

EV_PASTE 이벤트는 외부에서 복사한 데이터를 UI 오브젝트에 적용할 수 있도록 함


주요 단계

1. UI 오브젝트 및 데이터 준비

o 외부에서 복사한 데이터 또는 애플리케이션에서 복사한 데이터를 적용할 UI 오브젝트를 생성

이미지

<사진 1> 복사한 데이터를 적용할 UI 개체 대상 화면

이미지

<사진 2> 복사 대상 외부 데이터 화면


2. ON_INIT에서 EV_PASTE 이벤트 호출

o EV_PASTE 이벤트를 호출하고, 붙여넣기 대상인 UI Instance ID와 Server Event Method를 입력


2.1 ABAP 소스 코드 예시

METHOD /U4A/IF_SERVER~HANDL_ON_INIT.

  " EV_PASTE in EXTUI_EVENTS is a method that pastes a copied TABLE into a UI TABLE.
  CALL METHOD /U4A/CL_EXTUI_EVENTS=>EV_PASTE
    EXPORTING
      IO_VIEW        = ME->/U4A/IF_SERVER~AR_VIEW  " [U4A] UI Element Super Class
      I_UID          = 'TABLE1'                    " Target UI instance ID
      I_SERVER_EVENT = 'EV_PASTE1'.                " Server event ID

ENDMETHOD.

3. 데이터 구조 변환 및 UI 테이블에 적용

o 테이블에 붙여넣은 데이터를 확인하고, 데이터를 행 단위로 변환 후 UI TABLE에 적용


3.1 ABAP 소스 코드 예시

METHOD EV_PASTE1.

  DATA : LS_FORM TYPE IHTTPNVP,
         LT_TAB  TYPE STRING_TABLE,
         LS_TAB  TYPE STRING,
         LT_STRU TYPE STRING_TABLE,
         LS_STRU TYPE STRING,
         LS_OTAB TYPE TY_TAB.

  FIELD-SYMBOLS <FS_FLD> TYPE ANY.

  DEFINE _SET_MSG.
    CALL METHOD /U4A/CL_UTILITIES=>M_MESSAGETOAST
      EXPORTING
        IO_VIEW = ME->/U4A/IF_SERVER~AR_VIEW
        I_MSGTX = &1.
  END-OF-DEFINITION.

*--------------------------------------------------------------------*
* The copied TABLE structure is stored in IT_FORM_DATA
* and the data is retrieved by 'CPASTED|TABLE1'.
*--------------------------------------------------------------------*

  READ TABLE IT_FORM_DATA INTO LS_FORM
    WITH KEY NAME = 'CPASTED|TABLE1'.

  IF SY-SUBRC NE 0.
    _SET_MSG ' Paste data does not exist.'.
    EXIT.
  ENDIF.

* Splits the data received as one column via NEWLINE into rows.
  SPLIT LS_FORM-VALUE AT CL_ABAP_CHAR_UTILITIES=>NEWLINE INTO TABLE LT_TAB.

  IF LT_TAB[] IS INITIAL.
    _SET_MSG ' The paste Information is Incorrectly Formatted.'.
    EXIT.
  ENDIF.

* Initialize existing UI TABLE
  REFRESH GT_TAB.

* Convert STRING TABLE to UI TABLE
  LOOP AT LT_TAB INTO LS_TAB.

* Split row data via HORIZONTAL_TAB
    SPLIT LS_TAB AT CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB INTO TABLE LT_STRU.

    LOOP AT LT_STRU INTO LS_STRU.

      UNASSIGN <FS_FLD>.
      ASSIGN COMPONENT SY-TABIX OF STRUCTURE LS_OTAB TO <FS_FLD>.

      CHECK <FS_FLD> IS ASSIGNED.
      <FS_FLD> = LS_STRU.

    ENDLOOP.

* Append converted row to UI TABLE
    APPEND LS_OTAB TO GT_TAB.
    CLEAR LS_OTAB.

  ENDLOOP.

ENDMETHOD.

4. 실행 화면

이미지

<사진 3> 복사 적용 전 화면

이미지

<사진 4> 복사 적용 반영 화면


추가 정보

o 해당 메서드는 Chrome 브라우저에서만 사용 가능하며, Internet Explorer는 지원하지 않음

o 이벤트 생성 시 반드시 Add Event Method를 이용하여 생성