本教程之前的文章,我们已经介绍了在 SAP ABAP OData 服务里,如何完成某个模型节点的增删改查
,以及各种排序,过滤等操作:
- 5. SAP ABAP OData 服务如何支持 $filter (过滤)操作
- 7. SAP ABAP OData 服务如何支持 $orderby (排序)操作
- 8. SAP ABAP OData 服务如何支持创建(Create)操作
- 9. SAP ABAP OData 服务如何支持删除(Delete)操作
- 10. SAP ABAP OData 服务如何支持修改(Update)操作
在 SAP ABAP OData 服务实现中,还存在一个叫做 Function Import
的概念,它允许用户在 OData 模型中,定义并实现特定的业务逻辑,并且这些逻辑不需要直接定义在 OData 模型的数据实体上。
换言之,Function Import
允许开发者在 OData 服务中暴露自定义的函数方法,这些方法可以执行不依赖于特定实体的操作
,比如计算、审批流程触发、或者调用系统外部的服务等。
本教程之前的文章,我们介绍了通过 HTTP PATCH 和 PUT 两种方式,修改一本图书库存的操作:
本文我们通过修改图书状态的例子,介绍如何给事务码 SEGW 里的 OData 模型,实现 function import.
我们假设这样一个业务场景,给图书模型对应的后台数据库表,增添一个 STATUS 字段,为简单起见,其数据类型就为字符型,长度为 1.
当 STATUS 值为 1 时,代表该图书可以通过在线商城等前端应用访问,当 STATUS 值为 0 时,代表其暂时下架,一般的用户,无法通过在线商城等应用看到这本书。
除了给数据库表增添这个 STATUS 字段外,我们还要给 OData 模型也对应增添这个字段。
具体做法如下。事务码 SEGW 里,模型 Book 对应的 ABAP Structure 为 ZTS_BOOK
:
因此我们需要将 ABAP Structure ZTS_BOOK 也对应增添一个 STATUS 字段:
然后进入 SEGW 事务码,点击图例1 所示的按钮,给 Book 模型新增一个 Status 字段,然后将这个 STATUS 字段,绑定到 ZTS_STRUCTURE
的同名字段,如下图图 2 所示。
最后别忘了点击图例 3 所示的激活按钮,重新生成运行时资源。
模型层面的增强结束之后,下面我们开始动手开发 Function Import.
于是我们开发一个名叫 PutToStore 的 Function Import, 意思是将指定的图书的 STATUS 状态,设置为 1,也就是执行图书上架的操作。
下面是详细的实现步骤。