如何创建OData Service?
1、通过DDIC import的方式创建OData Services. 首先,在t-code:SE11中创建一个名称为YIRIS_TABLE的表。并往这种表中加入两条测试数据。


2、t-code:SEGW,创建一个project YPROJECT1,如图所示,系统会自动创建名称为Data Model, Service Implemenation, Runtime Artifacts, Services Maintenance的文件夹。

3、右键 DataModel -> Import -> DDIC Structure. 在弹出的界面中,指定 Entity Name为Entity1 ;ABAP structure 为 YIRIS_TABLE;并勾中Crete Default Entity Set,让系统自动创建 Entity Set. 然后点击"Next"按钮进入下一个界面。


4、在下一个界面的右侧,勾中要加入到OData Service的字段,然后点击"Next"进入一个界面。在下一个界面,指定EMPNO字段“Is Key"。然后点击”Finish“完成DDIC import.


5、如图所示, Entity Types ‘Entity1’, Entity Set ‘Entity1Set’and Service Implementation ‘Entity1Set’会被自动创建。然后我们点击上方的按钮,创建runtime object.

6、在创建runtime object的时候,下面的界面会弹出,下面的runtime objects会被自动创建。
· Model Provider Class name: YCL_YPROJECT1_MPC_EXT
· Model Provider Base class name: YCL_YPROJECT1_MPC
· Data Provider Class name: YCL_YPROJECT1_DPC_EXT
· Data Provider Base class name: YCL_YPROJECT1_DPC
· Technical Model Name: YPROJECT1_MDL
· Technical Service Name: YPROJECT1_SRV (会在part 2 Add services时用到)

7、这一步我们要将 Data Provider Class YCL_YPROJECT1_DPC_EXT中的methods进行redefine. 在t-code:SE24中打开该Class,知道要redefine的method,右键-> redefine. 然后再右侧source code窗口中写入实现代码。


8、需要redefine的几个method为:
1)ENTITY1SET_GET_ENTITYSET
2)ENTITY1SET_GET_ENTITY
3)ENTITY1SET_UPDATE_ENTITY
4) ENTITY1SET_CREATE_ENTITY
5) ENTITY1SET_DELETE_ENTITY





1、Gateway Hub上注册服务,向外部系统暴露我们的OData Service。t-code:/iwfnd/maint_service , 点击"Add servcie"按钮。指定我们上一步创建的Technical Service name YPROJECT1_SRV,以及System Alias,然后回车。那么YPROJECT1_SRV这个Backed Service就会出现,然后双击。


2、在弹出的界面中点击绿色的对号。
我们这个新的backend service就会创建成功了 。

3、点击回退,来到Service Catalog, 找到我们新创建的service , 双击,选择Call Browser. 在浏览器中的结果如下图所示


4、: 在Advanced REST client中测试我们redefine的ENTITY1SET_GET_ENTITYSET这个method.
URL中输入http://XXXXXXX:8000/sap/opu/odata/sap/YPROJECT1_SRV/Entity1Set 其中XXXXXX代表服务器地址。 输出的结果为YIRIS_TABLE中所有的两条记录。

