안녕하세요. 모델와이입니다.
SAP ABAP 개발에서는 프로그램 실행 중 데이터를 유지하고 전달하는 다양한 방법이 제공됩니다.
그중 ABAP Memory는 프로그램 간 데이터 공유 및 성능 최적화를 위해 자주 활용됩니다.
이번 글에서는 SAP ABAP Memory의 개념, 활용법, 그리고 스탠다드 설정 및 CBO에서의 활용을 다뤄보겠습니다.

1. SAP ABAP Memory란?
SAP ABAP Memory는 SAP 내부에서 실행되는 프로그램 간 데이터를 공유하는 메커니즘입니다. 이는 메모리 내에서만 유지되므로 속도가 빠르고, 데이터베이스를 거치지 않기 때문에 부하를 줄일 수 있는 장점이 있습니다.
SAP에서 사용되는 메모리는 크게 두 가지로 나뉩니다:
- ABAP Memory: 같은 SAP 세션 내에서 데이터를 공유하는 메모리 공간
- SAP Memory (SPA/GPA Parameter): 트랜잭션 간 데이터를 공유하는 글로벌 메모리 공간
2. ABAP Memory 활용법
2.1 EXPORT & IMPORT를 이용한 데이터 저장 및 조회
EXPORT와 IMPORT 명령어를 사용하면 한 프로그램에서 다른 프로그램으로 데이터를 전달할 수 있습니다.
✅ 데이터 저장 (EXPORT) - 프로그램 A
DATA: lt_data TYPE TABLE OF mara.
SELECT * FROM mara INTO TABLE lt_data WHERE matnr = '123456'.
EXPORT lt_data TO MEMORY ID 'Z_MY_MEMORY'.
✅ 데이터 가져오기 (IMPORT) - 프로그램 B
DATA: lt_data TYPE TABLE OF mara.
IMPORT lt_data FROM MEMORY ID 'Z_MY_MEMORY'.
IF sy-subrc = 0.
WRITE: 'Memory Import Test'.
ENDIF.
- EXPORT TO MEMORY를 통해 저장된 데이터는 같은 SAP 세션에서만 접근 가능
- IMPORT FROM MEMORY로 데이터를 불러와 활용 가능
2.2 SET PARAMETER & GET PARAMETER를 이용한 SAP Memory 활용
SAP Memory는 트랜잭션 간 데이터를 공유하는 메커니즘으로, SET PARAMETER와 GET PARAMETER를 활용합니다.
PARAMETER ID는 STANDARD에 선언된 것 처럼 해당 데이터요소에 매개변수 ID를 직접 선언하여 등록하는 방법과
아래와 같이 프로그램에 parameter 변수에 직접 입력해서 처리하는 방법이 존재합니다.
✅ 데이터 저장 (SET PARAMETER)
DATA: lv_matnr TYPE matnr.
lv_matnr = '1000001'.
SET PARAMETER ID 'MAT' FIELD lv_matnr.
✅ 데이터 가져오기 (GET PARAMETER)
DATA: lv_matnr TYPE matnr.
GET PARAMETER ID 'MAT' FIELD lv_matnr.
WRITE: '불러온 자재번호:', lv_matnr.
- SET PARAMETER로 데이터를 저장하면 다른 트랜잭션에서도 GET PARAMETER로 불러올 수 있음
- SPA/GPA Parameter는 사용자의 세션 동안 유지되므로, 트랜잭션 간 데이터 전달이 가능함.
3. ABAP Memory의 스탠다드 설정
3.1 SAP 표준 ABAP Memory 활용 사례
SAP 표준 프로그램에서도 메모리를 활용하여 성능을 최적화하는 사례가 많습니다.
- CALL TRANSACTION을 사용할 때 메모리를 활용하여 데이터를 전달
- SUBMIT 문을 사용하여 다른 프로그램을 실행할 때 EXPORT TO MEMORY를 활용
- SELECT-OPTIONS 값을 PARAMETER ID에 저장하여 사용자 입력 유지
3.2 CALL TRANSACTION을 활용한 메모리 데이터 전달
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
이 코드만 사용하면 첫 화면을 건너뛸 뿐 데이터를 넘길 수 없습니다. SET PARAMETER를 활용하면 데이터 입력 후 바로 화면이 열리도록 설정할 수 있습니다.
DATA: lv_matnr TYPE matnr.
lv_matnr = '1000001'.
SET PARAMETER ID 'MAT' FIELD lv_matnr.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
- CALL TRANSACTION을 활용하여 SAP Memory에서 데이터를 가져와 자동으로 입력 가능
- 특정 트랜잭션 실행 시 사용자 개입을 최소화할 수 있음
4. CBO (Custom Business Object)에서의 메모리 선언
CBO(Custom Business Object)는 SAP S/4HANA의 확장 가능성을 제공하는 기능으로, 표준 객체를 변경하지 않고도 커스텀 필드 및 로직을 추가할 수 있습니다.
4.1 CBO에서 ABAP Memory 활용하기
CBO에서도 ABAP Memory를 사용할 수 있습니다.
✅ CBO에서 ABAP Memory 활용 예제
DATA: lv_custom_data TYPE string.
lv_custom_data = 'CBO_DATA'.
EXPORT lv_custom_data TO MEMORY ID 'Z_CBO_TEMP'.
DATA: lv_custom_data TYPE string.
IMPORT lv_custom_data FROM MEMORY ID 'Z_CBO_TEMP'.
WRITE: 'CBO에서 가져온 데이터:', lv_custom_data.
- CBO 내에서 데이터 캐싱 및 공유 용도로 사용할 수 있음
🎯 결론
SAP ABAP 개발에서 Memory 활용은 성능 최적화 및 데이터 처리 속도 개선의 중요한 요소입니다.
✅ 핵심 정리
- **ABAP Memory (EXPORT/IMPORT)**는 같은 SAP 세션 내에서 데이터를 공유
- **SAP Memory (SET/GET PARAMETER)**는 트랜잭션 간 데이터를 공유
- CALL TRANSACTION과 PARAMETER ID를 활용하면 사용자 입력을 자동화 가능
- CBO에서도 ABAP Memory를 활용하여 데이터 공유 가능
- 테이블 데이터와 파라미터 데이터에 따른 필요에 따라 사용법을 파악 필요
SAP 성능 최적화를 위해 적절한 메모리 활용 기법을 익히고 적용하는 것이 중요합니다.
실무에서 다양한 시나리오에 따라 적절한 메모리 활용 방법을 선택해보세요! 😊
'SAP 일반' 카테고리의 다른 글
SAP BP 세금번호 저장 위치 차이: KNA1-STCD2 vs. DFKKBPTAXNUM (0) | 2025.03.03 |
---|---|
SAP ABAP Performance Tunning - ST12 , ST03 사용법 (0) | 2025.02.13 |
SAP 텍스트 번역 내역 이관 방법 (0) | 2025.02.10 |
SAP FSCM 재무공급망관리 신용관리 현금흐름관리 여신관리 (0) | 2024.11.25 |
SAP HANA e-Learning 강의 정보 (3) | 2024.11.14 |