Programy wykonywane w zadaniach aktualizacji czy podczas wywołań funkcji RFC są często trudne do przetestowania i debugowania. Poniżej przedstawiam prostą metodę radzenia sobie z tym problemem.
Często rozszerzenia customer-exit czy BADI w systemach SAP są wykonywane w zadaniu aktualizacji, w update task’u, bez dostępu do serwera prezentacji. Podobna sytuacja występuje podczas przetwarzania wywołań funkcji RFC. Znacznie utrudnia to testowanie implementacji rozszerzeń czy funkcji RFC. Ustawienie break-point’a w kodzie nie powoduje bowiem zatrzymania przetwarzania kodu.
Jedną z możliwość poradzenia sobie z tą trudnością jest włączenie śledzenia aktualizacji. Ta metoda nie rozwiązuje jednak problemu w przypadku funkcji RFC. Proponuję zatem inny sposób.
Na początku kodu rozszerzenia czy własnej funkcji RFC należy dodać kod:
DATA: debug VALUE 'X'. WHILE sy-uname = <nazwa Twojego użytkownika> AND debug = 'X'. ENDWHILE.
Następnie należy uruchomić transakcję w SAP, która wykorzystuje nasze rozszerzenie lub wywołać funkcję RFC z zewnętrznego systemu. Dodany kod spowoduje, że przetwarzanie wejdzie w nieskończoną pętlę.
W celu prześledzenia dalszego przetwarzania należy uruchomić transakcję SM50 (przegląd procesów roboczych). Znajdziemy na niej nasze rozszerzenie po nazwie programu głównego:
Zaznaczenie procesu, który przetwarzana nasze rozszerzenie (tutaj proces nr 14) i wybranie z menu opcji: Program/tryb -> Program -> Śledzenie spowoduje otwarcie nowej sesji z rozszerzeniem w debuggerze. Wystarczy następnie skasować wartość zmiennej debug i można prześledzić działanie rozszerzenia.