SUBMIT은 다른 프로그램을 호출하는 구문으로, 단순히 실행만 하는 것이 아니라 selection screen 값 전달, variant 실행, 리스트 결과 처리까지 함께 제어할 수 있다. 트랜잭션 코드를 호출하는 문법이 아니라 executable program을 호출하는 점이 특징이며, 전달 방식으로 WITH, WITH SELECTION-TABLE, USING SELECTION-SET 등을 제공한다. 본문은 FAGL_ACCOUNT_BALANCE(FAGLB03 기준) 예제로 설명된다.
가장 기본적인 SUBMIT 사용법은 프로그램명을 직접 호출하고, RETURN 옵션으로 호출 종료 후 현재 프로그램으로 돌아오는 방식이다. WITH 구문으로 selection screen 값 전달이 가능하고, AND RETURN을 사용하면 호출이 끝난 뒤 제어가 원래 프로그램으로 복귀한다는 점이 핵심이다. 예를 들어 SUBMIT fagl_account_balance WITH rbukrs = '1000' WITH racct = '11111000' WITH ryear = '2026' AND RETURN 구문은 호출 후 복귀를 보장한다.
WITH SELECTION-TABLE은 조건이 많아지거나 동적으로 조립해야 할 때 적합하다. selection screen 값을 내부 표 형태로 전달해 한 번에 넘길 수 있으며, RSPARAMS 또는 RSPARAMSL_255 구조의 표를 활용한다. 예제는 회사코드, G/L 계정, 회계연도를 각각 lt_rspar에 담아 SUBMIT fagl_account_balance WITH SELECTION-TABLE lt_rspar AND RETURN 형태로 전달한다. 장점은 구조적 정리와 반복문으로 조건 구성의 용이성이다.
USING SELECTION-SET은 호출 대상 프로그램의 selection screen을 특정 variant 값으로 채운다. 사전 준비로 FAGL_ACCOUNT_BALANCE를 먼저 실행하고 필요한 조건을 입력한 뒤 Variant를 저장하고 SUBMIT fagl_account_balance USING SELECTION-SET 'TEST' AND RETURN 형태로 실행한다. 운영에서 조건 변경이 쉬운데 배치 실행과도 잘 맞는다.
WITH FREE SELECTIONS는 일반적인 선택 매개 전달과 다르며, Logical Database의 dynamic selections를 전달할 때 사용한다. RSDS_TEXPR 타입의 내부 표현식을 전달하도록 되어 있으며, RSDS_TRANGE를 FREE_SELECTIONS_RANGE_2_EX로 변환해 SUBMIT에 넘긴다. 예제는 FAGLFLEXA를 기준으로 노드와 조건을 구성하고 RSDS_TRANGE를 생성한 뒤 FREE_SELECTIONS_RANGE_2_EX로 변환해 SUBMIT에 전달하는 과정이다. 이를 통해 선택 조건이 많아도 표현식을 체계적으로 구성 가능하다.
FREE_SELECTIONS_RANGE_2_WHERE는 OPEN SQL의 동적 WHERE 조건 생성에 활용된다. RSDS_TRANGE를 바탕으로 WHERE 절 문자열을 만들고, FREE_SELECTIONS_RANGE_2_WHERE를 호출해 얻은 lt_where를 이용해 OPEN SQL로 실제 조회를 수행한다. 문자열을 직접 조합하는 대신 구조화된 조건으로 WHERE를 자동 생성하는 점이 큰 장점이다.
이처럼 SUBMIT의 다양한 방식과 각 처리 방식은 상황에 따라 서로 보완적으로 활용된다. 생성한 조건과 호출 데이터를 필요에 따라 선택적으로 가져오는 방법에 관해선 별도 포스팅에서 다루어진다.
#
ABAP
#
SAP
#
SI
#
SM
#
SUBMIT
#
개발
#
개발자
원문 링크 : SAP ABAP - SUBMIT