‎2014 May 06 4:48 PM
Hello,
Currently I'm working with excel SAP interfacing. For this I am using VBA to call different BAPI functions.
I have already some interface scripts working, however I have also one which I cannot discover what I'm missing.
The VBA code is to reach BAPI_ACC_DOCUMENT_POST
My error is ---> FI/CO interface: Inconsistent FI/CO document header data for updating
So I'm appealing to you SAP bapi VBA gurus whether you have any ideas how to fix my issue.
I'm attaching below my code for you to review:
Option Explicit
' Declaration for the necessary objects
Dim objBAPICortrol, objConnection, objCreateMaterial, objReturn As Object
Dim objPRFCT, objNTXT, objDTXT As Object
Dim vLastRow, vRows As Integer
Dim objMaterial1, objMaterial2, retMess As Object
Sub Batch()
' Getting the last filled Row in Column
vLastRow = Cells(Rows.Count, "A").End(xlUp).Row
' Setting the necessary variables for R/3 connection
Set objBAPICortrol = CreateObject("SAP.functions")
Set objConnection = objBAPICortrol.Connection
objConnection.System = "SYSTEM NAME"
objConnection.Client = "Client number"
objConnection.user = "USERNAME"
objConnection.Password = "PASSWORD"
objConnection.Language = "EN"
' Establish a connection
If objConnection.logon(0, False) <> False Then
'MsgBox "Connection Established"
End If
On Error Resume Next
' Assign the Parameters
Set objCreateMaterial = objBAPICortrol.Add("BAPI_ACC_DOCUMENT_POST")
Set objMaterial = objCreateMaterial.Exports.Item("DOCUMENTHEADER")
Set objMaterial1 = objCreateMaterial.Tables.Item("ACCOUNTGL")
Set objMaterial2 = objCreateMaterial.Tables.Item("CURRENCYAMOUNT")
'Set Values
objMaterial.Value("USERNAME") = "USERNAME"
objMaterial.Value("HEADER_TXT") = "BAPITEST"
objMaterial.Value("COMP_CODE") = "0001"
objMaterial.Value("PSTNG_DATE") = "20140506"
objMaterial.Value("TRANS_DATE") = "20140506"
objMaterial.Value("DOC_DATE") = "20140506"
objMaterial.Value("FISC_YEAR") = "2014"
objMaterial.Value("DOC_TYPE") = "SA"
objMaterial.Value("REF_DOC_NO") = "BAPITEST"
objMaterial.Value("FIS_PERIOD") = "00"
objMaterial1.Rows.Add
objMaterial1.Value(1, "ITEMNO_ACC") = "1"
objMaterial1.Value(1, "GL_ACCOUNT") = "0007180000"
objMaterial1.Value(1, "ITEM_TEXT") = "BAPITEST1"
objMaterial1.Value(1, "DOC_TYPE") = "SA"
objMaterial1.Value(1, "COMP_CODE") = "0001"
objMaterial1.Value(1, "PROFIT_CTR") = "AZ1111" ---->'profit center is normally having 10CHARS but as there are letters I'm not using zeros at the beginning
objMaterial1.Value(1, "ITEMNO_ACC") = "2"
objMaterial1.Value(1, "GL_ACCOUNT") = "0007180000"
objMaterial1.Value(1, "ITEM_TEXT") = "BAPITEST1"
objMaterial1.Value(1, "DOC_TYPE") = "SA"
objMaterial1.Value(1, "COMP_CODE") = "0001"
objMaterial1.Value(1, "PROFIT_CTR") = "AZ1111"
objMaterial2.Rows.Add
objMaterial2.Value(1, "ITEMNO_ACC") = "1"
objMaterial2.Value(1, "CURRENCY") = "EUR"
objMaterial2.Value(1, "AMT_DOCCUR") = "-1.00"
objMaterial2.Value(1, "ITEMNO_ACC") = "2"
objMaterial2.Value(1, "CURRENCY") = "EUR"
objMaterial2.Value(1, "AMT_DOCCUR") = "1.00"
' Function call
objCreateMaterial.call
Set objReturn = objBAPICortrol.Add("BAPI_TRANSACTION_COMMIT")
objReturn.call
Set retMess = objCreateMaterial.Tables.Item("RETURN")
If retMess Is Nothing Then
MsgBox retMess.Value(1, "MESSAGE")
End If
' Get return parameters & display in excel
Set objReturn = objCreateMaterial.Tables("RETURN")
ActiveSheet.Cells(5, 1) = retMess.Value(2, "MESSAGE")
End Sub
‎2014 May 07 8:11 PM
after some searching I've discovered that once I'm creating next line for accounting document it is not working properly.
When I debug the BAPI in SE37 after inserting new line it is asking for GL account input, however if I run it using VBA and delete the account from the code, the return message is not giving me any error that GL account is missing.
I appreciate any ideas.