Tabellen verbrauchen sich bei Nutzung

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Bei der Nutzung von Tabellen gibt es in Adobe Forms Besonderheiten, die man wissen muss und die zu berücksichtigen sind.

Probleme

Mehrfache Bindung Tabelle

Ein sehr interessanter Effekt beim Adobe LiveCycle Designer ist, dass man Tabellen im Kontext nicht mehrfach mit verschiedenen Objekten im Adobe LiveCycle Designer binden kann. Intuitiv würde man vermuten, dass man ein Tabellenobjekt im Kontext an mehrere Objekte im Kontext binden kann; dies ist jedoch nicht der Fall. Im generierten Funktionsbaustein von SAP wird offensichtlich nur einmal über eine Tabelle geloopt und nur ein Objekt im Adobe LiveCycle Designer kann diesen Loop verarbeiten. Wird z. B. an zwei Objekte an zwei verschiedenen Stellen im Formular die Bindung an diese Tabelle vorgenommen, so bleibt das zweite Objekt leer.

Möchte man eine Tabelle z. B an 2 Objekte binden, dann muss diese Tabelle auch 2 x in den Kontext hineingezogen werden.

Möchte man ein Feld einer Tabelle mehrfach binden, z. B für die Lieferscheinnummer und einen Barcode mit der LIeferscheinnummer, so muss man die Tabelle mit 2 identischen Feldern für die Lieferscheinnummer füllen. Dann kann das eine Feld mit der LIeferscheinnummer als Nummer ausgegeben und das andere Feld als Barcode.

Darstellung Tabelle auf Masterseite

Es ist auch nicht möglich eine Tabelle auf der Masterseite zu binden. Dies funktioniert nur, wenn das Formular lediglich aus einer Ausgabeseite besteht. Kommt es zu einem Seitenumbruch wird die Tabelle auf der nachfolgenden Seite nicht erneut dargestellt.

Workaround

Speichern Tabelle in STRING-Datentyp

  • Sehr elegant ist es eine Tabelle in eine STRING-Variable zu füllen. Mit der Konstanten "CL_ABAP_CHAR_UTILITIES=>CR_LF" wird in das STRING-Objekt der Zeilenumbruch gefüllt. Hier im Beispiel wird ein Textbaustein ausgelesen mit dem Funktionsbaustein READ_TEXT und die interne Tabelle LT_TLINE gefüllt. Über diese Tabelle wird dann geloopt und die Zeilen WA_LINE-TDLINE ergänzt um die Konstante CL_ABAP_CHAR_UTILITIES=>CR_LF (Wert '%_CR_LF' (Wagenrücklauf und Zeilenvorschub, bzw. Carriage Return und Line Feed)). Dies wird concatenated in die STRING-Variable "str_deliver_text". Diese String-Variable kann dann in den Kontext eingefügt werden und auf diese Variable lassen sich beliebig viele Datenbindungen vornehmen, sowohl im Main als auch auf der Masterseite.
CALL FUNCTION 'READ_TEXT'
     EXPORTING
       id                      = ls_stxh-tdid
       language                = ls_stxh-tdspras
       name                    = ls_stxh-tdname
       object                  = ls_stxh-tdobject
     TABLES
       lines                   = lt_tline.

 loop at lt_tline into wa_line.
   CONCATENATE str_deliver_text wa_line-TDLINE
   into str_deliver_text separated by CL_ABAP_CHAR_UTILITIES=>CR_LF.
 ENDLOOP.

CL ABAP CHAR UTILITIES1.jpg

Hätte man einen String, den man aufspalten möchte mit einer maximalen Breite, kann man den Funktionsbaustein SWA STRING SPLIT verwenden.

Eine Tabellen aus der Schnittstelle mehrfach in Kontext ziehen

  • Problemlos möglich ist es, eine Tabelle aus der Schnittstelle mehrfach in den Kontext zu ziehen. Wird eine Tabelle z. B. an zwei verschiedenen Stellen im MAIN-Bereich des Formulars benötigt, so zieht man das Tabellenobjekt zwei mal in den Kontext und bindet die Objekte im Adobe LiveCycle Designer an die verschiedenen Kontextobjekte, die zwar auf dasselbe Schnittstellenobjekt verweisen, aber im Kontext unterschiedliche Namen haben.

Web-Links