ABAP
-
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..
-
대용량 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 가능..
-
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으로 통일하면 동적 처리가 가장 단순해짐. * ====================================..
-
ABAP 타입풀 상수명 추출SAP 2026. 6. 12. 17:46
ABAP 타입풀 상수명 추출 READ REPORT + PCRE 정규식으로 zhan_ko_* 상수 목록 가져오기 1. 핵심 개념 타입풀의 리포지터리 내부 프로그램명은 %_C 형태로 생성된다. 예를 들어 타입풀 ZHAN의 소스는 READ REPORT '%_CZHAN'로 읽어온다. 타입풀명READ REPORT 에 넘길 프로그램명 ABAP%_CABAP VRM%_CVRM ZHAN%_CZHAN 2. 상수 정의 패턴 타입풀 소스의 상수 선언은 아래 두 가지 형태를 가진다. 구분예시 ① TYPE / LIKE CONSTANTS zhan_ko_abc TYPE cha..
-
Oracle SUBSTRB → SAP HANA SQLScript 변환 가이드SAP 2026. 6. 10. 18:22
Oracle SUBSTRB → SAP HANA SQLScript 변환 가이드 Oracle Migration · AMDP SQLScript · S/4HANA On-Premise 1. SUBSTRB 란? Oracle의 SUBSTRB는 바이트(Byte) 단위로 문자열을 자르는 함수이다. 반면 SUBSTR은 문자(Character) 단위로 동작한다. 함수단위한글 1자 처리 SUBSTR(str, 1, 10)문자(Character)1자 = 1카운트 SUBSTRB(str, 1, 10)바이트(Byte)인코딩에 따라 2~3바이트 2. SAP HANA에서의 대안 — 결론 먼저 💡 S/4HANA On-Premise는 HANA DB = ..
-
AMDP SQLScript — CURSOR & ::ROWCOUNT 정리SAP 2026. 6. 8. 19:23
AMDP SQLScript — CURSOR & ::ROWCOUNT 완전 정리 SAP HANA SQLScript · AMDP Procedure · BEGIN~END 내부 제어 흐름 1. AMDP Procedure — BEGIN ~ END 구문 AMDP Procedure는 SQLScript 로직을 BEGIN ~ END 블록 안에 작성합니다. Table Function의 RETURN SELECT ...; 방식과 다릅니다. 구분Table FunctionProcedure ABAP 선언BY DATABASE FUNCTIONBY DATABASE PROCEDURE 로직 시작RETURN SELECT ...;BEGIN ... END; DML 허용❌ 불가✅ 가능 ..