BAPI 성공했는데 저장 왜 안 될까? #shorts #SAP #ABAP
📖 개요: BAPI는 성공했다는데 테이블엔 데이터가 없다? ABAP 입문자가 가장 자주 겪는 미스터리 중 하나가 이것입니다. BAPI를 호출했고, RETURN에 에러도 없었고, 디버거로 보면 오더 번호까지 반환됐는데 — 정작 VBAK 테이블을 조회하면 아무것도 없습니다. 원인은 대부분
📖 개요: BAPI는 성공했다는데 테이블엔 데이터가 없다? ABAP 입문자가 가장 자주 겪는 미스터리 중 하나가 이것입니다. BAPI를 호출했고, RETURN에 에러도 없었고, 디버거로 보면 오더 번호까지 반환됐는데 — 정작 VBAK 테이블을 조회하면 아무것도 없습니다. 원인은 대부분

이 글이 답하는 질문 예외 클래스를 만들었는데 운영 로그에 메시지가 비어 있는 이유는 무엇인가? RAISE EXCEPTION TYPE 과 RAISE EXCEPTION NEW 는 무엇이 다른가? 예외 클래스 계층을 어디까지 나누고, 어디서 합쳐야 하는가? 호출자가 복구할 수 있는 예외와

왜 "느린 CDS 뷰"는 원인 찾기가 더 어려운가 ABAP CDS 뷰는 로직을 데이터베이스로 내려보내는 코드 푸시다운(Code Pushdown)의 핵심 도구지만, 바로 그 특성 때문에 성능 문제가 생기면 원인이 ABAP 레이어가 아닌 HANA 내부 실행 과정에 숨어버립니다. 이 글은 해

개요: Path Expression 한 줄이 조인 폭탄이 되는 순간 ABAP CDS를 처음 접하면 Association과 Path Expression은 "편리한 조인 문법" 정도로 보입니다. 그런데 실무에서는 이 둘의 구조적 차이를 이해하지 못한 채 Path Expression을 남용하
📖 이 글에서 다루는 내용과 목표 S/4HANA 프로젝트에서 화면 하나를 만들 때마다 반복되는 질문이 있습니다. "이건 RAP으로 갈까, 그냥 SE38 리포트로 끝낼까?" 이 글은 RAP(RESTful ABAP Programming Model)과 클래식 리포트(SE38 + ALV)의

새벽 배치가 멈춘 날 — RFC 타임아웃과의 첫 만남 새벽 2시, 물류 시스템의 재고 동기화 배치가 "TIME_OUT" 덤프를 남기고 멈췄다는 알림을 받아본 적이 있다면, 이 글이 도움이 될 것입니다. ERP에서 창고관리 시스템으로 RFC를 호출하는 커스텀 함수모듈 Z_WM_GET_BI
📖 개요: 이 글에서 다루는 것 ABAP CDS 뷰만으로는 표현하기 어려운 복잡한 계산 로직을 만나면, CDS Table Function이 강력한 탈출구가 됩니다. 이 글은 가상의 물류 시나리오(창고 재고 회전율 분석)를 바탕으로 Table Function과 AMDP를 결합해 HANA
이 글에서 다루는 내용 SAP HANA 기반 시스템에서 복잡한 계산 로직을 데이터베이스로 내리는(Code Pushdown) 대표 수단이 CDS Table Function과 AMDP(ABAP Managed Database Procedure)입니다. 두 기술 모두 내부적으로 SQLScrip

📖 왜 JPY 청구서가 100배로 찍혔을까 일본 법인 청구서에 12,500엔이 나가야 하는데 화면에는 125엔, IDoc에는 1,250,000엔이 찍히는 사고. ABAP 금액 처리에서 가장 자주 터지는 유형이며, 원인은 거의 항상 하나입니다. 통화별 소수 자릿수를 정의하는 TCURX

📖 개요: 왜 "그냥 12로 나누면" 안 되는가 자재를 낱개(EA)로 관리하면서 출하는 박스(KAR), 창고 적치는 팔레트(PAL)로 하는 것은 물류 현장의 일상입니다. 이때 ABAP 개발자가 가장 흔히 저지르는 실수가 lv_box = lv_ea / 12 같은 하드코딩 나눗셈입니다.

개요: 검증 "없이" 열어둔 인터페이스가 만드는 사고 외부 시스템에서 회사코드, 플랜트, 판매조직 같은 조직 코드가 넘어오는 인터페이스를 만들 때, "호출하는 쪽이 알아서 맞는 값을 보내겠지"라고 가정하는 순간 사고의 씨앗이 심어집니다. RFC나 API로 노출된 함수는 화면 로직을 거치

📖 개요 및 이 글에서 다루는 내용 커스텀 전표 생성 배치가 밤새 돌다가 "전기기간이 마감되었습니다"로 수백 건이 실패해 있는 아침을 겪어본 적이 있다면 도움이 될 글입니다. BAPI 호출 후 실패를 수습하는 대신, 호출 전에 대상 회계기간이 열려 있는지 선검증하는 구조를 다룹니다.

이 글이 답하는 질문 SD 영역에서 "이 청구서가 어느 수주에서 시작됐는지" 또는 반대로 "이 수주가 지금 어디까지 진행됐는지"를 프로그램으로 추적해야 하는 요건은 끊임없이 나옵니다. 대부분의 개발자가 VBFA 테이블을 재귀적으로 따라가는 코드를 작성하는데, 이 방식은 운영 데이터에서

이 글이 답하는 질문 ST05 트레이스를 열어보면 느린 SELECT의 범인은 대부분 몇 가지 패턴으로 압축됩니다. 이 글은 다음 질문에 답합니다. FOR ALL ENTRIES는 왜 위험하고, 언제 INNER JOIN으로 바꿔야 하나? LOOP 안 SELECT(N+1)를 한 방 쿼리로 바
개요: 표준을 건드리지 않고 확장한다는 것 S/4HANA 프로젝트에서 가장 자주 받는 요구사항 중 하나는 "표준 CDS 뷰에 우리 회사 필드 하나만 추가해 달라"입니다. 표준 뷰 소스를 직접 수정하면 당장은 동작하지만, 업그레이드 시점에 변경분이 덮어써지거나 충돌이 발생합니다. ABAP

1. CASE TYPE OF가 필요한 상황과 배경 상속 계층을 설계하다 보면 결국 마주치는 순간이 있습니다. 부모 클래스 타입의 참조 변수 하나에 여러 자식 객체가 담겨 흘러 들어오고, 그중 특정 타입일 때만 다르게 처리해야 하는 상황입니다. ABAP 7.40 이전에는 이럴 때 TRY

📖 개요 — 이 글에서 다루는 내용 ABAP 시스템에서 외부 REST API를 호출해야 하는 순간은 반드시 옵니다. 환율 조회, 배송 추적, 사내 미들웨어 연동까지, 온프레미스 SAP ECC / S/4HANA(온프레미스) 환경에서는 CL_HTTP_CLIENT 가 사실상 표준 진입점입니

📖 개요 — 이 글에서 다루는 것 SAP ERP 시절부터 유통 채널(Distribution Channel)은 TVTW 테이블에 저장되고, 텍스트는 TVTWT 에서 별도로 조회하는 방식이 일반적이었습니다. S/4HANA(온프레미스 및 Cloud 에디션)에서는 이 방식 대신 VDM(Vir

📖 개요와 이 글에서 다루는 내용 SAP S/4HANA에서 설비 정비·현장 서비스가 끝나면 "실제로 무엇을 얼마나 수행했는가"를 기록하는 문서가 서비스 확정(Service Confirmation) 입니다. 이를 조회하는 표준 릴리스 CDS 뷰가 I_ServiceConfirmation

1. I_ServiceOrderItem이 필요한 배경 SAP ECC 시절 서비스 오더 데이터를 다루려면 개발자는 AUFK (오더 마스터), AFIH (유지보수 오더 헤더), AFKO , AFPO 같은 테이블을 직접 조인해야 했습니다. 테이블 이름 자체가 독일어 약어라 가독성이 떨어지고,