tabellen aktualiesieren

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

tabellen aktualiesieren

Beitrag von madel ( / / 0 / 3 ) »
Hallo.

Kann mir jemand vielleicht bei meinem Problem helfen?
Hoffe mal schon :D .

Folgendes:
ich hab 2 interne Tabellen. Die eine bekommt Daten sobald sich in meinem ALV Grid Werte ändern. In dieser Tabelle stehen dann die Daten der Listenzeile (row_id) und der Spaltenname (fieldname) und die geänderten Werte (value).
So nun möchte ich in meine 2. Tabelle (ganz andere Struktur) die aktualiesierten Werte schreiben. Weiß aber nicht wie ich dem Programm klar machen soll, dass der Spaltenname der 1. Tabelle die Felder sind der 2. Tabelle. Muss ja genau den Wert ändern!

Hoff mal mir hilft da jemand.

Gruß

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


Beitrag von black_adept (Top Expert / 4158 / 136 / 959 ) »
F1 zu Befehl ASSIGN (feldname) TO <feldsymbol>.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von madel ( / / 0 / 3 ) »
Ich hab mir das jetzt mal durchgelesen, weiß aber noch nicht richtig was ich damit anfangen soll.

Bin noch nicht lang am ABAP programmieren :( .

Heißt das, dass ich dem Feldsymbol den Spaltenname meiner ersten Tabelle zuordnen soll?

Ein Versuch:

Code: Alles auswählen.

field-symbols <fs> type any.

Data: t_1 type lvc_t_modi,
      t_2 type daser.

assign t_1 to <fs>.
<fs> = 'Fieldname'

Gruß

Beitrag von black_adept (Top Expert / 4158 / 136 / 959 ) »
Hi,

ich mach dir das mal an einem Beispiel klar.

Feldname = MATNR

Struktur mit zu änderndem Feld. STRUC ( enthält u.a. das Feld MATNR : Also STRUC-MATNR ).

Code: Alles auswählen.

Field-Symbols: <fs>.

ASSIGN (feldname) to <fs>.
Jetzt würde versucht das Feldsymbol "<fs>" auf die Variable "MATNR" zeigen zu lassen.

Was du brauchst ist aber etwas mehr. Es müsste dann etwa so aussehen.

Code: Alles auswählen.

DATA: FELD(30) TYPE C.
CONCATENATE 'STRUC' feldname into feld separated by '-'.
Jetzt hat "FELD" den Wert "STRUC-MATNR".

Code: Alles auswählen.

ASSIGN (feld) to <fs>.
Jetzt zeigt <fs> genau auf das von dir gesuchte Feld und du kannst den Wert dort ändern und danach die ganze Struktur in deine 2. Tabelle zurückschreiben.



P.S. Da die Feldsymbole beim 1. Einsatz ein wenig verwirrend sind. Schau dir das Ganze im Debugger im Singlestepmodus an.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von madel ( / / 0 / 3 ) »
So ich hab das jetzt hinbekommen. Die Werte werden jetzt dynamisch in die Feldsymbole geschrieben.

Wie bekomm ich jetzt aber die geänderten Werte von 'VALUE' in meine 2. Tabelle an genau die richtige Stelle?

Code: Alles auswählen.

FIELD-SYMBOLS: <fs1> TYPE ANY,
               <fs2> TYPE ANY,
               <fs3> TYPE ANY.

ASSIGN COMPONENT 'FIELDNAME' OF STRUCTURE wa_cells TO <fs1>.
  ASSIGN COMPONENT 'ROW_ID' OF STRUCTURE wa_cells TO <fs2>.

Gruß
  ASSIGN COMPONENT 'VALUE' OF STRUCTURE wa_cells TO <fs3>.

Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Hi,

auch ü. FS:
...
ASSIGN COMPONENT 'VALUE' OF STRUCTURE ztab TO <zs3>.

<zs3> = <fs3>.


Gruß Andreas

Beitrag von madel ( / / 0 / 3 ) »
Hallo.

hab das jetzt auch eingebaut:

Code: Alles auswählen.

ASSIGN COMPONENT '<fs1>' OF STRUCTURE pr_1 TO <fs4>.

 <fs4> = <fs3>.
das Problem ist nur, dass pr_1 kein 'VALUE' hat.
Statt 'VALUE' soll wie oben das Feldsymbol <fs1> dynamisch den Feldnamen eintragen.
Im Debugger ornet das Programm aber <fs4> nichts zu.
Weiß jemand, wie ich das regeln könnt?

Gruß

Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Hallo,

bitte poste doch einmal alle relevanten Teile deines Programms - vor allem den Aufbau der beiden Strukturen wa_cells und pr_1!


Gruß Andreas

Beitrag von Gast ( / / 0 / 3 ) »
Hi

Code: Alles auswählen.

DATA: pr_1 TYPE TABLE OF t9citi,
      wa_cells TYPE lvc_s_modi.
Das Problem ist, dass in <fs1> der Feldname den ich dynamisch verwenden möchte zwar drin steht, das Programm ihn aber nicht als '<fs1>' im ASSIGN erkennt.

Gruß

Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Hallo Gast (du hast bestimmt noch einen anderen Namen :?: )

1) die Struktur T9CITI ist bei mir weder in 4.6 noch in 6.2 bekannt

2) die Feldnamen kannst du folgendermaßen ermitteln

a) mit DESCRIBE FIELD f INTO td. (s. F1)
b)

Code: Alles auswählen.

  descr_ref ?= cl_abap_typedescr=>describe_by_data( itab ).

  LOOP AT descr_ref->components ASSIGNING <comp_wa>.
    CONCATENATE 'ITAB-' <comp_wa>-name INTO fname.
    WRITE: / fname.
  ENDLOOP.

Gruß Andreas

Re: tabellen aktualiesieren

Beitrag von Gast ( / / 0 / 3 ) »
So sollte es gehen:

Code: Alles auswählen.

* Datendefinitionen
* Zeiger auf eine Zeile deiner Datentabelle
field-symbols <pr_1> type t9citi.
* Zeiger auf eine Zelle deiner Datentabelle
field-symbols <pr_1_field> type any.

*Zu erst musst du einen Zeiger auf die richte Zeile haben.
READ TABLE pr1 INDEX row_id-wa_cells ASSIGNING <pr1>.
*Dann brauchst du einen Zeiger auf das richtige Feld
ASSIGN COMPONENT row_id-fieldname OF STRUCTURE <pr_1> TO <pr1_field>. 
*Jetzt noch den Wert zuweisen
<pr1_field> = row_id-value.
Gruß Hendrik

Re: tabellen aktualiesieren

Beitrag von Gast ( / / 0 / 3 ) »
Da hat sich doch ein COPY-PASTE-Fehler eingeschlichen

Code: Alles auswählen.

READ TABLE pr1 INDEX wa_cells-row_id ASSIGNING <pr1>.
Gruß Hendrik

Seite 1 von 1

Vergleichbare Themen

3
Antw.
5306
Views
8
Antw.
19372
Views
Customizing-Tabellen vs. Anwendungs-Tabellen
von beterman » 02.11.2011 17:53 • Verfasst in SAP - Allgemeines
1
Antw.
3727
Views
SAP CML Tabellen
von nopp » 10.02.2007 18:23 • Verfasst in ABAP® Core
5
Antw.
3397
Views
Tabellen
von Kerstin » 09.05.2006 11:27 • Verfasst in ABAP® Core
1
Antw.
2434
Views
RFC und interne Tabellen
von Mr.Black » 23.01.2007 18:22 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

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.