我如何获得全面错误,无法从表TFACS中读取工作日信息

2020-09-20 04:21发布

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

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


我有一个使用Add_workdays和Workdays_between的存储过程。 当我从SAP HANA Studio内部运行此存储过程时,它运行顺利,但是当我尝试通过ODBC驱动程序为希望开发的Crystal Reports报表运行该存储过程时,出现以下错误

"数据库连接器错误:'S1000:[SAP AG] [LIBODBCHDB32 DLL] pHDBODBC32]常规错误; 2048列存储错误:" _SYS_BIC"。" aklc/ZSP_PNC001_PROCESSING_SUMMARY":第7行第1行{ 在pos 237):列存储错误:[70000000]无法从表TFACS" R001813"中读取工作日信息。" TFACS"-无效的表名:在架构R001813中找不到表/视图TFACS:第1行134(在 pos 133),位于/sapmnt/Id7272/a/HDB/Jenkins_prod/workspace/HANA_FA_CO_LIN64 GCC48HAPPY_rel_fa〜hana1sp12/s/ptime/query/catalog/ catalog.cc :598 5 [数据库供应商代码:2048]"

错误的要点似乎是,通过ODBC执行存储过程时,它认为它需要查看的是我的个人目录,而不是激活存储过程时确定的默认目录。 我不确定为什么要这样做。 我该如何更改它以使其正确显示在正确的目录中(在我的情况下为SAPAD1),并且该目录中确实存在表TFACS?

谢谢

斯蒂芬

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

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


我有一个使用Add_workdays和Workdays_between的存储过程。 当我从SAP HANA Studio内部运行此存储过程时,它运行顺利,但是当我尝试通过ODBC驱动程序为希望开发的Crystal Reports报表运行该存储过程时,出现以下错误

"数据库连接器错误:'S1000:[SAP AG] [LIBODBCHDB32 DLL] pHDBODBC32]常规错误; 2048列存储错误:" _SYS_BIC"。" aklc/ZSP_PNC001_PROCESSING_SUMMARY":第7行第1行{ 在pos 237):列存储错误:[70000000]无法从表TFACS" R001813"中读取工作日信息。" TFACS"-无效的表名:在架构R001813中找不到表/视图TFACS:第1行134(在 pos 133),位于/sapmnt/Id7272/a/HDB/Jenkins_prod/workspace/HANA_FA_CO_LIN64 GCC48HAPPY_rel_fa〜hana1sp12/s/ptime/query/catalog/ catalog.cc :598 5 [数据库供应商代码:2048]"

错误的要点似乎是,通过ODBC执行存储过程时,它认为它需要查看的是我的个人目录,而不是激活存储过程时确定的默认目录。 我不确定为什么要这样做。 我该如何更改它以使其正确显示在正确的目录中(在我的情况下为SAPAD1),并且该目录中确实存在表TFACS?

谢谢

斯蒂芬

付费偷看设置
发送
5条回答
Baoming ROSE
1楼 · 2020-09-20 04:39.采纳回答

两个函数 WORKDAYS_BETWEEN ADD_WORKDAYS 具有用于指定源模式的可选参数。 这样一来,您就可以在过程中(调用函数时)定义应从哪个模式表中使用TFACS。

me_for_i
2楼-- · 2020-09-20 04:57

感谢我没有指定默认模式。 有趣的是需要它; 我来自Microsoft SQL Server背景,我们永远都不会指定这样的默认数据库,因为这意味着必须在开发和生产版本之间更改代码。 幸运的是,在HANA中,整个开发和生产中的架构都是相同的,因此我可以不用指定它了。 你知道为什么这样做吗? 我很想知道为什么在没有指定默认架构的情况下在SAP HANA studio中运行它时可以正常工作,但是只能从具有指定默认架构的Crystal Reports中工作吗?

微wx笑
3楼-- · 2020-09-20 04:59

我假设使用表TFACS 过程中的条件是不合格的(过程中未使用任何模式来标识表)。 如果是这样,并且您也没有为该过程定义默认模式,那么将使用会话的当前模式,即用户的模式。 对于您执行HANA工作室的工作,我认为您使用的是SET SCHEMA之类的东西,或者您是通过SAPAD1技术用户登录的?

如果所有系统都使用相同的SAPAD1模式,最简单(但不建议使用的解决方案)可能是仅将模式名称添加到过程中以标识模式中的表名称。 但是,我建议在架构名称不同的情况下(例如,对于DEV,QA,Prod系统)使用同义词或具有架构映射的默认架构来标识表,或者在架构名称为 在所有系统上都是相同的。

致谢,
弗洛里安

95年老男孩
4楼-- · 2020-09-20 05:02

谢谢,我完全不符合表TFACS的要求。 我的过程仅使用内置的SQL脚本函数WORKDAYS_BETWEEN,如下所示。

将workdays_between('Z3',a.Technical_descision_date,current_date)选择为Work_days_since_TD_Date

 从桌子上...
 

它是引用表TFACS的内置函数WORKDAYS_BETWEEN,我无法控制此过程后面的代码。

当我在HANA Studio中运行该过程时,它运行没有问题。 但是,当我通过Crystal Reports使用相同的过程时,那就是它带来了错误。

当我在SAP HANA Studio中创建过程时,首先显示的是新SQL过程屏幕,其中将SAPAD1标识为默认模式。 我已经检查了该过程的属性面板,它仍然显示SAPAD1作为默认模式。

登录SAP HANA Studio时,我以自己的身份登录。 SAP HANA Modeler下的目录视图显示以下内容

AD1 @ HD1(R001813)CRM开发-我是用户R001813

>目录

>公共同义词

> R001813

> SAPAD1

因此,SAP HANA可以同时看到两个目录,但是我当然可以从SAPAD1中打开的SQL会话在HANA Studio中运行过程。 问题在于Crystal Reports试图在R001813上运行它。 我看不到ODBC驱动程序中的任何设置来告诉它指向SAPAD1。 我过去在Crystal Reports中使用过Microsoft ODBC驱动程序,并且Microsoft ODBC的配置允许您指定数据库,但是HANA的ODBC驱动程序不提供任何选择目录的选项。

此外,如果我从使用内置函数workdays_between的过程中删除该行,则该过程在Crystal Reports中运行良好,可以从同样位于SAPAD1中的所有其他表中选择数据。 因此,问题似乎出在workdays_between函数上。 add_workdays函数也会发生相同的问题。

我使用的HANA版本为7.4,SAP HANA Studio版本为2.0.19

SKY徐
5楼-- · 2020-09-20 04:37

要解决通过Crystal Reports阅读存储过程时遇到的架构问题,在使用WORKDAYS_BETWEEN和ADD_WORKDAYS时必须指定架构。 我发现在开发,测试,质量保证和生产之间的架构是不同的,因此将架构名称硬编码到功能参数中是不可接受的。 为了克服这个问题,我使用了以下代码。 这会将架构放入变量中,并将该变量用作函数参数。

声明V_Schema varchar(20);
 " M_SCHEMA_MAPPING",从" _SYS_BI"中选择physical_schema到V_Schema中,其中authoring_schema ='SAP_CRM';
 选择add_workdays('Z3',a.Technical_descision_date,2,V_Schema)作为TD_plus_2_Days
 ,workdays_between('Z3',a.Technical_descision_date,current_date,V_Schema)作为Work_days_since_TD_Date
 从表
 

一周热门 更多>