ETag 없이 RAP 저장? 데이터 덮어씌워진다 #shorts #SAP #RAP
개요 — 이 글에서 다루는 것 두 명의 담당자가 같은 서비스 오더를 동시에 열어 편집하면 어떤 일이 벌어질까요? ETag가 설정되지 않은 RAP 비즈니스 오브젝트에서는 나중에 저장한 사람이 먼저 저장한 사람의 변경을 조용히 덮어씌웁니다 . 오류도, 경고도 없습니다. 이 글은 SAP BT
개요 — 이 글에서 다루는 것 두 명의 담당자가 같은 서비스 오더를 동시에 열어 편집하면 어떤 일이 벌어질까요? ETag가 설정되지 않은 RAP 비즈니스 오브젝트에서는 나중에 저장한 사람이 먼저 저장한 사람의 변경을 조용히 덮어씌웁니다 . 오류도, 경고도 없습니다. 이 글은 SAP BT
개요 및 이 글에서 다룰 것 SAP UI5 애플리케이션에서 화면에 데이터를 뿌릴 때, 백엔드에서 내려온 원본 값을 그대로 노출하면 사용자 경험이 어색해집니다. 예를 들어 20260714 라는 문자열, 1500000.00 이라는 숫자, P 라는 코드 값은 각각 2026-07-14 , 1,
개요 — 이 글에서 다루는 것 UI5에서 OData V4 모델을 쓰면서도 생성·수정·삭제(CUD)를 여전히 fetch 나 수동 AJAX 호출로 처리하는 코드를 실무에서 자주 봅니다. OData V4 모델( sap.ui.model.odata.v4.ODataModel )은 V2와 설계 철학
📖 개요 — 이 글에서 다루는 것 RAP(ABAP RESTful Application Programming Model)으로 Fiori Elements 앱을 처음 만들면 List Report까지는 잘 나오는데, Object Page를 열었더니 화면이 텅 비어 있는 경험을 하게 됩니다.
개요 및 이 글에서 다루는 것 SAP Fiori 앱을 데스크톱에서만 테스트하고 배포한 뒤 "모바일에서 표가 잘려 보인다"는 컴플레인을 받아본 개발자가 많을 것입니다. Fiori 디자인 가이드라인은 세 가지 폼팩터(Phone/Tablet/Desktop)를 동시에 지원해야 한다고 명시하지만
개요 및 이 글에서 얻어갈 것 Fiori Launchpad에 앱을 배포했는데 사용자들이 "타일만 봐서는 지금 처리할 일이 있는지 없는지 모르겠다"고 불평한 경험이 있다면, 이 글이 정확히 그 문제를 해결합니다. Static Tile(정적 타일)만 나열된 홈 화면은 사용자에게 매번 앱을
이 글의 목적과 도달점 SAP Fiori Launchpad(FLP)를 처음 접하면 사용자 화면에 표시되는 타일과 그룹이 어디에서 오는지, 어떤 순서로 조립되는지 파악하기가 쉽지 않습니다. 특히 Role Catalog (역할 카탈로그)와 Role Group (역할 그룹)이라는 두 축이 헷
개요 및 이 글에서 다룰 것 SAP UI5 애플리케이션에서 화면에 데이터를 뿌릴 때, 백엔드에서 내려온 원본 값을 그대로 노출하면 사용자 경험이 어색해집니다. 예를 들어 20260714 라는 문자열, 1500000.00 이라는 숫자, P 라는 코드 값은 각각 2026-07-14 , 1,
개요 및 이 글에서 얻어갈 것 SAP Fiori 앱을 회사에 배포하다 보면 반드시 마주치는 요구사항이 있습니다. "우리 회사 CI 컬러로 바꿔주세요", "로고를 헤더에 넣어주세요", "폰트를 사내 표준 Pretendard로 통일해주세요" 같은 브랜딩 요청입니다. 이때 CSS를 직접 오버
개요 및 이 글에서 얻어갈 것 Fiori 앱을 오픈하는 순간 사용자 눈에 처음 보이는 것은 로딩 스피너입니다. 초기 렌더링이 3초를 넘어가면 이탈률이 급격히 상승한다는 UX 통계가 있는데, Fiori/UI5 앱의 경우 라이브러리 파일이 워낙 방대하다 보니 최적화 전략 없이는 첫 화면(T
이 글에서 다룰 것 UI5에서 다량의 비즈니스 데이터를 화면에 뿌릴 때 가장 먼저 부딪히는 고민은 "어떤 컨트롤을 써야 하지?"입니다. sap.m.Table , sap.m.List , sap.m.Tree 는 겉보기에는 비슷하지만, 데이터 구조와 사용자 시나리오에 따라 명확히 다른 선택을
이 글에서 다루는 내용과 확인 포인트 SAPUI5 애플리케이션에서 사용자에게 정보를 전달하는 두 가지 대표 위젯인 sap.m.MessageBox 와 sap.m.MessageToast 는 얼핏 비슷해 보이지만 UX 측면에서 완전히 다른 역할을 담당합니다. 이 글은 두 컴포넌트의 동작 원리
개요 및 이 글에서 얻어갈 것 SAPUI5에서 Dialog를 컨트롤러 내부에서 new sap.m.Dialog(...) 로 즉석 생성하는 코드를 흔히 볼 수 있습니다. 프로토타입 단계에서는 편리하지만 화면 수가 늘어나면 같은 다이얼로그 코드가 여러 파일에 흩어지고, 스타일 변경 한 번에
JSONModel과 ODataModel이란 무엇인가 SAPUI5(1.120 LTS 기준)에서 뷰(View)와 데이터를 연결할 때 가장 먼저 마주하는 갈림길이 바로 JSONModel 과 ODataModel 입니다. 두 모델 모두 sap.ui.model 네임스페이스 아래에 있으며, 뷰의 컨
이 글에서 다루는 내용과 체크포인트 온프레미스 ABAP에서 잘 돌아가던 코드를 S/4HANA Cloud Public Edition이나 SAP BTP ABAP Environment(Steampunk)로 옮기려는 순간, 개발자들은 "Statement is not allowed in ABAP
이 글에서 얻어갈 것 SAPUI5에서 Dialog는 사용자와의 상호작용에서 가장 자주 등장하는 컨트롤입니다. 그런데 많은 개발자들이 여전히 컨트롤러 안에서 new sap.m.Dialog({...}) 를 직접 호출하며 코드를 길게 늘어뜨리고 있습니다. 이 방식은 화면이 하나일 때는 괜찮지
이 글에서 다루는 것 RAP(ABAP RESTful Application Programming Model) 기반으로 서비스를 노출할 때, 개발자가 반드시 마주치는 갈림길이 있습니다. 바로 Service Binding 유형 선택입니다. 같은 Service Definition을 만들었어도,
개요와 이 글에서 얻어갈 것 CAP(Cloud Application Programming Model) for Node.js 프로젝트를 개발할 때 대부분의 개발자는 cds watch 로 로컬 SQLite와 목업(mock) 인증만 사용합니다. 문제는 배포 후에야 "BTP의 XSUAA 인증
UI5 Formatter가 해결하는 실무 문제 SAP UI5 애플리케이션을 개발하다 보면 OData 서비스에서 내려오는 원본 데이터와 사용자가 실제로 화면에서 보고 싶어하는 형태 사이에 큰 간극이 존재합니다. 예를 들어 백엔드는 날짜를 /Date(1717200000000)/ 형태의 Ed
개요와 이 글에서 얻어갈 것 SAPUI5 화면에서 백엔드가 내려주는 값은 대부분 "가공되지 않은 원본"입니다. OData 서비스가 DeliveryDate 를 /Date(1751846400000)/ 또는 ISO 문자열로 내려주고, NetAmount 는 1234567.89 라는 숫자로, S