如何使用RFC在JCO表中设置多个数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用RFC在JCO表中设置多个数据?相关的知识,希望对你有一定的参考价值。

我想在我的JCO Table中使用RFC到SAP服务器添加多个数据。

以下是我的代码。

但问题只是最后一次将被设置为闷棍。

我错过了什么?

我正在使用一个函数与SAP同步数据。

JCO.Function function = null;
JCO.Repository mRepository;

public String updateCustomerToSAP(String bapi){

    String message = null;
    Connection conn = new Connection();
    JCO.client mConnection = conn.open();
    JCO.Table GETZPRTL_VISIT = null;
    mConnection.connect();

    try{
        function = this.createFunction(bapi);
        if(function == null){
            // Not fount
        }else{
            GETZPRTL_VISIT = function.getTableParameterList().getTable("CUSTOMER_VISIT");

            for(int i = 0 ; i < 10 ; i++){
                GETZPRTL_VISIT.appendRow();
                GETZPRTL_VISIT.setValue("0001 "+i,"ID");
                GETZPRTL_VISIT.setValue("john_ro "+i,"USER_NAME");
                GETZPRTL_VISIT.setValue("John "+i,"FIRST_NAME");
                GETZPRTL_VISIT.setValue("Martin "+i,"LAST_NAME");
                GETZPRTL_VISIT.setValue("john.martin@gmail.com "+i,"EMAIL");
            }

            // Above data is just for and example. I fetch those data from ArrayList and all data are diffrent.

            function.getImportParameterList().setValue("Data1","USER_ID");
            function.getImportParameterList().setValue("type goes here","TYPE");
            function.getImportParameterList().setValue("reason goes here","REASON");
            function.getImportParameterList().setValue("final status","STATUS");
            function.getImportParameterList().setValue("0001","NUMBER");

            mConnection.execute(function);
            message = (String) function.getExportParameterList().getValue("MESSAGE");

        }
    }catch(Exception e){

    }
    conn.disconnect();

    return message;
} 

public JCO.Function createFunction(String name) throws Exception{
    try{
        IFunctionTamplate ft = mRepository.getFunctionTamplate(name.toUpperCase());

        if(ft == null)
            return null;
        return ft.getFunction();

    }catch(Exception e){
        throw new Exception("Problem retriving JCO.Function object"+ e);
    }
}

这里的CUSTOMER_VISIT是我的RFC内部的表。

结构示例

USER_ID
TYPE
REASON
STATUS
NUMBER
CUSTOMER_VISIT    <= This is Table inside function module.

CUSTOMER_VISITOR表结构

ID
USER_NAME
FIRST_NAME
LAST_NAME
EMAIL
答案

可能问题在于功能模块的ABAP代码吗?不熟悉ABAP的人很容易将“表格的标题行”与“表格本身”混为一谈......

是否有可能只将标题行插入数据库?

如果激活JCo跟踪级别,您可以看到JCo向R / 3发送的数据。您还可以在ABAP端设置外部断点,然后单步执行功能模块以查看其获得的数据。

以上是关于如何使用RFC在JCO表中设置多个数据?的主要内容,如果未能解决你的问题,请参考以下文章

jco3调用sap系统的rfc连接不上 请高手指点

如何在android的片段中设置应用程序上下文?

如何在MainActivity中设置Fragment的数据

如何在选项卡式活动中设置片段从右到左开始

如何在运行时在由 android studio 创建的导航抽屉中设置默认片段

在片段中设置文本颜色