Download presentation
Presentation is loading. Please wait.
Published byJung woo kim Modified over 9 years ago
1
Gateway Service ● Fiori 또는 UI5로 SAP Client단의 UI를 개발하였다면 SAP Server단의 개발이 이루어져야 한다. Server단의 OData 서비스를 생성하는 작업이 SAP Gateway Service 이다. ● 작업순서 Create a project Import an XML file (DDIC / RFC/ BOR(Business Objects Repository)) Generate a service Register and Maintain a service Implement a service (Redefine or Mapping Data Source)
2
Gateway Service 개발 시 사용되는 Tcode
SEGW : Gateway Service Builder /IWFND/MAINT_SERVICE : Activate and Maintain Services /IWFND/GW_CLIENT : Gateway Client ● SEGW 프로젝트생성 및 Import XML(DDIC,RFC,BOR), Service Class 생성 ● /IWFND/MAINT_SERVICE SEGW 에서 생성한 프로젝트 서비스를 등록 및 관리한다. ● /IWFND/GW_CLIENT 생성된 서비스를 가지고 Create, Read, Update, Delete작업을 수행 함으로 개발된 프로그램을 테스트 할 수 있다.
3
Gateway Service Builder : SEGW
Project Create Project Open Runtime Objects Generate
4
Gateway Service Builder : Project Create
Project Name Project Description
5
Gateway Service Builder : Import DDIC
Entity Name : Project에서 사용할 Entity name으로 개발자가 직접 지정한다. ABAP Dictionary Table Entity name을 참조로 Entity Set을 자동으로 만들어준다.
6
Gateway Service Builder : Import DDIC
사용할 필드들을 체크한다.
7
Gateway Service Builder : Import DDIC
Key값을 설정한다. 이 Key는 추후에 파라메터로 사용되는 필드가 된다. 파라메터로 사용될 때 사용되는 Name이 된다. PS : CRUD(Readset 제외)시에 Key필드로 지정된 필드만 Client단의 URI 의 조건필드에 들어갈 수 있다.
8
Gateway Service Builder : Entity Attribute
Create, Update, Sort, Null허용, Filter 여부를 체크한다. Key필드는 Null에 체크하지 않는다.
9
Gateway Service Builder : Runtime objects generate
10
Gateway Service Builder : Runtime objects
EntitySet이 자동으로 생성됨 프로젝트 생성시 옵션 Gateway Service Name 추후에 Service 등록 시 사용 Data Provider Base Class, Data Provider Secondary Class. DPC_EXT 인 Class가 secondary class 이며 이 class의 메소드에서 실질적인 Business logic 이 구현된다. Secondary class 가 생성될때 자동으로 Create, Read, Read(set), Update, Delete 메소드가 생성된다.
11
Gateway Service Builder : Method Redefine
Go to ABAP Workbench로 이동 하면 우측과 같이 해당 Class의 상속받은 CRUD 메소드가 보인다.
12
Gateway Service Builder : Method Redefine
Redefinitions 에 메소드가 생기고 우측에 해당 메소드의 내용이 보인다. 나머지 메소드도 모두 Redefine 작업 수행 해준다.
13
Gateway Service Builder : Method Redefine active
14
Gateway Service Builder : Create Method
Tcode : SE24 에서 Secondary class인 DPC_EXT 를 조회해보면, IO_DATA_PROVIDER가 Create Method에 기본Parameter로 존재하며, 이 객체를 통해서 Create 되어질 항목들을 자동으로 받아준다.
15
Gateway Service Builder : Delete Method
Delete작업을 수행하기 위해서는 key를 Parameter로 받아야 한다. Client에서 던져준 Parameter는 IT_KEY_TAB 이 받는다. IT_KEY_TAB의 Field는 Name, Value 2개 필드로 구성되어 있다. Name 필드는 Parameter name을 받으며 Value 필드는 값을 받는다.
16
Gateway Service Builder : Get entity Method
호출이 되는 메소드이다. Delete, Update와 마찬가지로 Parameter는 IT_KEY_TAB 을 통해서 받는다. 조회된 결과는 ER_ENTITY에 입력해서 Client단에 보낸다.
17
Gateway Service Builder : Update Method
IO_DATA_PROVIDER에 Update 되어지는 내용이 모두 담겨져 온다. Update될때 PUT, MERGE, PATCH 3가지로 호출되는데 IO_DATA_PROVIDER 에는 위 3가지 방식에 따라 다르게 data가 담겨진다. 이 부분은 Gateway Client 설명 시 추가 설명 하도록 함.
18
Gateway Service Builder : Get entity set Method
IT_FILTER_SELECT_OPTIONS는 Client 단에서 조회 시 Where 조건에 들어갈 필드 및 조건 값이 여러 개 있을 경우에 들어온다. IT_ORDER는 조회시 Sort 할 필드를 넣어준 경우 들어온다. IV_FILTER_STRING은 조회시 Where조건에 들어갈 필드가 한 개이든 여러 개이든 모두 들어오지만 이 Parameter는 단일필드가 온 경우만 사용한다. Filter, Order 에 조건주는 형식은 Gateway Client 에서 다시 설명함.
19
Gateway Service Builder : IV_FILTER_STRING
IV_FILTER_STRING 은 Client단으로부터 Where 조건에 들어갈 필드와 조건 값을 받는다. 이때 filter string을 괄호로 감싸서 Where 조건에 적용시킨다. PS : Client단에서 filter를 적용해서 Parameter를 보내게 되면 iv_string_filter 뿐 아니라 it_filter_select_options 에도 같이 적용되서 들어온다.
20
Gateway Service Builder : IT_FILTER_SELECT_OPTIONS
Client단에서 filter를 적용해서 Parameter를 보내게 되면 it_filter_select_options 에 조건필드 및 값이 Select options 형태로 오게 된다. 조건필드가 2개 이상인 경우에 조건필드 개수 만큼 IT_FILTER_SELECT_OPTIONS에 Row 가 생겨서 온다.
21
Gateway Service Builder : IT_ORDER
Client단에서 Order by를 적용해서 Parameter를 보내게 되면 it_order 에 정렬할 필드가 들어온다. 정렬될 필드는 Property 필드에 정렬기준은 Order 필드에 들어온다. 마찬가지로 정렬필드가 여러 개인 경우 정렬필드 수 만큼 it_order에 Row가 생긴다.
22
Activate and Maintain Services : /IWFND/MAINT_SERVICE
Service Builder를 통해서 Gateway service를 생성완료 했다면 생성된 Service를 Client에서 호출할 수 있도록 등록을 해야만 한다.
23
Activate and Maintain Services : Add Service
서비스관리 화면으로 오게되면 현재 등록되어있는 Service List가 보여진다. Add Service 버튼을 클릭하면 Add Selected Services 화면으로 이동한다. Add Selected Services 화면에서 System Alias에서 Possible Entry 를 누르게 되면 아래와 같이 현재 System의 Alias가 보여지게 된다. 현재는 Local Object로 개발했기 때문에 LOCAL 을 선택한다.
24
Activate and Maintain Services : Add Services Get Services
서비스관리 화면으로 오게되면 현재 등록되어있는 Service List가 보여지게 되는데, List 에서 Service Builder 에서 생성한 Project name 을 직접 찾거나, Technical Service Name 에 생성한 프로젝트 Name 끝에 _SRV 를 붙이고 Get Services 버튼을 클릭하면 아래처럼 바로 조회가 가능하다. 조회된 Service 를 클릭하면 좌측과 같은 팝업이 뜬다. 현재는 Local Object로 개발했기 때문에 Package Assignment밑에 Local Object 버튼 클릭 후 우측 하단의 버튼 클릭
25
Activate and Maintain Services : Get Services
26
Activate and Maintain Services : Call ICF Node
Gateway Service 를 등록하고 나면 Client단 에서 호출 시 SAP에 접근키 위해서 계정 및 암호를 묻게 되는데, 계정 및 암호를 묻지 않고 붙을 수 있도록 설정할 수 있고, Gateway Service 호출 시 SAP에 접근이 될 수 있도록 설정 할 수 있다.
27
Activate and Maintain Services : ICF Node
Double Click
28
Activate and Maintain Services : ICF Node
Parameter Name 에 ~CHECK_CSRF_TOKEN 을 입력 후 Value에 0 을 주게되면 Client단 에서 호출이 가능해진다. 입력 후 우측 하단의 실행 버튼 클릭으로 마무리 한다.
29
Activate and Maintain Services : ICF Node – Log on
Logon Data 탭을 클릭하면 우측의 화면이 나오는데 User 와 Password 부분에 SAP Logon 정보를 입력하면 Client 단 에서 Service 호출 시 Logon 정보를 묻지 않고 입력한 계정으로 자동으로 Log in 해준다. Log on 정보를 입력 한 후 상단의 저장버튼을 Click 하면 된다.
30
Activate and Maintain Services : Call Gateway Client
Service 등록 후 Back 버튼 클릭하면 서비스 관리 화면으로 이동하게 된다. 해당 서비스를 클릭한 후 Gateway Client 버튼을 클릭하게 되면 Gateway Client 화면으로 바로 이동 가능하다. 다음 장에서는 Gateway Client 내에서 Service를 호출 하는 방법을 기술한다.
31
Gateway Client : /IWFND/GW_CLIENT
Gateway Service Client 화면이다. 해당 화면에서는 생성된 Gateway Service의 Create, Read, ReadSet, Update, Delete Method등을 테스트 할 수 있다.
32
Gateway Client : Select Service
팝업이 뜨는데 Service Name에 Z* 와일드카드를 이용해서 Possible entry 를 누르게 되면 Z로 시작하는 Service list가 Display 되며 list 에서 수행하고자 하는 Service를 선택한다. Service Name에 와일드카드 적용시 대소문자 구분하므로 반드시 대문자로 와일드카드를 구성해야 한다.
33
Gateway Client : EntitySet
Select Service 를 수행하고 나면 해당 Service가 Request URI 에 셋팅된다. EntitySets 버튼을 클릭하면 현재의 Gateway Service가 가지고 있는 Entityset을 보여준다. EntitySet을 선택하고 나면 Request URI에 EntitySet이 Mapping 됨.
34
Gateway Client : HTTP Method
● GET : 단일 건, List 조회 등 조회할 때 선택한다. Called Method : GET_ENTITY, GET_ENTITYSET. ● POST : Data를 Create 할 때 선택한다. Called Method : CREATE_ENTITY ● PUT, PATCH, MERGE : Data를 Update 할 때 선택한다. Called Method : UPDATE_ENTITY ● DELETE : Data를 Delete 할 때 선택한다. Called Method : DELETE_ENTITY
35
Gateway Client : Filter option
● HTTP Method 에서 GET을 선택하고 List 에서 Where 조건을 주고 싶을 때 URI 에 주는 옵션이 $filter 이다. (소문자로 써야 함). ● $filter 뒤에 조건은 SQL문의 조건을 그대로 사용하면 된다. Key가 여러 개인 경우 AND 조건으로 결합이 가능하다. ex) ?$filter=Carrid eq 'AZ' and Connid eq '555' 날짜가 Key로 가는 경우는 포맷이 있다. ex) ?$filter=Fldate eq datetime' T00:00:00‘ Ps : $filter= 에 오는 필드명은 Entity type 정의 시 생성된 명 과 동일해야 인식하며 대소문자 혼용했다면 대소문자까지 맞춰줘야 한다.
36
Gateway Client : $filter=substringof
● $filter=substringof(‘Value’, Field) Like 조건을 줄 경우 사용한다. 위 조건을 사용할 경우 GET_ENTITY_SET 의 IT_FILTER_SELECT_OPTIONS에 값이 들어오게 되는데 그때 Select option은 I, CP, *Value*, 이런 형태로 자동으로 포맷이 맞춰져서 들어온다. 이때 substringof(‘Value’ Field) 에서 Field는 Key필드로 지정되지 않은 필드도 들어올 수 있다.
37
Gateway Client : $select
● $select=Field1, Field2 List 조회 시 화면에 Display될 field를 정의한다. 여기도 마찬가지로 Field1,Field2 는 Entity type정의 시 작성된 Name과 대소문자까지 같아야 하며 역시 Key 필드로 정의되지 않은 필드도 올 수 있다. $select 옵션은 프로그램 내에서 별도로 Logic을 구현할 필요 없다.
38
Gateway Client : Get entity
● 단 건 조회 시 Where 조건 조건에 오늘 필드는 Key 필드로 정해진 필드만 올 수 있다. ‘=‘ 조건식 작성시 공백 없이 위 그림처럼 붙여서 작성한다. 그럼처럼 조건식을 작성 한 경우 GET_ENTITY 메소드를 호출하게 된다.
39
Gateway Client : Get entity
● 우측은 조회된 결과가 나타난 그림이다. ● 우측 상단의 Use as Request 버튼을 클릭하면 좌측에 입력양식이 나타난다. 입력양식으로 Create, Update 내용을 작성 하면 된다.
40
Gateway Client : Create
● Use as Request 버튼 클릭으로 만들어진 입력양식이다. ● 각 필드에 Create 할 항목을 기술한다. ● HTTP Method 부분에 Post 를 선택하면 CREATE_ENTITY 메소드를 호출한다. ● Request URI 부분에는 EntitySet 명만 두고 실행해야 한다.
41
Gateway Client : Update - PUT
● PUT을 선택해서 Update를 하는 경우에는 입력이 되지 않은 필드는 Null로 Update 된다. 따라서 PUT으로 Update 하는 경우는 Update하지 않을 항목이라도 기존의 데이터를 넣어주고 Update 해야 한다. ● HTTP Method 부분에 PUT을 선택하면 UPDATE_ENTITY메소드를 호출한다.
42
Gateway Client : Update - MERGE
MERGE 와 PATCH 로 Update 하는 경우는 io_data_provider 객체가 URI로 넘어온 Key 로 기존 데이터를 한번 조회 한 후 변경항목을 알아서 셋팅해준다. ● Update 할 때 MERGE를 사용한 경우이다. ● MERGE를 선택해서 Update 하는 경우는 Update할 항목만 기술을 해도 기술되지 않은 항목부분은 변동이 없으며 그림처럼 기술된 항목만 Update 된다. ● HTTP Method 부분에 MERGE를 선택하면 UPDATE_ENTITY메소드를 호출한다. Ps : MERGE 와 PATCH 인 경우 결과는 동일하다.
43
Gateway Client : Delete
● HTTP Method 부분에 DELETE를 선택한다. ● 단일 건 조회 시처럼 삭제할 Key필드를 조건으로 URI에 명시하면 된다. ● 여기도 역시 Key필드로 Entity Type에 정의된 필드만 올 수 있다. ● Key필드 조건 결합은 and 로 결합할 수 있다.
44
Gateway Service Builder : Function Mapping
● 이제까지는 Entity Type 을 정의하고 Service Implementation측에는 Create, Read, Read(set), Update, Delete 메소드내에 직접 Logic을 구현해서 만들어봤다. ● 이번에는 Service Implementation 의 CRUD 측에 RFC Function을 매핑해서 구현. ● 이제까지 Service Implementation 을 Redefine 해서 해당 메소드에 로직을 구현했으나 이번에는 그 로직을 Function에 구현한다. 그래서, CRUD 의 Function을 만들어야 한다. ● Function의 속성은 RFC 로 개발해야 한다.
45
Gateway Service Builder : Function Mapping
46
Gateway Service Builder : Function Mapping
Builder 의 Service implementation을 보면 Mapping 이 생긴다.
47
Gateway Service Builder : Read Function Mapping
Propose Mapping 을 누르고 나면 결과물로 보내줄 Key필드도 매핑이 자동으로 생긴다. Ps : 직접 매핑하지 않고 Propose Mapping 버튼을 클릭하면 Read, ReadSet 경우는 자동으로 매핑이 된다.
48
Gateway Service Builder : Function Mapping
Service Implementation 을 Function으로 매핑을 한 경우에는 각 CRUD 상속받은 메소드를 Redefine 할 필요가 없으며 Function을 매핑해주고 나면 해당 메소드의 내용이 자동으로 작성이 된다.
49
Gateway Service Builder : Function Mapping
다시 Runtime Objects를 다시 Generate 해야 한다.
50
End of Document
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.