您的位置:首页 > 编程语言 > Java开发

JAVA调用BAPI创建销售订单

2010-09-26 19:39 381 查看
1、复制BAPI_SALESORDER_CREATEFROMDAT2到函数ZRFC_SALESORDER_CREATEFROMDAT,封装BAPI_TRANSACTION_COMMIT。



2、创建JAVA程序

import java.io.File;
import java.io.FileOutputStream;
import java.util.Properties;

import com.sap.conn.jco.JCoException;
import com.sap.conn.jco.ext.DestinationDataProvider;
import com.sap.conn.jco.JCoDestination;
import com.sap.conn.jco.JCoDestinationManager;
import com.sap.conn.jco.AbapException;
import com.sap.conn.jco.JCoFunction;
import com.sap.conn.jco.JCoField;
import com.sap.conn.jco.JCoStructure;
import com.sap.conn.jco.JCoTable;

public class CreateOrder {
static String ABAP_AS_POOLED = "ABAP_AS_WITH_POOL";
static
{
Properties connectProperties = new Properties();

connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "192.168.00");

connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "10");

connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "100");

connectProperties.setProperty(DestinationDataProvider.JCO_USER, "LIUWL");

connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "ADMIN123");

connectProperties.setProperty(DestinationDataProvider.JCO_LANG, "ZH");

//JCO_PEAK_LIMIT - Maximum number of idle connections kept open by the destination.

connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");

//JCO_POOL_CAPACITY - Maximum number of active connections that

//can be created for a destination simultaneously

connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, "10");

createDataFile(ABAP_AS_POOLED, "jcoDestination", connectProperties);
}

static void createDataFile(String name, String suffix, Properties properties)
{
File cfg = new File(name+"."+suffix);
if(!cfg.exists())
{
try
{
FileOutputStream fos = new FileOutputStream(cfg, false);
properties.store(fos, "for tests only !");
fos.close();
}
catch (Exception e)
{
throw new RuntimeException("Unable to create the destination file " + cfg.getName(), e);
}
}
}

public static void createSAPOrder() throws JCoException
{
JCoDestination destination = JCoDestinationManager.getDestination(ABAP_AS_POOLED);
JCoFunction function = destination.getRepository().getFunction("ZRFC_SALESORDER_CREATEFROMDAT");
if(function == null)
throw new RuntimeException("BAPI_SALESORDER_CREATEFROMDAT2 not found in SAP.");

//importing parameter
JCoStructure salehd = function.getImportParameterList().getStructure("ORDER_HEADER_IN");
JCoStructure salehdx = function.getImportParameterList().getStructure("ORDER_HEADER_INX");
//Tables
JCoTable returntable = function.getTableParameterList().getTable("RETURN");
JCoTable item = function.getTableParameterList().getTable("ORDER_ITEMS_IN");
JCoTable itemx = function.getTableParameterList().getTable("ORDER_ITEMS_INX");
JCoTable partner = function.getTableParameterList().getTable("ORDER_PARTNERS");
JCoTable schedule = function.getTableParameterList().getTable("ORDER_SCHEDULES_IN");
JCoTable schedulex = function.getTableParameterList().getTable("ORDER_SCHEDULES_INX");
// JCoTable condition = function.getTableParameterList().getTable("ORDER_CONDITIONS_IN");
// JCoTable conditionx = function.getTableParameterList().getTable("ORDER_CONDITIONS_INX");

salehd.setValue("DOC_TYPE","TA"); //订单类型
salehd.setValue("SALES_ORG","8101"); //销售机构
salehd.setValue("DISTR_CHAN","10"); //分销渠道
salehd.setValue("DIVISION","10"); //产品组
salehd.setValue("PURCH_NO_C","12"); //采购订单编号
salehd.setValue("PRICE_DATE","20100926");//定价日期
salehd.setValue("PMNTTRMS","0002"); //付款条款

salehdx.setValue("DOC_TYPE","X"); //订单类型
salehdx.setValue("SALES_ORG","X"); //销售机构
salehdx.setValue("DISTR_CHAN","X"); //分销渠道
salehdx.setValue("DIVISION","X"); //产品组
salehdx.setValue("PURCH_NO_C","X"); //采购订单编号
salehdx.setValue("PRICE_DATE","X");//定价日期
salehdx.setValue("PMNTTRMS","X"); //付款条款

item.appendRow();
item.setValue("ITM_NUMBER","000010"); //项目
item.setValue("MATERIAL","000000000000000007"); //物料编号

itemx.appendRow();
itemx.setValue("ITM_NUMBER","000010"); //项目
itemx.setValue("MATERIAL","X"); //物料编号

schedule.appendRow();
schedule.setValue("ITM_NUMBER","000010");//项目
schedule.setValue("SCHED_LINE","0001");//计划行
schedule.setValue("REQ_QTY","10");//数量

schedulex.appendRow();
schedulex.setValue("ITM_NUMBER","000010");//项目
schedulex.setValue("SCHED_LINE","0001");//计划行
schedulex.setValue("REQ_QTY","X");//数量

partner.appendRow();
partner.setValue("PARTN_ROLE","AG"); //售达方
partner.setValue("PARTN_NUMB","0000100043"); //售达方编号
partner.appendRow();
partner.setValue("PARTN_ROLE","WE"); //运达方
partner.setValue("PARTN_NUMB","0000100043"); //运达方编号

try
{
function.execute(destination);
}
catch(AbapException e)
{
System.out.println(e.toString());
return;
}

String saledocu = function.getExportParameterList().getString("SALESDOCUMENT");
System.out.println("创建订单:"+saledocu);
System.out.println("返回信息数:"+returntable.getNumRows());
for(int j = 0; j< returntable.getNumRows();j++)
{
for(int i = 0; i < returntable.getMetaData().getFieldCount(); i++)
{
System.out.println(returntable.getMetaData().getName(i) + ":/t" + returntable.getString(i));
}
returntable.nextRow();
System.out.println();
}
}

public static void main(String[] args) throws JCoException
{
createSAPOrder();
}
}

3、执行结果



注意:

创建时,订单类型等参数必须使用德语代码

BAPI_SALESORDER_CREATEFROMDAT2不可创建退货订单
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: