標準 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 列の値を追加しようとすると、この列は BAPIEBANC の一部ではないというエラー メッセージが表示されます。ただし、列は BAPIEBANC タイプで表示されます。
- チェックする SAP 側の構成はありますか?
- JCo 側のフィールドを有効にする必要がありますか? もしそうなら、どのように
SAP に関する私の知識は非常に限られていることに注意してください。
専門家の回答を待っています。
ありがとう。