2011-12-16 2 views
0

Я пытаюсь создать Покупатель запись (me11) в SAP, используя приведенный ниже JCo код:Создания Покупателей записи в SAP

Он выполняет без сбоев и не проливает ошибки, но я не может получить вновь созданная инфо-запись в 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); 
+0

Я еще не получил правильного ответа. Я пытаюсь создать что-то другое для записи Закупок. После успешного выполнения я опубликую правильное решение. – Raj

ответ

1

Возможно, я ошибаюсь, но думаю, что вы получаете копию структуры, которую вы заполняете. могли бы вы проверить это, добавив набор «SetValue» как раз перед выполнением функции т.е.

importparams.setValue("I_EINA", headStructure); 
importparams.setValue("O_EINA", headStructure1); 
importparams.setValue("I_EINE", purchaseDataStructure); 
importparams.setValue("O_EINE", purchaseDataStructure1); 
mConnection.execute(function); 

в противном случае возможность состоит в том, чтобы добавить внешний брейк-пойнт в вашей функции (исполнения функция Java будет инициировать сеанс отладки в ABAP),

  • и проверить, что значения находятся в ABAP, а исполнение
  • вы говорите, что функция не бросает какую-то ошибку, но я не вижу никакой ошибки проверка вашего кода. ваша функция должна возвращать структуру или таблицу, указывающую на успех или ошибки на стороне ABAP (например, BAPIRETURN1). JCO вызовет ошибку самостоятельно, только если есть дамп ABAP или недопустимые параметры.

рассматривает

+0

HI Patry, Спасибо за ваш ответ. Я попробовал ваше предложение, но все равно его одно и то же. Что касается отладки в ABAP, можете ли вы рассказать мне, как это сделать. Мои извинения являются новыми для SAP и ABAP. – Raj

+0

транзакция se37 позволит вам ознакомиться с кодом функционального модуля. вы затем помещаете курсор в интересующую строку (первая строка выполнения в вашем случае) и помещаете внешнюю точку останова (в строке меню есть значок). Во время выполнения отладчик появится в вашем SAPGUI. Вы должны использовать тот же логин для своей программы и для того, чтобы это работало. Проверьте параметры в начале выполнения и посмотрите на конец выполнения. –

0

В дополнении к хорошему ответу @PATRY:

  1. вы могли бы забыли совершить работу.
  2. Обычно я пишу небольшую тестовую программу в ABAP, прежде чем использовать ее с Java. Обычно стоит того времени, хотя вы можете запустить отладчик Abap с Java.
  3. Как @PATRY говорит, что игнорировать параметры возврата, как вы делаете, это плохая идея.
Смежные вопросы