一、定义
在RAP(ABAP RESTful Application Programming model
)中,业务对象(Business Object
)用来定义实体。定义包含两部分部分:Structure
和Behavior
。
1.Structure
Structure
定义是通过CDS View
实现的,列举了实体所包含的所有字段。
2.Behavior
Behavior
规定了实体可以进行的操作,列入创建、删除和修改。此外,还可以进行其他操作,例如对实例的字段进行验证(Validations
),或添加一些标准功能之外的逻辑(Actions
),或者在特定条件下触发对实例的修改(Determinations
)。Behavior也包含两部分,定义部分和实现部分。
Behavior的实现部分可以包含一个或者多个类,在类中写具体的逻辑。例如在定义部分只声明/DMO/validateEMailAddress
这个验证即可,具体的验证逻辑在实现类中。
标准功能(CUD
)的实现分两种,Managed
和Unmanaged
。Managed情况,实现逻辑有系统运行时完成,相反则由实现类完成
二、Entity Manipulation Language
业务对象通常用来生成ODATA,作为WEB API实现交互。除此之外,也可以用Entity Manipulation Language
(EML
)对其进行访问。访问业务对象的语句模版如下:
<READ/MODIFY> ENTITIES OF <behavior definition>
ENTITY <entity defined in behavior definition>
<operation>
FIELDS ( <field list to use> )
WITH <input_keys>
RESULT <result_table>.
1.关键字
- READ/MODIFY
业务对象的访问分为两种,READ
和MODIFY
。读取数据使用READ
,新建、修改和删除统一使用MODIFY
。 - entity defined in behavior definition
Behavior中定义的结构,与数据源mapping。 - operation
operation在MODIFY
时是必须的,值为CREATE
、UPDATE
和DELETE
。READ
时为空即可,否则报错。 - input_keys
input_keys 内表类型,其中的值可作为查询条件,也可以是新增或修改的数据。
2.Example
- 读取数据
DATA input_keys TYPE TABLE FOR READ IMPORT /dmo/r_agencytp.
DATA result_tab TYPE TABLE FOR READ RESULT /dmo/r_agencytp.
input_keys = VALUE #( ( agencyid = '070001' ) ( agencyid = '070045' ) ).
READ ENTITIES OF /dmo/r_agencytp
ENTITY /dmo/agency
FIELDS ( name street city )
WITH input_keys
RESULT result_tab.
out->write( result_tab ).
- 修改
DATA update_tab TYPE TABLE FOR UPDATE /DMO/R_AgencyTP.
update_tab = VALUE #( ( agencyid = '070045' name = 'Good Trip' ) ). "将name改为Good Trip
MODIFY ENTITIES OF /DMO/R_AgencyTP
ENTITY /dmo/agency
UPDATE
FIELDS ( name )
WITH update_tab.
COMMIT ENTITIES. "当MODIFY时,需要提交语句。
总结
打完收工。