SAP ABAP与JAVA之间通过RFC传递数据实例 作者的EMAIL:ebahaimei@sina.com ebahaimei
1
http://www.sapfans.cn/
更多信息请访问
1、 需求
根据选择条件取数据库
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
T001 数据,并将该数据通过 RFC 接口传递给 JAVA,并由 JAVA
接收后,将数据回传给 SAP,将回传的数据保存到数据库表 ZT001T 表中,并输出此次回传数
据。
2、 流程
图 1
3、 操作步骤
ABAP(作为 Clint 端),调用 JAVA(作为服务器端)。
① JCo 服务器程序在网管中的注册
下面给出该程序的 JCo 服务器程序在 SAP 网关中的注册步骤。
(1) 在 SM59 中,定义一个连接类型为 T的远程目标
图 2
SAP ABAP与JAVA之间通过RFC传递数据实例 作者的EMAIL:ebahaimei@sina.com ebahaimei
2
选择 TCP/IP connections
图 3
单击创建按钮
图 4
SAP ABAP与JAVA之间通过RFC传递数据实例 作者的EMAIL:ebahaimei@sina.com ebahaimei
3
RFC 目标系统,是 RFC 调用时候使用的。
Program ID,是 JAVA 程序中使用的。
图 5
这里的 Geteway Host 就是下图的应用程序服务器地址。
TCP 服务 sapgw 是固定的,后面的 10 就是下图的系统编号。
SAP ABAP与JAVA之间通过RFC传递数据实例 作者的EMAIL:ebahaimei@sina.com ebahaimei
4
图 6
特别要注意的是,下面图要默认 Unicode,因为这个标示影响 Java 代码中的 Unicode
设置。
SAP ABAP与JAVA之间通过RFC传递数据实例 作者的EMAIL:ebahaimei@sina.com ebahaimei
5
图 7
上述配置完成即可。
测试连接
SAP ABAP与JAVA之间通过RFC传递数据实例 作者的EMAIL:ebahaimei@sina.com ebahaimei
6
图 8
② SAP 开发代码
(1) 创建一个自建表,TCODE-SE11,表名 ZT001T。
图 9
SAP ABAP与JAVA之间通过RFC传递数据实例 作者的EMAIL:ebahaimei@sina.com ebahaimei
7
表中字段参考 T001T 表。
图 10
(2) 创建一个程序,程序名 ZTESTL7
代码如下:
*&---------------------------------------------------------------------*
*& Report ZTESTL7
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTESTL7.
DATA:
MESS(128). "RFC返回message
DATA:
IT_BUKRS TYPE STANDARD TABLE OF T001T WITH HEADER LINE, "内表带表头
IT_ZT001T TYPE STANDARD TABLE OF ZT001T WITH HEADER LINE."内表带表头
PARAMETERS:
P_BUKRS LIKE T001-BUKRS. "屏幕字段
SAP ABAP与JAVA之间通过RFC传递数据实例 作者的EMAIL:ebahaimei@sina.com ebahaimei
8
* 抽出数据
SELECT *
FROM T001T
INTO TABLE IT_BUKRS
WHERE BUKRS = P_BUKRS.
* CALL RFC ZTEST1
* DESTINATION 是SM59中配置的,看word说明中的图例
CALL FUNCTION 'ZTEST1' DESTINATION 'ABAPTOJAVA'
TABLES
BUKRS_T = IT_BUKRS "传入到JAVA中存值的内表
ZT001T_T = IT_ZT001T "从JAVA中传回值的内表
EXCEPTIONS
COMMUNICATION_FAILURE = 1 MESSAGE MESS
SYSTEM_FAILURE = 2 MESSAGE MESS
OTHERS = 3.
* 判断返回值
CASE SY-SUBRC .
WHEN 1. "COMMUNICATION_FAILURE
MESSAGE MESS TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING .
WHEN 2. "SYSTEM_FAILURE
MESSAGE MESS TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING .
WHEN 3. "OTHERS
MESSAGE '其他系统错误,请与系统管理员联系!' TYPE 'S' DISPLAY LIKE
'E'.
LEAVE LIST-PROCESSING .
WHEN 0. "成功
* 保存回传数据到数据库表ZT001T
MODIFY ZT001T FROM TABLE IT_ZT001T.
IF SY-SUBRC = 0.
COMMIT WORK.
* 输出内表IT_ZT001T
LOOP AT IT_ZT001T.
WRITE:/ IT_ZT001T-BUKRS,IT_ZT001T-TXTNA,IT_ZT001T-LTEXT.
SAP ABAP与JAVA之间通过RFC传递数据实例 作者的EMAIL:ebahaimei@sina.com ebahaimei
9
ENDLOOP.
ELSE.
ROLLBACK WORK.
ENDIF.
ENDCASE.
(3) 创建 RFC ZTEST1 TCODE-SE37
图 11
图 12
SAP ABAP与JAVA之间通过RFC传递数据实例 作者的EMAIL:ebahaimei@sina.com ebahaimei
10
图 13
图 14
③ JAVA 开发代码
类名:SapPayListDelegationbak4
package com.iss.itreasury.sap.delegation;
import com.sap.mw.jco.*;
public class SapPayListDelegationbak4 implements JCO.ServerExceptionListener,
SAP ABAP与JAVA之间通过RFC传递数据实例 作者的EMAIL:ebahaimei@sina.com ebahaimei
11
JCO.ServerErrorListener {
static IRepository repository;
/**
* This is the actual Server (Listener) object
*/
static public class Server extends JCO.Server {
public Server(String gwhost, String gwserv, String program_id,
IRepository repos)
{
super(gwhost, gwserv, program_id, repos);
}
public Server(String args[][], IRepository repos)
{
super(args, repos);
}
protected boolean onCheckTID(String tid)
{
return true;
}
protected void onConfirmTID(String tid)
{
}
SAP ABAP与JAVA之间通过RFC传递数据实例 作者的EMAIL:ebahaimei@sina.com ebahaimei
12
protected void onCommit(String tid)
{
}
protected void onRollback(String tid)
{
}
/**
* Called upon an incoming requests
*/
protected void handleRequest(JCO.Function function){
JCO.Client client = null;
try{
System.out.println(function.getName());
// Process incoming requests ZTEST1 为 SAP RFC 名称
if (function.getName().equals("ZTEST1")) {
System.out.println(function.getName());
function.writeHTML(function.getName() + ".html");
JCO.Table s =
function.getTableParameterList().getTable("BUKRS_T"); //SAP 接收表名
System.out.println("=====ddd==========="+s.getNumRows());
SAP ABAP与JAVA之间通过RFC传递数据实例 作者的EMAIL:ebahaimei@sina.com ebahaimei
13
int len = s.getNumRows();
String str[][] = new String[len][3];
//循环解析从接口传过来的信息
for(int i = 0 ; i
本文档为【SAP ABAP与JAVA之间通过RFC传递数据实例】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。