Веб-сервис SAP - PullRequest
       24

Веб-сервис SAP

1 голос
/ 31 мая 2011

Я работаю над веб-сервисом, который будет создавать заказы в SAP с использованием .NET. Прямо сейчас, когда я запускаю приведенный ниже код, я не получаю ошибок, и заказ не создается. Я надеялся, что кто-нибудь сможет помочь.

    string message = "";

    // create initial connection
    Z_SALESORDER_CREATE createOrder = new Z_SALESORDER_CREATE();

    try
    {
        NetworkCredential cred = new NetworkCredential("password", "username");

        createOrder.Url = "http://saphost:8010/sap/bc/srt/wsdl/bndg_d0823E1C21F1A334DSE0001555D658D08/wsdl11/allinone/ws_policy/document?sap-client=110";
        createOrder.Credentials = cred;
    }
    catch (Exception ex){
        message = "An error occured." + ex.Message;
    }


    // ORDERS_HEADER_IN
    Bapisdhd1 order_header_in = new Bapisdhd1();
    order_header_in.DocType = "OR";
    order_header_in.CollectNo = "1109512";
    order_header_in.SalesOrg = "10090";
    order_header_in.DistrChan = "100";
    order_header_in.Division = "000";
    order_header_in.DlvBlock = "020";
    order_header_in.PurchNoC = "E-COMM ORDER TEST ORDER";

    // ORDER_ITEMS_IN
    Bapisditm order_items_in = new Bapisditm();
    order_items_in.ItmNumber = "198295";
    order_items_in.Material = "454659";
    order_items_in.GrossWght = 0.003M;
    order_items_in.NetWeight = 0.003M;
    order_items_in.UntofWght = "KG";

    Bapisditm order_items_in2 = new Bapisditm();
    order_items_in2.ItmNumber = "198425";
    order_items_in2.Material = "454664";
    order_items_in2.GrossWght = 0.003M;
    order_items_in2.NetWeight = 0.003M;
    order_items_in2.UntofWght = "KG";

    Bapisditm order_items_in3 = new Bapisditm();
    order_items_in3.ItmNumber = "198725";
    order_items_in3.Material = "454647";
    order_items_in3.GrossWght = 0.003M;
    order_items_in3.NetWeight = 0.003M;
    order_items_in3.UntofWght = "KG";

    Bapisditm order_items_in4 = new Bapisditm();
    order_items_in4.ItmNumber = "198275";
    order_items_in4.Material = "45696INK";
    order_items_in4.GrossWght = 0.003M;
    order_items_in4.NetWeight = 0.003M;
    order_items_in4.UntofWght = "KG";

    // ORDER_PARTNERS
    Bapiparnr order_partners = new Bapiparnr();
    order_partners.PartnRole = "SP";
    order_partners.PartnNumb = "110512";

    order_partners.PartnRole = "BP";
    order_partners.PartnNumb = "110512";

    order_partners.PartnRole = "PY";
    order_partners.PartnNumb = "110512";

    order_partners.PartnRole = "SH";
    order_partners.PartnNumb = "120109";

    Bapicond order_conditions = new Bapicond();
    order_conditions.ItmNumber = "000010";
    order_conditions.CondStNo = "013";
    order_conditions.CondCount = "01";
    order_conditions.CondType = "ZPRM";
    order_conditions.CondValue = 1;
    order_conditions.Currency = "USD";

    // commit transation
    Bapiret2 commit = new Bapiret2();
    message += commit.Message + commit.MessageV1 + commit.MessageV2 + commit.MessageV3 + commit.MessageV4 + commit.LogMsgNo + commit.LogNo;

Ответы [ 3 ]

2 голосов
/ 03 июня 2011

Проблема в том, что мне нужно было построить массив и вставить его в объект. Смотри ниже.

Bapisdhd1 order_header_in = new Bapisdhd1();
order_header_in.DocType = "OR";
order_header_in.CollectNo = "1109512";
order_header_in.SalesOrg = "10090";
order_header_in.DistrChan = "100";
order_header_in.Division = "000";
order_header_in.DlvBlock = "020";
order_header_in.PurchNoC = "E-COMM ORDER TEST ORDER";
newOrder.OrderHeaderIn = order_header_in;

Мне также нужно было что-то связать объект zSalesOrderCreate обратно с методом Z_SALESORDER_CREATE.

    ZSalesorderCreateResponse res = createOrder.ZSalesorderCreate(newOrder);
0 голосов
/ 01 июня 2011

Вы не получите сообщение, потому что вы никогда не звоните в службу.Прокси-класс Z_SALESORDER_CREATE должен иметь метод с тем же или почти таким же именем, что этот метод фактически вызывает службу.BAPIRET2 - это только структура, содержащая ответные сообщения от сервиса.Подготовьте параметры вызова, вызовите метод обслуживания с этими параметрами, а затем проверьте BAPIRET2-структуру на наличие результатов.

0 голосов
/ 31 мая 2011

Хотя я не эксперт в .Net, здесь есть что-то странное.BapiRet2 - это не метод, а класс, и в R / 3 есть структура с тем же именем, которая обычно используется для получения информации о выполнении вызовов функций ...

я думаю, что выпросто создайте переменную, которая будет / должна содержать ответ вашего веб-сервиса, и поскольку вы не вызываете его позже, переменная пуста ... таким образом, пустое сообщение об ошибке ...

regards

...