在网关中使用连接公开数据

2020-09-30 05:21发布

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

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


我们已经创建了很多GET_ENTITY_SET方法,可以从我们创建的视图中进行选择。

我一直遇到的困惑是处理联接。

据我所知,SAP在定义视图时仅支持内部联接。 这意味着,如果我以这种方式定义视图,而第二个表上不存在数据,我将最终丢失行。

例如,如果我要查看:

QPGR SAP表-检查目录代码组

已加入

QPGT(代码组文本)

我将语言硬编码为'E'

如果QPGT缺少英语的任何语言翻译,这些行将丢失。

我发现视图上缺少"左外部联接"非常令人沮丧。

另一个选择是不加入该表,然后编写自定义代码以检索代码组文本(如果存在)。

如果我们采用这种方法,那么KURZTEXT将不支持常规的odata过滤,这也很烦人(但也许比丢失数据更好吗?)

人们如何处理这类问题?

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

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


我们已经创建了很多GET_ENTITY_SET方法,可以从我们创建的视图中进行选择。

我一直遇到的困惑是处理联接。

据我所知,SAP在定义视图时仅支持内部联接。 这意味着,如果我以这种方式定义视图,而第二个表上不存在数据,我将最终丢失行。

例如,如果我要查看:

QPGR SAP表-检查目录代码组

已加入

QPGT(代码组文本)

我将语言硬编码为'E'

如果QPGT缺少英语的任何语言翻译,这些行将丢失。

我发现视图上缺少"左外部联接"非常令人沮丧。

另一个选择是不加入该表,然后编写自定义代码以检索代码组文本(如果存在)。

如果我们采用这种方法,那么KURZTEXT将不支持常规的odata过滤,这也很烦人(但也许比丢失数据更好吗?)

人们如何处理这类问题?

付费偷看设置
发送
4条回答
暮风yp
1楼-- · 2020-09-30 06:04

据我所知,SAP仅支持内部联接

我认为这是不对的。

在这里检查。

https://help.sap.com/abapdocu_731/en/abapselect_join.htm

葫芦娃快救爷爷
2楼-- · 2020-09-30 05:52
这是sql的一个示例,它模拟内部联接(在视图上)的作用:

 选择
 计数(*)
 -KATALOGART,CODEGRUPPE,INAKTIV
 来自QPGR,其中MANDT = 801

 选择
 --q.KATALOGART,q.CODEGRUPPE,q.INAKTIV,t.KURZTEXT
 计数(*)
 来自QPGR q
 q.MANDT = t.MANDANT和q.KATALOGART = t.KATALOGART和q.CODEGRUPPE = t.CODEGRUPPE和t.SPRACHE ='E'上的内部联接QPGT t
 其中q.MANDT = 801

 所以我只有276/285行的英语。
 ===========
 285
 ===========
 276



 
半个程序猿
3楼-- · 2020-09-30 06:02

您正在解释的方法称为网关服务实现的"由内而外"方法,我认为这种方法效率不高。 在创建网关服务的最近4到5年中,我很少采用这种方式,而是对DPC_EXT类进行了编码。

我建议您仅手动创建具有属性的实体,生成运行时工件,然后直接转到* DPC_EXT类并编写所需的操作代码。

野沐沐
4楼-- · 2020-09-30 05:56

对不起。 我的意思是当我们创建视图时。 我们公开数据的典型方法是对视图建模,创建一个可以从该视图提取数据的RFC(我们有一个可重用的RFC,可以与任何视图名称一起使用),然后创建一个从该视图提取数据的实体集。 但是,当我们在程序包中创建视图(在SE80中)时,我认为我们只能使用内部联接来创建视图。

一周热门 更多>