2017-06-10 2 views
1

Je suis en train de créer ordre d'achat dans SAP de mon application .NET en utilisant SAP.net Connector 3.0 Cependant, je reçois le message suivant d'erreur dans le paramètre RETOURAppel à l'aide BAPI_PO_CREATE SAP.Net Connector 3.0

ME159: Fonction modules invoqués dans la mauvaise séquence.

J'utilise ci-dessous le code:

// helper method to get destination from destination configuration 
var dest = RfcConfigurationHelper.GetDestination(); 

RfcSessionManager.BeginContext(dest); 

IRfcFunction rfcFunction = dest.Repository.CreateFunction("BAPI_PO_CREATE"); 

IRfcFunction transaction = dest.Repository.CreateFunction("BAPI_TRANSACTION_COMMIT"); 
transaction.SetValue("WAIT","X"); 

IRfcStructure header = rfcFunction["PO_HEADER"].GetStructure(); 
header.SetValue("DOC_TYPE", "NB"); 
header.SetValue("PURCH_ORG", "0001"); 
header.SetValue("PUR_GROUP", "001"); 
header.SetValue("DOC_DATE", DateTime.Now.ToString("yyyy-MM-dd")); 
header.SetValue("VENDOR", "V544100170"); 

IRfcTable items = rfcFunction["PO_ITEMS"].GetTable(); 
IRfcStructure item = items.Metadata.LineType.CreateStructure(); 
item.SetValue("PO_ITEM", "1"); 
item.SetValue("PUR_MAT", "TEST_MAT"); 
item.SetValue("PLANT", "0001"); 

IRfcTable shedules = rfcFunction["PO_ITEM_SCHEDULES"].GetTable(); 
IRfcStructure shedule = shedules.Metadata.LineType.CreateStructure(); 
shedule.SetValue("PO_ITEM", "1"); 
shedule.SetValue("DELIV_DATE", DateTime.Now.AddDays(7).ToString("yyyy-MM-dd")); 
shedule.SetValue("QUANTITY", 10); 

rfcFunction.Invoke(dest); 

transaction.Invoke(dest); 

IRfcTable returns = rfcFunction["RETURN"].GetTable(); 
RfcSessionManager.EndContext(dest); 

S'il vous plaît aider. Merci

Répondre

1

Enfin, j'ai compris ce qui me manquait. C'était une erreur stupide. Ci-dessous le code édité

// helper method to get destination from destination configuration 
var dest = RfcConfigurationHelper.GetDestination(); 

RfcSessionManager.BeginContext(dest); 

IRfcFunction rfcFunction = dest.Repository.CreateFunction("BAPI_PO_CREATE"); 

IRfcFunction transaction = dest.Repository.CreateFunction("BAPI_TRANSACTION_COMMIT"); 
transaction.SetValue("WAIT","X"); 

IRfcStructure header = rfcFunction["PO_HEADER"].GetStructure(); 
header.SetValue("DOC_TYPE", "NB"); 
header.SetValue("PURCH_ORG", "0001"); 
header.SetValue("PUR_GROUP", "001"); 
header.SetValue("DOC_DATE", DateTime.Now.ToString("yyyy-MM-dd")); 
header.SetValue("VENDOR", "V544100170"); 

IRfcTable items = rfcFunction["PO_ITEMS"].GetTable(); 
IRfcStructure item = items.Metadata.LineType.CreateStructure(); 
item.SetValue("PO_ITEM", "1"); 
item.SetValue("PUR_MAT", "TEST_MAT"); 
item.SetValue("PLANT", "0001"); 

// this was missing as I haven't added the row to the table 
items.Insert(item); 

IRfcTable schedules = rfcFunction["PO_ITEM_SCHEDULES"].GetTable(); 
IRfcStructure schedule = shedules.Metadata.LineType.CreateStructure(); 
schedule.SetValue("PO_ITEM", "1"); 
schedule.SetValue("DELIV_DATE", DateTime.Now.AddDays(7).ToString("yyyy-MM-dd")); 
schedule.SetValue("QUANTITY", 10); 

// this was missing as I haven't added the row to the table 
schedules.Insert(schedule); 

rfcFunction.Invoke(dest); 

transaction.Invoke(dest); 

IRfcTable returns = rfcFunction["RETURN"].GetTable(); 
RfcSessionManager.EndContext(dest);