C#BI查询问题

2020-09-16 02:06发布

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

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

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


你好,

我正在尝试用C#编写一个函数,该函数将返回查询大小。

使用:

  • Visual Studio 2015社区版(ver 14.0.25431.01 Update 3)
  • Microsoft .NET Framework 4.6.01590

下面是一个简单的函数,该函数应返回处于"正在运行"状态且已运行一个小时以上的实例数。

使用的程序集:

  • BusinessObjects.Enterprise.Sdk-版本14.0.2000.0
  • BusinessObjects.Foundation.Logging-版本14.0.2000.0
使用BusinessObjects.Enterprise.Framework;
 使用BusinessObjects.Enterprise.Infostore

 静态无效checkBOv2()
 {
 字符串username =" Administrator";
 字符串密码="密码";
 字符串cmsname =" CMSNODE1:6400";
 字符串authType =" secEnterprise";
 现在的字符串= DateTime.Now.ToString(" yyyy.MM.dd.HH:mm:ss");
 然后字符串= DateTime.Now.AddHours(-1).ToString(" yyyy.MM.dd.HH:mm:ss");
 字符串查询="从CI_INFOOBJECTS,其中SI_INSTANCE = 1且SI_SCHEDULE_STATUS = 3且SI_STARTTIME BETWEEN'之间选择SI_PID,然后+"'AND'" +现在+"'";

 IEnterpriseSession ceSession = null;
 ceSession = CrystalEnterprise.GetSessionMgr()。Logon(用户名,密码,cmsname,authType);

 尝试
 {
 IInfoStore iStore =(IInfoStore)(ceSession.GetService(" InfoStore")));
 IInfoObjects queryResult = iStore.Query(query);
 int querySize = queryResult.ResultSize;
 Console.WriteLine(querySize);
 }
 捕获(异常e)
 {
 ceSession.Logoff();
 Console.WriteLine(e);
 }
 最后
 {
 如果(ceSession!= null)ceSession.Logoff();
 }
 } 

此刻我收到两个错误:

 log4net:ERROR XmlHierarchyConfigurator:
 无法创建类型为[BusinessObjects.Foundation.Logging.Log4net.RollingFileAppender,BusinessObjects.Foundation.Logging,版本= 12.0.0.0,文化=中性,PublicKeyToken = 692fbea5521e1304]的Appender [A1]。
 报告错误如下。
 System.IO.FileLoadException:无法加载文件或程序集" BusinessObjects.Foundation.Logging,版本= 12.0.0.0,Culture = neutral,PublicKeyToken = 692fbea5521e1304"或其依赖项之一。
 找到的程序集的清单定义与程序集引用不匹配。
 (来自HRESULT的异常:0x80131040)文件名:'BusinessObjects.Foundation.Logging,版本= 12.0.0.0,Culture = neutral,PublicKeyToken = 692fbea5521e1304'

设法通过将以下配置信息添加到App.config中来解决上述错误:

 
 
 
  

即使文件位于bin文件夹中,我也无法解决的第二个错误:

未处理的异常:System.TypeInitializationException:'BusinessObjects.Enterprise.Security.Internal._LogonEx3Proxy'的类型初始化程序引发了异常。  ---> System.IO.FileLoadException:库
 ld不会加载文件或程序集" BusinessObjects.Enterprise.Sdk.Ssl.netmodule"或其依赖项之一。 动态链接库(DLL)初始化例程失败。  (来自HRESULT的异常:0x8007045A)
    在System.RuntimeTypeHandle.GetTypeByName(字符串名称,布尔throwOnError,布尔ignoreCase,布尔反射Only,StackCrawlMarkHandle stackMark,IntPtr pPrivHostBinder,布尔loadTypeFromP
 artialName,ObjectHandleOnStack类型)
    在System.RuntimeTypeHandle.GetTypeByName(字符串名称,布尔throwOnError,布尔ignoreCase,布尔反射Only,StackCrawlMark&stackMark,IntPtr pPrivHostBinder,布尔loadTypeFromPartia
 lName)
    在System.RuntimeType.GetType处(字符串typeName,布尔throwOnError,布尔ignoreCase,布尔反射Only,StackCrawlMark和stackMark)
    在System.Type.GetType(String typeName)
    在BusinessObjects.Enterprise.Security.Internal._LogonEx3Proxy..cctor()
    ---内部异常堆栈跟踪的结尾---
    在BusinessObjects.Enterprise.Security.Internal._LogonEx3Proxy..ctor(IProxyHandler处理程序)处
    在BusinessObjects.Enterprise.Security.Internal.LogonService.ensureServiceStub()
    在BusinessObjects.Enterprise.Security.Internal.LogonService.userLogon处(字符串用户,字符串密码,字符串身份验证)
    在BusinessObjects.Enterprise.Security.Internal.SecurityMgr.userLogon处(字符串用户,字符串密码,字符串aps,字符串socksURI,字符串集群,字符串身份验证)
    在BusinessObjects.Enterprise.Framework.Internal.SessionMgr.Logon处(字符串用户,字符串密码,字符串cmsName,字符串身份验证)
 

我在tomcat Web应用程序中以.asp的形式工作,并且运行成功,但是使用了不同的库。 (我在C#中使用了错误的库?)

 <%@页面import =" com.crystaldecisions.sdk.framework.CrystalEnterprise"%>
 <%@页面import =" com.crystaldecisions.sdk.framework.IEnterpriseSession"%>
 <%@页面import =" com.crystaldecisions.sdk.occa.infostore.IInfoObject"%>
 <%@页面import =" com.crystaldecisions.sdk.occa.infostore.IInfoObjects"%>
 <%@页面import =" com.crystaldecisions.sdk.occa.infostore.IInfoStore"%>
 <%@页面import =" com.crystaldecisions.enterprise.ocaframework。*"%> 

4条回答
Baoming ROSE
2020-09-16 02:42

你好,

感谢您对此问题的反馈。

仅更改CrystalDecisions.Enterprise.Framework和CrystalDecisions.Enterprise.InfoStore引用不能解决该问题。

我在这里找到了一些例子:

 https://archive.sap.com/documents/docs/DOC-50603#jive_content_id_C#_Managed_BOE_/_BI_sample_applications

 http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/e0cde7b2-05e2-2e10-cab0-86ee7ca46e62 

如果要执行此工作,则必须根据上面的示例更新代码:

使用CrystalDecisions.Enterprise;

 ....

 字符串username =" Administrator";
 字符串密码="密码";
 字符串cmsname =" CMSNODE1:6400";
 字符串authType =" secEnterprise";
 现在的字符串= DateTime.Now.ToString(" yyyy.MM.dd.HH:mm:ss");
 然后字符串= DateTime.Now.AddHours(-1).ToString(" yyyy.MM.dd.HH:mm:ss");
 字符串查询="从CI_INFOOBJECTS,其中SI_INSTANCE = 1且SI_SCHEDULE_STATUS = 3且SI_STARTTIME BETWEEN'之间选择SI_PID,然后+"'AND'" +现在+"'";

 EnterpriseSession boEnterpriseSession = null;
 EnterpriseService boEnterpriseService;
 SessionMgr boSessionMgr = null;
 InfoStore boInfoStore = null;
 InfoObjects boInfoObjects = null;

 boSessionMgr =新的CrystalDecisions.Enterprise.SessionMgr();
 boEnterpriseSession = boSessionMgr.Logon(用户名,密码,cmsName,身份验证);
 尝试
 {
 boEnterpriseService = boEnterpriseSession.GetService(""," InfoStore");
 boInfoStore =新的InfoStore(boEnterpriseService);
 boInfoObjects = boInfoStore.Query(queryString);
 int querySize = boInfoObjects.ResultCount;
 Console.WriteLine(querySize);
 }
 ... 

但出现以下错误:

 System.Runtime.InteropServices.COMException(0x80045701):内部错误。
    在CrystalDecisions.Enterprise.Internal.SessionMgrClass.Logon处(字符串用户名,字符串密码,字符串CMSName,字符串身份验证)
    在CrystalDecisions.Enterprise.SessionMgr.Logon处(字符串userName,字符串密码,字符串cMSName,字符串身份验证)

 
  • 当我使用Crystal Enterprise的32个库时,这被编译为32位
  • 在所有Crystal参考上,
  • 嵌入式互操作类型都设置为false

将我的本地程序集dll与服务器进行了比较,它们是相同的版本(唯一的区别是服务器在64位上运行)

有什么想法吗?

一周热门 更多>