Schachtelung

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

Schachtelung

Beitrag von barbara (ForumUser / 50 / 0 / 0 ) »
Hello,
Ich bitte um Hilfe!
Es geht um die richtige Schachtelung eines forms Datenbeschaffung.
Derzeit sieht es so aus:

Code: Alles auswählen.

  LOOP AT lt_1251 INTO ls_1251.

    IF lh_agr_name NE ls_1251-agr_name.
      CLEAR ls_ag.
      ls_ag-ag       = ls_1251-agr_name.
      ls_ag-t_object = lt_obj.

      IF lh_object NE ls_1251-object.
        CLEAR: lt_obj, ls_obj.
        ls_obj-object  = ls_1251-object.
        ls_obj-t_field = lt_fld.

        IF lh_field NE ls_1251-field.
          CLEAR: lt_fld, ls_fld.
          ls_fld-field   = ls_1251-field.
          ls_fld-t_value = lt_val.

          IF lh_value NE ls_1251-low.
            CLEAR: lt_val, ls_val.
            ls_val-low  = ls_1251-low.
            IF lh_value NE ls_1251-high.
              CLEAR: lt_val, ls_val.
              ls_val-high = ls_1251-high.
            ENDIF.

            APPEND ls_val TO lt_val.
          ENDIF.

          APPEND ls_fld TO lt_fld.
        ENDIF.

        APPEND ls_obj TO lt_obj.
      ENDIF.

      APPEND ls_ag TO gt_ag.
    ENDIF.

  ENDLOOP.
--> Jedoch funkt. es noch nicht ganz so, wie ich es haben möchte!!

thx

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


Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Barbara,

wenn Du uns noch verätst, wie es den richtig sein soll, könnte Dir jemand helfen. Zur Zeit wissen wir nur, wie es falsch ist.

Code: Alles auswählen.

  LOOP AT lt_1251 INTO ls_1251. 

    IF lh_agr_name NE ls_1251-agr_name. 
wann wird lh_agr_name gesetzt? Gemäß dieser Frage, würde sich ein 'LOOP AT lt_1251 WHERE agr_name NE lh_agr_name.' anbieten

Code: Alles auswählen.

      CLEAR ls_ag. 
      ls_ag-ag       = ls_1251-agr_name. 
      ls_ag-t_object = lt_obj. 

      IF lh_object NE ls_1251-object.
lh_object: siehe oben

Code: Alles auswählen.

        CLEAR: lt_obj, ls_obj. 
        ls_obj-object  = ls_1251-object. 
        ls_obj-t_field = lt_fld. 

        IF lh_field NE ls_1251-field.
lh_field: siehe oben

Code: Alles auswählen.

         CLEAR: lt_fld, ls_fld. 
          ls_fld-field   = ls_1251-field. 
          ls_fld-t_value = lt_val. 

          IF lh_value NE ls_1251-low. 
            CLEAR: lt_val, ls_val. 
            ls_val-low  = ls_1251-low. 
            IF lh_value NE ls_1251-high. 
              CLEAR: lt_val, ls_val. 
              ls_val-high = ls_1251-high. 
            ENDIF. 

            APPEND ls_val TO lt_val. 
          ENDIF. 

          APPEND ls_fld TO lt_fld. 
        ENDIF. 

        APPEND ls_obj TO lt_obj. 
      ENDIF. 

      APPEND ls_ag TO gt_ag. 
    ENDIF. 

  ENDLOOP.
Andererseits beschleicht mich das Gefühl, dass es sich hierbei um einen Gruppenwechsel handeln sollte. Demnach solltest Du mal Dir den Abschnitt 'AT NEW ... bei LOOP At table' durchlesen.
Aber beachte bitte im Besonderen die Bedingungen zum technischen Aufbau der jeweiligen Tabelle (Spaltenreihenfolge)
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von barbara (ForumUser / 50 / 0 / 0 ) »
Hello,
Hhmmm, ja das mit dem Gruppenwechsel kommt dem Ganzen schon näher! ..

Über dem loop kommt natürlich das select, und die lh's sind die dazugehörigen Hilfsvariablen.

Vor'm loop beginnt es so:

Code: Alles auswählen.

FORM get_data .

  DATA: lt_1251     TYPE TABLE OF agr_1251,
        ls_1251     TYPE agr_1251,

        ls_ag       TYPE gy_ag,

        lh_agr_name TYPE agr_1251-agr_name,
        lh_object   TYPE pt1251-object,
        lh_field    TYPE tprfield,
        lh_value    TYPE xuval,

        lt_val  TYPE gyt_value,
        ls_val  TYPE gy_value,

        lt_fld  TYPE gyt_field,
        ls_fld  TYPE gy_field,

        lt_obj  TYPE gyt_object,
        ls_obj  TYPE gy_object.

* 1) Rollen lesen
  SELECT * FROM agr_1251
    INTO TABLE lt_1251
    WHERE agr_name IN s_agr.

  LOOP AT lt_1251 INTO ls_1251.
... etc... --> dann kommen erst die ganzen IF-Anweisungen.

thx

Seite 1 von 1

Vergleichbare Themen

3
Antw.
2464
Views
richtige Schachtelung von select / endselect ???
von barbara » 08.05.2006 11:15 • Verfasst in ABAP® für Anfänger
7
Antw.
3555
Views
Aktivierung user-exit: Die Schachtelung ist nicht korrekt
von supa_dupa47 » 27.11.2012 11:18 • Verfasst in ABAP® Core

Über diesen Beitrag


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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 511
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2146
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8742