RAP 인스턴스 권한 빠뜨리면? — 행 단위 보안 구멍 #shorts #SAP #ABAP
RAP 권한 모델의 두 축 — Global과 Instance RAP(RESTful Application Programming Model)에서 권한 체크는 두 단계로 분리됩니다. Global Authorization은 사용자가 해당 BO의 특정 오퍼레이션을 "원천적으로" 수행할 수 있는지
RAP 권한 모델의 두 축 — Global과 Instance RAP(RESTful Application Programming Model)에서 권한 체크는 두 단계로 분리됩니다. Global Authorization은 사용자가 해당 BO의 특정 오퍼레이션을 "원천적으로" 수행할 수 있는지
RAP Draft 메커니즘과 Discard의 의미 ABAP RAP(RESTful Application Programming Model)에서 Draft는 사용자가 작업 중인 데이터를 일시적으로 보관하는 기능입니다. RAP 런타임은 활성(active) 인스턴스와 드래프트(draft) 인스턴
딥 구조체가 메모리에서 어떻게 동작하는가 ABAP 내부 테이블의 한 라인이 또 다른 내부 테이블이나 STRING을 필드로 가지는 구조를 딥 구조체(Deep Structure)라고 부릅니다. 평범하게 보이지만 메모리 관점에서는 라인마다 별도의 힙(heap) 블록을 잡기 때문에, 수만 라인
1. SY-TABIX 의존의 문제점 오래된 ABAP 코드를 들여다보면 거의 모든 내부 테이블 조작이 SY-TABIX 와 SY-SUBRC 를 중심으로 돌아간다. 예를 들어 READ TABLE ... TRANSPORTING NO FIELDS 로 인덱스를 확보한 뒤 그 값을 즉시 다른 명령에
1. 수동 오류 수집의 문제점 UI5 애플리케이션을 처음 작성할 때 가장 흔히 마주치는 안티 패턴은 컨트롤러마다 onError , onValidationError , onParseError 핸들러를 따로 두고 sap.m.MessageBox.error() 를 호출하는 방식입니다. 입력 필
내부 테이블 선형 탐색의 성능 문제 대규모 트랜잭션을 다루는 ABAP 프로그램에서 가장 흔히 발견되는 병목은 의외로 데이터베이스 조회가 아니라 메모리 위에 올라온 내부 테이블의 비효율적인 탐색입니다. STANDARD TABLE은 기본적으로 인덱스가 없으므로 READ TABLE WITH
이 글에서 다루는 범위와 도달 목표 실무에서 자재 수량을 다루다 보면 EA(개) , BOX(박스) , PAL(파레트) , KG , G 처럼 서로 다른 단위가 한 테이블에 섞여 있습니다. 이때 개발자는 종종 ABAP 측에서 LOOP 를 돌리며 환산 비율을 곱하는 코드를 작성합니다. 이 글
TCURR 직접 조회의 함정 — 환율 변환이 망가지는 순간 실무에서 가장 흔하게 발견되는 ABAP 안티 패턴 중 하나가 TCURR 테이블을 직접 SELECT 하는 코드입니다. 환율은 단순히 "1 USD = 1,350 KRW" 같은 숫자 한 개가 아닙니다. SAP의 환율 데이터는 EXCH
OData 전체 컬럼 요청의 문제점 SAPUI5 애플리케이션을 운영하다 보면 "왜 이렇게 느리지?"라는 질문을 자주 듣게 됩니다. 네트워크 탭을 열어보면 답이 보이는 경우가 많습니다. 판매주문(SalesOrder) 목록을 단순히 ID, 고객명, 금액 세 컬럼만 화면에 표시하는데도 서버는
개요 및 이 글에서 다루는 내용 ABAP 7.40 SP08 이후 도입된 INTO @DATA(...) 인라인 선언은 SELECT 문 시점에 결과 변수의 타입을 자동 추론하여, 별도의 TYPES / DATA 선언 없이도 즉시 사용 가능한 변수를 만들어줍니다. 이 글은 판매 오더(SalesO
개요 및 이 글에서 다루는 범위 ABAP에서 문자열을 다루다 보면 CSV 한 줄을 컬럼별로 쪼개거나, 쉼표로 구분된 코드 목록을 내부 테이블로 변환해야 하는 상황이 매우 자주 발생합니다. 이때 가장 직관적이고 강력한 도구가 바로 STRING TABLE과 SPLIT 명령어의 조합입니다.
개요 및 학습 포인트 ABAP에서 내부 테이블(internal table)을 다룰 때 가장 자주 쓰는 명령 중 하나가 SORT입니다. 단일 필드 정렬은 직관적이지만, 실무에서는 "부서별로 묶고 그 안에서 금액 내림차순" 같은 다중 필드 정렬이 훨씬 흔합니다. 이때 같은 키 값을 가진 행
개요 및 학습 포인트 SAPUI5 애플리케이션을 만들다 보면 모든 데이터를 OData 서비스에 의존하기보다 화면 내부에서만 잠깐 쓰는 상태값(편집 모드 플래그, 필터 조건, 장바구니 임시 데이터 등)을 관리해야 할 때가 많습니다. 이때 sap.ui.model.json.JSONModel
개요 및 이 글에서 다루는 내용 CAP for Java(SAP Cloud Application Programming Model for Java)는 기본적으로 모든 비즈니스 로직을 트랜잭션 컨텍스트 안에서 실행합니다. 문제는 단순히 상품 카탈로그를 조회하거나 주문 내역을 검색하는 읽기 전
에러 핸들링 없이 iFlow를 운영하면 생기는 일 새벽 3시, 운영팀에 긴급 호출이 옵니다. "어제 들어온 구매발주 17건이 S/4HANA에 안 들어왔어요." 로그를 뒤져보니 SAP BTP Integration Suite의 iFlow는 분명 메시지를 수신했는데, 중간 매핑 단계에서 Nu
이 글이 답하는 질문 레거시 ABAP 코드를 유지보수하다 보면 MOVE ?TO 나 ?= 연산자로 객체 참조를 다루는 패턴을 흔히 만납니다. 이런 코드는 ABAP 7.40 이후 도입된 CAST 연산자로 대체되어야 합니다. 단순한 문법 변경이 아니라 가독성, 표현식 기반 프로그래밍, 인라인
개요 및 핵심 포인트 ABAP 객체 지향 프로그래밍에서 참조 변수(reference variable) 간 형 변환은 일상적으로 발생합니다. 과거에는 MOVE source ?TO target 또는 MOVE source TO target TYPE 구문을 사용했지만, ABAP 7.40 SP0
List Report가 어노테이션을 해석하는 방식 SAP Fiori Elements의 List Report는 CDS(또는 OData) 메타데이터에 선언된 @UI 어노테이션을 런타임에 해석해 UI를 자동 렌더링합니다. 개발자가 XML View를 직접 작성하지 않아도 컬럼, 필터바, 헤더
왜 EventBus가 필요한가 대형 SAP Fiori 애플리케이션은 보통 여러 개의 Component로 쪼개져 있습니다. 주문 목록을 보여주는 컴포넌트, 주문 상세를 띄우는 컴포넌트, 사이드 알림 패널을 다루는 컴포넌트가 서로 다른 페이지·다른 라이프사이클을 가진 상태에서 "방금 사용자
Code Inspector와 ATC, 뭐가 다른가 ABAP 코드 품질을 잡는 도구는 두 가지입니다. Code Inspector(SCI 트랜잭션)는 2000년대부터 사용해온 전통적인 방식이고, ATC(ABAP Test Cockpit)는 SAP가 현재 권장하는 현대적 품질 관리 방식입니다.