Zuweisen von Feldern in eine itab - Tipps

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

Zuweisen von Feldern in eine itab - Tipps

Beitrag von c oco (Specialist / 326 / 12 / 16 ) »
Hallo,

ich muss in mehrere DB Tabellen und jedesmal bekomme ich andere Felder, die ich in meiner Ausgabetabelle benötige.
Ich habe es so wie unten dargestellt gelöst. Nur es ist keine Zeitsparende und saubere Lösung, da man leicht Felder vergessen kann zuzuweisen und jedesmal dran denken muss.
Kann ich das einfacher und sauberer lösen?

Code: Alles auswählen.

 " Fill essr tab
  lv_counter = lines( gt_ekko ).
  LOOP AT gt_ekko ASSIGNING <gs_ekko>.
    CLEAR: gs_essr_tab.
    SELECT txz01 AS txz01_essr packno AS essr_packno         "essr~ebeln essr~ebelp
           lblni erdat bldat lwert knttp
           loekz waers AS essr_waers xblnr user1
      INTO CORRESPONDING FIELDS OF gs_essr_tab  "ok
      FROM essr
      WHERE  ebeln = <gs_ekko>-ebeln
         AND ebelp = <gs_ekko>-ebelp
         AND lblni IN s_lblni.
      lv_counter_essr = lv_counter_essr + 1.
      CASE sy-subrc.
        WHEN '0'.
          IF lv_counter_essr      = lv_counter.
            <gs_ekko>-lblni       = gs_essr_tab-lblni.
            <gs_ekko>-erdat       = gs_essr_tab-erdat.
            <gs_ekko>-bldat       = gs_essr_tab-bldat.
            IF gs_essr_tab-loekz  = ' '.
              <gs_ekko>-lwert     = gs_essr_tab-lwert.
            ELSE.
              CLEAR gs_essr_tab-lwert.
            ENDIF.
            <gs_ekko>-txz01_essr  = gs_essr_tab-txz01_essr.
            <gs_ekko>-knttp       = gs_essr_tab-knttp.
            <gs_ekko>-ebeln       = gs_essr_tab-ebeln.
            <gs_ekko>-ebelp       = gs_essr_tab-ebelp.
            <gs_ekko>-essr_packno = gs_essr_tab-essr_packno.
            <gs_ekko>-loekz       = gs_essr_tab-loekz.
            <gs_ekko>-essr_waers  = gs_essr_tab-essr_waers.
            <gs_ekko>-xblnr       = gs_essr_tab-xblnr.
            <gs_ekko>-user1       = gs_essr_tab-user1.
            APPEND <gs_ekko> TO gt_essr.
          ELSE.
            APPEND INITIAL LINE TO gt_essr ASSIGNING <gs_essr>.
            <gs_essr>-lifnr       = <gs_ekko>-lifnr.
            <gs_essr>-name1       = <gs_ekko>-name1.
            <gs_essr>-bsart       = <gs_ekko>-bsart.
            <gs_essr>-bedat       = <gs_ekko>-bedat.
            <gs_essr>-txz01       = <gs_ekko>-txz01.
            <gs_essr>-commitment  = <gs_ekko>-commitment.
            <gs_essr>-waers       = <gs_ekko>-waers.
            <gs_essr>-actvalue    = <gs_ekko>-actvalue.
            <gs_essr>-ekorg       = <gs_ekko>-ekorg.
            <gs_essr>-ekgrp       = <gs_ekko>-ekgrp.
            <gs_essr>-bukrs       = <gs_ekko>-bukrs.
            <gs_essr>-matkl       = <gs_ekko>-matkl.
            <gs_essr>-loekz_ekpo  = <gs_ekko>-loekz_ekpo.
            <gs_essr>-lblni       = gs_essr_tab-lblni.
            <gs_essr>-erdat       = gs_essr_tab-erdat.
            <gs_essr>-bldat       = gs_essr_tab-bldat.
            IF gs_essr_tab-loekz  = ' '.
              <gs_essr>-lwert     = gs_essr_tab-lwert.
            ELSE.
              CLEAR gs_essr_tab-lwert.
            ENDIF.
            <gs_essr>-txz01       = <gs_ekko>-txz01.
            <gs_essr>-knttp       = gs_essr_tab-knttp.
            <gs_essr>-ebeln       = gs_essr_tab-ebeln.
            <gs_essr>-ebelp       = gs_essr_tab-ebelp.
            <gs_essr>-essr_packno = gs_essr_tab-essr_packno.
            <gs_essr>-loekz       = gs_essr_tab-loekz.
            <gs_essr>-essr_waers  = gs_essr_tab-essr_waers.
            <gs_essr>-xblnr       = gs_essr_tab-xblnr.
            <gs_essr>-user1       = gs_essr_tab-user1.
          ENDIF.
      ENDCASE.
    ENDSELECT.
  ENDLOOP. "gt_dtab
Viele Grüße
Coco

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


Re: Zuweisen von Feldern in eine itab - Tipps

Beitrag von a-dead-trousers (Top Expert / 4412 / 224 / 1184 ) »
ADT delivers

Zusätzlich brauchst du noch

Code: Alles auswählen.

ASSIGN COMPONENT ... OF STRUCTURE ... TO ...
Genaue Beschreibung siehe ABAP-Hilfe
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: Zuweisen von Feldern in eine itab - Tipps

Beitrag von c oco (Specialist / 326 / 12 / 16 ) »
Hallo ADT,

danke für deine Antwort.
Da ich ja meine Strukturen kenne, muss die Struktur nicht dynamisch ermittelt werden. Nur die Felder (Komponenten).

Ich habe noch ein paar Schwierigkeiten, kannst du mir bitte helfen?

Code: Alles auswählen.

DATA: gs_essr_tab          TYPE ZNPM_CONTI_ALV.
data: gt_essr                   type TABLE OF ZNPM_CONTI_ALV.
DATA: gt_ekko               TYPE TABLE OF ZNPM_CONTI_ALV.

FIELD-SYMBOLS: <gs_ekko>      TYPE any,
                         <gv_dyn_field> type any,
                        <gs_essr_tab>  type any table.

data: lv_ebeln type ebeln.
data: lv_ebelp type ebelp.

DATA:  lv_counter      TYPE i,
       lv_counter_essr type i.

lv_counter = lines( gt_ekko ).
BREAK-POINT.
LOOP AT gt_ekko ASSIGNING <gs_ekko>.
   ASSIGN COMPONENT 'EBELN'
               OF STRUCTURE <gs_ekko> TO <gv_dyn_field>.
   lv_ebeln = <gv_dyn_field>.
    ASSIGN COMPONENT 'EBELP'
               OF STRUCTURE <gs_ekko> TO <gv_dyn_field>.
    lv_ebelp = <gv_dyn_field>.

*  CLEAR: gt_essr_tab.
  SELECT lblni erdat bldat lwert txz01 knttp
         ebeln ebelp packno
    INTO CORRESPONDING FIELDS OF gs_essr_tab
    FROM essr
    WHERE  ebeln = lv_ebeln
       AND ebelp = lv_ebelp.
    lv_counter_essr = lv_counter_essr + 1.
    CASE sy-subrc.
      WHEN '0'.
        IF lv_counter_essr = lv_counter.
        *            ASSIGN COMPONENT sy-index OF STRUCTURE gs_essr_tab TO <gs_ekko>.
*          <gs_ekko>-lblni  = gs_essr_tab-lblni.
*          <gs_ekko>-erdat  = gs_essr_tab-erdat.
*          <gs_ekko>-bldat  = gs_essr_tab-bldat.
*          <gs_ekko>-lwert  = gs_essr_tab-lwert.
*          <gs_ekko>-txz01  = gs_essr_tab-txz01.
*          <gs_ekko>-knttp  = gs_essr_tab-knttp.
*          <gs_ekko>-ebeln  = gs_essr_tab-ebeln.
*          <gs_ekko>-ebelp  = gs_essr_tab-ebelp.
*          <gs_ekko>-packno = gs_essr_tab-packno.
*          APPEND <gs_ekko> TO gt_essr.
*        ELSE.
*          APPEND INITIAL LINE TO gt_essr ASSIGNING <gs_essr>.
*          <gs_essr>-lifnr  = <gs_ekko>-lifnr.
*          <gs_essr>-name1  = <gs_ekko>-name1.
*          <gs_essr>-bsart  = <gs_ekko>-bsart.
*          <gs_essr>-bedat  = <gs_ekko>-bedat.
*          <gs_essr>-txz01  = <gs_ekko>-txz01.
*          <gs_essr>-commitment  = <gs_ekko>-commitment.
*          <gs_essr>-waers  = <gs_ekko>-waers.
*          <gs_essr>-actvalue  = <gs_ekko>-actvalue.
*          <gs_essr>-lblni  = gs_essr_tab-lblni.
*          <gs_essr>-erdat  = gs_essr_tab-erdat.
*          <gs_essr>-bldat  = gs_essr_tab-bldat.
*          <gs_essr>-lwert  = gs_essr_tab-lwert.
*          <gs_essr>-txz01  = gs_essr_tab-txz01.
*          <gs_essr>-knttp  = gs_essr_tab-knttp.
*          <gs_essr>-ebeln  = gs_essr_tab-ebeln.
*          <gs_essr>-ebelp  = gs_essr_tab-ebelp.
*          <gs_essr>-packno  = gs_essr_tab-packno.
 endif.
endselect.
endloop.
Wie bekomme ich nun die Felder von gs_essr_tab in <gs_ekko>?
<gs_ekko> ist vom Typ generisch und gs_essr_tab hat TYPE ZNPM_CONTI_ALV.

Es muss eine Select-Schleife sein, da ich die Datensätze Zeilenweise brauche. Ich kann also keinen Fetch in eine itab machen.
Es muss also eine Struktur sein, in die ich in der Select Schleife meine Daten reinpacke.

Viele Grüße
coco

Re: Zuweisen von Feldern in eine itab - Tipps

Beitrag von black_adept (Top Expert / 4103 / 128 / 945 ) »
Ich habe die Erfahrung gemacht, dass MOVE-CORRESPONDING bei dynamischen Programm recht gute Ergebnisse liefert.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Zuweisen von Feldern in eine itab - Tipps

Beitrag von c oco (Specialist / 326 / 12 / 16 ) »
Hallo Black_adept,

es funktioniert :D .
Danke!

Gruß
coco

Seite 1 von 1

Vergleichbare Themen

19
Antw.
8783
Views
Wert aus ITAB Spalten einer dynamischen Tabelle zuweisen
von Akatash » 16.01.2017 10:21 • Verfasst in ABAP® für Anfänger
5
Antw.
1811
Views
Abap Karriere Tipps
von the_skywalker » 04.11.2020 15:42 • Verfasst in ABAP® für Anfänger
4
Antw.
2437
Views
Frage zu Tipps&Tricks: REUSE_ALV_GRID_DISPLAY_LVC
von domezug » 27.09.2007 09:06 • Verfasst in ABAP® Core
30
Antw.
14357
Views
move itab 1 nach itab 2 mit bedingung
von c oco » 17.04.2012 14:39 • Verfasst in ABAP® für Anfänger
2
Antw.
3324
Views
Feldsymbol richtig zuweisen
von 1337 » 13.12.2013 09:12 • 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

Nach MESSAGE TYPE E Felder entsperren
vor 6 Stunden von rob_abc gelöst 8 / 6193
ABAP - Mail so10 Text
vor 21 Stunden von retsch 6 / 261

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

Nach MESSAGE TYPE E Felder entsperren
vor 6 Stunden von rob_abc gelöst 8 / 6193
ABAP - Mail so10 Text
vor 21 Stunden von retsch 6 / 261

Unbeantwortete Forenbeiträge

SD_PRINT_TERMS_OF_PAYMENT
vor 5 Tagen von Manfred K. 1 / 1045
BUSOBJEKT zu CMIS PHIO ermitteln
vor 3 Wochen von snooga87 1 / 2867