콘텐츠로 이동

RUN_ASYNC_ON_REQUEST

목적

동기 실행 중 다른 작업이 불가능한 문제를 해결하기 위해,
동기와 비동기 실행을 함께 사용하여 시스템 응답성을 개선한다.


주요 단계

1. UI 객체 및 이벤트 생성

1.1. Application에서 UI Object와 Event를 생성

1.2. Form UI 및 Chart UI를 동기 실행 방식으로 데이터 구성 후 Application 실행

이미지

<사진 1> UI Object와 Event 생성


2. 동기 실행 방식

2.1. ABAP Source Code Example

METHOD /U4A/IF_SERVER~HANDL_ON_INIT.

*--동기로 데이터 수집.

      "Form UI.
      GS_FORM-F1 = 'U4A'.
      GS_FORM-F2 = 'U4A WorkSpace'.
      GS_FORM-F3 = '< /FONT>중요 항목'.
      GS_FORM-F4 = '동기상태 데이터 수집'.

      "차트 구성.
      CALL METHOD SET_CHART.

ENDMETHOD.

2.2. 동기 실행 중에는 다른 작업이 불가능 (예: PAGE2 선택 불가)

2.3. 동기 실행이 완료된 후 다른 작업 수행 가능 (예: PAGE2 선택 가능)

이미지

<사진 2> 동기 실행 중 다른 작업 불가능


이미지

<사진 3> 동기 실행 완료 후 다른 작업 가능


3. 비동기 실행 방식

3.1. Form UI를 동기 실행, Chart UI를 비동기 실행으로 데이터 구성 후 Application 실행

3.2. 동기 실행이 완료되고 비동기 실행이 진행 중이어도 다른 작업 수행 가능 (예: PAGE2 선택 가능)

3.3. 비동기 실행을 통해 구성한 차트 데이터는 나중에 차트 화면으로 이동하면 적용됨

이미지

<사진 4> 동기 실행 완료 후 비동기 실행 진행 중에도 다른 작업 가능


이미지

<사진 5> 차트 화면으로 이동 시 비동기 실행된 차트 데이터 확인


3.4. ABAP 소스 코드 예제

METHOD /U4A/IF_SERVER~HANDL_ON_INIT.

*--동기 실행.
      GS_FORM-F1 = 'U4A'.
      GS_FORM-F2 = 'U4A WorkSpace'.
      GS_FORM-F3 = 'Imortant Items'.
      GS_FORM-F4 = 'Collecting Synchronization Data'.

*--비동기 실행.
      CALL METHOD /U4A/CL_UTILITIES=>RUN_ASYNC_ON_REQUEST
        EXPORTING
          IO_VIEW       = ME->/U4A/IF_SERVER~AR_VIEW  " [U4A] UI Element Super Class
*         I_PRCCD       =                              " Callback Event에 전달받을 process code
*         IT_PARAM      =                              " HTTP Framework (iHTTP) Table Name/Value Pairs
*         I_IGNORE_ERR  =                              " 비동기에서 발생한 덤프 오류 무시 여부('X' = 덤프오류 무시함)
*         I_SYNC_DYN_UI =                              " 현재 동적생성한 UI를 비동기 시점에 적용 여부('X' = 비동기 시점에 적용함)
          I_FINISH_SEVT = 'EV_FINISH_ASYNC'            " 비동기 처리 완료 후 sync session에 호출할 Callback Server Event 명
*         IT_FINISH_CEVT =                             " 비동기 처리 완료 후 수행할 Client Event script
*         I_USE_WAIT    = 'X'                          " 비동기 처리 완료 후 Server Event 호출시 WAIT 사용 여부('X' = 사용함)
      .

      "메세지 호출
      CALL METHOD /U4A/CL_UTILITIES=>M_MESSAGETOAST
        EXPORTING
          IO_VIEW = ME->/U4A/IF_SERVER~AR_VIEW         " [U4A] UI Element Super Class
          I_MSGTX = 'Drawing an asynchronous status chart'.  " MESSAGE TEXT

ENDMETHOD.

[첨부 ABAP SOURCE (/U4A/IF_SERVER~HANDL_ON_REQUEST)]

METHOD /U4A/IF_SERVER~HANDL_ON_REQUEST.

      "차트 구성
      CALL METHOD SET_CHART.

ENDMETHOD.