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)

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

Literatur