文档章节

JCo3 建立连接到SAP(1)- 直接连接

朱君
 朱君
发布于 2014/04/09 08:49
字数 517
阅读 3110
收藏 0

本文阐述如何使用SAP JCo 3.4 建立到SAP服务器。

 

1. 创建一SAP用户:Test01, 使用SU01创建用户,本文不在详述。

为了方便起见,我将Profile "SAP_ALL“ 分配给用户TEST01, 如下图所示:

 

 

这样用户就可以通过SAP服务器的验证了,如果没有加这个Profile,以下日志信息会被抛出:

Exception in thread "main" com.sap.conn.jco.JCoException: (103) RFC_ERROR_LOGON_
FAILURE: User TEST01 has no RFC authorization for function group SYST . on 192.1
68.19.28 sysnr 00
        at com.sap.conn.jco.rt.MiddlewareJavaRfc.generateJCoException(Middleware
JavaRfc.java:637)
        at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcClient.connect(Middlewar
eJavaRfc.java:1305)
        at com.sap.conn.jco.rt.ClientConnection.connect(ClientConnection.java:66
5)
        at com.sap.conn.jco.rt.PoolingFactory.init(PoolingFactory.java:103)
        at com.sap.conn.jco.rt.ConnectionManager.createFactory(ConnectionManager
.java:173)
        at com.sap.conn.jco.rt.DefaultConnectionManager.createFactory(DefaultCon
nectionManager.java:45)
        at com.sap.conn.jco.rt.ConnectionManager.getFactory(ConnectionManager.ja
va:162)
        at com.sap.conn.jco.rt.RfcDestination.initialize(RfcDestination.java:805
)
        at com.sap.conn.jco.rt.RfcDestination.getAttributes(RfcDestination.java:
633)
        at com.sap.conn.jco.rt.RfcDestination.getAttributes(RfcDestination.java:
28)
        at ConnectNoPool.connectWithoutPool(ConnectNoPool.java:50)
        at ConnectNoPool.main(ConnectNoPool.java:56)
Caused by: RfcException: [null]
    message: User TEST01 has no RFC authorization for function group SYST . on 1
92.168.19.28 sysnr 00
    Return code: RFC_SYS_EXCEPTION(3)
    error group: 103
    key: RFC_ERROR_LOGON_FAILURE


2. 编写连接SAP服务器代码

 import java.io.File;   
import java.io.FileOutputStream;   
import java.util.Properties;  

import com.sap.conn.jco.JCoException;
import com.sap.conn.jco.ext.DestinationDataProvider;
import com.sap.conn.jco.JCoDestination;
import com.sap.conn.jco.JCoDestinationManager;


public class ConnectNoPool {
    static String ABAP_AS = "ABAP_AS_WITHOUT_POOL";

    static   
    {   
        Properties connectProperties = new Properties();   
        connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "192.168.19.28");   
        connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR,  "00");   
        connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "000");   
        connectProperties.setProperty(DestinationDataProvider.JCO_USER,   "TEST01");
        //Must use Upper case for password, otherwise, SAP server will report password is incorrect.
        connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "ADMIN123");   
        connectProperties.setProperty(DestinationDataProvider.JCO_LANG,   "en");   
        createDataFile(ABAP_AS, "jcoDestination", connectProperties);   
    }
    
    //Creates a connection configuration file based on parameters given above
    static void createDataFile(String name, String suffix, Properties properties)   
    {   
        File cfg = new File(name+"."+suffix);   
        if(!cfg.exists())   
        {   
            try   
            {   
                FileOutputStream fos = new FileOutputStream(cfg, false);   
                properties.store(fos, "for tests only !");   
                fos.close();   
            }   
            catch (Exception e)   
            {   
                throw new RuntimeException("Unable to create the destination file " + cfg.getName(), e);   
            }   
        }   
    }   
    
    public static void connectWithoutPool() throws JCoException   
    {   
        JCoDestination destination = JCoDestinationManager.getDestination(ABAP_AS);   
        System.out.println("Attributes:");   
        System.out.println(destination.getAttributes());   
        System.out.println();   
    }
    
    public static void main(String[] args) throws JCoException   
    {   
        connectWithoutPool();   
    }
}

3.  编译

[c-sharp] view plaincopy

  1. javac -classpath  .;D:/Resources/Libraries/SAPJCo/JCO_304/sapjco3.jar -d classes ConnectNoPool.java  

 

4. 运行

[c-sharp] view plaincopy

  1. java -cp D:/Resources/Libraries/SAPJCo/JCO_304/sapjco3.jar;classes ConnectNoPool  

 

结果:

[c-sharp] view plaincopy

  1. Attributes:  

  2. DEST:                  ABAP_AS_WITHOUT_POOL  

  3. OWN_HOST:              NB-MinFei  

  4. PARTNER_HOST:          minfei  

  5. SYSTNR:                00  

  6. SYSID:                 C11  

  7. CLIENT:                000  

  8. USER:                  TEST01  

  9. LANGUAGE:              E  

  10. ISO_LANGUAGE:          EN  

  11. OWN_CODEPAGE:          1100  

  12. OWN_CHARSET:           ISO8859_1  

  13. OWN_ENCODING:          iso-8859-1  

  14. OWN_BYTES_PER_CHAR:    1  

  15. PARTNER_CODEPAGE:      1100  

  16. PARTNER_CHARSET:       ISO8859_1  

  17. PARTNER_ENCODING:      iso-8859-1  

  18. PARNER_BYTES_PER_CHAR: 1  

  19. OWN_REL:               720  

  20. PARTNER_REL:           620  

  21. PARTNER_TYPE:          3  

  22. KERNEL_REL:            620  

  23. TRACE:  

  24. RFC_ROLE:              C  

  25. OWN_TYPE:              E  

  26. CPIC_CONVID:           00000000  

 

表示用户Test01成功的连接到SAP服务器了。

 

本节到此为止, 下节将继续描述如何使用连接池来创建SAP连接。


本文转载自:http://blog.csdn.net/tohmin/article/details/5672673

共有 人打赏支持
朱君

朱君

粉丝 13
博文 4
码字总数 0
作品 7
上海
后端工程师
FineReport连接多维数据库示例及操作

1. 描述 FineReport连接多维数据库,首先要通过数据连接将多维数据库与FineReport连接起来,然后在数据连接的基础上新建多维数据库XMLA数据集,用于模板设计。 2.XMLA数据连接 2.1描述 多维数...

雄霸天下啦
06/26
0
0
计算机网络(2)

什么是计算机网络? 硬件方面:通过线缆将网络设备和计算机连接起来; 软件方面:操作系统,应用软件,应用程序通过通讯线路互联; 实现资源共享,信息传递 计算机网络功能:数据通信、资源共...

闪耀小行星
01/03
0
0
对接SAP人事档完成AD账号的自动授权

1、功能介绍 SAP上线后提供人事异动主档查询,通过本地建立数据库,对异动人事主档进行每日的资料整理,串接出每日的新增、离职、异动人员。将此类资料转成csv模式,提供ftp服务供AD服务器抓...

扫地僧void
2017/06/06
0
0
使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise

最近Jerry接到一个原型开发的任务,需要在微信里调用ABAP On Premise系统(SAP CRM On-Premise)里的某些函数。具体场景和我之前的公众号文章 Cloud for Customer和微信集成系列教程 描述的场...

JerryWang_SAP
06/02
0
0
JAVA 调用SAP端接口

1.此处不涉及到sap端的开发,sap端接口写好了,只是通过JAVA直接调用接口名 . 2.sapjco3.jar,sapjco3.dll和sapjcorfc.dll要放在容器的lib下面,而不是项目的WEB-INFlib,例如tomcat,D:Pro...

JAVA枪手
2016/05/24
154
0

没有更多内容

加载失败,请刷新页面

加载更多

Thinkphp5 优雅配置两个数据库

工作需要需要配置两个数据库,框架5.0的,步骤如下: 1、在database.php同级创建一个database2.php文件 在里面配置第二个数据库信息, 2、在config中配置这个数据库信息: 3、创建第二个表的...

wqzbxh
9分钟前
1
0
Socket网络编程进阶与实战

Socket网络编程进阶与实战 Socket对于每个工程师的重要性不言而喻。本课程将理论结合实践,带你从零开始,系统学习Socket编程技术,让Socket的学习不再那么零散与难以掌握,同时会提炼出Soc...

qq__2304636824
14分钟前
1
0
Android studio常用快捷键

Ctrl +Alt +Space //显示可用参数 Ctrl + Alt +M //抽取方法 Ctrl +Alt + F //提取全局变量 Ctrl +Shift + "+或-" //折叠/展开代码块 Shift + F6 //批量更改变量 Ctrl + Tab //切换器 Ctrl +...

lanyu96
27分钟前
1
0
@ControllerAdvice 拦截异常并统一处理

在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler、@InitBinder、@ModelAttribute,并应用到所有@RequestMapping中。 一、介绍 创建 MyControllerAdvice,并添...

狼王黄师傅
30分钟前
1
0
ajax传递参数给springmvc总结[转]

https://www.cnblogs.com/franson-2016/p/6770028.html https://www.cnblogs.com/xiaoxi/p/5708084.html 总结: 1.springmvc与Ajax交互,可以传入三种类型的数据: (1)文本:"uname=alice&......

废柴
32分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部