SAP Web服务

问题描述:

我正在开发一个Web服务,它将使用.NET在SAP中创建订单。现在,当我运行下面的代码时,我没有收到任何错误,也没有创建订单。我希望有人能帮忙。SAP Web服务

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; 
+1

你在哪里调用web服务中的webmethod? – 2011-05-31 14:22:32

+0

保存订单的命令在哪里?我正在寻找进行保存操作的代码。 – 2011-05-31 14:25:00

+0

是否仅在构建Web服务时使用webmethod?我并没有试图建立一个,我试图使用别人构建的Web服务。我为他们的web服务创建了一个代理,并且我在页面顶部调用了这个proxys命名空间。 using sapWebService; – Paul 2011-05-31 14:31:39

问题是我需要构建一个数组并将其插入到对象中。见下文。

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); 

虽然我不是.Net的专家,但在这里有一些东西。 BapiRet2不是一种方法,而是一个类,并且R/3中有一个同名的结构,通常用于获取有关函数调用执行的信息...

我认为你只是创建将/应该包含你的web服务的答案,因为你不叫后的变量,变量是空的...因此空的错误信息......

问候

没有收到消息,因为你永远不会致电该服务。代理类Z_SALESORDER_CREATE应该有一个名称相同或几乎相同的方法,该方法实际上调用该服务。 BAPIRET2只是一个包含来自服务的返回消息的结构。准备您的呼叫参数,使用这些参数调用服务方法,然后检查结果的BAPIRET2结构。