type incompatible

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

type incompatible

Beitrag von Spookykid (Specialist / 140 / 28 / 0 ) »
Hallo,

wieso kann ich das Feldsymbol nicht assignen? Wie ist die richtige Syntax? Ich habe mal wieder Tomaten auf den Augen.
type_incompatible.jpg

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


Re: type incompatible

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
hi!

lt_column ist eine TABELLE und <column> ist eine ZEILE, dass sollte hoffentlich alles sagen ;)

Probiers mal mit

Code: Alles auswählen.

read table lt_column assigning <column> index 1.
oder

Code: Alles auswählen.

loop at table lt_column assigning <column>.
...
endloop.
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: type incompatible

Beitrag von black_adept (Top Expert / 4103 / 128 / 945 ) »
/*Klusscheißermodus an*/
ADT hat geschrieben:lt_column ist eine TABELLE und <column> ist eine ZEILE, dass sollte hoffentlich alles sagen
Für diesen speziellen Fall ist die Aussage zwar richtig ( lt_column type table of dbtab ), da dbtab ein simples Datenelement ist, aber allgmein stimmt deine implizierte Aussage nur für den Fall, dass der Typ der Tabelle tatsächlich von ihrem Zeilentyp abweicht.
/*Klusscheißermodus aus*/
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: type incompatible

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
black_adept hat geschrieben: Für diesen speziellen Fall ist die Aussage zwar richtig ( lt_column type table of dbtab ), da dbtab ein simples Datenelement ist, aber allgmein stimmt deine implizierte Aussage nur für den Fall, dass der Typ der Tabelle tatsächlich von ihrem Zeilentyp abweicht.
Obwohl ich glaub dass das wird hier mal wieder zu einem Flamewar wird muss ich nochmals etwas richtigstellen:
Eine Zuweisung einer Tabelle (TABLE OF) mittels ASSIGN an ein Feldsymbol welches eine Zeile (LIKE LINE OF) darstellt wird NIE funktionieren. Auch wenn der Zeilentyp übereinstimmt. Das einzige was funktionieren würde, wäre wenn das Feldymbol den generischen Typ ANY oder TABLE hat.
...
Ich hab mir deine Aussag jetzt sicher zehn Minuten durchüberlegt und mittlerweile weiß ich nicht mal was du damit aussagen möchtest. Entweder ist es mir zu hoch, oder du hast (jetzt bitte nicht böse sein) nicht lange genug darüber nachgedacht.
Wie soll der der "Typ der Tabelle tatsächlich von ihrem Zeilentyp abweichen" ?
Das Einzige was mir dazu einfällt ist eine Tabelle TYPE STANDARD TABLE OF REF TO DATA wo du beliebige Datensätze speichern kannst, aber dann ist der Zeilentyp ja auch eigentlich immer REF TO DATA. Also ich kenn mich nicht mehr aus :?
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: type incompatible

Beitrag von black_adept (Top Expert / 4103 / 128 / 945 ) »
delete
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: type incompatible

Beitrag von Spookykid (Specialist / 140 / 28 / 0 ) »
Das einzige was funktionieren würde, wäre wenn das Feldymbol den generischen Typ ANY oder TABLE hat.
Dann besteht aber das Problem, dass das Feldsymbol die eigene Struktur nicht kennt und nicht über die Felder ansprechbar ist.

Sorry, ich habe irgendwie angenommen - kommt mir jetzt auch komisch vor - dass es bei dem Zuweisen von Referenzen an Feldsymbole egal ist, ob ich

assign itab to <fs>
oder
loop itab assigning <fs>
verwende.
Kannte bisher nur die loop Variante.

Re: type incompatible

Beitrag von Spookykid (Specialist / 140 / 28 / 0 ) »
Ich möchte doch einfach nur eine interne Tabelle befüllen (ABAP OO).

Code: Alles auswählen.

method check_fields.

    data:ls_components like line of components,
         lt_column type table of dbtab,
         ls_langu type boolean,
         ls_column type lt_column.
  
    loop at components into ls_components.

*Dynamisches sortieren der result Tabelle

*Sprachfeld als letztes sortieren.
      if ls_components-name <> 'LANGU'.
        ls_column-tname = ls_components-name.
        append ls_column to lt_column.
        clear ls_column.
      elseif ls_components-name = 'LANGU'.
        ls_langu = abap_true.
      endif.


      if ls_langu = abap_true.
        ls_column-tname = 'LANGU'.
        append ls_column to lt_column.
        clear ls_column.
      endif.

    endloop.


  endmethod.                    "check_fields

The data object "LS_COLUMN" has no structure and therefore no component

Re: type incompatible

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
Mom, das ist dein Problem?

Mach statt

Code: Alles auswählen.

LS_COLUMN type LT_COLUMN
einfach

Code: Alles auswählen.

LS_COLUMN like line of LT_COLUMN
und dann weist du direkt mit

Code: Alles auswählen.

LS_COLUMN = LS_COMPONENT-NAME
die Spaltennamen zu.
Zuletzt geändert von a-dead-trousers am 28.06.2011 14:08, insgesamt 1-mal geändert.
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: type incompatible

Beitrag von black_adept (Top Expert / 4103 / 128 / 945 ) »
@ADT
Mea Culpa - du hast recht mit deiner Annahme, dass ich da nicht lang genug drüber nachgedacht habe.
Theoretisch sollte das Konstrukt zwar möglich sein - aber mir fällt auf die Schnelle auch nicht ein, ob diese Art der Selbstrekursion überhaupt in üblichen Programmiersprachen (also auch ABAP) abbildbar ist.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: type incompatible

Beitrag von Spookykid (Specialist / 140 / 28 / 0 ) »
a-dead-trousers hat geschrieben:Mom, das ist dein Problem?

Mach statt

Code: Alles auswählen.

LS_COLUMN type LT_COLUMN
einfach

Code: Alles auswählen.

LS_COLUMN like line of LT_COLUMN

same problem...

ls_column has no structure.

Re: type incompatible

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
Okay! Zurück zum Anfang: Was soll in LT_COLUMN gespeichert werden und vorallem wie?
Weil DBTAB ist ein CHAR-Feld von der Länge 5 und HAT KEINE STRUKTUR.
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: type incompatible

Beitrag von Spookykid (Specialist / 140 / 28 / 0 ) »
jetzt blick ich gar nix mehr. wie kann ich einer Zeile oder Work-Area.

über LS_COLUMN = LS_COMPONENT-NAME

etwas zuweisen?

ls_column hat ja ebenfalls mehre Spalten. Woher will ABAP wissen, in welche Spalte von ls_column die Info geschrieben werden soll?

Re: type incompatible

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
DBTAB ist ein CHAR-Feld von der Länge 5 und HAT KEINE STRUKTUR!!!!!!!!
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: type incompatible

Beitrag von Spookykid (Specialist / 140 / 28 / 0 ) »
a-dead-trousers hat geschrieben:DBTAB ist ein CHAR-Feld von der Länge 5 und HAT KEINE STRUKTUR!!!!!!!!

Ach Mist, so wird nen Schuh draus.

Ich habe in einer anderen Methode den TYP

Code: Alles auswählen.

  types: begin of dbtab,
           tname type tabname,
           cols type c length 2048,
           langu type ddlanguflg,
           end of dbtab.
deklariert und dachte, ich könnte den Typ in einer anderen Methode ebenfalls ansprechen, er hat ja dbtab auch erkannt. leider nur den Falschen.

Wie kann ich den ein Typ für alle Methoden in einer Klasse verfügbar machen?

So etwas wie class-type gibt es ja im definitions-teil nicht.

Re: type incompatible

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
Dazu gibts den Karteireiter "Typen" in der SE24 zu jeder Klasse. Hier kannst du einfache Datentyp die für die Klasse gelten sollen definieren. Und das ganze auch vererbbar, also "private", "protected" und "public". Wenn du aber einen Strukturtyp anlegen willst musst du das im jeweilgen Bereich (Menü->Springen->Abschnitte) der Klasse händisch, so wie du es oben bereits im Codeabschnitt definiert hast, eintragen. Dann taucht auch in dem Karteireiter der Datentyp mit einer grauen Hinterlegung auf.

Und nenn den Typ Bitte nicht so wie einen Datentyp im DDIC :P

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

Vergleichbare Themen

9
Antw.
1028
Views
Type "REF TO" is incompatible with type "REF TO ..."
von ewx » 02.02.2022 17:29 • Verfasst in ABAP® Core
4
Antw.
862
Views
Type aus Type ermitteln
von akosch » 13.02.2023 14:03 • Verfasst in ABAP® für Anfänger
2
Antw.
1856
Views
type und like
von Gast » 05.04.2005 13:50 • Verfasst in ABAP® für Anfänger
4
Antw.
2588
Views
Type oder Like
von kostonstyle » 16.07.2007 09:47 • Verfasst in ABAP® für Anfänger
3
Antw.
11997
Views
TYPE-POOLS
von bohne » 21.12.2006 21:52 • Verfasst in ABAP® für Anfänger

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.

Unbeantwortete Forenbeiträge

SD_PRINT_TERMS_OF_PAYMENT
vor einer Woche von Manfred K. 1 / 2236
BUSOBJEKT zu CMIS PHIO ermitteln
vor 4 Wochen von snooga87 1 / 4055