타임라인 직접 구현 그만 — UI5 FeedListItem #shorts #SAP #UI5
개요 및 이 글에서 다루는 것 sap.m.FeedListItem 은 SAPUI5 모바일 라이브러리에서 제공하는 피드/타임라인 전용 리스트 아이템으로, 일반 StandardListItem 으로는 표현하기 까다로운 "누가, 언제, 무엇을 말했는가"의 3요소를 한 줄에 자연스럽게 담아냅니다.
개요 및 이 글에서 다루는 것 sap.m.FeedListItem 은 SAPUI5 모바일 라이브러리에서 제공하는 피드/타임라인 전용 리스트 아이템으로, 일반 StandardListItem 으로는 표현하기 까다로운 "누가, 언제, 무엇을 말했는가"의 3요소를 한 줄에 자연스럽게 담아냅니다.
개요 및 이 글에서 다루는 것 SAPUI5/OpenUI5의 sap.m 라이브러리에는 비즈니스 데이터를 시각적으로 표현하기 위한 두 가지 핵심 컨트롤이 있습니다. ObjectStatus 는 항목의 상태(승인/거절/대기)를 색상과 아이콘으로 직관적으로 표현하고, ObjectIdentifie
개요 및 이 글에서 다루는 것 SAP UI5 애플리케이션에서 조직도, 자재 명세서(BOM), 파일 시스템 같은 계층 구조 데이터를 표현해야 하는 요구는 매우 빈번합니다. 단순 List 나 Table 로는 부모-자식 관계를 직관적으로 표현하기 어렵기 때문에 sap.m.Tree 컨트롤이 등
개요 — window 전역 변수와 결별하기 UI5 화면을 처음 만들 때 가장 흔한 실수 중 하나가 window.currentSalesOrderId = 4711; 같은 코드입니다. 빠르게 동작하기 때문에 유혹적이지만, 이 한 줄은 향후 수개월간 디버깅 지옥을 예약하는 행위와 같습니다. 이
개요와 이 글에서 얻어갈 것 ABAP 개발을 하다 보면 화면이 바뀌어도 값이 살아남아야 하거나, 서브루틴/펑션 모듈로 큰 내부 테이블을 넘겨야 하는 상황이 자주 발생합니다. 이때 등장하는 두 가지 메모리 영역이 바로 SAP Memory 와 ABAP Memory 입니다. 이름이 비슷해 혼
개요 및 이 글의 목표 SAPUI5 애플리케이션을 만들 때 시각·청각·운동 제약을 가진 사용자가 동일한 기능을 사용할 수 있도록 보장하는 작업이 접근성(Accessibility, 줄여서 a11y)입니다. 화면에 보이는 픽셀만 잘 그리는 것으로는 부족합니다. 스크린 리더, 키보드 내비게이
개요 및 이 글에서 다루는 것 SAP Fiori Launchpad의 첫인상을 결정하는 것은 단연 타일(Tile) 입니다. 그중 sap.m.GenericTile 은 헤더, 서브헤더, 본문 콘텐츠를 자유롭게 조합할 수 있는 가장 유연한 컨트롤로, 매출 현황, 주문 건수, KPI 같은 핵심
한눈에 보는 이 글의 목적 SAPUI5/OpenUI5 애플리케이션을 만들다 보면 같은 데이터 모델인데 어떤 화면에서는 값이 공유되고, 어떤 화면에서는 따로 노는 현상을 마주합니다. 이는 모델을 어디에 setModel() 했느냐에 따른 스코프(scope) 차이 때문입니다. 이 글은 글로벌
개요 및 이 글에서 얻어갈 것 ABAP CDS(Core Data Services)는 단순한 SELECT 래퍼가 아니라, HANA Calculation Engine에서 직접 실행되는 강력한 데이터 모델링 레이어입니다. 그 중에서도 Built-in Functions 는 ABAP 레이어로 데
이 글의 목적과 도달점 SAPUI5 화면에서 사용자에게 "지금 처리 중"이라는 신호를 주는 방법은 크게 두 갈래입니다. 하나는 화면 전체를 막아버리는 sap.m.BusyDialog , 다른 하나는 컨트롤 단위로 부분 차단을 거는 setBusy(true) 혹은 전역 sap.ui.core.
이 글에서 다루는 범위와 도달 목표 SAPUI5 애플리케이션에서 배열(컬렉션) 데이터를 화면에 표시할 때 개발자가 가장 자주 마주치는 의사결정은 "어떤 바인딩 방식을 선택할 것인가"입니다. 같은 Product 배열을 두고도 인덱스로 직접 꺼낼 수도 있고, 컨테이너 전체에 컨텍스트를 묶어
이 글의 목표와 체크포인트 SAPUI5의 sap.m.List 에서 단순 정렬을 넘어 의미 있는 그룹으로 묶어 보여주는 작업은 실무에서 매우 자주 등장합니다. 이 글은 SalesOrder(판매 주문) 리스트를 SalesOrg(판매 조직) 단위로 그룹핑하는 시나리오를 통해, Sorter 의
RadioButton의 한계와 SegmentedButton이 등장한 이유 SAPUI5/OpenUI5에서 "여러 선택지 중 하나"를 제시할 때 가장 먼저 떠오르는 컨트롤은 sap.m.RadioButton이지만, 모바일 우선(Mobile First) Fiori 환경에서는 sap.m.Segm
HBox, VBox, FlexBox가 생긴 이유 SAPUI5에서 화면을 구성할 때 가장 먼저 마주치는 고민은 "컨트롤을 어떻게 배치할 것인가"입니다. 초창기 UI5는 sap.ui.layout 패키지의 Grid, VerticalLayout, HorizontalLayout 등을 사용했지만,
Toolbar와 Bar를 혼용할 때 생기는 문제 SAP Fiori 화면을 만들다 보면 상단 헤더에 제목과 검색 버튼, 하단 푸터에 저장/취소 버튼을 배치하는 일이 빈번합니다. 이때 많은 개발자가 sap.m.Bar 와 sap.m.Toolbar 를 거의 같은 컨트롤로 착각하고 아무 곳에나
1. 수동 오류 수집의 문제점 UI5 애플리케이션을 처음 작성할 때 가장 흔히 마주치는 안티 패턴은 컨트롤러마다 onError , onValidationError , onParseError 핸들러를 따로 두고 sap.m.MessageBox.error() 를 호출하는 방식입니다. 입력 필
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