"SUBMIT" 이란 ABAP 프로그램에서 다른 Report 프로그램을 호출할 때 사용하는 명령어이다.
SUBMIT으로 호출하는 프로그램은 TYPE 1 ( Executable Program )이어야 한다.
CALL TRANSACTION 명령어와 유사하지만, 트랜잭션 코드( T-CODE )를 호출하는 CALL TRANSACTION과 달리 SUBMIT은 프로그램( TYPE 1 )을 호출한다.
기타 자세한 정보는 F1키 및 ABAP Keyword Documentation을 참고하자.
https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/index.htm
- Step 01 : SUBMIT 명령어로 타 프로그램 호출 해보기
FI 모듈의 레포트 중 "T-Code : FBL3N" G/L 계정 개별 항목을 조회하는 레포트 프로그램을 호출해보자.
- Step 01-1 : CBO 프로그램에서 계정번호, 회사코드를 입력받아 FI 모듈 레포트 중 "G/L 계정 개별 항목 조회" 프로그램을 호출해보자.
→
CBO 프로그램에서 위와 같이 입력 후 실행하면 입력한 파라미터 값을 "G/L 계정 개별 항목 조회"프로그램을 호출하며 값을 던진다.
실행 시 위와 같이 파라미터가 넘어가면서 호출 프로그램이 실행된다.
SUBMIT 하는 로직을 간단히 살펴보자.
PARAMETERS:
PA_RACCT TYPE RACCT,
PA_BUKRS TYPE BUKRS.
START-OF-SELECTION.
SUBMIT RFITEMGL
VIA SELECTION-SCREEN
WITH SD_SAKNR-LOW EQ PA_RACCT
WITH SD_BUKRS-LOW EQ PA_BUKRS
AND RETURN.
SUBMIT 로직 설명
SUBMIT .. 호출 프로그램
VIA SELECTION-SCREEN : 프로그램의 조회 화면을 보여준다.
이 명령어를 입력하지 않으면 바로 조회 결과 화면이 보인다.
WITH ... parameters : 프로그램 호출 시 조회 조건에 값을 던질 파라미터를 지정한다.
AND RETURN : SUBMIT으로 호출한 프로그램 종료 후 해당 로직으로 돌아온다.
즉, 호출 프로그램을 실행하며 RACCT(계정번호), BUKRS(회사코드) 값을 던져 레포트를 조회한 후 호출 한 프로그램으로 돌아오는 것이다.
- ※ 트랜잭션의 프로그램 명을 찾고 싶다면, 아래 "더보기"를 눌러 내용을 확인해보자.
프로그램(T-Code) 실행 후 상단 메뉴 바의 "시스템" ==> "상태" 클릭
위 부분에서 프로그램, 트랜잭션 코드, 화면 번호 등의 정보를 확인할 수 있다.
다른 모듈, 프로그램에서도 유용하게 사용할 수 있는 방법이니 알아 두면 좋다.
- ※ WITH로 던질 파라미터의 이름을 알고 싶다면, 아래 "더보기"를 눌러 내용을 확인해보자.
필드에 "F1"키를 누르면 위와 같은 팝업 화면이 뜬다.
( 해당 팝업은 버전에 따라 다를 수 있다. )
"기술 정보" 혹은 위 버튼을 클릭하면,
해당 필드의 Dictionary 정보, 필드 명, SAP Memory ID 등을 확인할 수 있다.
- Step 01-2 : 좀 더 다양한 조건의 파라미터를 던지기 위해 WITH SELECTION-TABLE itab 옵션을 알아보자.
DATA:
LS_SELTAB TYPE RSPARAMS,
LT_SELTAB TYPE TABLE OF RSPARAMS.
PARAMETERS:
PA_RACCT TYPE RACCT,
PA_BUKRS TYPE BUKRS.
* OLD Syntax
LS_SELTAB-SELNAME = 'SD_SAKNR'.
LS_SELTAB-KIND = 'S'.
LS_SELTAB-SIGN = 'I'.
LS_SELTAB-OPTION = 'BT'.
LS_SELTAB-LOW = '10000000'.
LS_SELTAB-HIGH = '19999999'.
APPEND LS_SELTAB TO LT_SELTAB.
LS_SELTAB-SELNAME = 'SD_BUKRS'.
LS_SELTAB-KIND = 'S'.
LS_SELTAB-SIGN = 'I'.
LS_SELTAB-OPTION = 'EQ'.
LS_SELTAB-LOW = '1000'.
APPEND LS_SELTAB TO LT_SELTAB.
LS_SELTAB-SELNAME = 'X_AISEL'.
LS_SELTAB-KIND = 'P'.
LS_SELTAB-LOW = 'X'.
APPEND LS_SELTAB TO LT_SELTAB.
LS_SELTAB-SELNAME = 'SO_BUDAT'.
LS_SELTAB-KIND = 'S'.
LS_SELTAB-SIGN = 'I'.
LS_SELTAB-OPTION = 'BT'.
LS_SELTAB-LOW = '20230901'.
LS_SELTAB-HIGH = '20230930'.
APPEND LS_SELTAB TO LT_SELTAB.
* NEW Syntax
LT_SELTAB = VALUE #(
( SELNAME = 'SD_SAKNR' KIND = 'S' SIGN = 'I' OPTION = 'BT' LOW = '10000000' HIGH = '19999999' )
( SELNAME = 'SD_BUKRS' KIND = 'S' SIGN = 'I' OPTION = 'EQ' LOW = '1000' )
( SELNAME = 'X_AISEL' KIND = 'P' SIGN = 'I' OPTION = 'EQ' LOW = 'X' )
( SELNAME = 'SO_BUDAT' KIND = 'S' SIGN = 'I' OPTION = 'BT' LOW = '20230901' HIGH = '20230930' ) ).
START-OF-SELECTION.
SUBMIT RFITEMGL
VIA SELECTION-SCREEN
WITH SELECTION-TABLE LT_SELTAB
AND RETURN.
→ OLD와 NEW SYNTAX로 나눠서 작성했지만, 본인이 편한 방법을 사용하면 된다.
→ WITH SELECTION-TABLE itab 옵션을 사용해 좀 더 다양한 파라미터를 넘겨 조회할 수 있다.
→ 각각의 필드 명, 라디오버튼 등을 제어하기 위해 위에 "F1키"를 눌러서 변수명을 찾아 지정해주면 된다.
※ WITH SELECTION-TABLE itab 의 Internal Table의 구조를 좀 더 자세히 보자.
구조 "RSPARAMS"를 조회 해보면, RANGE 변수와 같이 SIGN, OPTION, LOW, HIGH 값을 넣을 수 있다.
SELNAME에 PARAMETER 혹은 SELECT-OPTION의 이름을,
KIND에는 PARAMETER ("KIND = P") 인지, SELECT-OPTION ("KING = S") 인지 입력한다.
위 구조를 가지는 INTERNAL TABLE에 값을 담아 SUBMIT으로 타 프로그램 호출 시
WITH SELECTION-TABLE 명령어로 값을 던져 호출 프로그램의 조회 조건으로 사용할 수 있다.
여기까지 SUBMIT 명령어로 타 프로그램을 호출 하는 방법을 알아보고,
이어서 프로그램의 "동적 선택"을 활용하는 방법을 포스팅 하겠다.
'SAP > ABAP' 카테고리의 다른 글
ABAP SUBMIT & Dynamic Select-Option #2 (0) | 2023.09.12 |
---|---|
ALV ICON에 Tooltip 넣기 (0) | 2023.09.08 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!