Donnerstag, 23. Oktober 2014

Prozesskette per VBA starten

Wenn man eine Prozesskette starten möchte und dies nicht im Business Warehouse erledigen möchte, kann man dies mit folgenden VBA-Code erledigen.

Private Sub PK_Start()

Dim FUBA_PK As Object                      'Variable für Funktionsbaustein
Dim T_I_Options As Object                  'Variable für rfc_read_table Optionen
Dim T_I_Fields As Object                   'Variable für rfc_read_table Felder
Dim T_E_Data As Object                     'Variable für rfc_read_table Daten
Dim retn As Boolean                        'Variable für Rückgabewert des Funktionsbausteins

'Funktionsbaustein Prozessketten starten
Set FUBA_PK = R3.Add("RSPC_CHAIN_START")
With FUBA_PK
    .exports("I_CHAIN") = "TECHNISCHER_NAME_DER_PROZESSKETTE" 'Auszuführende Prozesskette
End With

'Ausführen des Funktionsbausteins
retn = FUBA_PK.Call

Set T_E_Data = Nothing
Set T_I_Fields = Nothing
Set T_I_Options = Nothing

End Sub


Mittwoch, 22. Oktober 2014

Eigenen Funktionsbaustein in VBA verwenden

Wenn man einen eigenen Funktionsbaustein angelegt hat, kann man diesen mit folgendem VBA-Code verwenden. 

Sub Funktionsbaustein()

'Variablen Definition
Dim MyFunc As Object
Dim E_INSERTED As Object
Dim E_MODIFIED As Object
Dim DATA As Object

Set MyFunc = R3.Add("Z_RSDRI_UPDATE_LCP") 'Name des Funktionsbaustein im SAP BW
Set E_INSERTED = MyFunc.imports("E_INSERTED") 'Name der Insert-Funktion im SAP BW
Set E_MODIFIED = MyFunc.imports("E_MODIFIED") 'Name der Update-Function im SAP BW

Set DATA = MyFunc.tables("I_T_DATA") 'In dieser Tabelle werden die Daten gespeichert, die im Funktionsbaustein unter Imports stehen

'Daten Zuweisung
DATA.Rows.Add 'Neue Datenzeile einfügen
DATA.Value(1, 1) = Tabelle1.Cells(1, 10).Value 'Zuweisung der Zelle aus Excel auf das erste Datenobjekt laut Funktionsbaustein

'Ausführen der Insert und Modify Funktion
Result = MyFunc.CALL

'Rückmeldung an den Benutzer
If Result = True Then
    MsgBox "Eingefgte Sätze: " & E_INSERTED.Value & " Geänderte Sätze: " & E_MODIFIED.Value & " Ignorierte Sätze: " & ignoriert, vbInformation
Else
    MsgBox MyFunc.EXCEPTION 'Fehlermeldung
End If

End Sub