- 浏览: 465932 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yuan_bin1990:
您好,请问下demo如何运行啊,准备研究研究,但不知道入口啊。 ...
ssh2(struts2+spring2.5+hibernate3.3)自动生成代码程序 -
luyulong:
[b][/b][i][/i][ ...
jQuery进度条插件 jQuery progressBar -
txin0814:
mark..
读取文件目录 -
vurses:
[align=center][color=red][size= ...
include 与 jsp:include区别 -
Roshan2:
http://lijiejava.iteye.com/blog ...
Spring AOP 入门实例
JAVA与SAP数据交互的方式总结
RFC方式:Java程序直接通过RFC访问SAP的对象(或称函数,可能叫法不对)
SAP提供了BAPI(Business Application Programming Interface),BAPI是SAP系统对外提供的一系列接口,主要是使第三方程序通过这些接口来使用SAP,从而方便客户定制某些程序.VB,Java,C,C++等都可以通过BAPI来访问SAP.BAPI是通过R/3系统上的RFC(Remote function call)功能来实现的.因为BAPI的强大功能作为基础,SAP就完全可以选择Java在CRM上加强各种功能,比如可以用Java快速开发一个实现特定功能的客户端。针对Java,SAP也提供了一个API叫Java Connector(JCo),可以使用它方便的调用BAPI提供的接口。
举例说明 :在我们的某一个项目中,需要每个月从R3取出供应商的寄售和非寄售汇总结算数据和明细数据,展现在供应商信息平台上,供供应商开发票和财务部付款进行结算,那么可以做一个定时器,通过RFC在每个月的一号0点将结算数据取出。
private final static String FUNCTION_GET_NONVMI_DATA = "ZPUR_DATA_GET_TMP1";
/**
* 处理接口参数
*/
private JCO.ParameterList getNonVmiTableParameterList(
JCO.Client aConnection, String bukr, String month, String start,
String end, String lifnr) {
IRepository aRepository = new JCO.Repository("SAPRep", aConnection);
IFunctionTemplate functionTemplate = aRepository
.getFunctionTemplate(FUNCTION_GET_NONVMI_DATA);
logger.debug("FunctionTemplate=" + functionTemplate);
JCO.Function function = new JCO.Function(functionTemplate);
JCO.ParameterList input = function.getImportParameterList();
input.getField("BUKRS").setValue(bukr);
//input.getField("SPMON").setValue(month);
input.getField("LIFNR").setValue(lifnr);
input.getField("ZBUDATB").setValue(start);
input.getField("ZBUDATN").setValue(end);
logger.debug("ImportParameterList=" + input);
aConnection.execute(function);
JCO.ParameterList tableParams = function.getTableParameterList();
return tableParams;
}
2、Idoc方式
适用于中间文件的IDoc定义格式,是SAP企业系统软件的应用程序之间或SAP应用程序与外部程序之间电子数据交换用的标准数据格式。IDoc是SAP的应用程序连接系统的数据转换工具。IDoc用于数据异步处理:每个IDoc生成独立的文本文件,无需连接中央数据库,就可以传送给要求数据的工作平台。SAP的另一个系统业务应用程序接口则用于数据同步处理。 一个大公司的网络操作环境很可能需要各地分公司的电脑都能与公司的主数据库连接。这些电脑很可能是用不同的硬件或操作系统平台。因为IDoc对数据进行了压缩,所以它无需变换格式就能在不同的操作系统上使用。 IDoc类型指定不同种类的数据,比如说购买订单或发票,它们可能被划分为更细小的数据种类,即信息类型。更详细的分类意味着一个IDoc类型只能储存某一特定交易所需的数据,这样既提高了工作效率又降低了资源损耗。 在事务处理过程中,IDoc随时会生成。例如,在运货交易过程中,可能会产生打印货运清单所需数据的IDoc。客户在SAP系统执行完一项交易后,在数据传送过程中和经过ALE通讯层时,一个或多个IDoc会生成。通讯层执行远程功能调用,使用由客户模式规定得端口定义和RFC介面定义。IDoc的接收者可能为R/3、R/2或一些外部系统。
在采用IDOC方式的时候,可以采用IDOC落地或不落地的方式,一般只有在跟踪测试或做传输记录的时候的采用IDOC落地的方式,一般其他情况基本上都是采用不落地的方式。
public class JcoIdocServer extends JCoIDoc.Server {
private final Log logger = LogFactory.getLog(JcoIdocServer.class);
public JcoIdocServer(java.util.Properties properties,
IRepository jcoRepository, IDoc.Repository idocRepository) {
super(properties, jcoRepository, idocRepository);
}// constructor MyIDocServer
/**
* Overridden method of JCoIDoc.Server. Function requests that do not
* contain IDocs will be handled here. These requests will be stored as
* XML file in the incoming path. No other action will be done. The
* return values won't be filled and no exception will be thrown to the
* caller.
*/
protected void handleRequest(JCO.Function function) {
logger.error("error:incoming function request '"
+ function.getName() + "',but this should be not happen.");
}// method handleRequest
/**
* Overridden method of JCoIDoc.Server. Function requests that contain
* IDocs will be handled here. All IDocs will be stored as XML files in
* the incoming path. Additionally, IDocs that are part of an ORDERS
* message will be processed specifically. Some relevant information is
* extracted from these IDocs and will be stored in a text file in the
* incoming path.
*/
protected void handleRequest(IDoc.DocumentList documentList) {
logger.debug("Incoming IDoc list request containing "
+ documentList.getNumDocuments() + " documents...");
IDoc.DocumentIterator iterator = documentList.iterator();
IDoc.Document doc = null;
while (iterator.hasNext()) {
doc = iterator.nextDocument();
logger.debug("Processing document no. " + doc.getIDocNumber()
+ "...");
JcoIdocAudit jcoIdocAudit = new JcoIdocAudit();
jcoIdocAudit.setTabnam(doc.getTableStructureName());
jcoIdocAudit.setMandt(doc.getClient());
jcoIdocAudit.setDocnum(doc.getIDocNumber());
jcoIdocAudit.setDocrel(doc.getIDocSAPRelease());
jcoIdocAudit.setStatus(doc.getStatus());
jcoIdocAudit.setDirect(doc.getDirection());
jcoIdocAudit.setOutmod(doc.getOutputMode());
jcoIdocAudit.setExprss(doc.getExpressFlag());
jcoIdocAudit.setTest(doc.getTestFlag());
jcoIdocAudit.setIdoctyp(doc.getIDocType());
jcoIdocAudit.setCimtyp(doc.getIDocTypeExtension());
jcoIdocAudit.setMestyp(doc.getMessageType());
jcoIdocAudit.setMescod(doc.getMessageCode());
jcoIdocAudit.setMesfct(doc.getMessageFunction());
jcoIdocAudit.setStd(doc.getEDIStandardFlag());
jcoIdocAudit.setStdvrs(doc.getEDIStandardVersion());
jcoIdocAudit.setStdmes(doc.getEDIMessageType());
jcoIdocAudit.setSndpor(doc.getSenderPort());
jcoIdocAudit.setSndprt(doc.getSenderPartnerType());
jcoIdocAudit.setSndpfc(doc.getSenderPartnerFunction());
jcoIdocAudit.setSndprn(doc.getSenderPartnerNumber());
jcoIdocAudit.setSndsad(doc.getSenderAddress());
jcoIdocAudit.setSndlad(doc.getSenderLogicalAddress());
jcoIdocAudit.setRcvpor(doc.getRecipientPort());
jcoIdocAudit.setRcvprt(doc.getRecipientPartnerType());
jcoIdocAudit.setRcvpfc(doc.getRecipientPartnerFunction());
jcoIdocAudit.setRcvprn(doc.getRecipientPartnerNumber());
jcoIdocAudit.setRcvsad(doc.getRecipientAddress());
jcoIdocAudit.setRcvlad(doc.getRecipientLogicalAddress());
jcoIdocAudit.setCredat(doc.getCreationDateAsString());
jcoIdocAudit.setCretim(doc.getCreationTimeAsString());
jcoIdocAudit.setRefint(doc.getEDITransmissionFile());
jcoIdocAudit.setRefgrp(doc.getEDIMessageGroup());
jcoIdocAudit.setRefmes(doc.getEDIMessage());
jcoIdocAudit.setArckey(doc.getArchiveKey());
jcoIdocAudit.setSerial(doc.getSerialization());
jcoIdocAuditManager.create(jcoIdocAudit);
String[] result = new String[] {
JcoIdocAudit.OPERATION_FAILURE, "未知错误" };
String msgType = doc.getMessageType();
logger.debug("Processing message of type '" + msgType + "'...");
if ("MATMAS".equals(msgType)) {
logger.debug("idocManager.processMATMAS(doc),msgType="
+ msgType);
logger.debug("idocManager=" + idocManager);
result = idocManager.processMATMAS(doc);
} else {
logger.debug("invalid msgType:" + msgType);
return;
}
jcoIdocAudit.setOpcod(result[0]);
jcoIdocAudit.setOpmsg(result[1]);
jcoIdocAuditManager.update(jcoIdocAudit);
}
}// method handleRequest
/**
* The following 4 methods for transaction management are not
* implemented here in this sample program. For a description on how to
* implement them in real production scenarios please see the JCo API
* specification for the JCO.Server class.
*/
protected boolean onCheckTID(String tid) {
return true;
}// method onCheckTID
protected void onConfirmTID(String tid) {
}// method onConfirmTID
protected void onCommit(String tid) {
}// method onCommit
protected void onRollback(String tid) {
}// method onRollback
@Override
public String toString() {
return "gwhost=" + this.getGWHost() + ";gwserv=" + this.getGWServ()
+ ";progid=" + this.getProgID();
}
}
3、XI方式
XI 的集成又可以分为两个层次,第一个层次称为Integration Broker,以消息的方式进行的数据的交换;另外一个层次是 BPM,即业务流程管理。
在 XI 中,数据(可以使一条记录,比如单个的物料主数据;也可以是多条记录,比如含主单明细的供应商主数据)从某一个业务系统通过 XI 发送到另外一个业务系统,站在业务系统的角度,前者称为 Sender,后者称为 Receiver 。
适配器(Adapter)进行 XI-XML 格式与业务系统的特定类型的数据格式之间的转换。依据业务系统的数据格式的不同,适配器可以分为多种类型,比如 SOAP Adapter, JDBC Adapter, File Adapter, RFC Adapter 和 IDoc Adapter 等。通常说的实现方式,譬如 SOAP+RFC,是指Sender 与 XI 之间使用 SOAP Adapter,XI 与 Receiver 之间使用 RFC Adapter。
在我们其中的一个项目中,是java做一个接口部署为Web service,然后由XI通过这个web service向java程序输入相应数据
评论
你们的web servcie是用哪个技术框架实现的?是否部署到sap portal上的吗?
发表评论
-
在 Message Broker中使用 SAP JCO 连接 SAP 系统
2011-08-10 11:02 2137http://www.ibm.com/developerwor ... -
在Java中调用BAPI或RFC(转)
2011-08-10 10:55 2789JCo是一个高性能的,基于JNI的中间件,它实现了SAP的RF ... -
BW增量更新的理解(时间戳)
2011-08-09 17:53 1753在BW中,存在两种数据抽取方式,完全更新与增量更新,完全更 ... -
SAP BW 邮件发送监控策略
2011-08-09 17:53 1607SAP BW 邮件发送监控策略 ... -
BW与ECC系统连接设置
2011-08-09 17:51 2379第一步:分配逻辑系统 SCC4先查看逻辑系统->S ... -
如何查找DataSource和table的mapping?
2011-08-09 17:48 1560相信,大家在使用BI Content的时候,经常需要查找Dat ... -
Delta中不得不看的几个表
2011-08-09 17:47 891Delta中不得不看的几个表: RODELTAMT 说明每 ... -
BW中如何进行数据监控?
2011-08-04 19:12 1122这周轮到我值班,要凌 ... -
总结InfoCube的优势分析及维度选择技巧
2011-08-04 17:58 783一直以来,infocube都是一个很纠结的东西。 作为 ... -
总结InfoCube的优势分析及维度选择技巧
2011-08-04 17:55 1103一直以来,infocube都是一个很纠结的东西。 作为 ... -
BW:监控 TCODE
2011-08-04 17:38 1110SM21: 检查系统日誌 ST22: abap DUMP ... -
BW:对于非法字符的控制
2011-08-04 17:35 1125其实这也是个老生常 ... -
BW学习——权限
2011-08-02 21:32 1372根据顾问的要求,学习了BW权限。要点如下: 1,BW的权 ... -
偶尔会被人问到的Cube的几个数字
2011-08-02 21:05 8891. 事实表:最多能够容纳233个key figures ... -
SAP学习日志--SAP中常用且重要的数据库表
2011-08-02 21:00 1549MARA - Material Master: General ... -
BW数据源深入研究【转自WKingChen的博客】
2011-08-02 19:21 1634DataSource是BW中非常重要的部分,一个合格的BW顾问 ... -
SAP BW 例程(Routine)【开始例程、关键值或特性的例程、结束例程】
2011-08-01 13:42 3865定义 可以使用例程定义关键值或特性的复杂的转换规则. ... -
BW之R3数据源及PSA
2011-07-31 15:23 2484BW数据源主要有R3、文件 ... -
理解BW数据模型 - DSO模型
2011-07-31 13:55 2170DSO的用法有很多,比 ... -
所有归类于 ‘SAP BW’ 分类的日志
2011-07-31 13:35 6370BW:SAP STMS配置 1、SM59,删 ...
相关推荐
IDoc(Intermediate Document)是SAP中用于跨系统交换数据的标准化数据结构。SAP PI(Process Integration)系统是用于业务流程集成的工具,它可以通过IDoc与其他SAP系统进行数据交互。 当ECC系统需要将供应商主...
在SAP系统中,IDOC(Intermediate Document)是用于企业间数据交换的一种标准接口。BC621课程专门聚焦于SAP IDOC接口,旨在深入理解其工作原理、结构以及如何在实际业务流程中实施。IDOC作为SAP与外部系统进行集成的...
技术正确性涉及对IDoc消息的结构和数据元素的验证,性能分析着重于消息处理的效率,配置则是关于SAP系统中与IDoc相关的配置细节,例如确定使用哪个接口点或消息类型等。 此外,理解EDI(Electronic Data ...
4. **Exchange Infrastructure (XI)**:XI不仅是数据传输的平台,还包含了一套完整的工具集,如监控、错误处理和安全机制,以确保系统的稳定性和数据的安全性。 5. **SAP XI 实用信息**:这部分内容将涵盖XI的日常...
SAP Remote Function Call (RFC) 是SAP系统中用于不同系统间交互的核心技术之一,它提供了一种标准化的方式,使得不同系统能够安全地调用和交换数据。RFC允许外部系统(如Java、Python或其他编程语言的应用程序)与...
在SAP集成与流程集成(XI/PI)系统中,IDoc(Intermediate Document)是一种标准格式,用于在不同系统之间交换数据,特别是SAP与其他非SAP系统之间的交互。在PI 7.11版本中,引入了一个新的Java适配器用户模块,该...
当在SAP XI和SAP系统之间进行数据转换时,如果遇到IDoc格式不匹配导致的转换失败,可以通过IDX2检查两个系统的IDoc结构是否一致。 2. IDX5:通过这个事务代码,你可以按照日期过滤,查看已发送和接收的IDocs以及XML...
与ALE(Application Link Enabling)的集成是SAP XI的另一个重要方面,ALE通过IDOC(Intermediate Document)和RFC(Remote Function Call)来实现数据交换。IDOC是SAP系统间数据交换的标准格式,而ALE则负责管理和...
在SAP系统中,SAP XI(现在被称为SAP PI,即Process Integration)是一个关键的组件,用于不同系统之间的数据集成。以下是一些SAP XI的常用事务代码及其功能介绍,这些代码对于日常管理和问题排查至关重要。 1. IDX...
本文将详细介绍SAP XI环境下的一些常用事务代码及其应用场景,帮助读者更好地管理和监控SAP系统的运行。 #### 事务代码详解 1. **IDX2 - IDOC元数据管理** - **功能**: 用于维护IDOC(Intermediate Document)的...
7. **性能优化**:NCO 3.0.24在前一版本的基础上进行了性能优化,提升了与SAP系统的连接速度和数据传输效率。 8. **兼容性**:此版本的NCO兼容.NET Framework 4.0,确保了与现代开发环境的兼容性。 至于提到的两个...
在本场景中,消息流主要涉及以下几种通信方式: - **HTTP:** 用于 Web 应用程序之间的通信。 - **JDBC:** 用于数据库访问。 - **IDoc (Intermediate Document):** SAP 内部用于系统间数据交换的标准格式。 - **...
《ALE_EDI_IDoc》是一本专为对电子数据交换(EDI)感兴趣的IT专业人士和SAP用户准备的深度指南。本书全面介绍了SAP系统中EDI、高级后勤执行(ALE)和IDoc技术的关键概念和应用实践,对于希望深入了解并掌握这些技术在...
- **定义**:RFC主要用于SAP R/3系统(即SAP ECC)之间的通信,支持多个SAP系统之间的数据交换和业务流程集成。 - **配置**:在R3系统中配置RFC连接通常需要通过事务代码SM59进行设置。这一过程涉及到目标系统的...
SAP提供了多种接口技术,如BAPI(Business Application Programming Interface)、IDoc(Intermediate Document)、RFC(Remote Function Call)和ABAP(Advanced Business Application Programming)网关等。...
SAP PI作为企业间信息集成的重要工具,通过中间件XI(eXtreme Integration)实现不同系统间的通信。以下是一些关于SAP PI监控和错误处理的知识点: 1. **自动信息集成监控**: - 为了预防网络故障或服务器问题导致...