DI API与SAP Business One Hana的连接失败

2020-08-17 00:35发布

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

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


大家好,

我正在尝试开发一个应用程序以连接到SAP B1 Hana的远程实例。 该应用程序将执行一些查询。 查询将从hana数据库的暂存模式中选择数据,然后将这些数据用于在SAP B1 HANA中创建发票A/R。 linux服务器是SLES 11.4,Hana数据库是SAP Hana 1.0和SAP B1 9.2 Hana。 我已经设置了连接,但是连接失败。 错误消息是在图像文件中找不到指定的资源名称。

我删除了SM_OBS_DLL,重新安装了SAP B1 9.2 Hana,禁用了防火墙并重新安装了Hana Client x64和x86

调试源代码时的另一个错误是:

1。 应用程序:不支持只写属性

2。 公司名称:{"试图读取或写入受保护的内存。这通常表示其他内存已损坏"}

3。 DTCTTransactonObject:{"您尚未连接到公司"}

4。 InTransaction:{"您未与公司建立联系"}

5。 关联:错误

请帮助我解决此错误。
这是我正在使用的代码

公共函数ConnectSAP()作为整数
         昏暗的iError为整数
         Dim sErrMsg As String =""
         尝试
            如果oCompany.Connected = False,则
                 oCompany.Server =" 77.111.222.99:30015"
                 oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_HANADB
                 oCompany.DbUserName = sSAPDbUserName
             oCompany.DbPassword = sSAPDbPassword
             oCompany.UseTrusted ="假"
             oCompany.CompanyDB = sSAPDbName
             oCompany.UserName = sSAPUserName
             oCompany.Password = sSAPUserPassword
                 oCompany.SLDServer =" 77.111.222.99:40000"
                 oCompany.LicenseServer =" 77.111.222.99:40000"
           
             iError = oCompany.Connect()
             如果iError <> 0然后
                 oCompany.GetLastError(iError,sErrMsg)
                 MsgBox(sErrMsg)
             其他
                 sErrMsg ="已连接到SAP B1 Hana数据库-"&sSAPDbName
             万一
             其他
             sErrMsg =" SAP B1已连接--&sSAPDbName
             万一

             返回iError
         异常捕获
             返回iError
         结束尝试
     结束功能
 

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

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


大家好,

我正在尝试开发一个应用程序以连接到SAP B1 Hana的远程实例。 该应用程序将执行一些查询。 查询将从hana数据库的暂存模式中选择数据,然后将这些数据用于在SAP B1 HANA中创建发票A/R。 linux服务器是SLES 11.4,Hana数据库是SAP Hana 1.0和SAP B1 9.2 Hana。 我已经设置了连接,但是连接失败。 错误消息是在图像文件中找不到指定的资源名称。

我删除了SM_OBS_DLL,重新安装了SAP B1 9.2 Hana,禁用了防火墙并重新安装了Hana Client x64和x86

调试源代码时的另一个错误是:

1。 应用程序:不支持只写属性

2。 公司名称:{"试图读取或写入受保护的内存。这通常表示其他内存已损坏"}

3。 DTCTTransactonObject:{"您尚未连接到公司"}

4。 InTransaction:{"您未与公司建立联系"}

5。 关联:错误

请帮助我解决此错误。
这是我正在使用的代码

公共函数ConnectSAP()作为整数
         昏暗的iError为整数
         Dim sErrMsg As String =""
         尝试
            如果oCompany.Connected = False,则
                 oCompany.Server =" 77.111.222.99:30015"
                 oCompany.DbServerType = SAPbobsCOM.BoDataServerTypes.dst_HANADB
                 oCompany.DbUserName = sSAPDbUserName
             oCompany.DbPassword = sSAPDbPassword
             oCompany.UseTrusted ="假"
             oCompany.CompanyDB = sSAPDbName
             oCompany.UserName = sSAPUserName
             oCompany.Password = sSAPUserPassword
                 oCompany.SLDServer =" 77.111.222.99:40000"
                 oCompany.LicenseServer =" 77.111.222.99:40000"
           
             iError = oCompany.Connect()
             如果iError <> 0然后
                 oCompany.GetLastError(iError,sErrMsg)
                 MsgBox(sErrMsg)
             其他
                 sErrMsg ="已连接到SAP B1 Hana数据库-"&sSAPDbName
             万一
             其他
             sErrMsg =" SAP B1已连接--&sSAPDbName
             万一

             返回iError
         异常捕获
             返回iError
         结束尝试
     结束功能
 
付费偷看设置
发送
6条回答
Climb_Ma
1楼-- · 2020-08-17 00:37

史蒂夫你好,

这是我用作示例的代码。 C#,但我相信您可以轻松地转换为VB。

尽量简化事情。 如果编译为32,则需要确保已安装DI 32,如果使用64位,则相同。

问候。


太Q了
2楼-- · 2020-08-17 00:38

嗨Ankit,

非常感谢您的回答。 以下是基于您的以下内容的插件信息:

1。 SLD中的服务器名称与插件中的服务器名称不同。 服务器名称为SAPB1APP:30015

2。 插件中的公司数据库名称与"选择公司"窗口相同。 服务器名称与SLD中的名称相同。

3。 我将许可证服务器替换为SLD服务器,但SLD服务器使用的IP是:40000,因此它与SLD中的服务器名称不同。 这种区别可以吗?

4。 这是B1-local-machine-xml的屏幕截图

如果所有信息有误,请告诉我。 预先感谢。

hengyuye
3楼-- · 2020-08-17 00:50

嗨,赫克托,

谢谢您的回答。 我输入了正确的密码和用户名,但这是通过表单输入的。 因此,它不是硬编码的

。 在PC中,我安装了hana客户端x86和x64,但sap b1 hana客户端应用程序和DI API是x86。 直到今天,问题仍然存在。 是由以下语法引起的吗?

如果oCompany.Connected = False 

? 我仍然不知道如何解决。

悻福寶寶
4楼-- · 2020-08-17 01:02

您好史蒂夫·安德烈

您应进行以下操作 更改:

1。 您应该在程序中将"服务器" 属性设置为: SAPB1APP:30015 。

2。 例如,如果您的SLD服务器地址为: https://m-sldserver.sap:40000/ControlCenter/

,则应编辑" SLDAddress" 节点并将以下文件中的值设置为 https://m-sldserver.sap:40000/:

C:\ Program Files \ SAP \ SAP Business One \ Conf \ b1-local-machine.xml

C:\ Program Files \ SAP \ SAP Business One DI API \ Conf \ b1 -local-machine.xml

作为基本概念,应在DI API程序中使用相同的参数,这些参数用于在SAP Business One客户端中手动建立公司连接。

您还可以参考 SAP注释2710077 来对DI API进行故障排除 连接问题。

亲切的问候,

ANKIT CHAUHAN

SAP Business One支持

5楼-- · 2020-08-17 00:59

您好 steve andre

< p>在您的项目代码中, Server 属性应具有端口300 15.应该为 B1H:30015 。

LicenseServer 属性应具有端口40000。应为 B1H:40000 。

您确定您的 Database Server 和 LicenseServer 的名称都为 B1H 吗?

此外,您是否在以下文件下提到了正确的SLD地址: C:\ Program Files \ SAP \ SAP Business One DI API \ Conf \ b1-local-machine.xml

问候,

ANKIT CHAUHAN

SAP Business One支持

粗暴的香蕉
6楼-- · 2020-08-17 01:00

Hello Hector,

当我的插件试图连接到SAP HANA时,我收到错误消息。 错误消息的确与我用绿色框标记的以下内容相同:

请分享此问题的解决方案。

Rgds

史蒂夫

一周热门 更多>