CAP Remote — HTTP 없이 외부 OData 호출? #shorts #SAP #CAPJava
📖 개요 및 이 글에서 다루는 것 CAP Java 애플리케이션이 자기 데이터베이스만 바라보는 경우는 드뭅니다. 실무에서는 S/4HANA의 OData API나 다른 팀이 만든 마이크로서비스를 호출해 데이터를 합쳐 보여줘야 하는 상황이 훨씬 많습니다. 이 글에서는 CAP Java의 Rem
📖 개요 및 이 글에서 다루는 것 CAP Java 애플리케이션이 자기 데이터베이스만 바라보는 경우는 드뭅니다. 실무에서는 S/4HANA의 OData API나 다른 팀이 만든 마이크로서비스를 호출해 데이터를 합쳐 보여줘야 하는 상황이 훨씬 많습니다. 이 글에서는 CAP Java의 Rem
BAPI와 OData, 무엇이 다른가 — 패러다임 비교 BAPI는 함수 모듈 기반의 RFC 프로토콜 위에서 동작합니다. 호출자는 SAP GUI 프로토콜 계층을 이해하는 커넥터(JCo, NCo 등)를 갖춰야 하고, 파라미터 구조는 ABAP 딕셔너리 타입에 강하게 결합됩니다. 반면 ODat
개요: 왜 CAP 쿼리 성능을 다시 봐야 하는가 SAP CAP(Cloud Application Programming Model) Node.js 런타임은 CQL(CDS Query Language)을 통해 데이터베이스 접근을 추상화합니다. 편리한 만큼, 추상화 뒤에서 어떤 SQL이 실행되는
📖 개요: Before와 After, 이름만 보고 쓰면 반드시 사고가 난다 CAP Java에서 커스텀 핸들러를 처음 작성할 때 가장 많이 겪는 사고는 문법 오류가 아니라 "코드는 정상 실행됐는데 DB에는 아무 것도 반영되지 않는" 침묵의 버그 입니다. 특히 @After 핸들러에서 엔티
개요: 표준을 건드리지 않고 확장한다는 것 S/4HANA 프로젝트에서 가장 자주 받는 요구사항 중 하나는 "표준 CDS 뷰에 우리 회사 필드 하나만 추가해 달라"입니다. 표준 뷰 소스를 직접 수정하면 당장은 동작하지만, 업그레이드 시점에 변경분이 덮어써지거나 충돌이 발생합니다. ABAP
개요 — 핸들러 실행 순서를 알아야 하는 이유 CAP Java(SAP Cloud Application Programming Model, Java 런타임)에서 커스텀 비즈니스 로직은 @Before , @On , @After 세 페이즈(Phase)의 이벤트 핸들러로 작성합니다. 이 세 페이
개요 — 이 글에서 다루는 것 S/4HANA 전환 프로젝트에서 SAP Readiness Check 리포트를 열었을 때 Custom Code 영역이 빨간불로 가득한 경험은 대부분의 마이그레이션 팀이 겪는 통과 의례입니다. 이 글은 ECC 6.0에서 S/4HANA(2022/2023 에디션
📖 개요와 이 글의 목표 SAP HANA Cloud에서 수량 × 단가 × (1 - 할인율) 같은 파생 값을 어디서 계산할지는 생각보다 성능에 큰 영향을 줍니다. 테이블에 계산형 컬럼(Generated/Calculated Column)으로 미리 정의해 두는 방식과, 매번 SELECT 문
개요: 저장 버튼 없이 화면이 스스로 갱신되는 원리 Fiori Elements 앱에서 수량 필드를 바꿨는데 총액이 그대로라면, 사용자는 "이 앱이 계산을 안 하나?"라고 느낍니다. 백엔드 Determination은 이미 값을 다시 계산했지만, 브라우저가 그 사실을 모르는 것이 문제입니다
개요: 핸들러 실행 순서를 알아야 하는 이유 CAP Java(SAP Cloud Application Programming Model, Java 런타임)에서 커스텀 로직은 @Before , @On , @After 세 가지 페이즈(Phase)의 이벤트 핸들러로 작성합니다. 문제는 이 세 페
1. Joule과 SAP AI Core — 이름만 봐서는 뭐가 다른지 모른다 SAP의 AI 소식을 따라가다 보면 두 이름이 계속 등장합니다. Joule 과 SAP AI Core . 둘 다 "SAP의 생성형 AI"로 소개되다 보니, 처음 접하는 분들은 "같은 것의 다른 이름인가?" 혹은
S/4HANA 이관에서 커스텀 코드가 가장 큰 위험인 이유 S/4HANA 전환 프로젝트에서 예산 초과와 일정 지연의 가장 흔한 원인은 표준 기능이 아니라 수십 년간 쌓인 커스텀 ABAP 코드 입니다. ECC 시절 작성된 Z 프로그램은 S/4HANA에서 사라진 테이블(KONV, VBUK
1. iFlow는 언제, 어떻게 시작되는가 — 스케줄 실행의 배경 SAP Integration Suite(Cloud Integration 캐패빌리티)에서 Integration Flow(이하 iFlow)를 처음 만들면 반드시 마주치는 질문이 있습니다. "이 iFlow는 무엇이 실행시키는가
인메모리 DB에서 JOIN이 성능을 좌우하는 이유 SAP HANA(HANA Cloud 및 HANA 2.0 SPS07 기준)는 데이터를 디스크가 아닌 메모리에 컬럼 단위로 저장합니다. 디스크 I/O가 병목이던 전통적인 DB와 달리, HANA에서는 JOIN 시 얼마나 많은 중간 결과(Int
📖 개요 및 이 글에서 다루는 내용 매출 리포트를 만들 때 주문이 없는 날짜가 통째로 사라져 차트가 끊겨 보인 경험이 있다면, 이 글이 해결책이 됩니다. SAP HANA의 SERIES_GENERATE 계열 함수는 시작값·종료값·증가 간격만 지정하면 날짜, 타임스탬프, 숫자 시퀀스를 테
SAP GRC Access Control과 액세스 거버넌스가 필요한 이유 SOX(사베인스-옥슬리법)나 내부회계관리제도 감사에서 가장 자주 지적되는 항목이 바로 권한 부여 프로세스의 통제 부재 입니다. "누가, 언제, 어떤 근거로, 누구의 승인을 받아 이 권한을 받았는가"에 답하지 못하면
📖 개요 및 핵심 체크포인트 ECC 시절에 만든 Classic BAdI와 CMOD/SMOD 기반 확장 코드를 그대로 S/4HANA로 가져오면, 컴파일은 통과해도 런타임에서 조용히 무너지는 경우가 많습니다. S/4HANA(예: S/4HANA 2023 On-Premise)에서는 커널 기반
📖 개요: Cross-App Navigation에서 파라미터가 왜 생명선인가 SAP Fiori Launchpad(FLP) 환경에서는 하나의 업무가 여러 앱을 넘나들며 완성됩니다. 판매 오더 목록 앱에서 특정 오더를 선택해 청구서 조회 앱으로 이동할 때, 오더 번호 같은 컨텍스트 파라미
📖 개요 및 이 글에서 얻을 수 있는 것 PFCG에서 역할을 만들 때마다 권한 오브젝트를 수동으로 하나씩 추가하고 계신가요? 그 방식은 당장은 빠르지만, 트랜잭션이 수백 개로 늘어나면 어떤 권한이 왜 들어갔는지 아무도 모르는 상태가 됩니다. 이 글은 SU24(권한 제안값 유지보수)를
📖 개요 — 왜 Intent Navigation인가 Fiori 앱을 하드코딩된 URL로 연결하면 시스템이 바뀔 때마다 링크가 깨지고, 권한 체크도 우회됩니다. Intent Navigation은 "무엇을(Semantic Object) 어떻게(Action)" 한다는 의미 기반 주소로 앱을