프로그램 호출시 새창으로 호출하기 (ABAP4_CALL_TRANSACTION)

니언·2022년 6월 15일
0

프로그램 호출시 새창으로 호출하기.

호출할 프로그램의 초기화면이 단일값(PARAMETER)면 CALL TRANSACTION,
다중값(SELECT-OPTIONS)이면 SUBMIT을 사용하여 호출한다.

기존 SUBMIT으로 호출했던 프로그램을,
New session으로 불러와달라는 요청이 있다.

기존:

  RANGES: LR_POSID  FOR PRPS-POSID.
  CLEAR: LR_POSID, LR_POSID[].
  LR_POSID = 'IEQ'.
  LR_POSID-LOW = 전달할 값.
  APPEND LR_POSID. CLEAR LR_POSID.

  SUBMIT 프로그램명
    WITH P_POSID  IN LR_POSID AND RETURN.

ABAP4_CALL_TRANSACTION 사용

먼저 호출할 프로그램 화면 파라미터에 메모리아이디를 부여한다.

SELECT-OPTIONS: p_posid  FOR prps-posid MEMORY ID 메모리아이디.

그리고 기존 프로그램에 아래로직을 추가하는데,
이때 PARID 에는 호출할 프로그램의 파라미터 이름을 넣는것이 아닌, 파라미터에 부여한 MEMORY ID 이름을 넣어주는거다.

  DATA : LT_SPA TYPE TABLE OF RFC_SPAGPA.

  LT_SPA = VALUE #( ( PARID = 메모리아이디 PARVAL = 전달할 값 ) ).

  CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
    STARTING NEW TASK '티코드' "OR 'NEW'
    DESTINATION 'NONE'
    EXPORTING
      TCODE                 = 티코드
      SKIP_SCREEN           = GC_X
    TABLES
      SPAGPA_TAB            = LT_SPA
    EXCEPTIONS
      COMMUNICATION_FAILURE = 1
      SYSTEM_FAILURE        = 2
      OTHERS                = 3.

  IF SY-SUBRC NE 0.
    MESSAGE ID SY-MSGID TYPE GC_S NUMBER SY-MSGNO
            DISPLAY LIKE GC_E
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
profile
쭈니어 개발자

0개의 댓글