ICON in ALV Zelle anzeigen

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

Re: ICON in ALV Zelle anzeigen

Beitrag von Dyrdek (Specialist / 306 / 30 / 0 ) »
Hab es mal mit zwei Zeilen für COLTEXT und ICON ergänzt.
Bei ICON hab ich abap_true gewählt wie du es in einem vorigen Post verwendet hast, COLTEXT einfach mal TEXT eingegeben.
Zeilenüberschrift bleibt aber 'Id' :/


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.
<ls_fieldcat>-COLTEXT = 'TEXT'.
<ls_fieldcat>-ICON = abap_true.
endloop.
r_grid->set_frontend_fieldcatalog( it_fieldcatalog = lt_fieldcat ).

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,

zu welchem Zeitpunkt passiert das Ganze - poste mal mehr Coding dazu !

Gruss
thanks Jens

Re: ICON in ALV Zelle anzeigen

Beitrag von a-dead-trousers (Top Expert / 4351 / 219 / 1166 ) »
Dyrdek hat geschrieben:Hab es mal mit zwei Zeilen für COLTEXT und ICON ergänzt.
Bei ICON hab ich abap_true gewählt wie du es in einem vorigen Post verwendet hast, COLTEXT einfach mal TEXT eingegeben.
Zeilenüberschrift bleibt aber 'Id' :/
Versuch auch die anderen Feder die jensschladitz erwähnt hat zu verändern, bzw. auch SCRTEXT_L, SCRTEXT_M, SCRTEXT_S.
(Trial & Error sag ich immer)

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 ) »
Ablauf is:
TOP-Include -> DYNPRO MODULE STATUS_9001 (erstellt nur Titel und Button) -> MODULE itab_setzen -> PERFORM itab_setzen -> MODULE display_alv -> PERFORM display_alv

*******************************************************

itab_setzen:
REFRESH itab.

DO 10 TIMES.
ASSIGN COMPONENT sy-index OF STRUCTURE wa_tab TO <fs_wert>.
<fs_wert> = ICON_WS_SHIP.
*MOVE ICON_DUMMY TO <fs_wert>.

ENDDO.

DO 10 TIMES.
APPEND wa_tab TO itab.
ENDDO.

**********************************************************************

display_alv:

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_TEST_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.

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.
<ls_fieldcat>-COLTEXT = 'TEXT'.
<ls_fieldcat>-ICON = abap_true.
endloop.
r_grid->set_frontend_fieldcatalog( it_fieldcatalog = lt_fieldcat ).

Re: ICON in ALV Zelle anzeigen

Beitrag von Dyrdek (Specialist / 306 / 30 / 0 ) »
Was mir grade noch aufgefallen ist, von der Logik her.
Ich gebe dir Tabelle im ALV ja aus und erst danach änder ich die Überschrift oder ? Aber auf der anderen Seite wird der Feldkatalog doch im ALV-Coding erst angelegt oder ? Weshalb ich das danach erst ändern kann.
Korrigiert mich bitte wenn ich hier Denkfehler drinhabe.

Re: ICON in ALV Zelle anzeigen

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

verschiebe den Part mit der Änderung des Fieldcat vor den Aufruf der refresh Methode

... Sorry anders - denn du benutzt ja die CL_GUI_ALV_GRID - und nicht CL_SALV_TABLE daher anders vorgehen
- also vor der Ausgabe der Daten - mit dem FUBA LVC_FIELDCAT_MERGE (oder so) - die interne Tabelle für den Feldcatalog aufbauen
- dann diesen bearbeiten und beim Aufruf der Anzeige der Daten diese interne Tabelle mit dem Fieldcatalog dann mitgeben

Gruss
thanks Jens

Re: ICON in ALV Zelle anzeigen

Beitrag von a-dead-trousers (Top Expert / 4351 / 219 / 1166 ) »
hi!

Normalerweise musst du das REFRESH_TABLE_DISPLAY gar nicht machen.
Aber in deinem Fall, wenn du den Feldkatalog im Programm änderst, musst du das REFRESH_TABLE_DISPLAY danach(!) ausführen.

Vom Ablauf her würde ich dir in DISPLAY_ALV das folgende Vorgehen empfehlen:

Code: Alles auswählen.

if r_grid is not bound.
* Grid erstellen, Feldkatalog ändern.
endif.
if r_grid is bound.
* REFRESH_TABLE_DISPLAY ausführen.
endif.
Da das ALV Grid mittels SET_TABLE_FOR_FIRST_DISPLAY bereits mit der globalen Tabelle ITAB verknüpft ist, muss du nicht ständig bei jedem PAI/PBO die Daten erneut setzen. Ein einfaches REFRESH reicht dann aus. Du musst deine Daten nur in der ITAB verändern und nach dem REFRESH sind die Änderungen im ALV-Grid ersichtlich.

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 ) »
Habs vor die Refresh-Methode gesetzt, hat aber auch nich geklappt leider.


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_TEST_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.

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.
<ls_fieldcat>-COLTEXT = 'TEXT'.
<ls_fieldcat>-ICON = abap_true.
endloop.
r_grid->set_frontend_fieldcatalog( it_fieldcatalog = lt_fieldcat ).

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

Re: ICON in ALV Zelle anzeigen

Beitrag von a-dead-trousers (Top Expert / 4351 / 219 / 1166 ) »
jensschladitz hat geschrieben:... Sorry anders - denn du benutzt ja die CL_GUI_ALV_GRID - und nicht CL_SALV_TABLE daher anders vorgehen
- also vor der Ausgabe der Daten - mit dem FUBA LVC_FIELDCAT_MERGE (oder so) - die interne Tabelle für den Feldcatalog aufbauen
- dann diesen bearbeiten und beim Aufruf der Anzeige der Daten diese interne Tabelle mit dem Fieldcatalog dann mitgeben
Wenn das GET_FRONTEND_FIELDCATALOG und SET_FRONTEND_FIELDCATALOG nicht funktionieren sollte, ist das die Alternativmethode.
Der Feldcatalog wird dann aber bei SET_TABLE_FOR_FIRST_DISPLAY angegeben (statt dem Parameter I_STRUCTURE_NAME)
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 a-dead-trousers (Top Expert / 4351 / 219 / 1166 ) »
Dyrdek hat geschrieben:Habs vor die Refresh-Methode gesetzt, hat aber auch nich geklappt leider.
Vorsicht, ich sehe da in deinem Coding ein einsames ELSE herumschwirren, das da nichts verloren hat.
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 ich probiers gleich mal. Das ELSE ist noch von weiter oben. Tschuldige war schlecht kopiert.
Haben oben nämlich ein IF falls der ALV schon erstellt wurde springt er in ELSE und frischt nur noch auf anstatt immerwieder einen neu zu erstellen.

Re: ICON in ALV Zelle anzeigen

Beitrag von a-dead-trousers (Top Expert / 4351 / 219 / 1166 ) »
Dyrdek hat geschrieben:Ok ich probiers gleich mal. Das ELSE ist noch von weiter oben. Tschuldige war schlecht kopiert.
Haben oben nämlich ein IF falls der ALV schon erstellt wurde springt er in ELSE und frischt nur noch auf anstatt immerwieder einen neu zu erstellen.
Meines Erachtens brauchst du gar keinen ELSE-Zweig.
http://www.abapforum.com/forum/viewtopi ... =15#p70170
Das ALV muss sowieso nach jedem PAI/PBO Lauf aktualisiert werden, weil der Benutzer auf eine Zelle (für das Schiffe versenken?) geklickt hat.
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 ) »
Hey,
Habe es jetzt alles soweit hinbekommen danke nochmal :) Werde meine Lösung hier demnächst mal posten falls jemand diese auch mal benötigt.
Eine Frage habe ich aber noch.
Ich hab einen Leitfaden für ALVs gefunden, darin wird aber nur der "Fullscreen"-ALV erklärt.
Kann mir jemand sagen wie ich diesen ALV dann in einen Container auf meinem Dynpro gezwängt kriege ?

Danke schonmal!

Re: ICON in ALV Zelle anzeigen

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

ein Dynpro anlegen mit einem Custom Container Control, die instanziieren und dann den ALV instanziieren und die Reference auf den Custom Container Control mitgeben dem Parameter I_PARENT

Gruss
thanks Jens

Re: ICON in ALV Zelle anzeigen

Beitrag von Dyrdek (Specialist / 306 / 30 / 0 ) »
Ok, danke. Kannst du das vielleicht noch etwas ausführen wie genau ich das mit dem I_PARENT hinbekomme ?
Mein Quellcode für die Ausgabe sieht momentan so aus.
Habe in einer anderen Form eine Tabelle befüllen lassen und hier ändere ich eine Spaltenüberschrift und gebe das ALV aus.
Den Teil mit dem R_CONTAINER und R_GRID, habe ich aus einem früheren Coding für unser ALV, da habe ich das mit I_PARENT auch wiedergefunden aber das scheint nicht richtig zu sein.

*************************************

FORM ALV_AUSGABE .

CREATE OBJECT R_CONTAINER
EXPORTING
CONTAINER_NAME = 'CONTAINER'.

CREATE OBJECT R_GRID
EXPORTING
I_PARENT = R_CONTAINER.

*** Erstellen von ALV Object über FACTORY-Methode
*** Diese Methode erlaubt Full Screen Grid, Classical list display und Into Screen Container
*** Wir importieren die Objekt-Referenz gr_table und
cl_salv_table=>factory( IMPORTING r_salv_table = gr_table
CHANGING t_table = itab ).

*** Spalten anpassen
DATA: gr_columns TYPE REF TO cl_salv_columns_table.
DATA: gr_column TYPE REF TO cl_salv_column_table.

gr_columns = gr_table->get_columns( ).
gr_column ?= gr_columns->get_column( 'S0' ).
gr_column->set_long_text( 'A' ).
gr_column->set_medium_text( 'A' ).
gr_column->set_short_text( 'A' ).

gr_table->display( ).


ENDFORM. " ALV_AUSGABE


*************************************

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.