destroy 안 부르면 큰일 — UI5 메모리 누수 #shorts #SAP #UI5
왜 destroy()가 필요한가 SAPUI5는 자체 ManagedObject 레지스트리로 모든 컨트롤을 추적합니다. 컨트롤을 DOM에서 제거하거나 부모에서 detach해도 이 레지스트리 참조는 그대로 남습니다. 이벤트 핸들러, 모델 바인딩, 프래그먼트 캐시까지 메모리에 계속 쌓입니다.
왜 destroy()가 필요한가 SAPUI5는 자체 ManagedObject 레지스트리로 모든 컨트롤을 추적합니다. 컨트롤을 DOM에서 제거하거나 부모에서 detach해도 이 레지스트리 참조는 그대로 남습니다. 이벤트 핸들러, 모델 바인딩, 프래그먼트 캐시까지 메모리에 계속 쌓입니다.
ABAP 개발자도 이제 AI 코파일럿 시대 SAP의 AI 어시스턴트 Joule 이 ABAP 개발 환경에 직접 통합되었습니다. ABAP Development Tools(ADT)나 SAP Build Code에서 코드를 짜다가 막히면, Joule에게 바로 물어볼 수 있습니다. 어떤 걸 도와주
이 글이 답하는 질문 BTP Service Catalog이 뭔가요? 서비스 인스턴스와 바인딩은 어떤 순서로 만드나요? CLI와 Cockpit 중 어느 쪽을 써야 하나요? Service Catalog이란? BTP Cockpit의 Service Marketplace 가 곧 Service C
왜 S/4HANA 마이그레이션이 실패할까? S/4HANA 전환 프로젝트의 60% 이상이 예상보다 지연되거나 비용이 초과됩니다. 문제는 기술이 아니라 사전 준비 부족입니다. 마이그레이션 전 반드시 확인해야 할 3가지 체크포인트를 정리했습니다. 체크포인트 1: 커스텀 코드 분석 ECC에서
컴포넌트 간 통신, 왜 까다로울까요? UI5 앱이 커지면 부모→자식 모델 바인딩만으로는 부족합니다. 형제 뷰나 독립된 컨트롤러 간 데이터 전달 시 직접 참조를 남발하면 의존성 지옥에 빠집니다. EventBus는 이 문제를 Publish/Subscribe 패턴으로 해결합니다. 발행(Pub
이 글이 답하는 질문 SQLScript 프로시저 기본 구조는? TABLE TYPE으로 여러 행을 반환하려면? DECLARE, IF 절차형 구문은 어떻게 쓰나요? 프로시저 기본 구조 BEGIN-END 블록에 IN/OUT 파라미터를 선언하고 로직을 작성합니다. CREATE OR REPLAC
이 글이 답하는 질문 Calculation View가 SQL View와 구체적으로 뭐가 다른가? 어떤 상황에서 Calculation View를 써야 하나? 처음 만들 때 어떤 순서로 접근하나? 직접 해보기 SQL View vs Calculation View 차이 -- SQL View:
Fiori에서 ARIA가 없으면 벌어지는 일 SAP Fiori 앱에 ARIA 속성을 빠뜨리면 스크린 리더 사용자는 버튼이 존재하는지조차 알 수 없습니다. 단순한 권고 사항이 아닙니다. 유럽 EAA(European Accessibility Act) 2025, 미국 Section 508 등
이 글이 답하는 질문 여러 Component로 쪼개진 UI5 앱에서, 서로를 직접 참조하지 않고 데이터를 주고받으려면 어떻게 해야 하나? EventBus의 channelId와 eventId는 어떤 단위로 설계해야 충돌 없이 운영할 수 있나? subscribe를 걸어 둔 뒤 뷰가 dest
Custom Action이 필요한 순간 CAP for Java에서 표준 CRUD만으로는 부족할 때 Custom Action을 사용합니다. 주문 승인, 결제 처리, 외부 시스템 호출처럼 특정 비즈니스 로직을 전용 API 엔드포인트로 노출할 수 있습니다. CDS 모델에서 Action 선언
SAP BTP에서 XSUAA(User Account and Authentication)는 OAuth2 기반 인증의 핵심이다. 그런데 설정 하나만 틀려도 앱 전체 인증이 멈춘다. 실무에서 반복되는 실수 3가지를 정리했다. 실수 1 — xs-security.json scope를 role t
External vs Internal Numbering RAP에서 엔티티를 생성할 때 키(Key) 값을 누가 결정하느냐에 따라 두 방식으로 나뉩니다. External Numbering 은 클라이언트(UI/API 호출자)가 키를 직접 지정하고, Internal Numbering 은 서버가
Expression Binding이란? UI5의 Expression Binding은 XML View 안에서 JavaScript 표현식을 직접 실행할 수 있는 기능입니다. {= ... } 문법을 사용하며, 단순한 조건 처리나 문자열 조합을 위해 Controller에 formatter 함수
ABAP 오브젝트를 GitHub으로 관리하는 abapGit 설치부터 팀 협업까지.
이 글이 답하는 질문 HANA Plan Visualizer가 Explain Plan과 뭐가 다른가? 쿼리가 느릴 때 어느 Operator부터 봐야 하나? Estimated vs Actual Row Count 차이가 크면 어떻게 하나? 직접 해보기 1. Plan Visualizer 열기
이 글이 답하는 질문 DB 컬럼을 추가하지 않고 계산된 값을 API 응답에 포함하려면? CDS virtual element와 projection 계산식, 어느 걸 써야 하나? 직접 해보기 1. CDS에서 virtual element 선언 entity에 virtual 키워드를 붙이면 DB
이 글이 답하는 질문 Fiori List Report에서 여러 행을 한 번에 수정하려면? Mass Edit Dialog를 열 때 입력 필드가 비어 있는 이유는? OData $batch 요청을 올바르게 묶는 방법은? 직접 해보기 1. Table MultiSelect 활성화 <!--
이 글이 답하는 질문 Fiori 폼에서 필수 입력 별표(*)는 어떻게 표시하나? Label required 속성만으로 충분한가, 아니면 Input도 건드려야 하나? 저장 버튼 클릭 시 빈 필수 필드를 어떻게 잡나? 직접 해보기 1. XML View — required 한 줄 추가 <
이 글이 답하는 질문 CDS View에 어노테이션만 붙이면 Fiori UI가 자동으로 생기는가? @UI.lineItem, @UI.selectionField가 하는 일은? OData 서비스 없이 Fiori 앱을 연결하려면? CDS Annotation이란 CDS View에 @ 로 시작하는
Fiori Elements vs Freestyle SAP UI5 개발에서 가장 먼저 결정해야 할 것은 Fiori Elements를 쓸지, Freestyle UI5를 쓸지입니다. 선택에 따라 개발 방식이 완전히 달라집니다. Fiori Elements OData 어노테이션 기반으로 UI를