gelöst Frage zu set_table_for_first_display bzw TYPE TABLE OF-Defis


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

gelöst Frage zu set_table_for_first_display bzw TYPE TABLE OF-Defis

Beitragvon kkauerau » 11.01.2017, 14:25

Hallo zusammen.

Ich möchte ein ALV anzeigen, in dem Daten aus einer Tabelle angezeigt werden sollen.
Dabei bin ich auf ein seltsames Problem gestoßen: Die iTab akzeptiert der Compiler nur mit dem Zusatz WITH HEADER LINE. :!:
Code: Alles auswählen
DATA: gt_best TYPE TABLE OF zss_best WITH HEADER LINE.

Ohne diesen Zusatz kommt bei den Select-Options die FM: " "GT_BEST" ist eine Tabelle ohne Kopfzeile und besitzt daher keine Komponente mit Namen "MATNR". "

Mit dem Zusatz WITH HEADER LINE fällt aber der ALV auf die Nase und meint, "gt_iTab ist nicht typkompatibel zum formalen Parameter "IT_OUTTAB"."

Wer kann helfen?

Danke!
Zuletzt geändert von kkauerau am 11.01.2017, 14:44, insgesamt 1-mal geändert.
kkauerau
ForumUser
 
Beiträge: 11
Registriert: 11.01.2017, 14:21
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Frage zu set_table_for_first_display bzw TYPE TABLE OF-D

Beitragvon Haubi » 11.01.2017, 14:42

Kannst Du dazu bite mal Dein Coding (zumindest ausschnittsweise) posten? WITH HEADER LINE ist veraltet, Du hast vermutlich bei der Definition der ITab einen Schnitzer drin...
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...
.. ..|. |.|| ||| ..| |.|. .| |. .|. . .| |.. | .... .. ... |.|| ||| ..| |.. ||| |. | |. . . |.. ||. .|.. .| ... ... . ...
Haubi
Expert
 
Beiträge: 566
Registriert: 13.12.2002, 09:52
Wohnort: Braunschweig
Dank erhalten: 16 mal
Ich bin: Entwickler/in

Re: Frage zu set_table_for_first_display bzw TYPE TABLE OF-D

Beitragvon kkauerau » 11.01.2017, 14:45

Die itab bezieht sich auf eine transparente Tabelle:
Code: Alles auswählen
    DATA: gt_best TYPE TABLE OF zss_best WITH HEADER LINE.

Ich hab den ersten Beitrag nochmal angepaßt ..
kkauerau
ForumUser
 
Beiträge: 11
Registriert: 11.01.2017, 14:21
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: Frage zu set_table_for_first_display bzw TYPE TABLE OF-D

Beitragvon Haubi » 11.01.2017, 14:47

Und was für eine Meldung kommt, wenn Du "WITH HEADER LINE" weg lässt? Welchen Typ hat ZSS_BEST? Ist das eine Struktur oder DB-Tabelle?
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...
.. ..|. |.|| ||| ..| |.|. .| |. .|. . .| |.. | .... .. ... |.|| ||| ..| |.. ||| |. | |. . . |.. ||. .|.. .| ... ... . ...
Haubi
Expert
 
Beiträge: 566
Registriert: 13.12.2002, 09:52
Wohnort: Braunschweig
Dank erhalten: 16 mal
Ich bin: Entwickler/in

Re: Frage zu set_table_for_first_display bzw TYPE TABLE OF-D

Beitragvon kkauerau » 11.01.2017, 14:52

Hallo.

Also:
Code: Alles auswählen
DATA: gt_best TYPE TABLE OF zss_best.

Das ist eine normale transp. Tabelle mit 5 DS drinnen.

Erster Zugriff darauf erfolgt via
Code: Alles auswählen
SELECT-OPTIONS:
  so_matnr FOR gt_best-matnr, ....

Wegen dem hab ich die HEADER LINE aufgenommen, denn ohne kommt die FM: " "GT_BEST" ist eine Tabelle ohne Kopfzeile und besitzt daher keine Komponente mit Namen "MATNR". "

Mit dem Zusatz WITH HEADER LINE fällt aber der ALV auf die Nase ...

Ich komme einfach nicht weiter ... :-(
kkauerau
ForumUser
 
Beiträge: 11
Registriert: 11.01.2017, 14:21
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: Frage zu set_table_for_first_display bzw TYPE TABLE OF-D

Beitragvon a-dead-trousers » 11.01.2017, 15:41

Wenn du eine Tabelle mit Kopfzeile hast, musst du beim Aufruf im ALV-Grid die []-Syntax verwenden um auf den Tabelleninhalt zuzugreifen.

gr_grid->set_table_for_first_display( ... CHANGING it_outtab = gt_best[] ... ).
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.07
Basis: 7.40
a-dead-trousers
Top Expert
 
Beiträge: 2536
Registriert: 07.02.2011, 13:40
Dank erhalten: 562 mal
Ich bin: Entwickler/in

Re: Frage zu set_table_for_first_display bzw TYPE TABLE OF-D

Beitragvon kkauerau » 11.01.2017, 15:46

Danke! Jetzt tut's :-)

Noch eine Frage hab ich allerdings:
WITH HEADER LINE ist veraltet

Wie kann man das loswerden?
Ich möchte das nicht drin haben, wenn es nicht unbedingt sein muß ...
kkauerau
ForumUser
 
Beiträge: 11
Registriert: 11.01.2017, 14:21
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: Frage zu set_table_for_first_display bzw TYPE TABLE OF-D

Beitragvon a-dead-trousers » 11.01.2017, 15:57

Code: Alles auswählen
DATA:
  gt_best TYPE TABLE OF zss_best,
  gs_best TYPE zss_best.

SELECT-OPTIONS:
  so_matnr FOR gs_best-matnr.

Ich verwende ja für Report/Selektionsbilder gerne die TABLES-Anweisung da so eine implizite Verknüpfung zur Datenbanktabelle hergestellt wird und so z.B. die Standard-Suchhilfen automatisch eingebunden werden. Das eigentliche Coding liegt dann in einer Klasse oder einem Funktionsbaustein, wo ich mich dann wieder an die "strengere" Syntax halte.
Code: Alles auswählen
TABLES:
  zss_best.

SELECT-OPTIONS:
  so_matnr FOR zss_best-matnr.

START-OF-SELECTION.
  ZCL_ZSS_BEST_REPORT=>EXECUTE( it_matnr = so_matnr[] ).

[] => [] (Leider stellt die Syntax hier im Forum die eckigen Klammern nicht korrekt dar)
Der Parameter IT_MATNR wäre eine TYPE RANGE OF ZSS_BEST.
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.07
Basis: 7.40
a-dead-trousers
Top Expert
 
Beiträge: 2536
Registriert: 07.02.2011, 13:40
Dank erhalten: 562 mal
Ich bin: Entwickler/in

Re: Frage zu set_table_for_first_display bzw TYPE TABLE OF-D

Beitragvon JHM » 11.01.2017, 15:59

kkauerau hat geschrieben:Noch eine Frage hab ich allerdings:
Wie kann man das loswerden?
Ich möchte das nicht drin haben, wenn es nicht unbedingt sein muß ...


Die veraltete Anweisung WITH HEADER LINE definiert so gesehen zwei Variablen: eine interne Tabelle und zusätzlich ein Struktur. Beide Variablen werden dabei über den Namen angesprochen.

Im ABAP hat das zweifelhafte Vorzüge, da man sich einige Zusätze "sparen" kann (z.b. INTO strukture bei LOOP/READ TABLE). Ist aber gleichzeitig Fehleranfällig: CLEAR gt_best. initialisiert nicht die itab, aber die Struktur! Ohne den Zusatz WITH HEADERLINE würde bei der Definition würde aber die interne Tabelle initialisiert.

Du musst eigentlich nur die Definition in zwei Variablen vornehmen und diese dann entsprechend verwenden:

Code: Alles auswählen
DATA: gt_best TYPE TABLE OF zss_best,
      gs_best TYPE zss_best.
 


SelOpts kannst du nicht gegen ITAB-Felder definieren, sondern nur gegen Variablen oder Strukturen. Entsprechend dann FOR gs_best-.
Gruß Hendrik
JHM
Top Expert
 
Beiträge: 1105
Registriert: 15.02.2006, 12:39
Wohnort: Aachen
Dank erhalten: 172 mal

Re: Frage zu set_table_for_first_display bzw TYPE TABLE OF-D

Beitragvon JHM » 11.01.2017, 16:00

doppel Post
Gruß Hendrik
JHM
Top Expert
 
Beiträge: 1105
Registriert: 15.02.2006, 12:39
Wohnort: Aachen
Dank erhalten: 172 mal


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
Default-Beschreibungen abschalten
vor 3 Stunden von ralf.wenzel 0 Antw.
"nur modelliert"
vor 5 Stunden von ralf.wenzel 0 Antw.
gelöst Klassennamen ermitteln
Gestern von ralf.wenzel 3 Antw.
Führende Nullen auffüllen
Gestern von ralf.wenzel 4 Antw.
gelöst Hashed Table als Dict-TYP
vor 2 Tagen von RIG 1 Antw.

  Ähnliche Beiträge beta
type table of noch aktuell?
18.05.2012, 10:27 von JHM 21 Antw.
Type
15.09.2004, 13:22 von babap 5 Antw.
type und like
05.04.2005, 13:31 von ereglam 2 Antw.
...using/importing value(xxx) type c[(n)]???
10.06.2005, 11:32 von ereglam 11 Antw.
Unterschied type und like
13.02.2006, 16:51 von black_adept 4 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

Feedback ...?

Was können wir verbessern? Hinterlasse deine Kontaktdaten, wenn du eine direkte Antwort möchtest.

... Absenden!