使用带有BAPI_SALESORDER_CREATEFROMDAT2的JCO创建销售订单时出错 [英] Error while creating sales order using JCO with BAPI_SALESORDER_CREATEFROMDAT2

查看:0
本文介绍了使用带有BAPI_SALESORDER_CREATEFROMDAT2的JCO创建销售订单时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用BAPI_SALESORDER_CREATEFROMDAT2创建销售订单,但当我尝试使用合作伙伴角色‘AG’、‘We’为客户99(例如)创建销售订单时,收到错误"客户99没有客户主记录",其中‘Sold-to-Party’和‘Ship-to-Party’都是必填字段。 如果我发送"SP",它将要求我定义‘Sold-to-Party and 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");
    }

}

推荐答案

合作伙伴编号有问题,在合作伙伴编号前面添加000000000可以解决问题。

这篇关于使用带有BAPI_SALESORDER_CREATEFROMDAT2的JCO创建销售订单时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆