SAP
-
ABAP/AMDP INSERT-SELECT-UPDATE 트랜잭션(LUW) 완전 정리SAP 2026. 7. 9. 19:28
ABAP/AMDP INSERT → SELECT → UPDATE 트랜잭션(LUW) 완전 정리INSERT → SELECT → UPDATE 흐름에서 중간에 COMMIT이 없는 경우의 동작, ABAP와 AMDP의 트랜잭션 관계, read-your-own-writes 원칙, delta merge, 그리고 실무에서 자주 발생하는 "COMMIT 후에도 SELECT가 안 되는" 현상까지 정리한다.1. 기본 개념: DB LUW와 트랜잭션 가시성INSERT → SELECT → UPDATE 사이에 COMMIT이 없으면, 이 세 작업은 모두 하나의 미확정 DB 트랜잭션(DB LUW) 안에서 실행된다. 같은 세션(커넥션) 안에서는 자신이 방금 INSERT한 값을 SELECT로 즉시 조회할 수 있다 — read-your-own..
-
AMDP에서 HANA 서버 타임존(UTC/KST) 확인하는 방법SAP 2026. 7. 8. 21:15
AMDP / HANA 서버 타임존(UTC vs KST) 확인 방법 정리Oracle → AMDP 마이그레이션 시 SYSDATE를 CURRENT_DATE / CURRENT_TIMESTAMP로 단순 치환하면자정 전후 시간대(KST 00:00~08:59)에 날짜가 하루 어긋날 수 있다. 이 문서는 원인과, 시스템에서 직접 확인하는 방법을 정리한다.1. 문제 원인 — Oracle과 HANA의 "현재 시각" 기준이 다르다기준 타임존Oracle SYSDATEDB 서버 OS 로컬 타임존 (온프레미스는 보통 KST)HANA CURRENT_DATE / CURRENT_TIMESTAMPHANA 서버 시스템 타임존 (SAP Basis 표준 관행상 대부분 UTC)⚠️ KST는 UTC+9이므로, KST 기준 00:00~08:59 ..
-
대용량 itab 처리와 바이너리 직렬화/압축 정리SAP 2026. 7. 8. 19:05
대용량 itab 처리와 바이너리 직렬화 / 압축 정리 SAP ABAP에서 대용량 internal table을 다룰 때의 조회 최적화, 직렬화(EXPORT/IMPORT), 압축(CL_ABAP_GZIP), 그리고 xstring ↔ string 변환까지 실무 기준으로 정리한 내용입니다. 1. 대용량 itab 처리 기본 원칙 1-1) 데이터 조회 시 고려사항 SELECT * 지양, 필요한 필드만 지정 (메모리·네트워크 절감) WHERE 조건이 인덱스 컬럼과 일치하는지 확인 (Full table scan 방지) FOR ALL ENTRIES 사용 시: 빈 테이블 체크 필수, 중복 제거(SORT + DELETE ADJACENT DUPLICATES) 필요. 내부적으로 OR 조건으로 풀리므로 대..
-
ABAP 동적 JSON 처리 - LCL_JSON_HANDLER 로컬 클래스 설계SAP/소스 2026. 7. 7. 21:27
ABAP 동적 JSON 처리: LCL_JSON_HANDLER 로컬 클래스 설계SAP ABAP 환경에서 JSON String을 동적 구조(REF TO DATA)로 변환하고, 구조체를 JSON으로 직렬화하는 로직을 /ui2/cl_json 기반으로 모듈화한 과정을 정리한다. 펑션 그룹/리포트 양쪽에서 재사용 가능한 로컬 클래스, 인스턴스 기반 구조로 설계했다.1. 요구사항 정리 동적 데이터 전달 방식으로 JSON을 채택 값 변환은 /ui2/cl_json 표준 클래스 사용 JSON String → 동적 구조 변환 시 REF TO DATA 타입으로 리턴 구조체 → JSON 변환은 직접 매핑 방식 각 로직은 class method로 모듈화 클래스는 로컬로 작성하여 펑션/리포트 어디서든 INCLUDE 가능..
-
AMDP 예외 처리 정리: SIGNAL, EXIT HANDLER, CX_AMDP_EXECUTION_ERRORSAP 2026. 7. 2. 21:59
AMDP 예외 처리 정리: SIGNAL, EXIT HANDLER, CX_AMDP_EXECUTION_ERROR SAP S/4HANA On-Premise 환경에서 AMDP(SQLScript) 개발 시 예외를 어떻게 발생시키고 ABAP 쪽에서 어떻게 받을지 정리한 내용입니다. 1. SIGNAL 문법 AMDP는 HANA SQLScript 기반이라 SIGNAL 문법을 지원합니다. 사용자 정의 예외를 강제로 발생시킬 때 사용합니다. METHOD get_data BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT OPTIONS READ-ONLY USING zdemo_tab. IF :iv_key IS NULL THEN SIGNAL SQL_ERROR_CODE 1000..
-
AMDP OPTIONS CDS SESSION CLIENT CURRENT - MANDT 처리 정리SAP 2026. 6. 23. 21:43
AMDP OPTIONS CDS SESSION CLIENT CURRENTMANDT 처리 완전 정리 DB 테이블 / CDS View 구분에 따른 MANDT 처리 방법 & SELECT · INSERT · UPDATE · DELETE · MERGE 샘플 1. ABAP vs AMDP — 클라이언트 자동 적용 여부 ABAP 오픈 SQL은 현재 로그온 클라이언트를 자동으로 적용하지만, AMDP(SQLScript)는 HANA DB 레이어에서 직접 실행되므로 MANDT를 명시하지 않으면 전체 클라이언트 데이터가 조회된다. 구분 클라이언트 자동 적용 비고 ABAP SEL..
-
HANA Sequence & NEXTVAL — Oracle → AMDP 변환 정리SAP 2026. 6. 18. 20:54
HANA Sequence & NEXTVAL — Oracle → AMDP 변환 정리 SAP ABAP / AMDP · S/4HANA On-Premise · 2026.06 1. Oracle NEXTVAL → HANA SQLScript 변환 기본 Oracle의 SEQ.NEXTVAL은 HANA에서도 시퀀스 오브젝트를 지원하지만, AMDP 컨테이너 종류에 따라 사용 가능 여부가 달라진다. 구분OracleHANA SQLScript 다음 값SEQ.NEXTVAL"SCHEMA"."SEQ".NEXTVAL 현재 값SEQ.CURRVAL"SCHEMA"."SEQ".CURRVAL 단순 SELECTFROM DUALFROM DUMMY ⚠️ HANA에서는 스키마명 + 큰따옴..
-
AMDP 동적 JSON 파라미터SAP 2026. 6. 17. 21:00
AMDP 동적 JSON 파라미터 — ko_001 ~ ko_150 필드명 규칙(ko_NNN)을 활용한 FIELD-SYMBOLS 동적 매핑 → JSON 직렬화 → AMDP 전달 ① 구조체 정의ko_001~150 → ② FIELD-SYMBOLS동적 매핑 → ③ JSON직렬화 → ④ AMDP호출 → ⑤ SQLScriptJSON_VALUE() 1 구조체 정의 — ko_001 ~ ko_150 💡 필드명이 ko_001 ~ ko_150으로 규칙적이므로 FIELD-SYMBOLS로 동적 접근 가능. 💡 모든 값을 char50으로 통일하면 동적 처리가 가장 단순해짐. * ====================================..