Quantcast
Channel: SCN : All Content - SAP GUI
Viewing all articles
Browse latest Browse all 3616

ActiveX Component SAP.Functions with Export Parameter Table of Structure

$
0
0

Hello community,

 

I use a VBA program to connect to an SAP system and to execute a FM. The function module has the following interface:

 

*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(I_RNG_ZSNR) TYPE  /GKV/BP01_TAB_RNG_ZSNR
*"  EXPORTING
*"     VALUE(E_TAB_FKZS) TYPE  /GKV/BP01_TAB_D_FKZS
*"----------------------------------------------------------------------

 

The importing parameter is a table of a structure:

Unbenannt1.JPG

Unbenannt2.JPG

What is the correct way to set the export parameter I_RNG_ZSNR?

 

Here my VBA code:

 

 

Option Explicit

 

Sub Test()

 

  Dim Func As SAPFunctions
  Dim Conn As SAPLogonCtrl.Connection
  Dim f As SAPFunctionsOCX.Function
  Dim X As Object
  Dim row As Object
  Dim Ret As Long
 
  Set Func = CreateObject("SAP.Functions.Unicode")
  If IsObject(Func) Then
    Set Conn = Func.Connection
   
    Conn.Client = "001"
    Conn.User = "BCUSER"
    Conn.Language = "EN"
    Conn.HostName = "NSP"
    Conn.SystemNumber = 0
   
    If Not Conn.Logon(0, False) Then
      Debug.Print "Connection not successful"
    Else
      Debug.Print "Connection successful"
     
      Set f = Func.Add("/GKV/BP01_K_FKZS_MASS_READ")
      If IsObject(f) Then
     
        Set X = f.Exports("I_RNG_ZSNR")
       
        Set row = X.AppendRow
        'Error: Object doesn't support this property or method
        'It not seems to be a table
        row.Cell(1, "SIGN") = "I"
        row.Cell(1, "OPTION") = "EQ"
        row.Cell(1, "LOW") = "10600035"
      
        Ret = f.Call
         
      End If
     
      Conn.Logoff
    End If
 
    Set Func = Nothing
  End If

End Sub

 

 

With COMConnector (CCo) it works perfect:

 

 

Option Explicit


Sub CCoTest()

 

  '-Variables-----------------------------------------------------------
    Dim SAP As CCo.COMNWRFC
    Dim hRFC As Long
    Dim rc As Integer
    Dim hFunc As Long
    Dim hFuncDesc As Long
    Dim hTable As Long
    Dim hRow As Long
    Dim hExpTable As Long
    Dim i, RowCount As Long
    Dim charBuffer As String

 

  Set SAP = CreateObject("COMNWRFC")
  If IsObject(SAP) Then
 
    hRFC = SAP.RFCOPENCONNECTION("ASHOST=NSP, SYSNR=00, " & _
      "CLIENT=001, USER=BCUSER")
    If hRFC Then
       
      hFuncDesc = SAP.RFCGETFUNCTIONDESC(hRFC, "/GKV/BP01_K_FKZS_MASS_READ")
      If hFuncDesc Then
        hFunc = SAP.RFCCREATEFUNCTION(hFuncDesc)
        If hFunc Then
          SAP.RFCGETTABLE hFunc, "I_RNG_ZSNR", hTable
          If hTable Then
            hRow = SAP.RFCAPPENDNEWROW(hTable)
            SAP.RFCSETCHARS hRow, "SIGN", "I"
            SAP.RFCSETCHARS hRow, "OPTION", "EQ"
            SAP.RFCSETCHARS hRow, "LOW", "10600035"
            If SAP.RFCINVOKE(hRFC, hFunc) = RFC_OK Then
              SAP.RFCGETTABLE hFunc, "E_TAB_FKZS", hExpTable
              If hExpTable Then
                SAP.RFCGETROWCOUNT hExpTable, RowCount
                SAP.RFCMOVETOFIRSTROW hExpTable
                For i = 1 To RowCount
                  hRow = SAP.RFCGETCURRENTROW(hExpTable)
                  charBuffer = Space(512)
                  SAP.RFCGETCHARS hRow, "NAME1", charBuffer, 512
                  Debug.Print charBuffer
                  If i < RowCount Then
                     SAP.RFCMOVETONEXTROW hExpTable
                  End If
                Next
              End If
            End If
          End If
          rc = SAP.RFCDESTROYFUNCTION(hFunc)
        End If
      End If
      rc = SAP.RFCCLOSECONNECTION(hRFC)
    End If
    Set SAP = Nothing
 
  End If


End Sub

 

How can I set the export parameter with SAP ActiveX control?

Thanks for tips and hints.

 

Cheers

Stefan


Viewing all articles
Browse latest Browse all 3616

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>