Tips & Tricks

 

Warto przeanalizować skrypty zawarte w dostarczonych z produktem skoroszytach przykładowych! WIele z nich zawiera ciekawe technikio pozwalające rozwiązać typowe problemy związane z autoimatyzacją przetwaszania SAP-Excel. 


Uruchamianie dwóch instancji MS Excel, by w jednej móc przetwarzać skrypt, a w drugiej pracować z arkuszami Excela (praca równolegle/ współbieżnie z wykonaniem skryptu Easyinput). 

Standardowo nie jest możliwa praca z MS Excel, gdy jest wykonywane makro lub uruchomiony jest skrypt w add-onie programu Excel. Dzieje się tak, ponieważ różne okna programu MS Excel dzielą wspólny "silnik" przetwarzania (tzw. instancję). Użytkownik może jednak wymusić uruchomienie drugiej, niezależnej instancji MS Excel. Aby to uczynić należy za pomocą prawego przycisku myszy kliknąć ikonę MS Excel na pasku zadań. Pojawi się menu kontekstowe aplikacji Excel. W tym momencie należy nacisnąć przycisk Alt na klawiaturze i go nie zwalniać. Myszką należy kliknąć w ikonę Excel w menu kontekstowym i czekać (cały czas z wciśniętym klawiszem Alt). Po chwili powinno pojawić się wyskakujące okienko z pytaniem, czy użytkownik chce uruchomić dodatkową instancję programu MS Excel. Należy wybrać odpowiedź "tak", co powoduje uruchomienie nowej instancji MS Excel. Zazwyczaj jedna instancja zawiera uruchomiony produkt EasyInput (dostępne opcje w menu wstążki EasyInput), a druga nie (tylko ikona Start EasyInput). Łatwo po tym rozpoznać, z którą instancją mamy do czynienia). 

 

Łączenie więcej niż jednej transakcji w skrypcie.

Przetwarzanie kilku transakcji/ funkcji można łączyć w ramach jednego skryptu EasyInput. Jest to możliwe pod warunkiem, że oba nagrania do połączenia, są tego samego typu (GS, TR, FM lub OD). Wstawienie takich nagrań jednego pod drugim i przydzielenie im tego samego identyfikatora skryptu EasyInput spowoduje wykonanie kolejno dwóch transakcji/ funkcji. Uwaga! By wyżej wymieniona funkcjonalność zadziałała, transakcje dla skryptu TR/ ID nagrania w przypadku skryptu GS/ funkcje dla FM i usługi dla OD muszą mieć inne identyfikatory. Uwaga! Jeśli zależy nam na połączeniu różnych typów skryptów można to osiągnąć za pomocą makr VBA (patrz przykładowe skoroszyty z makrami).

 

Odczytywanie danych z dowolnej tabeli SAP przy wykorzystaniu modułu zdalnego RFC_READ_TABLE.

EasyInput może czytać dane z dowolnej tabeli SAP/ wglądu bazodanowego SAP. Można to osiągnąć poprzez skrypt funkcyjny wykorzystujący moduł funkcyjny RFC_READ_TABLE. W przypadku, gdy użytkownik nie ustawi parametru DELIMITER, EasyInput podzieli zwracane dane na poszczególne pola I wstawi w następujących po sobie kolumnach danych. Zobacz przykład: EI_FM_Ex_READ_ANY_SAP_TABLE.

 

Wykorzystanie pętli i instrukcji wklej w skryptach SAP GUI

W skryptach SAP GUI i transakcyjnych można wykorzystać pętle po liniach skryptu (w przeciwieństwie do pętli po liniach danych realizowanych przez pary poziom/ porządek). Aby takie pętle skryptu były możliwe wprowadzono specjalne instrukcje, które można wprowadzić w miejsce obiektu/ programu. Dodatkowo w skryptach SAP GUI można przejmować dane do bufora. Dlatego dodano specjalną instrukcję pozwalającą skopiować dane z bufora do dowolnego arkusza. Aby korzystać z instrukcji specjalnych zapoznaj się z ich szczegółowym opisem.

 

Wykorzystanie EasyInput we własnych skryptach Visual Basic for Applications (Makrach VBA)

Na potrzeby przetwarzania zewnętrznego przygotowano następujące makra (API), które można wykorzystać we własnych programach VBA:

Makro

Opis

Sub API_BCC_EI_SetScript(ByRef pWorkbook As Workbook, pScript As String)

Ustawia obsługiwany skrypt

 

pScript

ID lub nazwa skryptu do ustawienia

 

 

Function API_BCC_EI_GetScriptName(ByRef pWorkbook As Workbook, Optional ByVal pError As Boolean = True) As String

Pobiera nazwę ustawionego skryptu

 

 

Function API_BCC_EI_GetScriptID(ByRef pWorkbook As Workbook, Optional ByVal pError As Boolean = True) As String

Pobiera ID ustawionego skryptu

 

 

Sub API_BCC_EI_SetRunType(ByRef pWorkbook As Workbook, pRT As String)

Ustawia typ wykonania

 

pRT

Typ wykonania. Możliwe wartości:
TR

TE

TN

AR

AE

AN

 

 

Function API_BCC_EI_GetRunType(ByRef pWorkbook As Workbook) As String

Zwraca ustawiony typ wykonania (TR,TE,TN,AR,AE,AN)

 

 

Sub API_BCC_EI_SetDataSheet(ByRef pWorkbook As Workbook, pDataSheet As String)

Ustawia arkusz z danymi

 

pDataSheet
Nazwa arkusza z danymi

 

 

Function API_BCC_EI_GetDataSheet(ByRef pWorkbook As Workbook) As String

Zwraca ustawiony arkusz danych

 

 

Function API_BCC_EI_RunScript(ByRef pWorkbook As Workbook) As Boolean

Uruchamia skrypt wg bieżących ustawień

Sub API_BCC_EI_ClearLevelOrder(ByRef pWorkbook As Workbook)

Czyści kolumny poziomu/porządku arkusza danych

Sub API_BCC_EI_ClearResultMessages(ByRef pWorkbook As Workbook)

Czyści kolumny komunikatów arkusza danych

Sub API_BCC_EI_ClearDataArea(ByRef pWorkbook As Workbook)

Czyści pole danych

Sub API_BCC_EI_SetConfig(ByRef pWorkbook As Workbook, ByVal pParam As String, ByVal pValue As String)

Ustawia wartość wybranego parametru konfiguracji

Uwaga: Procedura nie sprawdza poprawności parametru. To programista musi zapewnić poprawność parametru.

pParam – określa parameter, który ma zostać ustawiony

pValue – określa wartość parametru

Function API_BCC_EI_GetConfig(ByRef pWorkbook As Workbook, ByVal pParam As String) As String

Pozwala odczytać wybrany parameter konfiguracyjny

pParam – określa parameter, który ma zostać ustawiony

 

Sub API_BCC_EI_SetALO(ByRef pWorkbook As Workbook)

Wypełnia kolumny poziom/porządek na arkuszu danych.

Function API_BCC_EI_getLastDataSheetRow(ByRef pWorkbook As Workbook) As Long

Znajduje ostatni wiersz arkusza danych

Sub API_BCC_EI_SetSAPUser(ByRef pWorkbook As Excel.Workbook, pUser As String)

Ustawia użytkownika SAP do wywołania skryptu

Sub API_BCC_EI_SetSAPPass(ByRef pWorkbook As Excel.Workbook, pPass As String)

Ustawia hasło SAP do wywołania skryptu (hałso będzie pamiętane tak długo, jak to ma miejsce w przypadku podania go recznie - zazwyczaj przez 5 minut. Hasło, może być skasowane kolejnym wywołaniem tej funkcji z pustym ciągiem hasła. 

Przykładowe wartości parametru pParam procedur GetConfig/SetConfig (wszystkie są umieszczone na arkuszu EI_Config w kolumnie A):

          DS_START       - data sheet start row (number >=10)

          DS_END         - data sheet end row (optional, number >=11)

          PREV_DOUBLE    - prevent double posting (X)

          BACKUP_BEFORE  - save backup data sheet before script start (X)

          BACKUP_AFTER   - save backup data sheet after script end (X)

          DEBUG_DET_MESG - debug mode detailed messages (X)

          SKIP_IND       - character used as skip indicator (skipped if put on data sheet, can be left empty)

          SKIP_DELTA     - setting telling that the skip indicator will be used, or all values will be transfered (X)

          WAIT_TIME      - wait time between consecutive transaction call (used sometimes to slow down the EI) (number in ms)

          SUBLEVEL_REQUIRED - setting telling whether the sublevel (level more than 0) is required e.g. for FI documents (X)

          SAP_GUI_USE    - setting telling whether SAP_GUI should be used for the script (needed for some transactions) (X)

          LOOP_BACK      - setting telling that loops over sublevels should be done backwards (useful for some transaction scripts) (X)

          AUTO_LEVEL_ORDER - auto recognition of data lines (about setting of level/order) (X)

          MESSAGE_TYPES_PRESENTED   - message types that should be presented on data sheet (*=ALL, string e.g. AESIW)

          MESSAGE_VALUE_READ_STRING - string to get value from the message back (ID-Nr-Param-Column)

          RESULT_CHECK_STRING       - setting telling how result checking is verified (E|S-Type[-Id][-Nr])

          CONFIG_PASS    - string for config pass (can be left empty)


Uwaga! Jeśli arkusz danych jest widoczny(Visible = True), wtedy podczas wykonania makra RunScript zostanie on aktywowany(pokazany). Jeśli jest ukryty (Visible = False), to aktywacja nie zostanie wykonana.

Uwaga! Aby wywołać dowolne z makr API EasyInput należy utworzyć w VBA tzw. automationobject.

Patrz przykład poniżej pokazujący własne makro użytkownika wykorzystujące API EasyInput:

Public Sub MyEIMacro()

  Dim addIn As COMAddIn

  Dim automationObject As Object

  Dim pWorkbook As Workbook

  Set addIn = Application.COMAddIns("EasyInput")

 ' force add-in start

  addIn.Connect = True

  Set automationObject = addIn.Object

  Set pWorkbook = ActiveWorkbook

 

 ' prepare and run the first script

  Sheets("EI_Data").Range("Y12:AS5000").ClearContents

  automationObject.API_BCC_EI_SetConfig pWorkbook, "DS_START", "10"

  automationObject.API_BCC_EI_ClearResultMessages pWorkbook

  automationObject.API_BCC_EI_ClearLevelOrder pWorkbook

  automationObject.API_BCC_EI_SetScript pWorkbook, "CI"

 

  If automationObject.API_BCC_EI_RunScript(pWorkbook) = True Then

    ' only run second macro if connection successfull

    automationObject.API_BCC_EI_ClearLevelOrder pWorkbook

    automationObject.API_BCC_EI_SetConfig pWorkbook, "DS_START", "12"

    automationObject.API_BCC_EI_SetScript pWorkbook, "CB"

    automationObject.API_BCC_EI_RunScript pWorkbook

  End If

  ' read data from EI_Data worksheet and write result to EI_Example worksheet

  CalculateReport

End Sub

 

Uwaga! Na arkuszu EI_ScriptName można zdefiniować makra użytkownika wywoływane bezpośrednio przed i/lub po wywołaniu skryptu. Pozwala to na podłączenie własnych makr do EasyInput w celu rozszerzenia jego funkcjonalności.

Więcej informacji o EasyInput można znaleźć na forum produktu

 

Wymuszanie uruchomienia dodatku EasyInput

Dodatek EasyInput jest uruchamiany, gdy jest potrzebny (gdy użytkownik przyciśnie przycisk start wstążki EasyInput). Aby wymusić jego uruchomienie (np. przed użyciem w makrach VBA) można wykorzystać komendę:

Application.COMAddIns("EasyInput").Connect = True

 


W przypadku problemów z produktem można skontaktować się z zespołem wsparcia produktu wykorzystując adres e-mail wsparcia EasyInput .