JCo 指南

http://blog.csdn.net/asdfak/article/details/5834731

  1. Java Connector and BAPI

前些日子想去深入的研究下Portal Development,但是载了一个周末也没有把NetWeaver Developer Studio弄下来。闲暇时间,浏览了下JCo的API文档和几个简单的DEMO,开始尝试着自己去用JCo做一些操作,并记录下整个过程,以供大家参考。

一些理论性的东西源自SAP的官方培训教材和一些高手的笔记,英文不佳,翻译的有些拗口,见谅…

1.1 What is JCo

SAP Java Connector (SAP JCo)是个中间件组件,用于SAP组件和JAVA程序的开发。SAP JCO 支持两种方向连接SAP 服务器:inbound calls (Java calls ABAP) and outbound calls (ABAP calls Java)。SAP JCO可以用于桌面应用和WEB应用程序也可以作为组件嵌入到以下程序中:

SAP Business Connector:用于与外边的JAVA程序的连接

SAP Web Application Server:通过ABAP环境连接到嵌入式J2EE服务

而我们的Portal中,也正是使用JCo与SAP系统或者其他系统进行交互。

1.2 JCo OverView

  • High-performance JNI-based middleware
  • Support R/3 3.1H and higher.
  • Supports inbound and outbound calls.
  • Supports client pooling.
  • Supports desktop and web/application server applications.
  • Multi-platform
  • Complete and correct code page handling
  • Easy to install and deploy

1.3 JCo‘s Architecture

从下图可以清楚的看到,JCo不过是通过JNI提供与SAP系统的RFC连接

1.4 What is BAPI

BAPI (Business Application Programming Interface)是在Business Applications Systems(例如SAP R/3)中,被精确定义的进程或数据的访问接口。

1.5 Benefits of BAPI

  • 可以被用于不同的语言或者开发环境(ABAP, Visual Basic, Java, C++, etc.)
  • 可以被不同的平台调用 (COM, CORBA, Unix)
  • 缩减开发和维护的开支

图:BAPI可以被广泛使用

1.5 SAP的T-CODE

  • BAPI    Business Object Browser (BAPIs only)
  • SWO1    Business Object Builder (all objects)
  • SWO2    Business Object Browser (all objects)
  • SE11    Data Dictionary
  • SE37 Function Builder

二、使用SAP JCo连接到服务器

2.1 JCo主要的操作活动

2.2建立到SAP 服务器的连接

SAP JCo有两种方式连接到SAP服务器:直接连接和连接池

注:下文的例子中使用的是JCo2.1.9版本,最新版本为3.0.4

  • 直接连接

打开连接:

调用函数和关闭连接:

  • 连接池

创建连接池:

获取和释放连接:

JCO.Repository:用于存取RFMs的元数据

2.3 Jco2.1.9中的范例,COMANY_CODE

该范例主要执行两个操作:

  1. 通过BAPI_COMPANYCODE_GETLIST获取所有的COMP_CODE,然后显示
  2. 通过BAPI_COMPANYCODE_GETDETAIL对操作1中的COMP_CODE进行明细查询,得到所对应的COUNTRY和CITY

2.3.1创建Repository

2.3.2创建JCO.FUNCTION

2.3.3执行JCO.FUNCTION

2.3.4映射JAVA和ABAP数据类型

2.3.5存取表

2.3.6 BAPI函数调用

2.3.7 运行结果

测试时,使用的是咱们R/3,212系统,下面是部分结果:

COMP_CODE和COMP_NAME

COMP_CODE、COUNTRY和CITY

三、Jco For Web Service

下面是自己写的一个小测试,使用Jco调用ABAP函数ZTESTCHEN1,并获得输出结果

服务器使用的是Apache Tomcat6.0,页面为JSP,通过Servlet与服务器进行交互。

OK,开始!

3.1 RFM:ZTESTJCOFUN

RFM,RFC-enabled Function Modules,所有的ABAP函数,勾选上Remote-Enable Module就是一个RFM,显而易见,所有的BAPI也都是RFM,只不过依据特定的规则,被定义为SAP的Business Object Repository (BOR)的对象型方法。如下图:

函数是自己比着葫芦画的,比较简单,主要功能是查表LFA1,通过供应商的ID获取相关信息:

  • 输入字符串LIFNR参考LFA1-LIFNR
  • 输出字符串RETURN参考BAPIRETURN,返回参数,S为成功,E为出错
  • 查询内容存放在表ITAB中,此表参考自建结构ZTESTJCO,详情如下图:

  • 核心ABAP代码如下,当输入ID为空时,查询所有供应商,ID不为空时,查询单个,查询不到时报错,详情如下图:

3.2 Servlet and JSP

本测试的服务器配置比较简单,使用单纯的Servlet配合JavaBean,做JSP页面与后台的请求处理。

其中,文件结构如下图:

3.3 运行结果:

  • 提交页面:

  • 结果显示:(ED2,212系统,如果是222的话,会有很多...)

  • 报错

四、总结

BAPI自身提供了很多强大的借口,供SAP系统自身或者Jco等中间件从外部来调用。本文简单的展示了Jco通过WebService来调RFM的过程,简单来说就是通过RFC来调用SAP中函数,然后显示返回信息。是SAP外围开发或者自身功能增强的一种解决方案。

类似于阿PENG同志前段时间演示的那个.Net通过WebService调RFM来操作交货单,不过那个的ABAP代码太多,一时半会读不懂,只好自己写个简单的。

时间: 2024-08-02 10:59:27

JCo 指南的相关文章

最全解析如何正确学习JavaScript指南,必看!

划重点 鉴于时不时,有同学私信问我:怎么学前端的问题.这里统一回复一下,如下次再遇到问我此问题同学,就直接把本文链接地址发给你了. "前端怎么学"应该因人而异,别人的方法未必适合自己.就说说我的学习方法吧:我把大部分时间放在学习js上了.因为这个js的学习曲线,先平后陡.项目实践和练习啥的,我不说了,主要说下工作之外的时间利用问题.我是怎么学的呢,看书,分析源码.个人这几天统计了一下,前端书籍目前看了50多本吧,大部分都是js的.市面上的书基本,差不多都看过. 第一个问题:看书有啥好处

微信Android接入指南

注:本文为微信Android终端开发工具的新手使用教程,只涉及教授SDK的使用方法,默认读者已经熟悉IDE的基本使用方法(本文以Eclipse为例),以及具有一定的编程知识基础等. 1.申请你的AppID 请到 开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将该应用提交审核,只有审核通过的应用才能进行开发. 2.下载微信终端开发工具包 开发工具包主要包含3部分内容:(其中,只有libammsdk.jar是必须的) - libammsdk.jar(每个第三方应用必须要导入该sdk库,

【资源共享】Rockchip I2C 开发指南 V1.0

2C设备的设备应用非常广泛,常见的包含重力传感器,触摸屏驱动芯片,音频解码等 这个文档是RK3399的I2C开发文档:<Rockchip I2C 开发指南 V1.0> 内容预览: 下载地址:http://developer.t-firefly.com/thread-12495-1-1.html

Spark性能优化指南——高级篇

Spark性能优化指南--高级篇 [TOC] 前言 继基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为<Spark性能优化指南>的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问题. 数据倾斜调优 调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题--数据倾斜,此时Spark作业的性能会比期望差很多.数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能. 数据倾斜发生时的现象 绝大多数tas

&quot;WannaCry&quot;勒索病毒用户处置指南

"WannaCry"勒索病毒用户处置指南 原文: http://mp.weixin.qq.com/s/ExsribKum9-AN1ToT10Zog 前言:北京时间2017年5月12日晚,勒索软件"WannaCry"感染事件爆发,全球范围内99个国家遭到大规模网络攻击,被攻击者电脑中的文件被加密,被要求支付比特币以解密文件:众多行业受到影响,比如英国的NHS服务,导致至少40家医疗机构内网被攻陷,电脑被加密勒索:而我国众多行业也是如此,其中又以教育网最为显著,导致部分

servlet和jsp学习指南(一)servlet

近期接触了些纯servlet与jsp的编程项目,顺便把<servlet和jsp学习指南>这本书拿出来看看,感悟良多.记下随笔,以便会议. 要编写一个servlet首先要实现Servlet或者继承HttpServlet package test.com.servlet; import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet

Quartz.NET简介及入门指南

Quartz.NET简介 Quartz.NET是一个功能完备的开源调度系统,从最小的应用到大规模的企业系统皆可适用. Quartz.NET是一个纯净的用C#语言编写的.NET类库,是对非常流行的JAVA开源调度框架 Quartz 的移植. 入门指南 本入门指南包括以下内容: 下载 Quartz.NET 安装 Quartz.NET 根据你的特定项目配置 Quartz 启动一个样例程序 下载和安装 你可以下载 zip 文件或使用 Nuget 程序包.Nuget 程序包只包含 Quartz.NET 运

有奖试读—Windows PowerShell实战指南(第2版)

为什么要学PowerShell? Windows用户都已习惯于使用图形化界面去完成工作,因为GUI总能轻易地实现很多功能,并且不需要记住很多命令.使得短时间学会一种工具成为可能. 但是不幸的是,GUI并不能带来效率提升上的汇报,如果你花费5分钟在活动目录中创建一个新的用户(一般需要填写大量信息),之后再新建用户时,通常不会更快,那么新建100个新用户就会花费500分钟,通常没有任何办法使得我们输入信息以及单击操作更快,从而加快这个过程. 微软一直都有CMD命令来进行Windows的操作,但是很不

Java程序员的Golang入门指南(上)

Java程序员的Golang入门指南 1.序言 Golang作为一门出身名门望族的编程语言新星,像豆瓣的Redis平台Codis.类Evernote的云笔记leanote等. 1.1 为什么要学习 如果有人说X语言比Y语言好,两方的支持者经常会激烈地争吵.如果你是某种语言老手,你就是那门语言的"传道者",下意识地会保护它.无论承认与否,你都已被困在一个隧道里,你看到的完全是局限的.<肖申克的救赎>对此有很好的注脚: [Red] These walls are funny.