# 시작하기 전
프로그램을 개발하면서 첨부파일을 올리는 경우가 있을 수가 있다.
예를 들어 회사 테이블에서 각 데이터마다 회사 이미지를 넣어줘야 하는 경우, 상품을 등록할 때 상품 이미지를 넣어줘야 하는 경우 등등..
여러 가지 경우들이 있을 것이다. 일단 시작해 보자.
기본 View에서 추가해야 할 것은 총 3가지이다.
필수) Attachment : /dmo/attachment;
필수) mimetype : /dmo/mine_type;
선택) filename : /dmo/filename;
# 예제, 첨부파일 설정
우리는 그룹 테이블에 회사 이미지를 넣고 회사 이미지를 볼 수 있도록 요구사항이 왔다고 가정해보자.
1. 우리는 Database Table에 위에서 추가해줘야 하는 필드들을 넣어줘야 한다.
# 만약 Draft 기능이 추가된 상태라면 당연히 Draft Table에도 추가해줘야 한다.
zattachment: /dmo/attachment;
zmimetype: /dmo/mime_type;
zfilename: /dmo/filename;
--------------------
attachment : abap.rawstring(0);
mime_type : abap.char(128);
file_name : abap.char(128);
# 혹시나 /dmo/* 가 없을 경우에는 밑에 타입을 사용하면 된다.
2. Root View entity에서 추가된 필드를 설정해 주고, @Semantics Annotation을 통해서 첨부파일의 속성을 설정해 주자.
@Semantics.largeObject: { mimeType: 'MimeType',
fileName: 'FileName',
acceptableMimeTypes: ['image/png', 'image/jpeg'],
contentDispositionPreference: #ATTACHMENT }
zattachment as Attachment,
@Semantics.mimeType: true
zmimetype as MimeType,
zfilename as FileName,
@semantics.largeObject
- mimeType : MIME 객체의 타입을 담고 있는 필드명을 나타낸다. ( 대소문자를 구분한다 )
- fileName : MIME 객체의 파일명이 포함된 필드명을 나타낸다. ( 대소문자를 구분한다 )
- acceptableMimeTypes : 관련 스트림 속성에 허용되는 MIME 유형 목록을 제공하여 이에 따라 사용자 항목을 제한하거나 확인하며, 하위 유형이 허용되는 경우 *로 표시할 수 있다.
- contentDispositionPreference :
#INLINE : 첨부파일을 클릭 할 때 새 창(브라우저)로 해당 파일이 열린다.
#ATTACHMENT : 첨부파일을 클릭 할 때 다운로드 or 저장을 할 수 있다.
3. Behavior Definitions에서 Root View entity에 관한 Behavior에서도 Mapping for ... 에 추가된 필드들을 맵핑해주어야 한다.
4. Root View entity 설정이 끝났다면, Projection View or Metadata extension에서 데이터를 넣을 수 있게 필드를 설정해 주고
# 헤더에 첨부파일 사진 보여주기
1. 요구사항에 맞게 사진을 보여주기 위해서는 Metadata extension에서 @UI. headerInfo를 설정해주어야 한다.
2. 첨부파일이 저장된 이미지 값을 가져오기 때문에 ( ImageUrl : 'Attachment' ) 설정을 해주면 된다.
또한 HeadrInfo 안에 들어가는 것이 아닌 Title에서도 쓸 수 있기 때문에 참고 바란다. ( 지금은 간단한 예시 )
실행시켜 보자.
# 실행( Odata V4 )
1. B2, 바나나라인에 대한 디테일 페이지에 들어가 보자.
2. 해당하는 그룹의 이미지 사진을 넣어보자. 파일을 넣으면 자동으로 타입, 파일명이 들어가진다.
3. 저장을 누르면 다음과 같이 나와있는 것을 볼 수가 있다.
# 에러
# 만약 다음과 같은 에러가 뜨면 대소문자를 잘 써주었는지 확인해주어야 한다. 맞춤법 때문에 에러가 나는 경우이다.
Application Could not be stated due to technical issues.
Content-Disposition for non-stream property 'ATTACHMENT' is not alliowed.
끝.
'.BTP > ..Cloud ABAP(RAP)' 카테고리의 다른 글
SAP RAP Side effects 정리 (2) | 2023.07.12 |
---|---|
SAP RAP 넘버레인지( Number Range ) 정리 (15) | 2023.06.29 |
SAP RAP 아이콘( Icon ) 설정 하는 방법 (11) | 2023.06.20 |
SAP RAP Dropdown List 설정하기 ( Value Help ) (12) | 2023.06.20 |
SAP RAP draft 기능 활성화( Managed ) (0) | 2023.06.20 |