Hilfe bei Mapping

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

Hilfe bei Mapping

Beitrag von ABAP_User (Specialist / 146 / 20 / 0 ) »
Hi!
Ich habe eine interne Tabelle, die ich gerne auf eine Datenbanktabelle mappen möchte.
Die interne Tabelle beinhaltet einen Namen, eine Adressliste und eine Liste zur Staatsbürgerschaft/Herkunft und eine Liste mit Aliasnamen.
Bis auf das Mapping der Aliasnamen klappt es bislang: Habe ich in der internen Tabelle nur einen Namen und leere Listen, so wird ein neuer Datensatz lediglich mit dem Namen der Person in der Datenbanktabelle angelegt. Habe ich neben dem Namen beispielsweise zwei Adressen, so werden zwei Datensätze angelegt. Jeweils der gleiche Namen, aber verschieden Adressen. Die Informationen zur Staatsbürgerschaft werden auch erfolgreich geloopt. Der Code dazu ist unten zu sehen.

Nun aber mein Problem und ich komm nicht drauf, wie ich es lösen könnte:
Diese Liste mit Aliasnamen soll nicht dazu führen, dass die Aliasnamen zu einem bestehenden Datensatz hinzugefügt werden, sie sollen dafür sorgen, dass ein neuer Datensatz eingefügt wird. Beispiel: Gibt es in der internen Tabelle einen Thomas mit zwei Adressen und einem Alias (z.B. Thom), so sollen zwei Datensätze mit dem Namen Thomas und den jeweiligen Adressen eingefügt werden und zwei Datensätze mit dem Namen Thom und den zwei Adressen.
Soweit verständlich?

Hoffe ihr könnt mir weiterhelfen.

Code: Alles auswählen.

LOOP AT pt_people INTO ls_people.

    REFRESH: lt_temp_people[], lt_people[].
    CLEAR ls_people.

    ls_people-mandt     = sy-mandt.
    ls_people-name     = ls_people-name.

* LOOP über ls_people Struktur
    APPEND ls_people TO lt_people.

* temporäre interne Tabelle wird befüllt
    CLEAR ls_people.
    REFRESH  lt_temp_people.
    lt_temp_people[] = lt_people[].
    REFRESH lt_people.

* LOOP über temporäre interne Tabelle
    LOOP AT lt_temp_people INTO ls_people.

* LOOP über die Adressliste
      LOOP AT ls_people-addresslist INTO ls_addresslist.
        ls_people-city = ls_addresslist-city.
        ls_people-county = ls_addresslist-country.
* Struktur mit nun zusätlich mit Adressen der internen Tabelle hinzugefügt
        APPEND ls_people TO lt_people.
      ENDLOOP.

* hier wird geprüft, ob überhaupt etwas in der Adressliste ist. Falls nicht, muss hier die Struktur hinzugefügt werden
      IF sy-subrc <> 0.
        APPEND ls_people TO lt_people.
      ENDIF.
    ENDLOOP.

    CLEAR ls_people.
    REFRESH  lt_temp_people.
    lt_temp_people[] = lt_people[].
    REFRESH lt_people.
    LOOP AT lt_temp_people INTO ls_people.

      LOOP AT ls_people-nationalitylist INTO ls_nationalitylist.
        ls_people-country = ls_nationalitylist-country.
	ls_people-code = ls_nationalitylist-code.
        APPEND ls_people TO lt_people.
      ENDLOOP.
      IF sy-subrc <> 0.
        APPEND ls_people TO lt_people.
      ENDIF.
    ENDLOOP.

   
    APPEND LINES OF lt_people TO gt_people.

  ENDLOOP.
Viele Grüße

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


Re: Hilfe bei Mapping

Beitrag von ABAP_User (Specialist / 146 / 20 / 0 ) »
Hat keiner eine Idee wie ich mein Problem lösen könnte?

Re: Hilfe bei Mapping

Beitrag von a-dead-trousers (Top Expert / 4394 / 223 / 1182 ) »
hi!

Du befüllst am Anfang der Hauptschleife eine weitere interne Tabelle (am besten Typ STRINGTAB) mit dem Namen und allen Aliasnamen und machst eine Schleife die die weitere Befüllung ausgehend von dieser Namenstabelle regelt.

Ungefähr so

Code: Alles auswählen.

LOOP AT pt_people INTO ls_people.
  ...
  LOOP AT lt_name INTO ld_name.
    ...
    LOOP AT lt_temp_people INTO ls_people.
      ...
      LOOP AT ls_people-addresslist INTO ls_addresslist.
        ...
      ENDLOOP. "LOOP AT ls_people-addresslist
      ...
    ENDLOOP. "LOOP AT lt_temp_people
    ...
    LOOP AT lt_temp_people INTO ls_people.
      ...
      LOOP AT ls_people-nationalitylist INTO ls_nationalitylist.
        ...
      ENDLOOP. "LOOP AT ls_people-nationalitylist
      ...
    ENDLOOP. "LOOP AT lt_temp_people
    ...
  ENDLOOP. "LOOP AT lt_name
  ...
ENDLOOP. "LOOP AT pt_people
mfg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
ABAP_User

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: Hilfe bei Mapping

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
ABAP_User hat geschrieben:Soweit verständlich?
Nein. Denn normalerweise besteht kein Grund, diese Daten in eine einzige DB-Tabelle zu kippen (Stichwort Normalisierung).

Seite 1 von 1

Vergleichbare Themen

0
Antw.
1431
Views
OR Mapping
von yuro » 27.01.2015 00:11 • Verfasst in ABAP Objects®
6
Antw.
2904
Views
ABAP-Mapping
von Sniper_61 » 20.11.2008 22:40 • Verfasst in ABAP® für Anfänger
45
Antw.
2800
Views
corresponding - mapping - switch
von ralf.wenzel » 29.10.2024 11:37 • Verfasst in ABAP® Core
1
Antw.
1413
Views
Mapping Sonderzeichen
von littleJohn » 25.05.2022 14:37 • Verfasst in SAP - Allgemeines
1
Antw.
1370
Views
Mapping mit Business Connector erzeugen !?!?
von Gast » 03.12.2004 11:21 • Verfasst in Basis

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.