on 06-21-2012 8:58 AM
Hi,
I've a problem with BAPI_TRANSACTION_COMMIT after BAPI_SALESORDER_CREATEFROMDAT2.
BAPI_SALESORDER_CREATEFROMDAT2 is working fine.
In the Return-Vars I've a message "Salesorder create Number 9999999'.
The Salesordernumbers are reserved in the system.
But the BAPI_TRANSACTION_COMMIT gives no result back and the Salesorder is not created.
I've read somewhere that the two BAPIs have to be called in one Process, but I don't know how to do this.
Many many thanks in advance for helping.
CODE:
Dim _ecc = RfcDestinationManager.GetDestination(strSAPSystem)
Dim setOrderAPI As IRfcFunction = _ecc.Repository.CreateFunction("BAPI_SALESORDER_CREATEFROMDAT2")
Dim setCommit As IRfcFunction = _ecc.Repository.CreateFunction("BAPI_TRANSACTION_COMMIT")
Dim SAPStrucOrder_Header_In As SAP.Middleware.Connector.IRfcStructure = setOrderAPI.GetStructure("ORDER_HEADER_IN")
SAPStrucOrder_Header_In.SetValue("DOC_TYPE", "ZEDI")
SAPStrucOrder_Header_In.SetValue("SALES_ORG", "0100")
SAPStrucOrder_Header_In.SetValue("DISTR_CHAN", "10")
SAPStrucOrder_Header_In.SetValue("DIVISION", "10")
Dim datLieferdatum As Date
datLieferdatum = strLieferdatum
SAPStrucOrder_Header_In.SetValue("REQ_DATE_H", datLieferdatum)
Dim SAPTableOrder_Partners As SAP.Middleware.Connector.IRfcTable = setOrderAPI.GetTable("ORDER_PARTNERS")
SAPTableOrder_Partners.Append()
SAPTableOrder_Partners.SetValue("PARTN_ROLE", "AG")
SAPTableOrder_Partners.SetValue("PARTN_NUMB", gstrSAPKDNR)
SAPTableOrder_Partners.Append()
SAPTableOrder_Partners.SetValue("PARTN_ROLE", "WE")
SAPTableOrder_Partners.SetValue("PARTN_NUMB", strSAPKunnrWE)
Dim SAPTableOrder_Items_In As SAP.Middleware.Connector.IRfcTable = setOrderAPI.GetTable("ORDER_ITEMS_IN")
Dim SAPTableOrder_Schedule_In As SAP.Middleware.Connector.IRfcTable = setOrderAPI.GetTable("ORDER_SCHEDULES_IN")
lngTmpPosNr = 0
For z4 As Integer = 0 To PosTabelle.lngPosnr.Length - 1
lngTmpPosNr = PosTabelle.lngPosnr(z4) * 10
SAPTableOrder_Items_In.Append()
SAPTableOrder_Items_In.SetValue("ITM_NUMBER", lngTmpPosNr)
SAPTableOrder_Items_In.SetValue("MATERIAL", PosTabelle.strSAPArtNr(z4))
SAPTableOrder_Schedule_In.Append()
SAPTableOrder_Schedule_In.SetValue("ITM_NUMBER", lngTmpPosNr)
SAPTableOrder_Schedule_In.SetValue("REQ_QTY", PosTabelle.lngMenge(z4))
SAPTableOrder_Schedule_In.SetValue("REQ_DATE", datLieferdatum)
Next
setOrderAPI.Invoke(_ecc)
setCommit.Invoke(_ecc)
Dim strVBELN As String
Dim strReturnType As String
Dim strReturnID As String
Dim strReturnNumber As String
Dim strReturnMessage As String
Dim strReturnType2 As String
Dim strReturnID2 As String
Dim strReturnNumber2 As String
Dim strReturnMessage2 As String
Try
strVBELN = setOrderAPI.GetValue("SALESDOCUMENT").ToString
strReturnType = setOrderAPI.GetTable("RETURN").GetString("TYPE")
strReturnID = setOrderAPI.GetTable("RETURN").GetString("ID")
strReturnNumber = setOrderAPI.GetTable("RETURN").GetString("NUMBER")
strReturnMessage = setOrderAPI.GetTable("RETURN").GetString("MESSAGE")
strReturnType2 = setCommit.GetStructure("RETURN").GetString("TYPE")
strReturnID2 = setCommit.GetStructure("RETURN").GetString("ID")
strReturnNumber2 = setCommit.GetStructure("RETURN").GetString("NUMBER")
strReturnMessage2 = setCommit.GetStructure("RETURN").GetString("MESSAGE")
Catch
'nix
End Try
I believe this is accomplished by using the following "wrapper" --
RfcSessionManager.BeginContext(_ecc)
setOrderAPI.Invoke(_ecc)
setCommit.Invoke(_ecc)
RfcSessionManager.EndContext(_ecc)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
I am trying to create sales order thru BAPI_SALESORDER_CREATEFROMDAT2, but I am getting error
E | V4 219 | Sales document was not changed |
Plz help me out where I have missed something. Thanks in advance.
,My Code lines are as below:
Dim _ecc = RfcDestinationManager.GetDestination("ECDCLNT300")
Dim setOrderAPI As IRfcFunction = _ecc.Repository.CreateFunction("BAPI_SALESORDER_CREATEFROMDAT2")
Dim setCommit As IRfcFunction = _ecc.Repository.CreateFunction("BAPI_TRANSACTION_COMMIT")
Dim SAPStrucOrder_Header_In As SAP.Middleware.Connector.IRfcStructure = setOrderAPI.GetStructure("ORDER_HEADER_IN")
SAPStrucOrder_Header_In.SetValue("DOC_TYPE", "ZTSD")
SAPStrucOrder_Header_In.SetValue("SALES_ORG", "2000")
SAPStrucOrder_Header_In.SetValue("DISTR_CHAN", "01")
SAPStrucOrder_Header_In.SetValue("DIVISION", "01")
SAPStrucOrder_Header_In.SetValue("INCOTERMS1", "FTP")
SAPStrucOrder_Header_In.SetValue("PURCH_NO_C", "TKA-T")
SAPStrucOrder_Header_In.SetValue("ORD_REASON", "A01")
Dim datLieferdatum As Date
datLieferdatum = DateTime.Now.Date
'SAPStrucOrder_Header_In.SetValue("REQ_DATE_H", datLieferdatum)
Dim SAPStrucOrder_Header_InX As SAP.Middleware.Connector.IRfcStructure = setOrderAPI.GetStructure("ORDER_HEADER_INX")
SAPStrucOrder_Header_InX.SetValue("UPDATEFLAG", "''")
Dim SAPTableOrder_Partners As SAP.Middleware.Connector.IRfcTable = setOrderAPI.GetTable("ORDER_PARTNERS")
SAPTableOrder_Partners.Append()
SAPTableOrder_Partners.SetValue("PARTN_ROLE", "SH")
SAPTableOrder_Partners.SetValue("PARTN_NUMB", "7000876")
SAPTableOrder_Partners.Append()
SAPTableOrder_Partners.SetValue("PARTN_ROLE", "SP")
SAPTableOrder_Partners.SetValue("PARTN_NUMB", "7000876")
'SAPTableOrder_Partners.Append()
'SAPTableOrder_Partners.SetValue("PARTN_ROLE", "CR")
'SAPTableOrder_Partners.SetValue("PARTN_NUMB", "780013")
Dim SAPTableOrder_Items_In As SAP.Middleware.Connector.IRfcTable = setOrderAPI.GetTable("ORDER_ITEMS_IN")
Dim SAPTableOrder_Schedule_In As SAP.Middleware.Connector.IRfcTable = setOrderAPI.GetTable("ORDER_SCHEDULES_IN")
Dim lngTmpPosNr As Integer = 10
'For z4 As Integer = 0 To PosTabelle.lngPosnr.Length - 1
'lngTmpPosNr = PosTabelle.lngPosnr(z4) * 10
SAPTableOrder_Items_In.Append()
SAPTableOrder_Items_In.SetValue("ITM_NUMBER", "000010")
SAPTableOrder_Items_In.SetValue("MATERIAL", "PSCC50H")
SAPTableOrder_Items_In.SetValue("TARGET_QTY", 2)
SAPTableOrder_Items_In.SetValue("PLANT", "2433")
SAPTableOrder_Items_In.SetValue("PURCH_NO_C", "TKA-T")
SAPTableOrder_Schedule_In.Append()
SAPTableOrder_Schedule_In.SetValue("ITM_NUMBER", "000010")
SAPTableOrder_Schedule_In.SetValue("SCHED_LINE", "0001")
SAPTableOrder_Schedule_In.SetValue("REQ_QTY", "2")
SAPTableOrder_Schedule_In.SetValue("REQ_DATE", datLieferdatum)
'Next
RfcSessionManager.BeginContext(_ecc)
setOrderAPI.Invoke(_ecc)
setCommit.Invoke(_ecc)
RfcSessionManager.EndContext(_ecc)
'setOrderAPI.Invoke(_ecc)
'setCommit.Invoke(_ecc)
Dim strVBELN As String
Dim strReturnType As String
Dim strReturnID As String
Dim strReturnNumber As String
Dim strReturnMessage As String
Dim strReturnType2 As String
Dim strReturnID2 As String
Dim strReturnNumber2 As String
Dim strReturnMessage2 As String
Try
strVBELN = setOrderAPI.GetValue("SALESDOCUMENT").ToString
strReturnType = setOrderAPI.GetTable("RETURN").GetString("TYPE")
strReturnID = setOrderAPI.GetTable("RETURN").GetString("ID")
strReturnNumber = setOrderAPI.GetTable("RETURN").GetString("NUMBER")
strReturnMessage = setOrderAPI.GetTable("RETURN").GetString("MESSAGE")
strReturnType2 = setCommit.GetStructure("RETURN").GetString("TYPE")
strReturnID2 = setCommit.GetStructure("RETURN").GetString("ID")
strReturnNumber2 = setCommit.GetStructure("RETURN").GetString("NUMBER")
strReturnMessage2 = setCommit.GetStructure("RETURN").GetString("MESSAGE")
Catch
'nix
End Try
Hello. I have a question. I get your sample and it worked but why did the transaction class not work? Is that an issue in the connector code? If not then what is the transaction class to be used for?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
84 | |
23 | |
11 | |
9 | |
8 | |
5 | |
5 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.