Fieldcat (Tabellenstruktur LVC T FCAT von Klasse CL GUI ALV GRID)
Aus SAP-Wiki
Zur Navigation springenZur Suche springen
Siehe Kategorie:ALV.
Siehe Reporting.
Siehe ALV (ABAP List Viewer).
Siehe Form ALV_FCAT.
Zum Tabellentyp LVC_T_FCAT gehört die Struktur LVC_S_FCAT.
Der Tabellentyp LVC_T_FCAT wird auch beim Funktionsbaustein ALV-Vorlage REUSE_ALV_GRID_DISPLAY_LVC verwendet.
Andere ALV-Typisierungen
Felder
CFIELDNAME
- Referenz Währung für Währungsfelder, damit Nachkommastellen korrekt ausgegeben werden
- ls_fcat-fieldname = 'NETWR'.
- ls_fcat-cfieldname = 'WAERS'.
CHECKBOX
- Ein Feld, was lediglich den Feldinhalt X oder space hat, kann als Checkbox dargestellt werden.
ls_fcat-checkbox = 'X', "Die Spaltenwerte werden als Checkbox darstellt (space/X intern)
CONVEXIT (ALPHA)
- Mit dem Feld CONVEXIT kann man dem Feld einen Konvertierungsexit mitgeben. Das ist z. B. beim Konvertierungsexit "ALPHA" praktisch, wenn ein Feld mit führenden Nullen in der internen Tabelle gespeichert ist, aber man das Feld ohne führende Nullen ausgeben will.
ls_fcat-convexit = 'ALPHA'.
DO_SUM
- Für dieses Feld wird eine Summe gezogen.
- Es macht nur Sinn für Mengen-/Wertfelder
Ls_fcat-do_sum = 'X'.
EDIT
- Manchmal möchte man einzelne Spalten einer ALV-Liste eingabefähig machen. Hier ist das Feld "EDIT" zu verwenden.
- Man sollte jedoch hier vorsichtig sein, da meiner Erfahrung nach nicht immer der aktuelle Werte in der internen Tabelle bezüglich eingabefähiger Spalten gespeichert ist, wenn deren Werte geändert werden.
ls_fcat-edit = 'X'. "Feld ist eingabefähig
F4AVAILABL
- Manchmal kann ein Feld eine F4-Wertehilfe grundsätzlich haben, aber sie wird nicht in der ALV-Liste angezeigt, wenn z. B. die möglichen Werte über Festwerte einer Domäne kommen.
- F4AVAILABL = 'X' erzwingt die Anzeige einer Wertehilfe. Wenn hinter einem Feld allerdings keine sinnvolle Werteliste ist, wird zwar der Button für die Werteliste angezeigt, aber nach einem Klick kommt dann "Keine Eingabehilfe verfügbar".
ls_fcat-f4available = abap_true.
FIELDNAME
- Dieses Feld vom Fieldcat muss zwingend gefüllt sein
- Hier wird der Feldname von der ALV-Ausgabetabelle definiert.
Types: begin of ty_itab, Vbeln type vbak-vbeln, .. Types: end of ty_itab.
Ls_fcat-fieldname = 'VBELN'.
EMPHASIZE
- Die Spalte wird mit farbigem Hintergrund ausgegeben
- Das ist oft sinnvoll um Spalten semantisch zu kennzeichen
- EMPHASIZE greift nuf für Spalten, die das Feld KEY nicht gesetzt haben
- Siehe SAP-Hilfe: Farben von Spalten, Zeilen und Zellen festlegen
- Gut aussehen tun z. B. die Farben 'C300' = beige und 'C500' = grün.
Ls_fcat-emphasize = 'C300'.
Werden einer Reihe von Spalten eine gleiche farbliche Kennzeichnung zugewiesen, ist es sinnvoll eine Konstante zu definieren, um dann schnell alle Spalten gleichermaßen farblich zu ändern.
constants: lc_emphasize_intense type LVC_S_FCAT-emphasize value 'C300'. ls_fcat-fieldname = 'VBELN'. ls_fcat-emphasize = lc_emphasize_intense. ... ls_fcat-fieldname = 'KUNNR'. ls_fcat-emphasize = lc_emphasize_intense.
HOTSPOT
- Das Feld wird unterstrichen dargestellt und ein einfacher Klick auf das Feld löst einen Doppelklick auf das Feld aus.
- Diese Kennzeichnung ist oft für den User eine schöne Kennzeichnung eines Hyperlinks.
- Die Spalte und die Zeile kann im User-Command abgefragt werden, um dann z. B. einen Absprung zur Transaktion VA03 (Kundenauftrag anzeigen) zu programmeieren.
ICON
- Siehe ICON.
- Mit dem Feld "ICON" kann eine Ikone in der Spalte ausgegeben werden. Die passenden Werte, die in diese Spalte gefüllt werden müssen, um eine bestimmte Ikone darzustellen, lassen sich über die Tabelle ICON nachsehen.
ls_fcat-icon = 'X'. "Der Inhalt des Feldes (type ICON-ID) wird als Ikone dargestellt
QFIELDNAME
- Referenz Menge für Mengenfelder, damit z. B. bei ST (Stück) keine Nachkommastellen ausgegeben werden
ls_fcat-fieldname = 'MENGE'. ls_fcat-qfieldname = 'MEINS'.
KEY
- Das Feld wird am linken Rand der ALV-Tabelle ausgegeben vor den Felder, die das KEY-Flag nicht gesetzt haben.
- Das Feld wird blau formatiert (und überschreibt ev. gesetzte Farben in EMPHASIZE
- Wenn die ALV-Tabelle nach rechts gescrollt wird, bleiben die KEY-Felder am linken Rand sichtbar
NO_OUT
- Feld wird in ALV-Tabelle nicht ausgegeben und kann auch vom User nicht eingeblendet werden
- Das macht immer Sinn, wenn ein Feld der ALV-Tabelle ggf. für Datenaufbereitungszwecke benötigt wurde, aber für den User nicht benötigt wird.
OUTPUTLEN
- In aller Regel wird die ALV-Liste bei der Layout-Struktur mit dem Feld "OPTIMIZE" so gestellt, dass die Spaltenbreite minimal ist und sich dann nach dem längsten Feldwert in der Spalte orientiert. Das kann zu sehr schmalen Spalten führen, wo man nicht mehr weiß was in dieser Spalte gespeichert ist.
- Meine Erfahrung ist, dass sobald "OPTIMIZE" eingestellt ist (was in aller Regel zu empfehlen ist), es keinen Feldwert über 10 Zeichen gibt und die Feldlänge vom Feldtyp kleiner/gleich 10 Zeichen ist, es auch nicht möglich ist eine Überschrift über 10 Zeichen einzugeben. Die Überschrift wird dann nach 10 Zeichen abgeschnitten.
ls_fcat-outputlen = 15. "Spaltenbreite (sofern "OPTIMIZE" nicht gesetzt ist)
- Eine Spaltenbreite von mindestens 10 Zeichen kann man durch das Füllen der Felder SCRTEXT_L, SCRTEXT_M, SCRTEXT_S, REPTEXT und SELTEXT erreichen.
REF_FIELD, REF_TABLE und ROLLNAME
- Die beiden Felder REF_FIELD und REF_TABLE typisieren ein Feld
- Aus dem Feld der Tabelle (Datenelement) werden auch die passenden Überschriftfelder gezogen
- Es hat auch den Vorteil, dass bei der F1-Auswahl die passende Beschreibung vom Tabellenfeld angezeigt wird
- Will man das übersteuern, muss man relativ aufwendig die gewünschte Überschrift in den Feldern "SCRTEXT_L", "SCRTEXT_M", "SCRTEXT_S", "REPTEXT" und "SELTEXT" neu definieren. Ich bin nicht sicher welche Felder mindestens davon zu pflegen sind. Die Belegung dieser 5 Feldern hat immer den gewünschten Effekt gezeigt.
Ls_fcat-ref_field = 'VBELN'. Ls_fcat-ref_table = 'VBAK'.
- Alternativ zu der Kombination der Felder REF_FIELD und REF_TABLE kann man auch auf ein Datenelement mit dem Feld ROLLNAME referenzieren. Wenn Tabelle und Feld bekannt sind, sollte man jedoch diese verwenden anstatt des Datenelements. Beim Drücken der F1-Hilfe auf das Feld in der ALV-Liste, wird auch die Tabelle und das Feld angezeigt und bietet somit auch eine schnelle Information für den Entwickler und Berater, woher ein Feld versorgt wird. Ein Argument für ein Datenelement könnte sein, wenn man die Überschrift genau wie im Datenelement definiert übernehmen will.
ls_fcat-rollname = 'VBELN_VL'.
- Es sollten immer die beiden Felder REF_FIELD und REF_TABLE oder das Feld ROLLNAME gefüllt sein im Fieldcat, damit beim ALV-Feld auch eine F1-Hilfe angezeigt wird mit einer Kurzbeschreibung und dem technischen Namen des Feldes der internen Tabelle des entsprechenden Feldes.
SCRTEXT_L, SCRTEXT_M, SCRTEXT_S, REPTEXT und SELTEXT
- Mit dem Felder REPTEXT lässt sich der Überschriftentext neu festlegen, wenn ein ALV-Feld nicht mit den Feldern "REF_FIELD" und "REF_TABLE" typisiert ist und somit keinen Bezug zu einem Data-Dictionary-Element hat. Das hat jedoch mehrere Nachteile. Bei der Auswahl eines Filters in der ALV-Liste hat die Eingabelänge des Feldes immer die Länge 10. Es wird nicht die Länge vom Feld der internen Tabelle dynamisch ermittelt. Das könnte man noch beheben, indem das Feld "OUTPUTLEN" mit der passenden Länge vom Feld versorgt wird. Gravierender allerdings: Es wird bei einer F1-Auswahl auf das Feld nicht die Feldbeschreibung vom Tabellenfeld angezeigt, sondern "Keine Dokumentation verfügbar". Das ist aus Dokumentationsüberlegungen nicht akzeptabel und daher sollte man auf die Typisierung über die Feld "REF_FIELD" und "REF_TABLE" bzw."ROLLNAME" (Datenelementzuweisung) nicht verzichten.
- SAP hat hier noch einen Weg, wenn man ein Feld nicht auf ein Data-Dictionary-Element typisieren will "Mit den Feldern COLTEXT, SELTEXT und TOOLTIP des Feldkatalogs können Sie eigene Texte für die Spalte definieren. Falls Feldbezeichner vom Data Dictionary übernommen wurden, werden diese ignoriert. Diese Felder sind obligatorisch zu füllen, wenn Sie Felder ohne Bezug zum Data Dictionary anzeigen wollen.", siehe SAP-Hilfe.
- Eigene gute Erfahrung habe ich die Überschriften zu überschreiben bei gleichzeitiger Verwendung der FELDER "REF_FIELD" und "REF_TABLE, indem man die gewünschte Überschrift in den Feldern "SCRTEXT_L", "SCRTEXT_M", "SCRTEXT_S" und "REPTEXT" neu definiert. Die Belegung dieser 4 Felder hat immer den gewünschten Effekt gezeigt.
- Oft wird es sinnvoll sein ein eigenes Z-Datenelement anzulegen mit den passenden Beschreibungstexten. Dann spart man sich die Füllung dieser 4 Felder.
ct_fcat = VALUE #( BASE ct_fcat ( fieldname = 'TKNUM' ref_field = 'TKNUM' ref_table = 'ZTABELLE' SCRTEXT_L = 'Shipment Number' SCRTEXT_M = 'Shipment Number' SCRTEXT_S = 'Shipmt No.' "max 10 Zeichen REPTEXT = 'Shipment Number' SELTEXT = 'Shipment Number' ) ).
bzw. als Vorlage
ct_fcat = VALUE #( BASE ct_fcat ( fieldname = ' ' ref_field = ' ' ref_table = ' ' SCRTEXT_L = ' ' SCRTEXT_M = ' ' SCRTEXT_S = ' ' REPTEXT = ' ' SELTEXT = ' ' ) ).
TOOLTIP
- Der Tooltip erscheint als Hoover-Text, wenn man den Cursor über einer ALV-Spaltenüberschrift hat
- Es bietet sich an, um hier besonders bei schmalen Spalten einen erklärenden Text erscheinen zu lassen oder hilfreich für die Berater und Entwickler ist es auch, hier die Tabellenherkunft eines Feldes auszugeben
ls_fcat-tooltip = 'Anlieferungsnummer'.
oder
ls_fcat-tooltip = 'LIKP-VBELN'.
Tabelle LVC_T_FCAT
Feldname | Datenelement | Feldtyp | Länge | Beispiel | Kurzbeschreibung |
ROW_POS | LVC_ROWPOS | INT4 | 10 | Ausgabe Zeile | |
COL_POS | LVC_COLPOS | INT4 | 10 | Spaltennummer | |
FIELDNAME | LVC_FNAME | CHAR | 30 | Feldname | |
TABNAME | LVC_TNAME | CHAR | 30 | Tabellenname | |
CURRENCY | LVC_CURR | CHAR | 5 | Währung | |
CFIELDNAME | LVC_CFNAME | CHAR | 30 | Ref. Währung | |
QUANTITY | LVC_QUAN | CHAR | 3 | Menge | |
QFIELDNAME | LVC_QFNAME | CHAR | 30 | Referenz Menge | |
IFIELDNAME | LVC_FNAME | CHAR | 30 | Feldname | |
ROUND | LVC_ROUND | INT4 | 10 | Rundung | |
EXPONENT | LVC_EXPONT | CHAR | 3 | Exponent | |
KEY | LVC_KEY | CHAR | 1 | Schlüsselfeld | |
KEY_SEL | LVC_KEYSEL | CHAR | 1 | Ausbl.Schlüssel | |
ICON | LVC_ICON | CHAR | 1 | Ikone | |
SYMBOL | LVC_SYMBOL | CHAR | 1 | Symbol | |
CHECKBOX | LVC_CHECKB | CHAR | 1 | Checkbox | |
JUST | LVC_JUST | CHAR | 1 | Ausrichtung | |
LZERO | LVC_LZERO | CHAR | 1 | Führende Nullen | |
NO_SIGN | LVC_NOSIGN | CHAR | 1 | ohne Vorzeichen | |
NO_ZERO | LVC_NOZERO | CHAR | 1 | ohne Nullen | |
NO_CONVEXT | LVC_NOCONV | CHAR | 1 | ohne Konv.Exit | |
EDIT_MASK | LVC_EDTMSK | CHAR | 60 | Editiermaske | |
EMPHASIZE | LVC_EMPHSZ | CHAR | 4 | Spalte hervorh. | |
FIX_COLUMN | LVC_FIXCOL | CHAR | 1 | Spalte fixieren | |
DO_SUM | LVC_DOSUM | CHAR | 1 | Aggregation | |
NO_SUM | LVC_NOSUM | CHAR | 1 | k. Aggregation | |
NO_OUT | LVC_NOOUT | CHAR | 1 | keine Ausgabe | |
TECH | LVC_TECH | CHAR | 1 | Techn. Feld | |
OUTPUTLEN | LVC_OUTLEN | NUMC | 6 | Spaltenbreite | |
CONVEXIT | CONVEXIT | CHAR | 5 | Konvert-Rout. (z. B. 'ALPHA') | |
SELTEXT | LVC_TXT | CHAR | 40 | Bezeichng.(lng) | |
TOOLTIP | LVC_TIP | CHAR | 40 | Tooltip | |
ROLLNAME | LVC_ROLL | CHAR | 30 | Datenelement F1 | |
DATATYPE | DATATYPE_D | CHAR | 4 | Datentyp | |
INTTYPE | INTTYPE | CHAR | 1 | ABAP-Typ | |
INTLEN | INTLEN | NUMC | 6 | Interne_Länge | |
LOWERCASE | LOWERCASE | CHAR | 1 | Kleinbuchstaben | |
REPTEXT | REPTEXT | CHAR | 55 | Überschrift | |
HIER_LEVEL | LVC_HIERL | INT4 | 10 | Techn. Ebene | |
REPREP | LVC_CRPRP | CHAR | 1 | SelektKriterium | |
DOMNAME | DOMNAME | CHAR | 30 | Domäne | |
SP_GROUP | LVC_SPGRP | CHAR | 4 | Gruppenschl. | |
HOTSPOT | LVC_HOTSPT | CHAR | 1 | Hotspot | |
DFIELDNAME | LVCDBGFN | CHAR | 30 | Feldname Gruppe | |
COL_ID | LVC_COLID | INT4 | 10 | Spalten-ID | |
F4AVAILABL | DDF4AVAIL | CHAR | 1 | F4Hilfe vorh. | |
AUTO_VALUE | LVC_AUTO | CHAR | 1 | Wertübernahme | |
CHECKTABLE | TABNAME | CHAR | 30 | Tabellenname | |
VALEXI | VALEXI | CHAR | 1 | Festwerte vorh. | |
WEB_FIELD | LVC_FNAME | CHAR | 30 | Feldname | |
HREF_HNDL | INT4 | INT4 | 10 | Zahl | |
STYLE | LVC_STYLE | RAW | 4 | Style | |
STYLE2 | LVC_STYLE | RAW | 4 | Style | |
STYLE3 | LVC_STYLE | RAW | 4 | Style | |
STYLE4 | LVC_STYLE | RAW | 4 | Style | |
DRDN_HNDL | INT4 | INT4 | 10 | Zahl | |
DRDN_FIELD | LVC_FNAME | CHAR | 30 | Feldname | |
NO_MERGING | CHAR01 | CHAR | 1 | char01 | |
H_FTYPE | LVC_FTYPE | CHAR | 3 | Funktionstyp | |
COL_OPT | LVC_COLOPT | CHAR | 1 | Spaltenoptimierung | |
NO_INIT_CH | CHAR01 | CHAR | 1 | char01 | |
DRDN_ALIAS | CHAR01 | CHAR | 1 | char01 | |
DECFLOAT_STYLE | OUTPUTSTYLE | NUMC | 2 | Ausgabestil | |
PARAMETER5 | INT4 | INT4 | 10 | Zahl | |
PARAMETER6 | INT4 | INT4 | 10 | Zahl | |
PARAMETER7 | INT4 | INT4 | 10 | Zahl | |
PARAMETER8 | INT4 | INT4 | 10 | Zahl | |
PARAMETER9 | INT4 | INT4 | 10 | Zahl | |
REF_FIELD | LVC_RFNAME | CHAR | 30 | Ref.Feldname | |
REF_TABLE | LVC_RTNAME | CHAR | 30 | Referenz Tabn. | |
TXT_FIELD | LVC_FNAME | CHAR | 30 | Feldname | |
ROUNDFIELD | LVC_RNDFN | CHAR | 30 | Rundungsfeld | |
DECIMALS_O | LVC_DECMLS | CHAR | 6 | Dezaimalstellen | |
DECMLFIELD | LVC_DFNAME | CHAR | 30 | DezimalstFeld | |
DD_OUTLEN | LVC_DDLEN | NUMC | 6 | AusgLänge DDIC | |
DECIMALS | DECIMALS | NUMC | 6 | Dezimalstellen | |
COLTEXT | LVC_TXTCOL | CHAR | 40 | Spaltename | |
SCRTEXT_L | SCRTEXT_L | CHAR | 40 | Feldbez. lang | |
SCRTEXT_M | SCRTEXT_M | CHAR | 20 | Feldbez. mittel | |
SCRTEXT_S | SCRTEXT_S | CHAR | 10 | Feldbez. kurz | |
COLDDICTXT | LVC_DDICT | CHAR | 1 | Textbezug | |
SELDDICTXT | LVC_DDICT | CHAR | 1 | Textbezug | |
TIPDDICTXT | LVC_DDICT | CHAR | 1 | Textbezug | |
EDIT | LVC_EDIT | CHAR | 1 | Eingabebereit | |
TECH_COL | LVC_TCOL | INT4 | 10 | Techn. Spalte | |
TECH_FORM | LVC_TFORM | INT4 | 10 | Techn. Form | |
TECH_COMP | LVC_TCOMP | CHAR | 1 | Techn. Komponen | |
HIER_CPOS | LVCHCOLPOS | INT2 | 5 | H-Spaltenpos. | |
H_COL_KEY | TV_ITMNAME | CHAR | 12 | Tree-Item | |
H_SELECT | LVC_SELECT | CHAR | 1 | Selektierbar | |
DD_ROLL | ROLLNAME | CHAR | 30 | Datenelement | |
DRAGDROPID | LVC_DDID | INT4 | 10 | DragDropHandle | |
MAC | CHAR01 | CHAR | 1 | char01 | |
INDX_FIELD | INT4 | INT4 | 10 | Zahl | |
INDX_CFIEL | INT4 | INT4 | 10 | Zahl | |
INDX_QFIEL | INT4 | INT4 | 10 | Zahl | |
INDX_IFIEL | INT4 | INT4 | 10 | Zahl | |
INDX_ROUND | INT4 | INT4 | 10 | Zahl | |
INDX_DECML | INT4 | INT4 | 10 | Zahl | |
GET_STYLE | CHAR01 | CHAR | 1 | char01 | |
MARK | CHAR01 | CHAR | 1 | char01 | |
Web-Links
- www.sapdatasheet.org: Struktur LVC_S_FCAT
- scn.sap.com: ALV fieldcat (EN)
- SAP-Hilfe: Formatierung von Spalteninhalten
Literatur
- SAP List Viewer (ALV): A Practical Guide for ABAP Developers, von Kathi Kones (EN)