Loops Zusammenfassen

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

Loops Zusammenfassen

Beitrag von BMWi801 (ForumUser / 14 / 3 / 0 ) »
Hallo,
ich habe zwei Loops und stell mir die Frage, ob ich die beiden irgendwie zusammenfassen kann? Habe versucht ein altes Programm auf interne Tabellen umzuschreiben und habe erstmal das als zwischenlösung gefunden.

Code: Alles auswählen.

    LOOP AT itab_mahn TRANSPORTING NO FIELDS
        WHERE sgtxt+45(2) = '91' OR sgtxt+45(2) = '92'
      m_dat+0(2) = 19.

    m_dat+2(2) = bseg-sgtxt+45(2).
    m_dat+4(2) = bseg-sgtxt+42(2).
    m_dat+6(2) = bseg-sgtxt+39(2).

    IF bseg-sgtxt+39(10) = ' '
      OR m_dat = mhnd-laufd.
    ENDIF.
    endloop.
    
   LOOP AT itab_mahn TRANSPORTING NO FIELDS
        WHERE sgtxt+45(2) ne '91' OR sgtxt+45(2) ne '92'
      m_dat+0(2) = 20.

    m_dat+2(2) = bseg-sgtxt+45(2).
    m_dat+4(2) = bseg-sgtxt+42(2).
    m_dat+6(2) = bseg-sgtxt+39(2).

    IF bseg-sgtxt+39(10) = ' '
      OR m_dat = mhnd-laufd.
    ENDIF.
    endloop.
danke im vorraus :)


Re: Loops Zusammenfassen

Beitrag von a-dead-trousers (Top Expert / 3590 / 124 / 933 ) »

Code: Alles auswählen.

    LOOP AT itab_mahn ASSIGNING <ls_mahn>.
    m_dat+2(2) = bseg-sgtxt+45(2).
    m_dat+4(2) = bseg-sgtxt+42(2).
    m_dat+6(2) = bseg-sgtxt+39(2).

    IF <ls_mahn>-sgtxt+45(2) = '91' OR <ls_mahn>-sgtxt+45(2) = '92'.
      m_dat+0(2) = 19.
    ELSE.
      m_dat+0(2) = 20.
    ENDIF.

    IF bseg-sgtxt+39(10) = ' '
      OR m_dat = mhnd-laufd.
    ENDIF.
    endloop.
Simples Refactoring :wink:
Aber Achtung mit den Jahreszahlen: Nur 91 und 92 werden zu 1991 und 1992. Das schaut mir nach einem Fehler im ursprünglichen Coding aus.

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

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.07
Basis: 7.40

Re: Loops Zusammenfassen

Beitrag von a-dead-trousers (Top Expert / 3590 / 124 / 933 ) »
Ich glaub aber auch, dass deine Variablen etwas falsch benannt sind. So macht das Coding IMHO etwas mehr Sinn:

Code: Alles auswählen.

field-symbols: <ls_mahn> like line of itab_mahn.
    LOOP AT itab_mahn ASSIGNING <ls_mahn>.
    m_dat+2(2) = <ls_mahn>-sgtxt+45(2).
    m_dat+4(2) = <ls_mahn>-sgtxt+42(2).
    m_dat+6(2) = <ls_mahn>-sgtxt+39(2).

    IF <ls_mahn>-sgtxt+45(2) = '91' OR <ls_mahn>-sgtxt+45(2) = '92'.
      m_dat+0(2) = 19.
    ELSE.
      m_dat+0(2) = 20.
    ENDIF.

    IF <ls_mahn>-sgtxt+39(10) = ' '
      OR m_dat = <ls_mahn>-laufd.
* Hier fehlt der Code der ausgeführt werden soll
    ENDIF.
    endloop.
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.07
Basis: 7.40

Re: Loops Zusammenfassen

Beitrag von BMWi801 (ForumUser / 14 / 3 / 0 ) »
a-dead-trousers hat geschrieben:

Code: Alles auswählen.

    LOOP AT itab_mahn ASSIGNING <ls_mahn>.
    m_dat+2(2) = bseg-sgtxt+45(2).
    m_dat+4(2) = bseg-sgtxt+42(2).
    m_dat+6(2) = bseg-sgtxt+39(2).

    IF <ls_mahn>-sgtxt+45(2) = '91' OR <ls_mahn>-sgtxt+45(2) = '92'.
      m_dat+0(2) = 19.
    ELSE.
      m_dat+0(2) = 20.
    ENDIF.

    IF bseg-sgtxt+39(10) = ' '
      OR m_dat = mhnd-laufd.
    ENDIF.
    endloop.
Simples Refactoring :wink:
Aber Achtung mit den Jahreszahlen: Nur 91 und 92 werden zu 1991 und 1992. Das schaut mir nach einem Fehler im ursprünglichen Coding aus.
Vielen dank, hab die anderen zahlen bloß rausgelöscht weil die sich ja erübrigen :)

Seite 1 von 1

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und besseren Inhalt:

Vergleichbare Themen

wie vermeide ich nested loops?
von c oco » 31.05.2012 17:38
Optimierung eines LOOPS
von Foxbat » 17.11.2011 12:01
Zusammenfassen von Zeiträumen
von MS-K » 26.02.2020 11:18
2 Spalten zusammenfassen
von L0w-RiDer » 21.02.2020 09:06
Spoolaufträge zusammenfassen
von hezi » 23.01.2006 17:15