首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用BAPI : BAPI_PO_CREATE1创建采购订单

如何使用BAPI : BAPI_PO_CREATE1创建采购订单
EN

Stack Overflow用户
提问于 2015-08-21 14:43:14
回答 1查看 3.5K关注 0票数 0

我正在尝试使用JCO3创建采购订单。我能够执行我的功能没有任何错误,但我不确定什么是错误的系统没有抛出任何错误,它也没有在SAP系统中创建PO。

代码语言:javascript
复制
		JCoDestination destination = JCoDestinationManager.getDestination("ABAP_AS_WITHOUT_POOL");
		
		JCoFunction createPurchaseOrderFunction  = destination.getRepository().getFunction("BAPI_PO_CREATE1");
		JCoFunction functionTransactionCommit = destination.getRepository().getFunction("BAPI_TRANSACTION_COMMIT");
		
		// Input Header	
		JCoStructure poOrderHeader = createPurchaseOrderFunction.getImportParameterList().getStructure("POHEADER");
		System.out.println("Header Structure" + poOrderHeader);
		
		poOrderHeader.setValue("COMP_CODE", "0001");
		poOrderHeader.setValue("DOC_TYPE", "NB");
		
		//Date today = new Date();
		SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
		//String date = dateFormat.format(today);
		String dateinString = "20.08.2015";
		Date date = dateFormat.parse(dateinString);
		System.out.println("Date is: " + date);
		
		poOrderHeader.setValue("CREAT_DATE",date);
		poOrderHeader.setValue("VENDOR", "V544100170");
		poOrderHeader.setValue("LANGU", "EN");
		poOrderHeader.setValue("PURCH_ORG", "0005");
		poOrderHeader.setValue("PUR_GROUP", "001");
		poOrderHeader.setValue("CURRENCY", "INR");

		// PO Items
        JCoTable poItems = createPurchaseOrderFunction.getTableParameterList().getTable("POITEM");
        poItems.appendRow();
        poItems.setValue("PO_ITEM", "1");
        poItems.setValue("MATERIAL", "ZZMT_TEST2");
        poItems.setValue("PLANT", "Z111");
        poItems.setValue("QUANTITY", "100");
        poItems.setValue("NET_PRICE", "150");
        
        try
        {
        	JCoContext.begin(destination);
        	createPurchaseOrderFunction.execute(destination);
        	functionTransactionCommit.execute(destination);
        	functionTransactionCommit.getImportParameterList().setValue("WAIT", 10);
        	JCoContext.end(destination);
        }
        catch(Exception e)
        {
        	throw e;
        }
        
		// Print the Return Structure Message
//		JCoStructure returnStructure = createPurchaseOrderFunction.getExportParameterList().getStructure("RETURN");
//		if (! (returnStructure.getString("TYPE").equals("")||returnStructure.getString("TYPE").equals("S"))  )   
//        {
//           throw new RuntimeException(returnStructure.getString("MESSAGE"));
//        }
		
		JCoTable table = createPurchaseOrderFunction.getTableParameterList().getTable("POITEM");
		
		// Iterate over table and print JCOFiled
		for(JCoField field : table)
		{
			System.out.println("Name: "+field.getName() +  "----" + "Value:" + field.getValue());
			System.out.println("------------------------------------------------------------------");
		}
		
		System.out.println("---------------------------------------------------------------------------------");
		System.out.println("Table" + table);

EN

回答 1

Stack Overflow用户

发布于 2015-11-17 17:31:03

您需要在结束时调用BAPI_TRANSACTION_COMMIT来完成事务

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32133970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档