ICON in ALV Zelle anzeigen

Getting started ... Alles für einen gelungenen Start.
42 Beiträge • Seite 1 von 3 (current) Nächste
42 Beiträge Seite 1 von 3 (current) Nächste

ICON in ALV Zelle anzeigen

Beitrag von Dyrdek (Specialist / 306 / 30 / 0 ) »
Hey,
wir geben auf unsrer Dynpro Oberfläche in einem ALV eine 10x10 Tabelle aus, die Felder haben wir bis jetzt mir '~' gefüllt.
Nun wollen wir diese aber mit ICONs befüllen weil das optisch einfach etwas ansprechender sein soll.
Habe gefunden wie ich ein ICON ausgeben kann aber wenn ich das versuche in meine Zellen zu übertragen wird nur der Code also z.B. '@01@' als Text eingetragen :/
Hat jemand eine Idee ?
Danke schonmal!

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: ICON in ALV Zelle anzeigen

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Sali,

welchen ALV nutzt du und ich glaube im Fieldcatalog kannst du sagen icon = abap_true für das Feld - dann müsste es klappen (in der struktur LVC_S_FCAT)

Gruss
thanks Jens

Re: ICON in ALV Zelle anzeigen

Beitrag von black_adept (Top Expert / 3999 / 110 / 907 ) »
oder das Feld auf den Typ ICON_D referenzieren lassen. Normalerweise erkennt der ALV dann dass er ein ICON darstellen soll und nicht die Zeichenfolge und setzt das von Jens angesprochene Flag automatisch
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: ICON in ALV Zelle anzeigen

Beitrag von Kerstin (Specialist / 203 / 2 / 0 ) »
Hallo,

das Feld selbst kannst Du als Textfeld definieren und dem dann das Icon zuweisen. Definier mal das Feld etwas größer. Damit hatte ich Erfolg.

Gruß
Kerstin

Re: ICON in ALV Zelle anzeigen

Beitrag von Dyrdek (Specialist / 306 / 30 / 0 ) »
Hey, danke erstmal für die Antworten.
Habe das mit der Typreferenz ICON_D auf mein Field Symbol probiert. Da meckert er aber das mein icon (ICON_OKAY) nicht dem Typ meines Field Symbols entspricht.

Ich kenn mich leider noch nich wirklich mit ALV-Typen aus deshalb einfach mal der Code. Hoffe ist nicht zu lang. Was mir nur momentan aufgefallen ist, dass wir keinen Feldkatalog anlegen mussten.
Ich habe in einem Test-Programm noch einen ALV angelegt mit Testkatalog. Der war deutlich einfacher aufgebaut, habe dafür einen Feldkatalog manuell angelegt. Das Problem war das ich den nicht in meinen Container im Screen-Painter packen konnte, sondern das der mir den kompletten Bildschirm überdeckt hat.



CREATE OBJECT R_CONTAINER "Tabellen-container wird erstellt
EXPORTING
* PARENT =
CONTAINER_NAME = 'CONTAINER'"Name
* STYLE =
* LIFETIME = lifetime_default
* REPID =
* DYNNR =
* NO_AUTODEF_PROGID_DYNNR =
* EXCEPTIONS
* CNTL_ERROR = 1
* CNTL_SYSTEM_ERROR = 2
* CREATE_ERROR = 3
* LIFETIME_ERROR = 4
* LIFETIME_DYNPRO_DYNPRO_LINK = 5
* others = 6
.
IF SY-SUBRC <> 0. "Falls ein Fehler auftritt ausgabe Fehlermeldung
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

IF R_GRID IS INITIAL.

CREATE OBJECT R_GRID
EXPORTING
* I_SHELLSTYLE = 0
* I_LIFETIME =
I_PARENT = R_CONTAINER
* I_APPL_EVENTS = space
* I_PARENTDBG =
* I_APPLOGPARENT =
* I_GRAPHICSPARENT =
* I_NAME =
* I_FCAT_COMPLETE = SPACE
* EXCEPTIONS
* ERROR_CNTL_CREATE = 1
* ERROR_CNTL_INIT = 2
* ERROR_CNTL_LINK = 3
* ERROR_DP_CREATE = 4
* others = 5
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CALL METHOD R_GRID->SET_TABLE_FOR_FIRST_DISPLAY "Methode um die Tabelle zur ersten Anzeige zu laden
EXPORTING
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME = 'ZSV_STRUK' "Name der Struktur die zugrunde liegt
* IS_VARIANT =
* I_SAVE =
* I_DEFAULT = 'X'
* IS_LAYOUT =
* IS_PRINT =
* IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
* IR_SALV_ADAPTER =
CHANGING
IT_OUTTAB = ITAB "Tabelle die ausgegeben bzw angezeigt wird
* IT_FIELDCATALOG =
* IT_SORT =
* IT_FILTER =
* EXCEPTIONS
* INVALID_PARAMETER_COMBINATION = 1
* PROGRAM_ERROR = 2
* TOO_MANY_LINES = 3
* others = 4
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ELSE.

CALL METHOD R_GRID->REFRESH_TABLE_DISPLAY "Wenn kein Fehler auftritt wird die Tabelle aufgefrischt
* EXPORTING
* IS_STABLE =
* I_SOFT_REFRESH =
* EXCEPTIONS
* FINISHED = 1
* others = 2
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDIF.
ENDFORM.


FORM EXIT .

CASE ok-code.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.

ENDFORM. " EXIT

Re: ICON in ALV Zelle anzeigen

Beitrag von a-dead-trousers (Top Expert / 4351 / 219 / 1166 ) »
Dyrdek hat geschrieben:Habe das mit der Typreferenz ICON_D auf mein Field Symbol probiert. Da meckert er aber das mein icon (ICON_OKAY) nicht dem Typ meines Field Symbols entspricht.
Da du deine Tabellendeffinition nicht gepostet hast, muss ich jetzt nachfragen:
ICON_SPALTE type ICON_D oder?
Verwendest du die Konstante ICON_OKAY (aus dem Type-Pool ICON bzw. Include >ICON<), den Text 'ICON_OKAY' oder das tatsächliche Icon '@0V@'?
(Funktionieren würde nur ersteres oder letzteres. Den Text müsstest du vorher mit der Tabelle ICON abgleichen um das tatsächliche Icon zu erhalten)
Auf was bezieht sich dein Feldsymbol? Auf die ganze Tabelle, auf die Tabellenzeile oder auf die tatsächliche Spalte?
(Das Coding das diesen Fehler wirft hast du auch unterschlagen)
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: ICON in ALV Zelle anzeigen

Beitrag von Dyrdek (Specialist / 306 / 30 / 0 ) »
Also wir haben eine eigene Struktur angelegt mit 10 Feldern.
In unserem Programm formen wir daraus durch 'append' eine Tabelle. Also wir fügen diese Struktur einfach 10mal untereinander zusammen, dann bekommen wir unsere 10x10 Tabelle.
Unser Field-Symbol nutzen um die einzelnen Zeilen bzw. Zellen zu füllen. Dafür haben wir eine DO-Schleife wie folgt gebaut:

refresh itab.

do 10 times.
ASSIGN COMPONENT sy-index OF STRUCTURE wa_tab to <fs_wert>.
<fs_wert> = '~'.
*MOVE ICON_DUMMY TO <fs_wert>.

ENDDO.

DO 10 TIMES.
APPEND wa_tab to itab.
ENDDO.


Bislang hatten wir in jede Zelle einfach '~' eingefügt, hat auch einwandfrei geklappt.
Den Typ unseres Field-Symbols haben wir zwischenzeitlich auf TYPE ICON_D gesetzt. Haben dann eine neue Struktur erstellt in der wir die einzelnen Felder auch mit TYPE ICON_D belegt haben.
Aber dann kam eine Fehlermeldung das unser Field-Symbol angesprochen wird bevor es assigned wird. Verstehe ich aber nicht da wir nur die Struktur und den Typ geändert haben.

Ja, wir haben die Konstante ICON_OKAY aus dem Type-Pool <ICON> (durch INCLUDE <ICON> im Top-Include). Haben sie sowohl als ICON_OKAY als auch @0V@ angegeben, also haben mal durchgetestet aber hat beides nicht funktioniert bei uns. Kommt immer @0V@ in unserem ALV.


Danke schonmal für die Hilfe bis hierher!

Re: ICON in ALV Zelle anzeigen

Beitrag von a-dead-trousers (Top Expert / 4351 / 219 / 1166 ) »
also so in der Art?

Code: Alles auswählen.

types: 
  begin of tys_line,
    cell01 type icon_d,
    cell02 type icon_d,
    cell03 type icon_d,
    cell04 type icon_d,
    cell05 type icon_d,
    cell06 type icon_d,
    cell07 type icon_d,
    cell08 type icon_d,
    cell09 type icon_d,
    cell10 type icon_d,
  end of tys_line,
  tyt_table type standard table of tys_line with default key.
data: itab type tyt_table.
Die Befüllung würde ich so machen, aber das ist Geschmackssache:

Code: Alles auswählen.

field-symbols: 
  <ls_line> type tys_line,
  <ld_field> type icon_d.
refresh itab.
do 10 times.
  append initial line to itab assigning <ls_line>. "<-- Man braucht keine Workarea und spart dadurch Speicher
  clear sy-subrc.
  while sy-subrc eq 0.
    assign component sy-index of structure <ls_line> to <ld_field>. "<-- Die Anzahl der Durchläufe wird so durch die Spaltenanzahl der Struktur bestimmt
    if sy-subrc eq 0.
      <ld_field> = ICON_OKAY.
    endif.
  endwhile.
enddo.
Nun zum Problem der Anzeige. Sollte der automatisch aufgebaute Feldkatalog nicht funktionieren (ICON = 'X'), bleibt euch keine Wahl als diesen zu modifizieren.

Code: Alles auswählen.

data:
  lt_fieldcat type lvc_t_fcat.
field-symbols:
  <ls_fieldcat> type lvc_s_fcat.
r_grid->get_frontend_fieldcatalog( importing et_fieldcatalog = lt_fieldcat ).
loop at lt_fieldcat assigning <ls_fieldcat>.
  <ls_fieldcat>-icon = abap_true.
endloop.
r_grid->set_frontend_fieldcatalog( it_fieldcatalog = lt_fieldcat ).
lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: ICON in ALV Zelle anzeigen

Beitrag von Dyrdek (Specialist / 306 / 30 / 0 ) »
SUPER! Vielen Dank an alle und an ADT ;) Habs hinbekommen.
Habe jetzt nur das "Problem" das mir als Zeilenüberschrift "Id" angezeigt wird. Aber daran arbeit ich jetzt mal.
Danke nochmal.

Gruß Dominic

Re: ICON in ALV Zelle anzeigen

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Sali,

im Fieldcatalog dazu die Texte - small, medium, long setzen und den DDIC Bezug Flag heraus nehmen - weil die Bezeichnung / Überschrift kommt vom Datenelement ICON_D und dies kannst du im FCAT übersteuern

Gruss
thanks Jens

Re: ICON in ALV Zelle anzeigen

Beitrag von Dyrdek (Specialist / 306 / 30 / 0 ) »
Hmm da habe ich wiedermal das Problem das wir keinen Feldkatalog angelegt haben.
Allgemeine Frage, ich habe ja mal einen ALV gefunden bei dem ich manuell einen Feldkatalog angelegt habe. Den konnte ich aber nicht auf meinen Container im auf der Benutzeroverfläche einschränken sondern der hat das ganze Bild eingenommen. Kennt jemand eine Möglichkeit den zu beschränken ? Oder eben das ich das Problem lösen kann auch wenn ich keinen Feldkatalog manuell angelegt habe ?
Ich suche mal ob ich den ALV mit dem manuellen Feldkatalog wieder finde.

Re: ICON in ALV Zelle anzeigen

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Sali,

verstehe gerade nicht was du da meinst - aber folgendes - du bearbeitest doch deine interne Tabelle LT_FIELDCAT - doret setzt du das Flag ICON = abap_true - richtig ? Nun und bei diesem Loop nimmst du den Flag
COLTEXT = dein Text
SCRTEXT_L = dein Text
SCRTEXT_M = dein Text
SCRTEXT_S = dein Text
COLDDICTXT = abap_false

... es reicht aber mE auch wenn du nur das Feld COLTEXT mit deiner Überschrift setzt

Gruss
thanks Jens

Re: ICON in ALV Zelle anzeigen

Beitrag von a-dead-trousers (Top Expert / 4351 / 219 / 1166 ) »
jensschladitz hat geschrieben: verstehe gerade nicht was du da meinst - aber folgendes - du bearbeitest doch deine interne Tabelle LT_FIELDCAT - doret setzt du das Flag ICON = abap_true - richtig ? Nun und bei diesem Loop nimmst du den Flag
COLTEXT = dein Text
SCRTEXT_L = dein Text
SCRTEXT_M = dein Text
SCRTEXT_S = dein Text
COLDDICTXT = abap_false
... es reicht aber mE auch wenn du nur das Feld COLTEXT mit deiner Überschrift setzt
@Dyrdek: Gemeint ist der dritte Codingteil von meinem Post (Das mit get_frontend_fieldcatalog und set_frontend_fieldcatalog)
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: ICON in ALV Zelle anzeigen

Beitrag von Dyrdek (Specialist / 306 / 30 / 0 ) »
Ok, habe den Code mal genommen und hinter meinen ALV gesetzt. Dachte mir wenn der Feldkatalog im ALV erzeugt wird, muss ich das logischerweise dahinter packen.

Habe den Code mal genommen und bisschen geändert wie ich es jetzt verstanden habe, bzw. hab mal rumprobiert.
Hoffe es sind nich zuu grobe Schnitzer drin.

******* ALV ********

data:
lt_fieldcat type lvc_t_fcat.
field-symbols:
<ls_fieldcat> type lvc_s_fcat.
r_grid->get_frontend_fieldcatalog( importing et_fieldcatalog = lt_fieldcat ).
loop at lt_fieldcat assigning <ls_fieldcat>.
<ls_fieldcat>-colddictxt = abap_false.
endloop.
r_grid->set_frontend_fieldcatalog( it_fieldcatalog = lt_fieldcat ).

Re: ICON in ALV Zelle anzeigen

Beitrag von a-dead-trousers (Top Expert / 4351 / 219 / 1166 ) »
Du musst natürlich auch noch COLTEXT und ICON verändern um das von dir gewünschte Verhalten zu erreichen.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Vergleichbare Themen

6
Antw.
5877
Views
ALV Zelle mit Icon und Feldinhalt
von kagel » 15.09.2008 14:54 • Verfasst in ABAP Objects®
2
Antw.
1098
Views
Zelle in Smartform bedingt anzeigen
von henggou » 10.04.2018 11:32 • Verfasst in ABAP® Core
0
Antw.
1355
Views
Icon in ALv Grid anzeigen
von jondahl11 » 15.09.2006 08:55 • Verfasst in ABAP® für Anfänger
2
Antw.
3217
Views
Web Dynpro ALV: Icon wird nicht als Icon dargestellt
von Thanatos82 » 13.02.2013 10:49 • Verfasst in ABAP® für Anfänger
2
Antw.
2015
Views
ALV - Button in Zelle
von Google » 13.02.2007 09:34 • Verfasst in ABAP® Core

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.