'-Begin-----------------------------------------------------------------

'-Sub ReadTableInFile---------------------------------------------------
Sub ReadTableInFile(TableName, FileName)

  '-Reset the session---------------------------------------------------
  session.findById("wnd[0]/tbar[0]/okcd").text = "/n"
  session.findById("wnd[0]/tbar[0]/btn[0]").press

  '-Open TAC SE16-------------------------------------------------------
  session.findById("wnd[0]/tbar[0]/okcd").text = "/nSE16"
  session.findById("wnd[0]/tbar[0]/btn[0]").press

  '-View table----------------------------------------------------------
  session.findById("wnd[0]/usr/ctxtDATABROWSE-TABLENAME").text = _
    TableName
  session.findById("wnd[0]/tbar[1]/btn[7]").press
  session.findById("wnd[0]/tbar[1]/btn[8]").press

  '-Set display to ALV Grid view----------------------------------------

  '-Open user specific parameters dialog--------------------------------
  '-
  '- Attention: Here is a language specific code
  '-
  '---------------------------------------------------------------------
  Set Menu = session.findById("wnd[0]/mbar")
  Set Einstellungen = Menu.FindByName("Einstellungen", "GuiMenu")
  Set BenutzerPar = Einstellungen.FindByName("Benutzerparameter...", _
    "GuiMenu")
  BenutzerPar.Select()

  '-Set the display-----------------------------------------------------
  Set ALVGridView = session.findById("wnd[1]/usr/tabsG_TABSTRIP/" & _
    "tabp0400/ssubTOOLAREA:SAPLWB_CUSTOMIZING:0400/" & _
    "radRSEUMOD-TBALV_GRID")
  If ALVGridView.Selected = vbFalse Then
    ALVGridView.select()
  End If
  session.findById("wnd[1]/tbar[0]/btn[0]").press

  Set BenutzerPar = Nothing
  Set Einstellungen = Nothing
  Set Menu = Nothing

  '-Get rows and columns------------------------------------------------
  Set table = session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell")
  Rows = table.RowCount() - 1
  Cols = table.ColumnCount() - 1

  '-Write the table to a CSV file---------------------------------------
  Set oFile = CreateObject("Scripting.FileSystemObject")
  If IsObject(oFile) Then
    Set CSVFile = oFile.CreateTextFile(FileName, True)
    If IsObject(CSVFile) Then

      '-Get the title of all columns in the first line------------------
      Set Columns = table.ColumnOrder()
      For j = 0 To Cols
        If j = Cols Then
          CSVFile.Write(CStr(Columns(j)))
        Else
          CSVFile.Write(CStr(Columns(j)) & ";")
        End If
      Next
      CSVFile.WriteLine("")

      For i = 0 To Rows
        For j = 0 To Cols
          If j = Cols Then
            CSVFile.Write(table.GetCellValue(i, CStr(Columns(j))))
          Else
            CSVFile.Write(table.GetCellValue(i, CStr(Columns(j))) & ";")
          End If
        Next

        '-Each 32 lines actualize the grid------------------------------
        If i Mod 32 = 0 Then
          table.SetCurrentCell i, CStr(Columns(0))
        End If

        '-Carriage and return after a line------------------------------
        If i <> Rows Then
          CSVFile.WriteLine("")
        End If

      Next

      CSVFile.Close
    End If
  End If

  Set ALVGridView = Nothing
  Set Columns = Nothing
  Set table = Nothing

End Sub

'-Main------------------------------------------------------------------
If Not IsObject(application) Then
  Set SapGuiAuto = GetObject("SAPGUI")
  Set application = SapGuiAuto.GetScriptingEngine
End If

If Not IsObject(connection) Then
  Set connection = application.Children(0)
End If

If Not IsObject(session) Then
  Set session = connection.Children(0)
End If

'-Read the table SFLIGHT in a file--------------------------------------
ReadTableInFile "SFLIGHT", "C:\\Dummy\\SFlight.csv"

'-End-------------------------------------------------------------------