【问题标题】:Error while creating sales order using JCO with BAPI_SALESORDER_CREATEFROMDAT2使用带有 BAPI_SALESORDER_CREATEFROMDAT2 的 JCO 创建销售订单时出错
【发布时间】:2015-08-21 05:47:07
【问题描述】:

我正在尝试使用 BAPI_SALESORDER_CREATEFROMDAT2 创建销售订单,但是当我尝试使用合作伙伴角色“AG”为客户 99(示例)创建销售订单时,出现错误“客户 99 不存在客户主记录”, WE',其中“sold-to-party”和“ship-to-party”都是必填字段。 如果我发送“SP”,它会要求我定义“sold-to-party 和 ship-to-party”,如果我必须发送一些不同的合作伙伴角色才能创建销售订单,请告诉我。

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

}

【问题讨论】:

  • 我怀疑在不访问您的系统及其数据和设置的情况下能否回答这个问题...
  • 我对这个 SAP 和 JCO 非常陌生。我只是想知道这是我为创建销售订单而编写的 JAVA 代码的问题,还是我传递的数据的问题。因为我从 SAP 顾问那里获得了数据,并且该人告诉他可以使用他共享的数据创建销售订单。
  • 如果错误消息是你上面提到的那个,我怀疑他是否可以使用该数据交互地创建销售订单。客户99存在吗?还是需要指定前导零 (0000000099)?

标签: sap bapi


【解决方案1】:

问题是合作伙伴编号,在合作伙伴编号前添加 000000000 即可解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多