通过SAPjco + sapidoc3 来实现第3方系统和SAP R3系统进行IDOC的双向传送数据

本文介绍了如何使用SAPjco和sapidoc3库实现第三方系统与SAP R3系统之间的IDOC数据双向传输。通过Java代码展示了SAP IDOC服务器端监听和客户端发送IDOC的详细步骤,涉及配置文件设置、异常处理等关键环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.从SAP market上下载sapidoc3和sapjco3下载两个java包

2.jco服务器端代码如下



import com.sap.conn.idoc.*;

import java.io.*;
import com.sap.conn.jco.server.*;
import com.sap.conn.idoc.jco.*;


public class IDocServerExample
{
    public static void main(String[] a)
    {  
        try
        {
            // see provided examples of configuration files MYSERVER.jcoServer and  BCE.jcoDestination
            JCoIDocServer server = JCoIDoc.getServer("MYSERVER");
            server.setIDocHandlerFactory(new MyIDocHandlerFactory());
            server.setTIDHandler(new MyTidHandler());
           
            MyThrowableListener listener = new MyThrowableListener();
            server.addServerErrorListener(listener);
            server.addServerExceptionListener(listener);
            server.setConnectionCount(1);
            server.start();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
     }
   
    static class MyIDocHandler implements JCoIDocHandler
    {
        public void handleRequest(JCoServerContext serverCtx, IDocDocumentList idocList)


        {
            该方法用来侦听SAP的IDOC 端口,如果有idoc发送到该端口,该方法就会把该idoc生成xml文件
            FileOutputStream fos=null;
            OutputStreamWriter osw=null;
            try
            {
                IDocXMLProcessor xmlProcessor =
                    JCoIDoc.getIDocFactory().getIDocXMLProcessor();
                fos=new FileOutputStream(serverCtx.getTID()+"_idoc.xml");
                osw=new OutputStreamWriter(fos, "UTF8");
                xmlProcessor.render(idocList, osw,
                        IDocXMLProcessor.RENDER_WITH_TABS_AND_CRLF);           
                osw.flush();
            }
            catch (Throwable thr)
            {
                thr.printStackTrace();
            }
            finally
            {
                try
                {
              

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值