Toolbar vs Bar 차이 — UI5 레이아웃 제대로 #shorts #SAP #UI5
Toolbar와 Bar를 혼용할 때 생기는 문제 SAP Fiori 화면을 만들다 보면 상단 헤더에 제목과 검색 버튼, 하단 푸터에 저장/취소 버튼을 배치하는 일이 빈번합니다. 이때 많은 개발자가 sap.m.Bar 와 sap.m.Toolbar 를 거의 같은 컨트롤로 착각하고 아무 곳에나
Toolbar와 Bar를 혼용할 때 생기는 문제 SAP Fiori 화면을 만들다 보면 상단 헤더에 제목과 검색 버튼, 하단 푸터에 저장/취소 버튼을 배치하는 일이 빈번합니다. 이때 많은 개발자가 sap.m.Bar 와 sap.m.Toolbar 를 거의 같은 컨트롤로 착각하고 아무 곳에나
1. SY-TABIX 의존의 문제점 오래된 ABAP 코드를 들여다보면 거의 모든 내부 테이블 조작이 SY-TABIX 와 SY-SUBRC 를 중심으로 돌아간다. 예를 들어 READ TABLE ... TRANSPORTING NO FIELDS 로 인덱스를 확보한 뒤 그 값을 즉시 다른 명령에
1. 수동 오류 수집의 문제점 UI5 애플리케이션을 처음 작성할 때 가장 흔히 마주치는 안티 패턴은 컨트롤러마다 onError , onValidationError , onParseError 핸들러를 따로 두고 sap.m.MessageBox.error() 를 호출하는 방식입니다. 입력 필
이 글에서 다루는 범위와 도달 목표 실무에서 자재 수량을 다루다 보면 EA(개) , BOX(박스) , PAL(파레트) , KG , G 처럼 서로 다른 단위가 한 테이블에 섞여 있습니다. 이때 개발자는 종종 ABAP 측에서 LOOP 를 돌리며 환산 비율을 곱하는 코드를 작성합니다. 이 글
OData 전체 컬럼 요청의 문제점 SAPUI5 애플리케이션을 운영하다 보면 "왜 이렇게 느리지?"라는 질문을 자주 듣게 됩니다. 네트워크 탭을 열어보면 답이 보이는 경우가 많습니다. 판매주문(SalesOrder) 목록을 단순히 ID, 고객명, 금액 세 컬럼만 화면에 표시하는데도 서버는
개요와 이 글에서 다루는 범위 SAP UI5 애플리케이션이 OData 서비스를 호출할 때, 마스터-디테일 화면에서 가장 자주 발생하는 성능 병목이 바로 N+1 쿼리 문제입니다. 판매 오더 목록을 가져온 뒤 각 오더의 고객 정보를 따로따로 조회하면 100건 목록에 101번의 HTTP 요청
개요 및 이 글의 목표 SAP UI5 애플리케이션을 개발하다 보면 백엔드가 항상 JSON이나 OData를 내려주지는 않습니다. 레거시 ERP 인터페이스, 외부 카탈로그 시스템, RSS/Atom 피드, SOAP 응답, 또는 ABAP에서 직접 직렬화한 XML 응답을 그대로 화면에 묶어야 할
개요 및 학습 포인트 SAPUI5 애플리케이션을 만들다 보면 모든 데이터를 OData 서비스에 의존하기보다 화면 내부에서만 잠깐 쓰는 상태값(편집 모드 플래그, 필터 조건, 장바구니 임시 데이터 등)을 관리해야 할 때가 많습니다. 이때 sap.ui.model.json.JSONModel
개요 및 무엇을 얻어갈 것인가 여러 테이블에 흩어진 결과를 하나로 합치거나, 두 결과 집합의 공통/차이만 뽑아내야 할 때 JOIN으로 풀면 조건문이 복잡해지고 가독성이 떨어집니다. ABAP SQL의 집합 연산자(UNION / INTERSECT / EXCEPT)는 이런 문제를 행 단위 집
개요 및 핵심 포인트 SAP Fiori/UI5 애플리케이션이 복잡해질수록 화면 하나에서 발생하는 OData 호출 수가 빠르게 늘어납니다. 주문 목록, 고객 정보, 배송 상태, 첨부 파일을 각각 별도의 HTTP 요청으로 보낸다면 네트워크 왕복 비용과 서버 세션 부담이 모두 누적됩니다. 이
개요 및 이 글에서 다루는 내용 CAP for Java(SAP Cloud Application Programming Model for Java)는 기본적으로 모든 비즈니스 로직을 트랜잭션 컨텍스트 안에서 실행합니다. 문제는 단순히 상품 카탈로그를 조회하거나 주문 내역을 검색하는 읽기 전
에러 핸들링 없이 iFlow를 운영하면 생기는 일 새벽 3시, 운영팀에 긴급 호출이 옵니다. "어제 들어온 구매발주 17건이 S/4HANA에 안 들어왔어요." 로그를 뒤져보니 SAP BTP Integration Suite의 iFlow는 분명 메시지를 수신했는데, 중간 매핑 단계에서 Nu
이 글이 답하는 질문 레거시 ABAP 코드를 유지보수하다 보면 MOVE ?TO 나 ?= 연산자로 객체 참조를 다루는 패턴을 흔히 만납니다. 이런 코드는 ABAP 7.40 이후 도입된 CAST 연산자로 대체되어야 합니다. 단순한 문법 변경이 아니라 가독성, 표현식 기반 프로그래밍, 인라인
1. Object Page 레이아웃과 섹션의 역할 SAP Fiori Elements의 Object Page는 단일 비즈니스 엔티티(예: 판매주문 한 건, 거래처 한 곳)의 상세 정보를 표시하기 위한 표준 플로어플랜입니다. List Report에서 행을 클릭했을 때 펼쳐지는 그 페이지를
List Report가 어노테이션을 해석하는 방식 SAP Fiori Elements의 List Report는 CDS(또는 OData) 메타데이터에 선언된 @UI 어노테이션을 런타임에 해석해 UI를 자동 렌더링합니다. 개발자가 XML View를 직접 작성하지 않아도 컬럼, 필터바, 헤더
PersistenceService란 무엇인가 PersistenceService 는 CAP for Java 런타임이 제공하는 영속성 추상화 계층입니다. 패키지 com.sap.cds.services.persistence.PersistenceService 에 정의되어 있으며, CDS 엔터티
왜 EventBus가 필요한가 대형 SAP Fiori 애플리케이션은 보통 여러 개의 Component로 쪼개져 있습니다. 주문 목록을 보여주는 컴포넌트, 주문 상세를 띄우는 컴포넌트, 사이드 알림 패널을 다루는 컴포넌트가 서로 다른 페이지·다른 라이프사이클을 가진 상태에서 "방금 사용자
Code Inspector와 ATC, 뭐가 다른가 ABAP 코드 품질을 잡는 도구는 두 가지입니다. Code Inspector(SCI 트랜잭션)는 2000년대부터 사용해온 전통적인 방식이고, ATC(ABAP Test Cockpit)는 SAP가 현재 권장하는 현대적 품질 관리 방식입니다.
같은 요건, 세 갈래의 길 SAP S/4HANA와 ABAP Platform 환경에서 표준 기능을 확장할 때, 어떤 방식을 고를지 망설인 경험이 한 번쯤 있을 겁니다. 같은 "판매 오더에 프로모션 코드 필드 하나 추가"라는 요건이라도 Tier 1(Key User), Tier 2(Devel
SAP 확장 모델이 3계층으로 나뉜 이유 SAP S/4HANA Cloud가 등장하면서 ERP를 "건드리지 않고 어떻게 확장할 것인가"가 핵심 과제로 떠올랐습니다. 과거 ECC 시절에는 SE38에서 표준 프로그램을 그대로 수정하거나, User Exit/BAdI로 핵심 로직에 깊숙이 개입하