ALV Grid

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
3 Beiträge • Seite 1 von 1
3 Beiträge Seite 1 von 1

ALV Grid

Beitrag von lisa (ForumUser / 53 / 8 / 1 ) »
Hi zusammen,

ich habe ALV GRID mit REUSE_ALV_GRID_DISPLAY programmier und habe eine Fehlermeldung "FELDSYMBOL IST NOCH NICHT ZUGEWIESEN" bekommen. Wenn ich die Structur von der Tabelle 'but' aus der DB anlegen
ZB:
DATA: BEGIN OF itab_but OCCURS 18.
INCLUDE STRUCTURE but.
DATA: END OF itab_but.

Dann funktioniert es. Aber wenn ich eine selbst definierte Struktur anlege wie
DATA: BEGIN OF s_but OCCURS 0,
field1(10) TYPE c,
field2(20) TYPE c,
field3(20) TYPE c,
END OF s_but.
Dann bekomme ich die Fehlermeldung "FELDSYMBOL IST NOCH NICHT ZUGEWIESEN" vom dem Unterprogramm _FIELDCAT_INIT

Unten ist mein Code:

Code: Alles auswählen.

DATA: BEGIN OF s_but OCCURS 0,
  field1(10)         TYPE c,
  field2(20)         TYPE c,
  field3(20)         TYPE c,
END OF s_but.

DATA: itab_but LIKE TABLE OF s_but,
      wa_but   LIKE LINE OF itab_but.

START-OF-SELECTION.
*$*$---Staustext lesen...
  PERFORM STATUS_TEXT_LESEN
                      USING SY-TITLE.

  PERFORM _FIELDCAT_INIT
                 USING ALV_FIELDCAT[].

*$*$   Selektion individuell Daten......
  PERFORM DATEN_SELEKTIEREN.

*$*$---Einträge prüfen...
  PERFORM CHECK_ENTRIES
                   TABLES itab_but.
END-OF-SELECTION.

*$*$---Daten per ALV-Verfahren ausgeben....
 PERFORM DATEN_AUSGABE.

FORM _FIELDCAT_INIT
       USING ALV_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
  DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
  CLEAR ls_fieldcat.
  ls_fieldcat-ifieldname   = 'Test'.
  ls_fieldcat-fieldname    = 'field1'.
  ls_fieldcat-col_pos      = 1.
  ls_fieldcat-outputlen    = 12.
  ls_fieldcat-ref_tabname  = 'itab_but'.
  APPEND ls_fieldcat TO alv_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-ifieldname   = 'Test'.
  ls_fieldcat-fieldname    = 'field2'.
  ls_fieldcat-col_pos      = 1.
  ls_fieldcat-outputlen    = 12.
  ls_fieldcat-ref_tabname  = 'itab_but'.
  APPEND ls_fieldcat TO alv_fieldcat.

    CLEAR ls_fieldcat.
  ls_fieldcat-ifieldname   = 'Test'.
  ls_fieldcat-fieldname    = 'field3'.
  ls_fieldcat-col_pos      = 1.
  ls_fieldcat-outputlen    = 12.
  ls_fieldcat-ref_tabname  = 'itab_but'.
  APPEND ls_fieldcat TO alv_fieldcat.
ENDFORM.                               " _FIELDCAT_INIT

FORM DATEN_SELEKTIEREN.
   SELECT field1 field2 field3 FROM but INTO CORRESPONDING FIELDS OF wa_but.
         INSERT wa_but INTO TABLE itab_but.
   ENDSELECT.
ENDFORM.

FORM DATEN_AUSGABE.
  DATA: s_variant TYPE disvariant.
  s_variant-report = sy-repid.
  G_REPID = SY-REPID.
*$*$---ALV-Grid aufrufen....
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            I_BACKGROUND_ID        = 'ALV_BACKGROUND'
            I_CALLBACK_PROGRAM = G_REPID
            IS_LAYOUT                      = ALV_LAYOUT
            IT_FIELDCAT                   = ALV_FIELDCAT[]
            IT_SORT                          = GT_SORT[]
            IT_EVENTS                       = ALV_EVENTS[]
            i_save                               = 'U'
            is_variant                          = s_variant
       TABLES
            T_OUTTAB                        = itab_but.
ENDFORM.                               " DATEN_AUSGABE
Vielen Dank für Eure Hilfe im Voraus.
Lisa

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


Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Ich Tip es liegt an deinem Fieldcat!
und zwar an dieser Zeile

Code: Alles auswählen.

  ls_fieldcat-ifieldname   = 'Test'. 
  ls_fieldcat-fieldname    = 'field1'. 
Alles was zwischen den ' ' steht muss komplet GROSS geschrieben werden.

Füllen Feldkatalog für FB REUSE_ALV_GRID_DISPLAY

Beitrag von Oldman (ForumUser / 1 / 0 / 0 ) »
Statt den Feldkatalog "zu Fuß" zu füllen, nimm den passenden Funktionsbaustein in der Art:

call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = sy-cprog
i_internal_tabname = 'S_BUT'
* I_STRUCTURE_NAME =
* I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = sy-cprog
i_bypassing_buffer = 'X'
* I_BUFFER_ACTIVE =
changing
ct_fieldcat = t_fieldcat
exceptions
inconsistent_interface = 1
program_error = 2
others = 3.

if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.

Im Parameter i_internal_tabname gibst Du deine programminterne Feldstruktur mit, in deinem Beispiel also s_but. Mit i_program_name kennt der FB das rufende Programm und liefert den fertigen Feldkatalog in t_fieldcat zurück, der wie folgt typisiert sein muß ( nur bei Bedarf mit Workarea ):
data: t_fieldcat type slis_t_fieldcat_alv,
wa_fieldcat like line of t_fieldcat.

Seite 1 von 1

Vergleichbare Themen

4
Antw.
7712
Views
ALV Grid Sortierung aktualisieren im grid 1 und grid 2
von c oco » 06.02.2012 10:09 • Verfasst in ABAP Objects®
5
Antw.
7426
Views
2
Antw.
2336
Views
ALV-Grid
von Bitfummler » 15.04.2009 10:37 • Verfasst in ABAP® Core
1
Antw.
4724
Views
ALV Grid
von lisa » 17.09.2008 17:10 • Verfasst in ABAP® für Anfänger
0
Antw.
2272
Views
ALV Grid
von Hutch3 » 05.08.2010 18:24 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Dialogprogramm to Reportprogramm
vor einer Woche von Lukas Sanders 2 / 34466

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.