JAVA调用BAPI创建销售订单
創(chuàng)建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");??????? //訂單類(lèi)型
??????? salehd.setValue("SALES_ORG","8101");???? //銷(xiāo)售機(jī)構(gòu)
??????? salehd.setValue("DISTR_CHAN","10");????? //分銷(xiāo)渠道
??????? salehd.setValue("DIVISION","10");??????? //產(chǎn)品組
??????? salehd.setValue("PURCH_NO_C","12");??????? //采購(gòu)訂單編號(hào)
??????? salehd.setValue("PRICE_DATE","20100926");//定價(jià)日期
??????? salehd.setValue("PMNTTRMS","0002");??????? //付款條款
??????? salehdx.setValue("DOC_TYPE","X");??????? //訂單類(lèi)型
??????? salehdx.setValue("SALES_ORG","X");???? //銷(xiāo)售機(jī)構(gòu)
??????? salehdx.setValue("DISTR_CHAN","X");????? //分銷(xiāo)渠道
??????? salehdx.setValue("DIVISION","X");??????? //產(chǎn)品組
??????? salehdx.setValue("PURCH_NO_C","X");??????? //采購(gòu)訂單編號(hào)
??????? salehdx.setValue("PRICE_DATE","X");//定價(jià)日期
??????? salehdx.setValue("PMNTTRMS","X");??????? //付款條款
??????? item.appendRow();
??????? item.setValue("ITM_NUMBER","000010");??????? //項(xiàng)目
??????? item.setValue("MATERIAL","000000000000000007");??????? //物料編號(hào)
??????? itemx.appendRow();
??????? itemx.setValue("ITM_NUMBER","000010");??????? //項(xiàng)目
??????? itemx.setValue("MATERIAL","X");??????? //物料編號(hào)
??????? schedule.appendRow();
??????? schedule.setValue("ITM_NUMBER","000010");//項(xiàng)目
??????? schedule.setValue("SCHED_LINE","0001");//計(jì)劃行
??????? schedule.setValue("REQ_QTY","10");//數(shù)量
????????
??????? schedulex.appendRow();
??????? schedulex.setValue("ITM_NUMBER","000010");//項(xiàng)目
??????? schedulex.setValue("SCHED_LINE","0001");//計(jì)劃行
??????? schedulex.setValue("REQ_QTY","X");//數(shù)量
????????
??????? partner.appendRow();
??????? partner.setValue("PARTN_ROLE","AG");??????? //售達(dá)方
??????? partner.setValue("PARTN_NUMB","0000100043");??????? //售達(dá)方編號(hào)
??????? partner.appendRow();
??????? partner.setValue("PARTN_ROLE","WE");??????? //運(yùn)達(dá)方
??????? partner.setValue("PARTN_NUMB","0000100043");??????? //運(yùn)達(dá)方編號(hào)
????????
????????
??????? try?????
???????????????????? {???????
??????????? function.execute(destination);?
???????????????????? }?????
??????? catch(AbapException e)?????
??????????????????? {?????
?????????? System.out.println(e.toString());?????
?????????? return;?????
??????????????????? }????
?????? String saledocu = function.getExportParameterList().getString("SALESDOCUMENT");
?????? System.out.println("創(chuàng)建訂單:"+saledocu);?
?????? System.out.println("返回信息數(shù):"+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();?????
??????? }??
?}?
總結(jié)
以上是生活随笔為你收集整理的JAVA调用BAPI创建销售订单的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 批量生成销售订单、退货订单
- 下一篇: BAPI_SALESORDER_CREA