使用HANA作为辅助连接来打开SQL

2020-09-26 04:20发布

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

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


嗨,

当我运行以下程序时,出现错误" SAPSQL_INVALID_TABLENAME-在SQL命令中指定的表名未知。"

我的问题是如何访问属于默认模式之外的模式的表。 即我应该使用开放式SQL访问SAPECC.VBAK。

如何克服此语法错误?

 TYPES:类型为ty_vbak,
        vbeln TYPE vbak-vbeln,
        erdat TYPE vbak-erdat,
        erzet TYPE vbak-erzet,
       ty_vbak的结尾,
       tt_vbak ty_vbak的类型表。
 数据:lr_data TYPE REF TO数据,
       lt_vbak类型tt_vbak,
       lt_cols TYPE adbc_column_tab,
       lv_table TYPE字符串VALUE'SAPECC.VBAK'。

 选择vbeln erdat erzet
   来自('SAPECC.VBAK')
 连接(" HED")
 进入表lt_vbak
 在erdat GT'20150101'上。


 如果lt_vbak []不初始化。
   排序lt_vbak。
   数据lr_alv类型参考cl_salv_table。
   尝试。
       cl_salv_table =>工厂(
         导入r_salv_table = lr_alv
         更改t_table = lt_vbak)。
       lr_alv-> display()。
     捕获cx_root。
   ENDTRY。
 万一。
 

请注意,我可以使用ADBC和NATIVE SQL语句从ABAP访问上表SAPECC.VBAK。 但是,我很难使用连接('HED')在HANA DB上执行现有的OPEN SQL语句

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

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


嗨,

当我运行以下程序时,出现错误" SAPSQL_INVALID_TABLENAME-在SQL命令中指定的表名未知。"

我的问题是如何访问属于默认模式之外的模式的表。 即我应该使用开放式SQL访问SAPECC.VBAK。

如何克服此语法错误?

 TYPES:类型为ty_vbak,
        vbeln TYPE vbak-vbeln,
        erdat TYPE vbak-erdat,
        erzet TYPE vbak-erzet,
       ty_vbak的结尾,
       tt_vbak ty_vbak的类型表。
 数据:lr_data TYPE REF TO数据,
       lt_vbak类型tt_vbak,
       lt_cols TYPE adbc_column_tab,
       lv_table TYPE字符串VALUE'SAPECC.VBAK'。

 选择vbeln erdat erzet
   来自('SAPECC.VBAK')
 连接(" HED")
 进入表lt_vbak
 在erdat GT'20150101'上。


 如果lt_vbak []不初始化。
   排序lt_vbak。
   数据lr_alv类型参考cl_salv_table。
   尝试。
       cl_salv_table =>工厂(
         导入r_salv_table = lr_alv
         更改t_table = lt_vbak)。
       lr_alv-> display()。
     捕获cx_root。
   ENDTRY。
 万一。
 

请注意,我可以使用ADBC和NATIVE SQL语句从ABAP访问上表SAPECC.VBAK。 但是,我很难使用连接('HED')在HANA DB上执行现有的OPEN SQL语句

付费偷看设置
发送
2条回答
hongfeng1314
1楼 · 2020-09-26 04:44.采纳回答

通常,Open SQL仅访问ABAP数据库模式(其名称由FM DB_DBSCHEMA_CURRENT返回)中的ABAP词典中定义的表和视图。 对于其他模式,您需要本机SQL(AMDP,ADBC,EXEC SQL)或辅助连接。

如果您使用辅助连接来访问其他数据库表或模式,则必须知道,还必须有一个 本地AS ABAP的ABAP词典中具有相同名称和相同类型的数据库表。 Open SQL假定这些"远程"数据库表或视图的类型信息与本地数据库表的类型信息完全对应。

2楼-- · 2020-09-26 04:40

嗨,霍斯特。

我正在使用HANA Express中的SFLIGHT演示数据。 HDB中的所有SFLIGHT演示对象都位于SFLIGHT模式中。 尝试使用辅助数据库连接从SAP NW与Open SQL进行连接...

当我尝试使用select时:

从('SFLIGHT.SBOOK')中选择... 

->出现错误,因为ABALIGHT DD中不存在SFLIGHT.SBOOK(显然)。

然后我尝试另一个:

从('SBOOK')中选择... 

->我进行了转储,因为HDB中没有SYSTEM.SBOOK表(dbms尝试在默认SYSTEM模式中查找表)。

因此,我已经在HANA数据库中创建了另一个用户,现在我正在使用具有该新用户凭据的辅助数据库连接将SAP NetWeaver连接到HDB。

问题是:

如何在HDB中为此数据库用户设置默认架构SFLIGHT,所以如果我使用后者,HANA dbms将在SFLIGHT架构中查找表SBOOK?

先谢谢了。

问候

亚当

一周热门 更多>