2015-08-21 52 views
0

我尝试使用BAPI_SALESORDER_CREATEFROMDAT2创建销售订单,但是当我尝试为客户99创建销售订单时(例如),我收到错误“客户99没有客户主记录”与合作伙伴角色'AG','我们'的'卖方对党和船对党'都是必填字段。 如果我发送“SP”,它会要求我定义“派对和派对”,请让我知道是否必须派遣一些不同的合作伙伴角色才能创建销售订单。使用JCO和BAPI_SALESORDER_CREATEFROMDAT2创建销售订单时出错

public static void createSalesOrder() { 
    try { 
     JCoDestination destination = JCoDestinationManager.getDestination("ABAP_AS_WITH_POOL"); 
     JCoFunction functionCreateOrder = destination.getRepository().getFunction("BAPI_SALESORDER_CREATEFROMDAT2"); 
     JCoFunction functionTransComit = destination.getRepository().getFunction("BAPI_TRANSACTION_COMMIT"); 

     JCoStructure orderHeaderIn = functionCreateOrder.getImportParameterList().getStructure("ORDER_HEADER_IN"); 
     orderHeaderIn.setValue("SALES_ORG", "2000"); 
     orderHeaderIn.setValue("DISTR_CHAN", "20"); 
     orderHeaderIn.setValue("DIVISION", "20"); 
     orderHeaderIn.setValue("DOC_TYPE", "ZAR"); 

     JCoTable orderPartners = functionCreateOrder.getTableParameterList().getTable("ORDER_PARTNERS"); 
     // WE,AG,SP,PH 
     // AG Sold to Party 
     // WE Ship to Party 
     orderPartners.appendRows(1); 
     orderPartners.setValue("PARTN_ROLE", "AG"); 
     orderPartners.setValue("PARTN_NUMB", "99"); 
     orderPartners.appendRows(1); 
     orderPartners.setValue("PARTN_ROLE", "WE"); 
     orderPartners.setValue("PARTN_NUMB", "99"); 
     System.out.println(orderPartners); 

     JCoTable orderItemsIn = functionCreateOrder.getTableParameterList().getTable("ORDER_ITEMS_IN"); 
     orderItemsIn.appendRow(); 
     orderItemsIn.setValue("MATERIAL", "PEN_ARN"); 
     System.out.println(orderItemsIn); 

     JCoTable orderSchedulesIn = functionCreateOrder.getTableParameterList().getTable("ORDER_SCHEDULES_IN"); 
     orderSchedulesIn.appendRow(); 
     orderSchedulesIn.setValue("REQ_QTY", "1"); 
     System.out.println(orderSchedulesIn); 

     functionCreateOrder.execute(destination); 
     functionTransComit.execute(destination); 

     // System.out.println(functionCreateOrder); 
     JCoTable returnTable = functionCreateOrder.getTableParameterList().getTable("RETURN"); 
     System.out.println(returnTable.getString("MESSAGE")); 
     System.out.println("sales order number is : " 
       + functionCreateOrder.getExportParameterList().getValue("SALESDOCUMENT")); 

    } catch (JCoException ex) { 
     System.out.println(ex.getMessage()); 
    } finally { 
     System.out.println("Creating sales order ends"); 
    } 

} 
+0

我怀疑这个问题可以在不访问您的系统及其数据和设置的情况下得到解答... – vwegert

+0

我对这个SAP和JCO非常新颖。我只是想知道这是我写入的用于创建销售订单的JAVA代码的问题,还是这是我传递的数据的问题。因为我已经从SAP顾问处获得了数据,并且该人员告诉他可以使用他分享的数据创建销售订单。 –

+1

如果错误信息是您上面提到的错误信息,我怀疑他可以交互式地使用该数据创建销售订单。客户99是否存在?或者你需要指定前导零(0000000099)? – vwegert

回答

0

问题是与合作伙伴号码,增加000000000领先的合作伙伴号码将解决问题。

相关问题