Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在SAP中创建采购信息记录_Java_Sap_Jco_Bapi - Fatal编程技术网

Java 在SAP中创建采购信息记录

Java 在SAP中创建采购信息记录,java,sap,jco,bapi,Java,Sap,Jco,Bapi,我正在尝试使用以下JCo代码在SAP中创建采购信息记录(ME11): 它执行时不会失败,也不会抛出错误,但我无法在SAP中获取新创建的信息记录。在ME13中,它表示未找到信息记录。我能知道我错过了什么吗 IFunctionTemplate ft1 = mRepository.getFunctionTemplate("ZME_INITIALIZE_INFORECORD"); JCO.Function function1 = ft1.getFunction(); mConnectio

我正在尝试使用以下JCo代码在SAP中创建采购信息记录(ME11):

它执行时不会失败,也不会抛出错误,但我无法在SAP中获取新创建的信息记录。在ME13中,它表示未找到信息记录。我能知道我错过了什么吗

IFunctionTemplate ft1 = mRepository.getFunctionTemplate("ZME_INITIALIZE_INFORECORD");
    JCO.Function function1 = ft1.getFunction();
    mConnection.execute(function1);

    IFunctionTemplate ft = mRepository.getFunctionTemplate("ZME_DIRECT_INPUT_INFORECORD");
    JCO.Function function = ft.getFunction();
    JCO.ParameterList importparams =function.getImportParameterList();

    //  Setting HeadData Structure Information
    JCO.Structure headStructure = importparams.getStructure("I_EINA");
    //headStructure.setValue("105","MANDT");
    //headStructure.setValue("5300259768", "INFNR");
    headStructure.setValue("MYPART0006", "MATNR");      
    //headStructure.setValue("MYPART0006", "IDNLF");
    headStructure.setValue("100002","LIFNR");
    headStructure.setValue("10000","MATKL");
    headStructure.setValue("KGS","MEINS");
    headStructure.setValue("1","UMREZ");
    headStructure.setValue("1","UMREN");
    headStructure.setValue("SG","URZLA");
    headStructure.setValue("KGS","LMEIN");
    //headStructure.setValue("0000005300259768","URZZT");

    JCO.Structure headStructure1 = importparams.getStructure("O_EINA");
    //headStructure1.setValue("105","MANDT");
    //headStructure1.setValue("5300259768", "INFNR");
    headStructure1.setValue("MYPART0006", "MATNR");     
    //headStructure1.setValue("MYPART0006", "IDNLF");
    headStructure1.setValue("100002","LIFNR");
    headStructure1.setValue("10000","MATKL");
    headStructure1.setValue("KGS","MEINS");
    headStructure1.setValue("1","UMREZ");
    headStructure1.setValue("1","UMREN");
    headStructure1.setValue("SG","URZLA");
    headStructure1.setValue("KGS","LMEIN");

    //headStructure1.setValue("0000005300259768","URZZT");
    System.out.println("General Data Set");

    JCO.Structure purchaseDataStructure = importparams.getStructure("I_EINE");
    //purchaseDataStructure.setValue("105","MANDT");
    //purchaseDataStructure.setValue("5300259768", "INFNR");
    purchaseDataStructure.setValue("1000","EKORG");
    purchaseDataStructure.setValue("1000", "WERKS");
    purchaseDataStructure.setValue("003","EKGRP");
    purchaseDataStructure.setValue("USD","WAERS");
    purchaseDataStructure.setValue("3","APLFZ");
    purchaseDataStructure.setValue("1","PEINH");
    purchaseDataStructure.setValue("1","BPUMZ");
    purchaseDataStructure.setValue("1","BPUMN");
    purchaseDataStructure.setValue("1000","EFFPR");     
    purchaseDataStructure.setValue("0001","BSTAE");     
    purchaseDataStructure.setValue("100000","NETPR");
    purchaseDataStructure.setValue("X","KZABS");

    JCO.Structure purchaseDataStructure1 = importparams.getStructure("O_EINE");
    //purchaseDataStructure1.setValue("105","MANDT");
    //purchaseDataStructure1.setValue("5300259768", "INFNR");
    purchaseDataStructure1.setValue("1000","EKORG");
    purchaseDataStructure1.setValue("1000", "WERKS");
    purchaseDataStructure1.setValue("003","EKGRP");
    purchaseDataStructure1.setValue("USD","WAERS");
    purchaseDataStructure1.setValue("3","APLFZ");
    purchaseDataStructure1.setValue("1","PEINH");
    purchaseDataStructure1.setValue("1","BPUMZ");
    purchaseDataStructure1.setValue("1","BPUMN");
    purchaseDataStructure1.setValue("1000","EFFPR");        
    purchaseDataStructure1.setValue("0001","BSTAE");        
    purchaseDataStructure1.setValue("100000","NETPR");
    purchaseDataStructure1.setValue("X","KZABS");

    mConnection.execute(function);

    IFunctionTemplate ft2 = mRepository.getFunctionTemplate("ZME_POST_INFORECORD");
    JCO.Function function2 = ft2.getFunction();

    JCO.ParameterList importparams2 =function2.getImportParameterList();
    importparams2.setValue("MYPART0006", "I_MATNR");
    importparams2.setValue("MYPART0006", "O_MATNR");
    mConnection.execute(function2);

我可能错了,但我想你得到的是你填写的结构的副本。 您能在函数执行之前添加一组“setValue”来测试这一点吗 即:

否则,可能会在函数中添加一个外部断点(java函数的执行将触发ABAP中的调试会话)

  • 并检查ABAP中的值以及执行情况
  • 你说函数没有抛出任何错误,但我没有看到任何错误 签入代码。函数应该返回一个结构或表,指示ABAP端的成功或错误(例如键入BAPIRETURN1)。只有当存在ABAP转储或无效参数时,JCO才会自行触发错误

除了@PATRY的好答案外,还要考虑

  • 你可能忘了写一份工作
  • 在使用Java之前,我通常用ABAP编写一个小的测试程序。虽然可以从Java触发Abap调试器,但这通常是值得的
  • 正如@PATRY所说的,忽略返回参数是个坏主意

  • 嗨,帕特里,谢谢你的回复。我试过你的建议,但还是一样。关于ABAP中的调试,你能告诉我怎么做吗。很抱歉,SAP和ABAP.transaction se37是新手,您可以查看功能模块的代码。然后将光标放在感兴趣的行(案例中的第一个执行行)上,并放置一个外部断点(菜单栏上有一个图标)。在执行过程中,调试器将在SAPGUI中弹出。您应该为您的程序和您自己使用相同的登录名,以使其正常运行。检查执行开始时的参数,并查看执行结束时的情况。我还没有收到任何正确的答案。我正在尝试其他方法来创建采购记录。一旦成功,我将发布正确的解决方案。
    importparams.setValue("I_EINA", headStructure);
    importparams.setValue("O_EINA", headStructure1);
    importparams.setValue("I_EINE", purchaseDataStructure);
    importparams.setValue("O_EINE", purchaseDataStructure1);
    mConnection.execute(function);