RAISE EXCEPTION 3가지 패턴 — TYPE·MESSAGE·RESUMABLE #shorts #SAP #ABAP
개요 및 핵심 포인트 ABAP의 RAISE EXCEPTION 명령은 단순히 오류를 던지는 것 이상의 의미를 가집니다. TYPE 으로 어떤 예외 클래스를 발생시킬지, MESSAGE 로 사용자에게 보여줄 메시지를 어떻게 첨부할지, RESUMABLE 로 호출자가 실행을 이어갈 수 있도록 허용
개요 및 핵심 포인트 ABAP의 RAISE EXCEPTION 명령은 단순히 오류를 던지는 것 이상의 의미를 가집니다. TYPE 으로 어떤 예외 클래스를 발생시킬지, MESSAGE 로 사용자에게 보여줄 메시지를 어떻게 첨부할지, RESUMABLE 로 호출자가 실행을 이어갈 수 있도록 허용
ABAP 제네릭 타입 심층 다이브 - TYPE ANY와 동적 데이터 처리 ABAP 개발에서 같은 로직을 여러 구조체나 테이블에 반복 적용해야 하는 상황은 매우 흔합니다. 예를 들어, 어떤 내부 테이블이 들어오든 특정 필드 값을 추출해 로그를 남기는 유틸리티 메서드를 작성한다고 가정해 봅
개요 및 핵심 체크리스트 ABAP에서 중첩 구조체를 다룰 때 모든 하위 컴포넌트는 부모 구조체와 동일한 연속 메모리 블록에 한꺼번에 할당됩니다. 이는 작은 구조에서는 문제가 없지만, 거대한 sub-structure를 자주 사용하지 않거나, 자기참조(self-referential) 트리·
왜 ABAP에서 Optional Return이 중요한가 ABAP 메서드를 설계할 때 가장 자주 마주치는 고민 중 하나는 "리턴값을 강제할 것인가, 선택적으로 둘 것인가"입니다. 자바나 C++에서는 리턴값을 무시하면 컴파일러 경고가 나오거나 명시적인 캐스팅이 필요한 경우가 많지만, ABA
왜 Embedded Steampunk가 등장했는가 S/4HANA Cloud Private Edition과 On-Premise 시스템에서 클린코어(Clean Core) 원칙을 강제하기 위해 도입된 개발 모델이 바로 Embedded Steampunk 입니다. 기존의 Classic ABAP은
이 글에서 다룰 것 sap.m.MultiInput 은 사용자가 여러 값을 토큰(Token) 형태로 입력하고 시각적으로 관리할 수 있는 컨트롤입니다. 검색 필터, 태그 입력, 수신자 목록처럼 "값을 하나씩 추가/제거하면서 전체 목록을 유지"해야 하는 UI에서 표준처럼 사용됩니다. 본문에서
1. 개요 및 이 글의 목표 ABAP 객체지향 설계에서 클래스 간 결합도를 낮추는 두 가지 대표적인 기법이 의존성 주입(Dependency Injection, DI) 과 서비스 로케이터(Service Locator) 패턴입니다. 두 기법 모두 "객체가 자신이 필요로 하는 의존 객체를 직
1. 개요 및 이 글의 목표 ABAP Objects의 Singleton 패턴 은 특정 클래스의 인스턴스가 단일 세션 내에서 단 하나만 존재하도록 보장하는 객체 생성 패턴입니다. 설정 관리자, 캐시, 로거, 데이터베이스 연결과 같이 시스템 전반에서 동일한 상태를 공유해야 하는 컴포넌트를
1. 개요 및 이 글의 목표 ABAP CDS(Core Data Services)는 데이터 모델링 계층을 SAP HANA 데이터베이스에 가깝게 끌어올린 핵심 기술입니다. 그런데 데이터 모델이 강력해질수록 "누가 어떤 행(row)을 볼 수 있는가"라는 질문이 더 중요해집니다. ABAP CD
개요 및 이 글의 목표 ABAP 7.40 SP08 이후 도입된 인라인 선언(Inline Declaration)과 생성자 표현식(Constructor Expressions)은 ABAP 개발 방식을 근본적으로 바꾸어 놓았습니다. 과거에는 변수 하나를 쓰기 위해 DATA 블록에서 명시적으로
1. 개요 및 이 글에서 얻어갈 것 ABAP Unit 테스트는 단순히 cl_abap_unit_assert 를 호출하는 것만으로 끝나지 않습니다. 동일한 테스트 메서드라도 실행 순서 에 따라 결과가 달라지는 경우가 빈번하게 발생하는데, 이를 순서 의존성(Test Order Dependen
1. 개요 및 이 글에서 얻어갈 것 ABAP Open SQL 또는 ABAP SQL에는 BYPASSING BUFFER 라는 특수한 힌트가 있습니다. 이름 그대로 SAP 애플리케이션 서버에 존재하는 테이블 버퍼 를 우회하고 직접 데이터베이스로 SELECT를 던지는 기능입니다. 처음 본 개발
1. 개요 및 이 글에서 얻어갈 것 ABAP 7.40 SP02부터 도입된 DATA(...) 인라인 선언은 단순한 문법 설탕(syntactic sugar)이 아니라, ABAP 개발 스타일 자체를 바꾼 핵심 기능입니다. 변수를 사용하는 위치 에서 곧바로 선언함으로써 코드의 가독성이 향상되고
1. 개요 및 이 글에서 얻어갈 것 ABAP 객체지향 프로그래밍을 하다 보면 메서드를 호출하는 두 가지 스타일을 마주하게 됩니다. 하나는 전통적인 CALL METHOD 구문이고, 다른 하나는 마치 수학 공식처럼 메서드를 식(expression) 위치에 그대로 끼워 넣는 함수형 메서드 호
개요 및 핵심 포인트 ABAP에서 객체를 다룰 때 임시 변수가 화면을 가득 채우는 경험을 해본 적이 있을 것입니다. 메서드 체이닝(Method Chaining)은 동일 객체의 메서드를 점으로 이어 호출하는 패턴으로, 빌더(Builder)와 같은 Fluent Interface를 ABAP
개요 및 이 글에서 다루는 것 ABAP RAP(RESTful Application Programming Model)에서 비즈니스 로직을 구현할 때 가장 자주 마주치는 함정 중 하나가 바로 FAILED와 REPORTED 테이블의 오용 입니다. 두 구조는 이름이 비슷하지만 역할이 완전히 다
개요 및 이 글에서 다루는 것 ABAP 7.40 SP08 이후 도입된 CONV 연산자는 명시적 타입 변환을 한 줄로 처리하는 인라인 표현식입니다. 과거에는 임시 변수를 선언해 값을 옮기고, 그 변수를 메서드 인자로 전달하는 3단계가 필요했습니다. CONV 는 이 모든 과정을 CONV t
개요 및 이 글에서 다루는 것 ABAP에서 문자열을 조립할 때 가장 흔히 쓰던 방식은 && 연산자나 CONCATENATE 문이었습니다. 하지만 ABAP 7.02 이후 도입된 String Template (문자열 템플릿, |...| ) 은 변수와 텍스트를 자연스럽게 섞어 쓸
개요 및 이 글에서 다루는 것 표준 SAP에서 제공하는 CDS 뷰(예: I_SalesDocument , I_PurchaseOrder )에 자사 비즈니스 요건에 맞는 필드 — 예컨대 "긴급 배송 플래그", "지역별 우선순위 코드", "사내 분류 등급" 등을 추가해야 하는 상황은 SAP S
개요와 이 글에서 얻어갈 것 ABAP 개발을 하다 보면 화면이 바뀌어도 값이 살아남아야 하거나, 서브루틴/펑션 모듈로 큰 내부 테이블을 넘겨야 하는 상황이 자주 발생합니다. 이때 등장하는 두 가지 메모리 영역이 바로 SAP Memory 와 ABAP Memory 입니다. 이름이 비슷해 혼