RANK vs DENSE_RANK 동점 처리 비교 #shorts #SAP #HANA
1. Window 함수가 필요한 순간 — 서브쿼리 지옥에서 벗어나기 SAP HANA에서 "카테고리별 매출 상위 3개 제품"을 뽑아야 할 때, Window 함수를 모르면 보통 상관 서브쿼리(correlated subquery)나 셀프 조인으로 해결하게 됩니다. 문제는 이 방식이 행마다 서
1. Window 함수가 필요한 순간 — 서브쿼리 지옥에서 벗어나기 SAP HANA에서 "카테고리별 매출 상위 3개 제품"을 뽑아야 할 때, Window 함수를 모르면 보통 상관 서브쿼리(correlated subquery)나 셀프 조인으로 해결하게 됩니다. 문제는 이 방식이 행마다 서
개요 및 학습 체크리스트 CAP(Cloud Application Programming Model) 프로젝트를 로컬 SQLite에서 개발하다가 BTP의 HANA Cloud로 처음 배포할 때 가장 흔히 겪는 실패가 "연결은 성공했는데 테이블이 없다" 또는 "Database user is m
1. 왜 분위수 함수가 실무 분석의 핵심인가 매출 데이터, 응답 시간, 재고 회전율 같은 수치형 지표를 다룰 때 평균(AVG)만으로는 데이터의 진짜 모습을 놓치기 쉽습니다. 한 명의 초대형 고객이 전체 평균을 왜곡시키거나, 응답 시간의 상위 5%가 서비스 품질을 좌우하는 상황은 SAP
1. 왜 LAG/LEAD가 필요한가 — 시계열 비교의 도전 매출, 재고, 센서 측정값, 로그 이벤트처럼 시간 축을 따라 흐르는 데이터를 분석할 때 가장 자주 등장하는 요구사항은 "이전 값 대비 얼마나 변했는가" 혹은 "다음 값과 비교했을 때 어떤 추세인가"입니다. 예를 들어 어제 대비
STRING_AGG가 필요한 이유 — 여러 행을 한 줄로 관계형 데이터베이스에서 자주 마주치는 상황이 있습니다. 하나의 고객이 여러 개의 주문을 갖고, 하나의 주문이 여러 개의 상품 라인을 갖습니다. 이 데이터를 화면이나 리포트에 표시할 때 "고객 A: 노트북, 마우스, 키보드" 같은
CAP 프로젝트에서 HANA Cloud 연결이 실패하는 진짜 이유 SAP CAP(Cloud Application Programming) 프로젝트를 처음 HANA Cloud에 연결하려는 개발자들이 공통으로 겪는 상황이 있다. cds watch 로 로컬에서 잘 돌아가던 서비스가 HANA C
개요와 이 글에서 얻게 될 것 CAP(SAP Cloud Application Programming Model) 프로젝트를 로컬에서 cds watch 로 개발하다가 BTP HANA Cloud로 전환하는 순간 대다수 개발자가 "connection refused" 혹은 "no such tab
개요와 이 글에서 얻어갈 것 CAP(Cloud Application Programming Model) 프로젝트를 SAP BTP에서 운영할 때 가장 먼저 마주치는 벽 중 하나가 바로 HANA Cloud 연결입니다. 로컬 SQLite에서는 잘 돌아가던 서비스가 cf push 후에는 "no
개요 및 이 글에서 다루는 것 SAP S/4HANA 환경에서 품질 관리(QM) 데이터를 분석하거나 확장 앱을 개발할 때, 검사 특성 결과(Inspection Characteristic Result)는 가장 자주 참조되는 데이터입니다. 과거 ECC 시절부터 개발자들은 QAMV, QAMR,
개요와 이 글에서 얻어갈 것 S/4HANA 환경에서 생산 오더의 BOM 컴포넌트를 조회할 때, 여전히 많은 코드베이스가 RESB 테이블을 직접 SELECT 하고 있습니다. RESB는 예약(Reservation)과 종속소요량을 함께 담는 레거시 테이블이라 필드 의미가 복잡하고, 생산 오더
개요 및 이 글에서 다루는 범위 S/4HANA 환경에서 배치(Batch) 관리 자재의 재고 조회는 오랫동안 MCHB , MCHA , MCH1 같은 클래식 테이블 직접 SELECT에 의존해 왔습니다. 그러나 SAP S/4HANA 1809 이후 배치별 재고 스냅샷은 MATDOC 기반의 CD
1. CDS Table Function이 필요한 이유 일반 CDS View는 선언형 SQL 기반의 데이터 뷰라는 강점이 있지만, 실제 프로젝트에서 벽에 부딪히는 순간이 있습니다. 예를 들어 매출 데이터를 지역별로 집계하되, 특정 월에만 환율을 재계산해서 반영 하고 싶다거나, 고객별 주문
개요와 이 글에서 다루는 것 CDS(Core Data Services)의 Association은 ABAP 개발자가 데이터 모델 간 관계를 선언적으로 정의할 수 있게 해주는 강력한 기능입니다. 겉보기에는 SQL JOIN과 비슷해 보이지만, 실제 동작 방식은 완전히 다릅니다. 이 글에서는
1. 이 글에서 다루는 범위와 도달점 SAP BTP(Business Technology Platform) Cockpit은 클라우드 자원을 시각적으로 다루는 관제탑 역할을 합니다. 이 글은 BTP 계정에 처음 로그인하는 개발자가 Cloud Foundry 런타임 환경에서 서비스 인스턴스를
개요 및 학습 흐름 I_FunctionalLocation은 SAP Plant Maintenance(PM) 영역에서 설비·구조물의 물리적 위치를 계층적으로 표현하는 CDS 뷰 엔터티입니다. 기존 IFLOT(Functional Location Master) 테이블과 텍스트 테이블(IFLOT
개요와 이 글에서 얻어갈 것 ABAP 개발자라면 한 번쯤 "랭킹을 구하려고 SELECT 결과를 내부 테이블에 담고 SORT한 뒤 LOOP를 돌리며 카운터를 증가시킨" 경험이 있을 것입니다. 이런 방식은 작동은 하지만 데이터가 수십만 건을 넘어가면 애플리케이션 서버 메모리와 네트워크 전송
개요 및 학습 포인트 ABAP Open SQL의 CASE 표현식은 SELECT 문 내부에서 조건에 따라 값을 분기시킬 수 있는 강력한 기능입니다. 기존에는 데이터를 가져온 후 ABAP 레벨에서 IF/CASE 문으로 가공했다면, CASE 표현식을 사용하면 DB 서버에서 직접 분기 처리하여
개요 및 이번 예제에서 다루는 것 이 글에서는 ABAP Open SQL이 제공하는 내장 문자열 함수를 활용해 데이터베이스 레이어에서 직접 문자열을 가공하는 방법을 다룹니다. 전통적으로 ABAP 개발자는 SELECT로 데이터를 가져온 뒤 LOOP나 CONCATENATE, SHIFT, RE
이 글에서 다루는 내용과 도달 지점 복잡한 분석 쿼리를 작성하다 보면 SELECT 절 안에 또 다른 SELECT가 중첩되고, 동일한 서브쿼리가 두세 번 반복되며, FROM 절에 인라인 뷰가 잔뜩 들어가는 상황을 자주 만나게 됩니다. ABAP 7.50부터 도입된 Open SQL의 WITH
개요 및 이번 예제에서 다룰 내용 ABAP 7.40 SP08부터 도입된 FOR ... GROUPS BY 표현은 내부 테이블을 키 기반으로 그룹화하고 각 그룹별로 집계·요약 데이터를 한 번의 표현으로 생성할 수 있게 해주는 강력한 구문입니다. 기존에는 COLLECT , LOOP AT ..