Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

SAP VBA interfacing - error: FI/CO interface: Inconsistent FI/CO document header data for updating

Former Member
0 Likes
873

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

1 REPLY 1
Read only

Former Member
0 Likes
476

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.