我正在尝试使用标准 BAPI (PurchaseRequisition.CreateFromData) 在采购申请中“插入”(或)“添加一行”。
我正在使用 JCo3。JCo3 中的示例表明我们应该使用 table.appendRow() 或 table.insertRow() 方法。我正在尝试使用 table.appendRow() 和 table.appendRows(1)。当我尝试插入一行时,我没有收到任何错误,并且没有插入该行。
下面是我要执行的程序。/** 下面是该程序运行所需的输入//第 1 步 **/ String BAPI_NAME = "BAPI_REQUISITION_CREATE";
/** Step 2 **/
String query_input_column1 = "DOCUMENTY_TYPE";
String query_input_column1_value = "NB";
String query_input_column2 = "PREQ_NAME";
String query_input_column2_value = "Name";
String query_input_column3 = "ACCTASSCAT";
String query_input_column3_value = "U";
String query_input_column4 = "DELIV_DATE";
String query_input_column4_value = "20131101";
String query_input_column5 = "MATERIAL";
String query_input_column5_value = "DELL-RQ2013";
String query_input_column6 = "QUANITY";
int query_input_column6_value = 10100;
/** Step 3 **/
String targetTableUnderBAPI = "REQUISITION_ITEMS";
/** Step 4 **/
/** For the confirmation read the value from export parameter after insertion execution **/
String result_column1 = "NUMBER";
JCoDestination destination = null;
try {
destination = JCoDestinationManager.getDestination(DestinationManager.DESTINATION_NAME1);
JCoRepository repository = destination.getRepository();
JCoContext.begin(destination);
JCoFunction function = repository.getFunction(BAPI_NAME);
if(function == null)
throw new RuntimeException(BAPI_NAME + " not found in SAP.");
System.out.println("BAPI Name from function object: " + function.getName());
//function.getImportParameterList().setValue(query_input_column1, query_input_column1_value);
JCoTable table = function.getTableParameterList().getTable(targetTableUnderBAPI); //it is taken from the response value of metadata
//System.out.println("No of Columns: "+ table.getNumColumns());
System.out.println("Trying to execute append row");
table.appendRow();
table.setValue(query_input_column1,query_input_column1_value);
table.setValue(query_input_column2,query_input_column2_value);
table.setValue(query_input_column3,query_input_column3_value);
//table.setValue(query_input_column4,new java.util.Date(query_input_column4_value));
//跳过其他列相关代码
try{
function.execute(destination);
}
catch(AbapException e){
System.out.println(e.toString());
return;
}
System.out.println("Let us check the result from export parameter");
String exportParamStructure = (String)function.getExportParameterList().getValue(result_column1); //getStructure(result_column1); // getValue(result_column1);
System.out.println("Resulting PR#: "+exportParamStructure);
} catch (JCoException e) {
e.printStackTrace();
}
finally
{
try {
JCoContext.end(destination);
} catch (JCoException e) {
e.printStackTrace();
}
}
我不明白如何阅读响应并试图从 exportParameters 中获取它!
- 任何人都可以分享一段代码来插入和
- 获得确认响应(我们是否得到 PREQ_NO 作为响应?)
- 我将日期字段值添加为“20131101”,但不确定格式和方法是否正确?
- 当我尝试添加 Quantity 列值时,我收到一条错误消息,抱怨此列不是 BAPIIEBANC 的一部分。但是该列在 BAPIIEBANC 类型中是可见的。
- 要检查 SAP 端的任何配置?
- 我应该激活 JCo 端的任何字段吗?如果是这样,如何
请注意,我对 SAP 的了解非常有限。
等待专家回复。
谢谢。