본문 바로가기
SAP

SAP ABAP - 동적 구문에 대한 설명

by SAP기록실 2025. 11. 6.

SAP ABAP은 정적(Static) 언어로 분류되지만,

실제 개발에서는 사용자 입력이나 비즈니스 조건에 따라 실행 시점에 구조를 바꾸는 동적 처리가 매우 자주 필요합니다. 예를 들어, 사용자가 입력한 필드에 따라 WHERE 조건을 조립하거나 테이블명 자체를 변수로 받아서 SELECT 하거나 특정 필드만 표시하는 공통 조회 프로그램을 만들 때 이런 유연성을 구현하는 방법이 바로 ABAP의 동적 구문(Dynamic Statements) 입니다.


동적 조건 처리 예시

동적 Where 예시

"---------------------------------------------------------------------- " 목적 : 사용자 입력 조건을 기반으로 WHERE 구문을 문자열로 생성 "---------------------------------------------------------------------- PARAMETERS: p_bukrs TYPE bkpf-bukrs OBLIGATORY, p_gjahr TYPE bkpf-gjahr, p_belnr TYPE bkpf-belnr. DATA: lv_where TYPE string, "WHERE 절을 담을 문자열 변수 lt_bkpf TYPE TABLE OF bkpf, "조회 결과 저장용 테이블 ls_bkpf TYPE bkpf. "작업용 구조체 "조건 조립 lv_where = |bukrs = '{ p_bukrs }'|. "필수 조건 IF p_gjahr IS NOT INITIAL. lv_where = lv_where && | AND gjahr = '{ p_gjahr }'|. ENDIF. IF p_belnr IS NOT INITIAL. lv_where = lv_where && | AND belnr = '{ p_belnr }'|. ENDIF. "---------------------------------------------------------------------- " 동적 WHERE 구문 실행 "---------------------------------------------------------------------- SELECT * FROM bkpf INTO TABLE @lt_bkpf WHERE (lv_where). "문자열로 전달된 조건 해석 WRITE: / '생성된 동적 WHERE:', lv_where. LOOP AT lt_bkpf INTO ls_bkpf. WRITE: / ls_bkpf-bukrs, ls_bkpf-belnr, ls_bkpf-gjahr. ENDLOOP.

(lv_where) 괄호는 “이 변수를 SQL 구문으로 해석하라”는 의미입니다. 문자열 안에서 { } 를 사용하면 ABAP New Syntax의 문자열으로 변수값이 자동 치환됩니다. '(작은따옴표) 반드시 포함해야 문자열로 인식됩니다.

 

https://blog.naver.com/sap_y/224037950730

 

SAP ABAP - 동적 구문에 대한 설명

SAP ABAP은 정적(Static) 언어로 분류되지만, 실제 개발에서는 사용자 입력이나 비즈니스 조건에 ...

blog.naver.com

 

https://m.blog.naver.com/sap_y/224037950730

 

SAP ABAP - 동적 구문에 대한 설명

SAP ABAP은 정적(Static) 언어로 분류되지만, 실제 개발에서는 사용자 입력이나 비즈니스 조건에 ...

blog.naver.com

 

'SAP' 카테고리의 다른 글

SAP ABAP - User Exit  (0) 2025.11.06
SAP ABAP - Module pool F4 / ALV F4  (0) 2025.11.06
SAP 공통 - Lock Object  (0) 2025.11.06
SAP ABAP - ALV Screen에 Selection-Screen 화면 추가  (0) 2025.11.06
SAP FI - FBL*N 필드추가 및 내역 입력 방법  (0) 2025.11.06