SAP Smartforms durchsuchen: Der Funktionsbaustein hilft
Wer sich schon mal mit SAP Smartforms auseinandergesetzt hat, wird schnell bemerkt haben, dass keine "Durchsuchen"-Funktion im Form Builder implementiert ist. Was also tun, wenn Sie eine bestimmte Variable suchen? Alle Knoten manuell durchgehen? In diesem Beitrag erfahren Sie, wie Sie trotz der fehlenden Suchfunktion bestimmen können, wo welche Werte abgeglichen oder gesetzt werden.
Gerade historisch gewachsene Formulare führen oft zu verschachtelten Strukturen und können sogar Knoten mit ABAP-Code beinhalten. Wie ein Variablenwert zustande kommt, ist manchmal schwer zu bestimmen. Ein weiteres Szenario: Sollen zwei Mandanten zusammengeführt werden, müssen oftmals hart gesetzte Werte beispielsweise in den Conditions einzelner Knoten abgeändert werden. Mithilfe der Funktionsbausteine können Sie sich eine aufwändige Suche sparen.
Hinter jedem Smartform verbirgt sich ein Funktionsbaustein
Sobald Sie ein Smartform aktivieren, wird ein Funktionsbaustein generiert. Über diesen Funktionsbaustein können Sie später die in der Schnittstelle definierten Parameter befüllen und das Formular drucken.
Hier liegt im Grunde schon der Schlüssel zu unserem Suchproblem, denn die Struktur des Bausteins ist analog zu der des Baumes im Form Builder. Mithilfe von Kommentaren, Function-Calls und Form-Routine-Aufrufen können Sie sich später über die Namen der Knoten im Baum orientieren und so Ihr Smartform durchsuchen.
Tipp: Die “Bedeutung” eines Knotens wird nicht in den Funktionsbaustein übernommen. Einzig über das “Text”-Attribut eines Knotens lässt sich dieser auch im Baustein finden. Eine semantische Anpassung dieses Attributs ist deshalb in den meisten Fällen sinnvoller.
Smartforms durchsuchen: So gelangen Sie vom Form Builder in den Funktionsbaustein
Haben Sie Ihr Smartform im Form Builder aufgerufen (Transaktion SMARTFORMS), gelangen Sie folgendermaßen in den zugeordneten Funktionsbaustein:
Schritt 1: F8
Drücken Sie die Taste F8 (Testen), um in den Function Builder zu gelangen. Hier ist auch schon der korrekte Baustein eingetragen.
Schritt 2: F7
Drücken Sie dann F7 (Anzeigen), gelangen Sie in den Ansichtsmodus.
Schritt 3: Strg + Umsch + F5
Um auf alle Dateien, die im Zusammenhang mit dem Baustein stehen, zugreifen zu können, drücken Sie die Tastenkombination Strg + Umsch + F5 (Objektliste anzeigen).
Im Baum rufen Sie nun mit einem Rechtsklick auf den Root-Knoten im Objektbaum „Anzeigen > Rahmenprogramm” auf und navigieren per Doppelklick auf den untersten INCLUDE. Hier finden Sie den generierten Code Ihres Smartforms. Wenn Sie häufiger Smartforms durchsuchen möchten, so empfiehlt es sich, direkt auf dem Root-Knoten des Funktionsbausteins nach der gewünschten Variablen/Bezeichnung zu suchen.
Smartforms durchsuchen: Den Funktionsbaustein richtig lesen
Im geöffneten INCLUDE können Sie nun nach beliebigen Variablen und den Namen fast aller Knoten, die sie im Smartform verwenden, suchen. Alternativ- und Kommandoknoten lassen sich leider nicht ganz so einfach finden. Bei Alternativknoten können Sie jedoch nach beteiligten Variablen oder Werten suchen, die in IF-Bedingungen auftauchen. Fenster- und Code-Knoten haben folgende Repräsentation im generierten Funktionsbaustein:
*----------------------------------------------------------------
* FORM %WI1
* NODE NAME_IHRES_KNOTENS
*----------------------------------------------------------------
Adressen und viele andere Knotenarten können als Parameter in Funktionsaufrufen gefunden werden:
CALL FUNCTION 'SSFCOMP_WRITE_ADDRESS'
EXPORTING NAME = '%NAME_IHRES_ADRESSKNOTENS'
ADRCONTROL = %ADDRPAR
EXCEPTIONS NON_MAIN_OVERFLOW = 1
OTHERS = 2.
Textknoten sind in Form-Routine-Aufrufen zu finden:
PERFORM %WRITE_TEXT USING '%NAME_IHRES_TEXTKNOTENS' SPACE SPACE 'P' SPACE %INPUTFIELDS %TEXTAREA.
Wenn Sie nun im Code-Umfeld der gesuchten Variable schauen, werden Sie sehr schnell erkennen, wo Ihr Knoten einzuordnen ist. Die wesentliche Erkenntnis ist hier, dass der Code regelmäßig sequentiell wie ein vollständig ausgeklappter Form-Builder-Baum aufgebaut ist. Wenn Sie dieselbe Fenster-Instanz auf mehreren Seiten verwenden, werden die Fenster nicht mehrmals im Code abgebildet – eine Einordnung über den Ursprung ist dennoch schnell möglich. Et voilà: So können Sie Ihr Smartform durchsuchen.
Fazit
Wenn die Programmoberflächen in SAP manche Funktionen nicht bieten, lässt sich behelfsmäßig, wie hier bei der Smartforms-Suche, einiges mit ABAP bewerkstelligen. Mit Erfahrung können Smartforms-Formulare so zeitoptimiert angepasst oder erweitert werden. Planen Sie jedoch, Ihr Formular auch in den nächsten Jahren noch weiterzunutzen, ist ein Umstieg auf Adobe Forms oft wirtschaftlicher. Mit der neuesten Formulartechnologie kommen Sie neben der wesentlich besseren Wartbarkeit auch in den Genuss vieler weiterer Vorteile und Features. ABAP-Code in verschachtelten Bäumen der Formulars werden Sie hier nicht finden; eine klare Trennung von Layout und Datenbeschaffung ist gegeben. Bei der Verwendung von Adobe Forms werden Sie mit der hier beschriebene Problematik also nicht konfrontiert.
Haben Sie Fragen zum Funktionsbaustein, Smartforms oder Adobe Forms? Hinterlassen Sie mir gerne einen Kommentar oder schreiben Sie uns per E-Mail. Ich freue mich immer, wenn ich weiterhelfen kann.