본문 바로가기

ABAP

ABAP : Eclipse를 이용하여 CDS, OData 만들기

● 알아둬야 할 T-CODE

- /IWFND/MAINT_SERVICE : Active & Maintain Services

- SEGW : SAP Gateway Service Builder

 

만들어보자

 

1. 이클립스에서 뷰의 껍데기를 만들어준다 (테이블을 미리 만들어 주었다는 가정하에)

 

2. SEGW의 AddService에 들어가 

 

System Alias에 저장위치, External Servcie Name에 서비스 명을 입력해주고

Get Services를 눌러준다

 

3. 아래와 같이 Add Selected Services를 눌러준다

그럼 OData 껍데기가 만들어진 것이다.

 

4. 만들고 나오면 보이지만 혹시 안보일경우 필터를 이용하여 External에 검색해준다

 

5. Status에 초록불이 들어와야 활성화 상태이며 만약에 활성화가 되어있지 않다면 ICF Node를 눌러 활성화해준다

이후 SAP Gateway Client 에 들어가준다

 

6. 게이트웨이 클라이언트에 들어왔으면 내가 만든 OData가 잘 조회되는지 확인해보자

status code가 200이 보인다면 정상적으로 조회 된 것이다.

 

7. 아래 http주소를 인터넷 브라우저에서 띄울 수도 있다.

 

 

 

 

8. OData서비스를 이용하기 위해 필수적으로 사용해야하는 것들 (Annotation)

@OData.publish: true 
@ObjectModel.modelCategory: #BUSINESS_OBJECT 
@ObjectModel.compositionRoot: true
@ObjectModel.transactionalProcessingEnabled: true
@ObjectModel.writeActivePersistence: 'ZTRESULT_C15'
@ObjectModel.createEnabled: true
@ObjectModel.updateEnabled: true
@ObjectModel.deleteEnabled: true

 

 

9. SEGW에서 프로젝트를 만들어 준다

 

10. 데이터 모델을 가져온다

 

11. 데이터 셋을 만들 때 내가 만든 이름이 어디에 위치하는지 파악한다

 

12.  Generate 해준다 (위치는 Local Object ) 

 

 

 

13.  원래 있는 Function Group을 써도 되지만 연습차 Function Group을 한번 만들어 보자

 

14. 파라미터이름과 타입, 참조 타입을 가져온다 기존에 만들어졌던걸로 사용한다

ZFC_JOON_PRAC1_READ는 READ용 Function Module로 만들어 볼것이다.

다시 만드는 이유는 Fucntion Group과 Function Module을 어떤방식으로 만들고 사용되는지 알아보기 위함이다.

 

 

 

※ 지금부터 C. R. U. D를 모두 만들어 볼텐데 여기서 만드는 모든 Function Module은 RFC Enable Module로 체크 해줘야한다 만들면서 꼭 체크해주자

 

15. Function Moudel - Read

 

- IMPORT : CLASSCODE와 INPUTID를 KEY필드로 설정했으니  OPTIONAL과 PASS BY VALUE는 체크해주도록 한다

 

- EXPORT : 결과를 EXPORT한다 참조탑입은 ZTRESULT의 테이블 타입이다

※ 여기서 Structure 타입으로 해줄 경우 에러가 나는 경우가 있다고 하니 참고하자

- Source Code : 소스코드는 단순히 Read 하는 부분이기 때문에 select 문을 이용하여 데이터를 불러오고 ET_RESULT로 넣어준다

CASE로 써준것은 READ하는 단계에서는  크게 의미 없다 

 

16. Function Moudel - Create

위에서 read FM을 만들 때 만드는 방법을 생략 했는데 한번 스크린샷을 보여주도록 하겠다

 

 

 

- import : CREATE할 때의 IMPORT VALUE를 설정해준다

역시 사용했던걸 가져오지만 어떻게 만들어지고 어떻게 쓰이는지 알아가는 과정이니 한번씩 해보는것을 추천한다.

모든 필드에 대해 pass by value를 꼭 체크해주자 체크해 주지 않으면 create가 안된다

 

- export :  import를 통해 넣은 데이터가 잘 들어갔는지 확인하기 위해  이름을 ev_success로 만들어 주었다.

 

- Source Code  :  아래 설명을 보고 각각의 역할을 알아보자

소스코드까지 입력하였다면 Active 하여 완성한다

 

 

17. UPDATD와 DELETE는 CREATE와 비슷하니 복사하여 일부분만 수정해 주면 된다.

우선 UPDATE부터 COPY해주자

 

UPDATE라고 수정해주기

 

뭐가 달라졌을까? 어차피 IMPORT와 EXPROT하는 부분은 같다

Source Code에서 박스 부분만 바뀐 것이다.


18. Delete도 마찬가지로 진행해준다.

- 이렇게 CRUD를 위한 Function Module을 모두 만들어 보았다

19. BackEnd 서비스 등록하기

 

Registration Status가 흰색이면 등록되지 않은 상태이다

Register를 눌러 등록해주자 

 

- 로컬로

- 체크하면 아래와 같은 창이 뜬다 Local Object를 눌러주고 확인

 

- Status가 초록불이다 정상적으로 등록 된 것을 확인 할 수 있다.

여기서 Maintain을 눌러주면

 

서비스를 유지 보수 할 수 있는 창이 나온다

이 창은 아래 티코드로도 바로 들어갈 수 있으니 참고하자

TCODE : /IWFND/MAINT_SERVICE 

 

 

20. 데이터 매핑을 진행해보자

 

● Mapping -  Create

 

T-CODE  :  SEGW 

- Service Implementation에서 Edit모드로 전환해주고 Map to Data Source 를 클릭한다.

 

 

- Type은 RFC로, 이름은 Function Module 이름을 쓴다.

Create이니 Create Function Module로 만들어 준다.

 

- 각 값에 맞는 데이터를 매핑해주고 저장한다.

 

● Mapping -  Read

- Create와 마찬가지로 만들어준 Read Function Module을  Name으로 지정한다

 

- Read는 Key Maping을 두번 해줘야한다

그  이유는 데이터를 테이블로부터 불러올때, Key값으로 가져오기 때문에 한번,  그 가져온 데이터를 Read할 때 한번 사용한다 input과 output 할때 모두 사용하기 때문에 두번 매핑 해준다 

 

 

● Mapping -  GetEntitySet (Query)

● Mapping -  Update

 

● Mapping -  Delete

 

 

- 다 마쳤다면 Generate해준다 에러가 없는지 확인한다

 

21.  Generate를 맞쳤으면 Refresh를 해준다

 

 

- Status가 정상인 것을 확인하자

 

22. 만든 C.R.U.D가 정상 동작하는지 살펴보자

- Data Explorer로 보면 데이터가 있는 것을 확인 할 수 있다.

 

- 데이터 하나를 Read해 보았다 정상적으로 뜨는 것을 확인 할 수 있다.

- 기본 조회시 Request URL꼴은 아래와 같다. ?$format=xml꼴로 시작한다

 

- C.R.U.D는 한개의 엔티티에 대해서만 할 수 있기 때문에 한개의 데이터를 조회하여 CREATE해보자

 

 

CREATE 하기

Classcode=200, Inputid=0001, Score=100으로 Create하였다. 여기서 ResultSet을 대상으로 Create해줘야 한다

201코드가 뜨며 Create가 된다

 

 

Update하기

방금 만든 데이터를 수정해보자 Classcode='200', Inputid='0001', Score='90'로 수정해보려고 한다

방금 만든 데이터가 Classcode='200', Inputid='0001'이었으니 이 주소를 가지고 수정한 것이다.  Statuscode 204가 뜬다

 

 

Delete 하기

- 방금 Update한 데이터를 Delete해보자

 

- Delete에 체크하고 Status 204 확인한다

- Data Explorer에 사라진 것을 확인 할 수 있다.

 

- C.R.U.D를 확인하여 내가 만든 기능이 동작하는지 확인한다.

 

 

 

 

 

'ABAP' 카테고리의 다른 글

ABAP : LOOP 형식  (0) 2022.09.27
ABAP : BDC DATA  (0) 2022.09.22
ABAP : OData 개념  (0) 2022.08.11
ABAP : CDS View  (0) 2022.08.11
ABAP : ALV_GRID에서 사용하는 CLASS/METHOD모음  (0) 2022.07.27