Loops Zusammenfassen


Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

Moderatoren: Jan, Steff

Loops Zusammenfassen

Beitragvon BMWi801 » 15.05.2018, 12:23

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 :)
BMWi801
ForumUser
 
Beiträge: 9
Registriert: 27.02.2018, 08:49
Dank erhalten: 0 mal
Ich bin: sonstiges

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Loops Zusammenfassen

Beitragvon a-dead-trousers » 15.05.2018, 12:38

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.
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

Für diese Nachricht hat a-dead-trousers einen Dank bekommen :
BMWi801
a-dead-trousers
Top Expert
 
Beiträge: 3090
Registriert: 07.02.2011, 13:40
Dank erhalten: 762 mal
Ich bin: Entwickler/in

Re: Loops Zusammenfassen

Beitragvon a-dead-trousers » 15.05.2018, 12:44

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
a-dead-trousers
Top Expert
 
Beiträge: 3090
Registriert: 07.02.2011, 13:40
Dank erhalten: 762 mal
Ich bin: Entwickler/in

Re: Loops Zusammenfassen

Beitragvon BMWi801 » 15.05.2018, 12:53

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 :)
BMWi801
ForumUser
 
Beiträge: 9
Registriert: 27.02.2018, 08:49
Dank erhalten: 0 mal
Ich bin: sonstiges


Zurück zu ABAP® Core

  Aktuelle Beiträge   
s4hana-cloud
vor 6 Minuten von sap_inchen 1 Antw.
500 Internal Server Error
vor 8 Stunden von zzcpak 1 Antw.
Dokumentinformationen lesen vom DVS
vor 9 Stunden von Tron 4 Antw.
Tabs innerhalb von Tabs
vor 11 Stunden von ewx 4 Antw.
Fakturierungsplan in Kontrakten ändern
vor 6 Stunden von DeathAndPain 1 Antw.

  Ähnliche Beiträge beta
Spoolaufträge zusammenfassen
30.10.2006, 22:56 von Jura 4 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Majestic-12 [Bot]