CQN 문자열 파싱 그만 — CqnAnalyzer로 안전 분석 #shorts #SAP #CAPJava
이 글에서 다루는 내용 CAP for Java 이벤트 핸들러를 작성하다 보면 "지금 들어온 요청이 어떤 엔티티를, 어떤 키로, 어떤 조건으로 조회하는가"를 알아야 하는 순간이 반드시 옵니다. 이때 cqn.toString() 결과를 문자열로 잘라 쓰는 코드는 당장은 동작해도 확장 시 반드
이 글에서 다루는 내용 CAP for Java 이벤트 핸들러를 작성하다 보면 "지금 들어온 요청이 어떤 엔티티를, 어떤 키로, 어떤 조건으로 조회하는가"를 알아야 하는 순간이 반드시 옵니다. 이때 cqn.toString() 결과를 문자열로 잘라 쓰는 코드는 당장은 동작해도 확장 시 반드
개요: 왜 모든 오류가 500으로 나가는가 CAP Java로 서비스를 개발하다 보면, 핸들러 안에서 발생한 예외가 아무 처리 없이 그대로 올라가 클라이언트에게 500 Internal Server Error 로 반환되는 상황을 자주 만납니다. 재고 부족처럼 명백한 "업무 오류"조차 500
📖 개요 RAP(ABAP RESTful Application Programming Model)에서 Behavior Pool은 BO의 두뇌 역할을 합니다. 프로젝트가 커지면 LHC_ 로컬 핸들러 클래스 하나에 FOR MODIFY, FOR READ, FOR DETERMINE, FOR VA
📖 개요: 왜 "그냥 12로 나누면" 안 되는가 자재를 낱개(EA)로 관리하면서 출하는 박스(KAR), 창고 적치는 팔레트(PAL)로 하는 것은 물류 현장의 일상입니다. 이때 ABAP 개발자가 가장 흔히 저지르는 실수가 lv_box = lv_ea / 12 같은 하드코딩 나눗셈입니다.
📖 개요 및 이 글에서 다루는 내용 커스텀 전표 생성 배치가 밤새 돌다가 "전기기간이 마감되었습니다"로 수백 건이 실패해 있는 아침을 겪어본 적이 있다면 도움이 될 글입니다. BAPI 호출 후 실패를 수습하는 대신, 호출 전에 대상 회계기간이 열려 있는지 선검증하는 구조를 다룹니다.
📖 이 글이 답하는 질문 버튼을 눌렀는데 화면이 3초간 아무 반응이 없다면, 사용자는 앱이 멈췄다고 판단하고 버튼을 다시 누릅니다. 그 결과는 중복 요청, 이중 저장, 그리고 "앱이 느리다"는 평가입니다. SAPUI5(및 OpenUI5)에는 이 문제를 한 줄로 해결하는 setBusy
📖 개요: CAP Java 트랜잭션 롤백, 왜 자꾸 어긋나는가 SAP CAP(Cloud Application Programming Model) for Java는 개발자가 트랜잭션 경계를 직접 열고 닫지 않아도 되도록 ChangeSet 컨텍스트 라는 추상화를 제공합니다. 편리하지만, 이
📖 개요 및 이 글에서 다루는 것 CAP Java 애플리케이션이 자기 데이터베이스만 바라보는 경우는 드뭅니다. 실무에서는 S/4HANA의 OData API나 다른 팀이 만든 마이크로서비스를 호출해 데이터를 합쳐 보여줘야 하는 상황이 훨씬 많습니다. 이 글에서는 CAP Java의 Rem
BAPI와 OData, 무엇이 다른가 — 패러다임 비교 BAPI는 함수 모듈 기반의 RFC 프로토콜 위에서 동작합니다. 호출자는 SAP GUI 프로토콜 계층을 이해하는 커넥터(JCo, NCo 등)를 갖춰야 하고, 파라미터 구조는 ABAP 딕셔너리 타입에 강하게 결합됩니다. 반면 ODat
📖 개요: Before와 After, 이름만 보고 쓰면 반드시 사고가 난다 CAP Java에서 커스텀 핸들러를 처음 작성할 때 가장 많이 겪는 사고는 문법 오류가 아니라 "코드는 정상 실행됐는데 DB에는 아무 것도 반영되지 않는" 침묵의 버그 입니다. 특히 @After 핸들러에서 엔티
개요 — 핸들러 실행 순서를 알아야 하는 이유 CAP Java(SAP Cloud Application Programming Model, Java 런타임)에서 커스텀 비즈니스 로직은 @Before , @On , @After 세 페이즈(Phase)의 이벤트 핸들러로 작성합니다. 이 세 페이
개요: 핸들러 실행 순서를 알아야 하는 이유 CAP Java(SAP Cloud Application Programming Model, Java 런타임)에서 커스텀 로직은 @Before , @On , @After 세 가지 페이즈(Phase)의 이벤트 핸들러로 작성합니다. 문제는 이 세 페
S/4HANA 이관에서 커스텀 코드가 가장 큰 위험인 이유 S/4HANA 전환 프로젝트에서 예산 초과와 일정 지연의 가장 흔한 원인은 표준 기능이 아니라 수십 년간 쌓인 커스텀 ABAP 코드 입니다. ECC 시절 작성된 Z 프로그램은 S/4HANA에서 사라진 테이블(KONV, VBUK
📖 개요 및 핵심 체크포인트 ECC 시절에 만든 Classic BAdI와 CMOD/SMOD 기반 확장 코드를 그대로 S/4HANA로 가져오면, 컴파일은 통과해도 런타임에서 조용히 무너지는 경우가 많습니다. S/4HANA(예: S/4HANA 2023 On-Premise)에서는 커널 기반
📖 개요: 왜 Cloud의 권한은 "다르게" 설계되었나 ECC나 온프레미스 S/4HANA에서 PFCG로 권한을 관리해 온 실무자가 S/4HANA Cloud Public Edition을 처음 만나면 가장 먼저 당황하는 지점이 바로 권한 체계입니다. SU01도, PFCG 프로파일 생성도,
RAP BO를 테스트하지 않으면 생기는 일 — 이 글의 목표 RAP(ABAP RESTful Application Programming Model)으로 Business Object를 만들다 보면 Validation, Determination, Action 로직이 Behavior Imple
RAP BO를 테스트하지 않으면 생기는 일 — 이 글의 목표 RAP(ABAP RESTful Application Programming Model)으로 Business Object를 만들다 보면 Validation, Determination, Action 로직이 Behavior Imple
1. Dead Letter Channel 패턴이 왜 필요한가 SAP BTP Integration Suite로 S/4HANA와 외부 시스템을 연동하다 보면 반드시 마주치는 질문이 있습니다. "수신 시스템이 죽어 있을 때 그 메시지는 어디로 가는가?" 에러 처리를 설계하지 않은 iFlow에
📖 개요 — SE80 경험자가 ADT 첫날 마주치는 3가지 벽 아직도 SE80에서 더블클릭으로 모든 개발을 하고 있다면, RAP(RESTful ABAP Programming Model)을 시작하는 순간 벽에 부딪히게 됩니다. CDS View Entity, Behavior Definit
1. CASE TYPE OF가 필요한 상황과 배경 상속 계층을 설계하다 보면 결국 마주치는 순간이 있습니다. 부모 클래스 타입의 참조 변수 하나에 여러 자식 객체가 담겨 흘러 들어오고, 그중 특정 타입일 때만 다르게 처리해야 하는 상황입니다. ABAP 7.40 이전에는 이럴 때 TRY