Fehler bei Assign (Feldsymbol)

Getting started ... Alles für einen gelungenen Start.
13 Beiträge • Seite 1 von 1
13 Beiträge Seite 1 von 1

Fehler bei Assign (Feldsymbol)

Beitrag von Zubasa (ForumUser / 72 / 10 / 1 ) »
Hallo,

ich hoffe mir kann jemand bei meinem Quellcode helfen.
Ich kann leider nicht ganz verstehen, was in meinem Quellcode falsch sein soll. Bin mir fast zu 100% sicher, dass es eigentlich richtig sein müsste.

Problem ist, dass die Anweisung "ASSIGN (text) to <fs>" nicht funktioniert.

Hier mal mein Quellcode. Fehler ist fast ganz unten:

Code: Alles auswählen.

REPORT  Z_TESTTEST.

TYPE-POOLS: abap.

DATA: obj_table2 TYPE REF TO cl_abap_tabledescr,
      obj_struc2 TYPE REF TO cl_abap_structdescr.

DATA: lt_component TYPE abap_component_tab,
      wa_component TYPE abap_componentdescr.

DATA: obj_data2 TYPE REF TO data.

FIELD-SYMBOLS:
      <table2> TYPE ANY TABLE,
      <wa>     type any.


DATA Name_neu TYPE c LENGTH 10 VALUE 'Spalte'.
DATA index_neu TYPE c LENGTH 1.
DATA final TYPE c LENGTH 14.



DO 4 TIMES.
index_neu = sy-index.
CONCATENATE Name_neu index_neu INTO final .

CLEAR wa_component.
wa_component-name = final.
wa_component-type ?= cl_abap_typedescr=>describe_by_name( 'STRING' ).
INSERT wa_component INTO TABLE lt_component.

enddo.


obj_struc2 = cl_abap_structdescr=>create( lt_component ).
CALL METHOD cl_abap_tabledescr=>create
  EXPORTING
    p_line_type  = obj_struc2
  RECEIVING
    p_result     = obj_table2.
REFRESH: lt_component.


CREATE DATA obj_data2 TYPE HANDLE obj_table2.

ASSIGN obj_data2->* TO <table2>.
ASSIGN obj_data2->* TO <wa>.


*** Dieser Teil funktioniert leider nicht
DATA text TYPE string VALUE '<wa>-Spalte1'.
FIELD-SYMBOLS <fs> TYPE any.

ASSIGN (text) to <fs>.

Write <fs>.
Weiß jemand, warum der Assign nicht klappt?

Beste Grüße,
Zubasa

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


Re: Fehler bei Assign (Feldsymbol)

Beitrag von weigo (ForumUser / 45 / 0 / 6 ) »
Hi Zubasa,

so sollte es klappen:

Code: Alles auswählen.

    DATA text TYPE string VALUE '<wa>-Spalte1'.
    FIELD-SYMBOLS <fs> TYPE any.

    ASSIGN text to <fs>.

    Write <fs>.
Gruß
weigo

Re: Fehler bei Assign (Feldsymbol)

Beitrag von Zubasa (ForumUser / 72 / 10 / 1 ) »
Hallo weigo,

danke für deine Antwort.

Ich möchte allerdings nicht mit der variable text arbeiten, sondern einen Inhalt in <wa>-Spalte1 schreiben.
Beispiel

Code: Alles auswählen.

<fs> = 'Hallo'.
insert <wa> into table <itab>. " und in <itab> gibt es jetzt eine Zeile, wo bei Spaltenname "Spalte1" Hallo drinne steht.
Sorry, hätte es vielleicht genauer erklären sollen und hoffe man versteht das Problem jetzt.

Über weitere Vorschläge freue ich mich sehr.

Grüße,
Zubasa

Re: Fehler bei Assign (Feldsymbol)

Beitrag von Zubasa (ForumUser / 72 / 10 / 1 ) »
Hi,

kennt wirklich niemand die Lösung? :cry: :cry:
Ist ziemlich wichtig.

@weigo: Noch eine Idee? :)

Grüße,
Zubasa

Re: Fehler bei Assign (Feldsymbol)

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Mal so ganz ins Blaue ohne ein System zur Hand zu haben.
Hast du das Ganze auch mal versucht, indem du den Variablennamen in Großbuchstaben geschrieben hast?

Code: Alles auswählen.

DATA text TYPE string VALUE '<WA>-SPALTE1'.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Fehler bei Assign (Feldsymbol)

Beitrag von Zubasa (ForumUser / 72 / 10 / 1 ) »
Hallo black_adept,

funktioniert leider auch nicht, bleibt alles wie vorher.

Ich probier schon die ganze Zeit rum, woran es liegen könnte.
Hat jemand noch eine Idee?

Gruß,
Zubasa

Re: Fehler bei Assign (Feldsymbol)

Beitrag von PsychoMantis (ForumUser / 98 / 0 / 0 ) »
Hi,

folgendes sollte eigentlich funktionieren:

Code: Alles auswählen.

data: text type string value 'SPALTE1'.
field-symbols: <fs> type any.

assign component text of structure <ws> to <fs>.

write <fs>.

Re: Fehler bei Assign (Feldsymbol)

Beitrag von weigo (ForumUser / 45 / 0 / 6 ) »
Hi Zubasa,

was PsychoMantis geschrieben hat, sollte eigentlich gehen, aber wenn ich dein Bespiel richtig verstehe, dann wird die Tabelle dynamisch ermittelt, somit weißt du zur Design-Zeit die Spaltennamen nicht.
Oder habe ich das falsch verstanden?

Gruß
weigo

Re: Fehler bei Assign (Feldsymbol)

Beitrag von Zubasa (ForumUser / 72 / 10 / 1 ) »
Hallo PsychoMantis,
Hallo weigo,
folgendes sollte eigentlich funktionieren:
" PsychoMantis

So sehe ich das auch, dass es "eigentlich" funktionieren sollte. Tut es aber leider nicht.
Probiert es bitte auch mal selber aus, damit ihr seht das es wirklich nicht funktioniert und ein Kurzdump kommt.

@weigo:
Vollkommen richtig.
Also bei meinem original Programm steht dann dort auch nicht:
data: text type string value 'SPALTE1'.

Sonder SPALTE1 wird dann auch dynamisch ermittelt, weil ich vorher garnicht weiß, wie viele Spalten ich habe und mit welcher ich wann arbeiten muss.
Ich weiß nur das die Spaltennamen mit "Spalte" anfangen "

Grüße, Zubasa

Re: Fehler bei Assign (Feldsymbol)

Beitrag von PsychoMantis (ForumUser / 98 / 0 / 0 ) »
Was für ein Shortdump kommt denn überhaupt? Vielleicht hilft der bei der Lokalisierung des Problems ja weiter...

Re: Fehler bei Assign (Feldsymbol)

Beitrag von PsychoMantis (ForumUser / 98 / 0 / 0 ) »
Hallo Zubasa,

das Problem liegt nicht am ASSIGN, sondern daran, das Deine Tabelle in Deinem Beispielprogramm leer ist, und <wa> nicht einer Tabellenzeile, sonder der ganzen Tabelle zugewiesen ist. Wenn in der Tabelle eine Zeile vorhanden ist, funktioniert mein Code wie folgt:

Code: Alles auswählen.

REPORT  Z_TESTTEST.

TYPE-POOLS: abap.

DATA: obj_table2 TYPE REF TO cl_abap_tabledescr,
      obj_struc2 TYPE REF TO cl_abap_structdescr.

DATA: lt_component TYPE abap_component_tab,
      wa_component TYPE abap_componentdescr.

DATA: obj_data2 TYPE REF TO data.

FIELD-SYMBOLS:
      <table2> TYPE ANY TABLE,
      <wa>     type any.


DATA Name_neu TYPE c LENGTH 10 VALUE 'SPALTE'.
DATA index_neu TYPE c LENGTH 1.
DATA final TYPE c LENGTH 14.



DO 4 TIMES.
  index_neu = sy-index.
  CONCATENATE Name_neu index_neu INTO final .

  CLEAR wa_component.
  wa_component-name = final.
  wa_component-type ?= cl_abap_typedescr=>describe_by_name( 'STRING' ).
  INSERT wa_component INTO TABLE lt_component.

enddo.


obj_struc2 = cl_abap_structdescr=>create( lt_component ).
CALL METHOD cl_abap_tabledescr=>create
  EXPORTING
    p_line_type = obj_struc2
  RECEIVING
    p_result    = obj_table2.
REFRESH: lt_component.


CREATE DATA obj_data2 TYPE HANDLE obj_table2.

ASSIGN obj_data2->* TO <table2>.

insert initial line into table <table2>.

*** Dieser Teil funktioniert leider nicht
DATA text TYPE string VALUE 'SPALTE1'.
FIELD-SYMBOLS <fs> TYPE any.

loop at <table2> assigning <wa>.

  ASSIGN component text of structure <wa> to <fs>.

  Write <fs>.

endloop.
Gruß,

Re: Fehler bei Assign (Feldsymbol)

Beitrag von weigo (ForumUser / 45 / 0 / 6 ) »
Hi Zubasa,

hier habe ich eine Lösung:

Code: Alles auswählen.

    REPORT  z_testtest.

    TYPE-POOLS: abap.

    DATA: obj_table2 TYPE REF TO cl_abap_tabledescr,
          obj_struc2 TYPE REF TO cl_abap_structdescr.

    DATA: lt_component TYPE abap_component_tab,
          wa_component TYPE abap_componentdescr.

    DATA: obj_data2 TYPE REF TO data.

    FIELD-SYMBOLS:
          <table2> TYPE ANY TABLE,
          <wa>,
          <fs>.

    DATA name_neu TYPE c LENGTH 10 VALUE 'Spalte'.
    DATA index_neu TYPE c LENGTH 1.
    DATA final TYPE c LENGTH 14.

    DO 4 TIMES.
      index_neu = sy-index.
      CONCATENATE name_neu index_neu INTO final .

      CLEAR wa_component.
      wa_component-name = final.
      wa_component-type ?= cl_abap_typedescr=>describe_by_name( 'STRING' ).
      INSERT wa_component INTO TABLE lt_component.

    ENDDO.

    obj_struc2 = cl_abap_structdescr=>create( lt_component ).
    CALL METHOD cl_abap_tabledescr=>create
      EXPORTING
        p_line_type = obj_struc2
      RECEIVING
        p_result    = obj_table2.

    CREATE DATA obj_data2 TYPE HANDLE obj_table2.

    ASSIGN obj_data2->* TO <table2>.

    LOOP AT <table2> ASSIGNING <wa>.
      LOOP AT lt_component INTO wa_component.
        TRANSLATE wa_component-name TO UPPER CASE.
        ASSIGN COMPONENT wa_component-name OF STRUCTURE <wa> TO <fs>.
        IF <fs> IS ASSIGNED.
          WRITE <fs>.
        ENDIF.
      ENDLOOP.
    ENDLOOP.
2x Loop sieht jetzt nicht so gut aus, aber es ist hier ja nur zu Testzwecken.
Im richtigen Code findet sich da sicher eine bessere Lösung.
Zum Testen musst du natürlich im Debugger noch ein paar Werte in <table2> schreiben (via APPEND).

Also ich habe es getestet und es funktioniert.
Du musst vorher also die Tabelle nicht kennen und kannst sie dynamisch abfragen.
Da du die Spalten ja vorher schon in lt_component festgelegt hast, kannst du diese dann auch beim Abfragen der Werte benutzen.

Würde mich über ein Feedback freuen.

Viele Grüße
weigo

Re: Fehler bei Assign (Feldsymbol)

Beitrag von Zubasa (ForumUser / 72 / 10 / 1 ) »
Hallo PsychoMantis und weigo,

vielen vielen Dank für eure Antworten, es klappen beide Lösungen:-).

Und ich habe jetzt sogar noch eine neue Idee bekommen.
Bzw. ist wahrscheinlich am einfachsten.
Ich brauche <wa> nämlich nur um <table2> zu füllen. Und ich dachte, das geht nur über einen Arbeitsbereich.
Also ich hätte dann immer <wa> werte zu gewiesen und dann etwas in die Richtung: Insert <wa> into table <table2>.

Aber so wie es aussieht, kann ich <table2> auch "direkt" befüllen, ohne <wa> zu benutzen.
Darauf bin ich gekommen, als ich eure Lösungen gesehen habe.

Hoffe es stimmt auch alles was ich schreibe, muss jetzt noch ein wenig rumprobieren.
Fakt ist aber, dank euch werde ich das Problem hinbekommen, muss nur noch ein wenig im Coding experementieren.

Vielen Dank für eure Hilfe,
Zubasa

Seite 1 von 1

Vergleichbare Themen

2
Antw.
6948
Views
feldsymbol dump obwohl mit assign zugewiesen
von c oco » 04.04.2012 14:44 • Verfasst in ABAP® für Anfänger
10
Antw.
4418
Views
Fehler bei Dynamische Assign Component
von Anita57 » 19.08.2013 11:54 • Verfasst in ABAP® für Anfänger
1
Antw.
1341
Views
Fehler bei Dynamische Assign Component
von Anita57 » 19.08.2013 11:54 • Verfasst in ABAP® für Anfänger
5
Antw.
6121
Views
Alignment-Fehler bei Feldsymbol-Zuweisung
von baldanders » 29.01.2007 16:56 • Verfasst in ABAP® Core
13
Antw.
4595
Views
Assign
von robin1at » 10.04.2006 10:42 • 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

Dialog-Container mit Toolbar/Status
vor 5 Stunden von DeathAndPain gelöst 22 / 2796
Daten an Tabelle binden
vor 9 Stunden von Lukas Sanders 2 / 875
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 430

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.

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor 5 Stunden von DeathAndPain gelöst 22 / 2796
Daten an Tabelle binden
vor 9 Stunden von Lukas Sanders 2 / 875
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 430

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2467
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9050