Group: Forum Members
Posts: 1,
Visits: 2
|
Hi, I am trying to call a transaction (ME32K) in SAP system through a Macro in Excel spread sheet. I provided data in Rows and Columns. Once I run Macro, it is processing only one row instead of all rows until the next row is empty. I attached spread sheet. See the logic below. -------------------------- Dim j As Integer Public Sub add_bdcdata(BdcTable As Object, program As String, dynpro As String, dynbegin As String, fnam As String, fval As String)
Dim vField As Variant j = j + 1 BdcTable.Rows.Add BdcTable.Value(j, "PROGRAM") = program ' Program Name BdcTable.Value(j, "DYNPRO") = dynpro ' Dynpro Number BdcTable.Value(j, "DYNBEGIN") = dynbegin ' X if a screen BdcTable.Value(j, "FNAM") = fnam ' Field Name BdcTable.Value(j, "FVAL") = fval ' Field Value Debug.Print BdcTable.Value(j, "FVAL") End Sub
Public Sub rfc_call_transaction() Dim Functions As Object Dim RfcCallTransaction As Object Dim Messages As Object Dim BdcTable As Object ' Create the Function control (that is, the high-level Functions collection): Set Functions = CreateObject("SAP.Functions") ' Set the rest of Connection object values: Functions.Connection.System = "QA[Quality Assurance]" Functions.Connection.client = "100" Functions.Connection.user = "User1" Functions.Connection.password = "" Functions.Connection.language = "EN" If Functions.Connection.Logon(0, False) <> True Then Exit Sub End If Dim iBOB As Integer Do ' Retrieve the Function object (the Connection object must be set up before Function objects can be created): Set RfcCallTransaction = Functions.Add("RFC_CALL_TRANSACTION")
' Set the export parameters RfcCallTransaction.exports("TRANCODE") = "ME32K" RfcCallTransaction.exports("UPDMODE") = "S" Set BdcTable = RfcCallTransaction.Tables("BDCTABLE")
' Set the tables parameter and add the data for the call transaction add_bdcdata BdcTable, "SAPMM06E", "205", "X", "", "" add_bdcdata BdcTable, "", "", "", "BDC_CURSOR", "RM06E-EVRTN" add_bdcdata BdcTable, "", "", "", "BDC_OKCODE", "=KOPF" add_bdcdata BdcTable, "", "", "", "RM06E-EVRTN", ActiveCell.Offset(iBOB, 0).Value add_bdcdata BdcTable, "SAPMM06E", "201", "X", "", "" add_bdcdata BdcTable, "", "", "", "BDC_CURSOR", "EKKO-KTWRT" add_bdcdata BdcTable, "", "", "", "BDC_OKCODE", "=BU" add_bdcdata BdcTable, "", "", "", "EKKO-EKGRP", ActiveCell.Offset(iBOB, 1).Value add_bdcdata BdcTable, "", "", "", "EKKO-PINCR", "10" add_bdcdata BdcTable, "", "", "", "EKKO-UPINC", "1" add_bdcdata BdcTable, "", "", "", "EKKO-KDATB", ActiveCell.Offset(iBOB, 2).Value add_bdcdata BdcTable, "", "", "", "EKKO-KDATE", ActiveCell.Offset(iBOB, 3).Value add_bdcdata BdcTable, "", "", "", "EKKO-ZTERM", ActiveCell.Offset(iBOB, 4).Value add_bdcdata BdcTable, "", "", "", "EKKO-KTWRT", ActiveCell.Offset(iBOB, 5).Value add_bdcdata BdcTable, "", "", "", "EKKO-ZBD1T", "30" add_bdcdata BdcTable, "", "", "", "EKKO-WKURS", "1.00000" add_bdcdata BdcTable, "", "", "", "EKKO-INCO1", "DES" add_bdcdata BdcTable, "", "", "", "EKKO-INCO2", "SAN DIEG0 CA" add_bdcdata BdcTable, "", "", "", "EKKO-TELF1", ActiveCell.Offset(iBOB, 6).Value add_bdcdata BdcTable, "", "", "", "EKKO-LIFRE", ActiveCell.Offset(iBOB, 7).Value 'End SubCall the function (if the result is false, then display a message): If RfcCallTransaction.Call = True Then Set Messages = RfcCallTransaction.imports("MESSG") MsgBox Messages.Value("MSGTX") Else MsgBox " Call Failed! error: " + GetCustomers.Exception End If iBOB = iBOB + 1 Loop Until IsEmpty(ActiveCell.Offset(iBOB, 0))
Functions.Connection.Logoff End Sub ----------------------------------------- Thank you GuestUser
|