创建一个通用ODATA服务,该服务可以基于用户输入显示任何sap数据库表。

2020-08-13 21:31发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我需要创建一个ODATA服务,以后将由UI5应用程序使用。 根据UI5应用程序用户输入的表名,ODATA服务应返回表数据(在应用某些过滤器之后)。 用户可以输入任何表名。

以前,我是通过导入DDIC结构或在实体中手动添加字段来创建ODATA服务的。 但是在这种情况下,字段的数量和字段名称在开始时是未知的。 这取决于用户设置的表名。

我想知道哪种是创建odata服务的最佳方法。 经过研究,我发现了以下选项:

    基于
  • 代码的MPC中实体的动态创建。 但这需要在每次输入新表名时清除缓存。
  • 在SEGW中创建具有三个属性的实体:表名,字段名和字段值。 表名和字段名之间的关系为1:n。 根据表名称动态添加值。 我想尝试一下,但不知道从哪里开始。 任何建议都会有很大帮助。

还有其他方法吗? 请告知哪种方法是创建此odata服务的最佳方法。

此致

纳塞拉

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我需要创建一个ODATA服务,以后将由UI5应用程序使用。 根据UI5应用程序用户输入的表名,ODATA服务应返回表数据(在应用某些过滤器之后)。 用户可以输入任何表名。

以前,我是通过导入DDIC结构或在实体中手动添加字段来创建ODATA服务的。 但是在这种情况下,字段的数量和字段名称在开始时是未知的。 这取决于用户设置的表名。

我想知道哪种是创建odata服务的最佳方法。 经过研究,我发现了以下选项:

    基于
  • 代码的MPC中实体的动态创建。 但这需要在每次输入新表名时清除缓存。
  • 在SEGW中创建具有三个属性的实体:表名,字段名和字段值。 表名和字段名之间的关系为1:n。 根据表名称动态添加值。 我想尝试一下,但不知道从哪里开始。 任何建议都会有很大帮助。

还有其他方法吗? 请告知哪种方法是创建此odata服务的最佳方法。

此致

纳塞拉

付费偷看设置
发送
4条回答
bbpeas
1楼-- · 2020-08-13 22:20
  1. 您好 Naseera Rahmathilahi

您可以先获取EntitySet。 您可以创建Table_Entity

1- GET_ENTITYSET。

  • 使用URI/sap/opu/odata/sap/ZGW_TABLE_SRV/TableSet?$ filter = Tablename ge'Sflight'

2-强化Table_GET_ENTITYSET

数据:
   o_ref TYPE REF TO数据。
 字段符号:
    TYPE STANDARD TABLE,
    TYPE任意,
    TYPE任意,
    TYPE任意。
 参数:
   p_tab TYPE标签名,"表名(例如:MARA)
   p_field(20)类型c。  "字段名称(例如:MATNR)


 数据:r_descr类型参考cl_abap_structdescr,
       wa_comp TYPE abap_compdescr。


 选择开始。
   创建数据o_ref类型表(p_tab)。


   将p_field分配给。
   ASSIGN o_ref-> *至。


   选择 *
     进入表
     FROM(iv_name)
 最多lv_count行。

 "。请注意,您可以从Filter 
?$ filter = Tablename ge'Sflight'&Count EG 5获取参数 在分配时循环播放。 如果sy-tabix = 1。 r_descr?= cl_abap_typedescr => describe_by_data()。 万一。 循环AT r_descr->组件INTO wa_comp。 ASSIGN组件wa_comp-结构名称。 写:/wa_comp-name,。 "则您可以输入ls_field-name = wa_comp-name。 * ls_field-value = 。 追加ls_field到lt_fields。 结局。 使用字段名称和值定义您的结构。 最后分配你的桌子 调用方法copy_data_to_ref ..... 最好的祝福 易卜拉欣

悠然的二货
2楼-- · 2020-08-13 22:05

您能否解释为什么需要这样的OData服务? 具体用例是什么? 尤其是在GDPR时代,任何人都无法做到。

My梦
3楼-- · 2020-08-13 22:24

嗨,

我也有一个类似的要求,即用户将输入表名和必填字段,基于哪种动态实体创建方法应建立结构,然后使用GET_ENTITYSET方法获取数据。

我们试图关注此博客 https://blogs.sap.com/2018/02/11/create-dynamic-entity-model-in-sap-gateway/

但是挑战在于我们无法处理用户输入。

紧急帮助!

半个程序猿
4楼-- · 2020-08-13 22:18

就像可以在SAP GUI中使用t-code se12打开任何数据库表一样,我想使用Fiori应用程序来实现。 不仅可以查看记录,还可以对其进行修改。

一周热门 更多>