Verschachtelte LOOP

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

Verschachtelte LOOP

Beitrag von AnnaNRW (ForumUser / 29 / 5 / 1 ) »
Hallo zusammen,

habe derzeit ein Problem und komme nicht weiter. Eine Faxnummer und Email-Adresse werden in die nachfolgenden Zeilen übernommen, obwohl ich sage: "CLEAR".

Vielleicht könnt Ihr mir sagen was ich falsch mache. Anbei ein Screenshot.
Lieben Gruß Anna


Hier der CODE:

CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL'
EXPORTING
BUSINESSPARTNER = IS_ACCOUNT-compid
IMPORTING
ADDRESSDATA = ls_Addressdata
TABLES
BAPIADTEL = lt_telefon
BAPIADFAX = lt_fax
BAPIADSMTP = lt_email
RETURN = lt_return.

loop at lt_telefon into ls_telefon.
if ls_telefon-tel_no is not initial.
move ls_telefon-tel_no to ls_ACCOUNTCOMMUNICATION-telefon.
else.
move '' to ls_Accountcommunication-telefon.
endif.

loop at lt_fax into ls_fax.
if ls_fax-fax is not initial.
move ls_fax-fax to ls_ACCOUNTCOMMUNICATION-fax.
else.
ls_Accountcommunication-fax = ''.
endif.
endloop.

loop at lt_email into ls_email.
if ls_email-e_mail is not initial.
move ls_email-e_mail to ls_ACCOUNTCOMMUNICATION-email.
else.
move '' to ls_Accountcommunication-email.
endif.
endloop.

append ls_ACCOUNTCOMMUNICATION to ET_COMMUNICATION.

clear ls_accountcommunication-telefon.
clear ls_accountcommunication-fax.
clear ls_accountcommunication-email.

endloop.

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


Re: Verschachtelte LOOP

Beitrag von inab (ForumUser / 69 / 0 / 6 ) »
ISt doch logisch...

Du loopt über die LT_telefon.

dann kommt der loop über die lt_fax, einmal durch bis zum Schluss, der Eintrag wir in Deine LS_accountcommunication geschrieben
gleiches bei der email.

zum Schluss machst Du den append.
Du schreibst also immer die aktuelle telefon nummer mit der jeweils letzten fax nummer und email adresse in Deine interne Tabelle.

Bei den beiden Inneren loops benötigst Du entweder einen schlüssel, oder Dein Appen sitzt an der falschen Stelle :-)

Re: Verschachtelte LOOP

Beitrag von wreichelt (Top Expert / 1046 / 30 / 192 ) »
Hallo,

muss hinter dem Loop at_telefon into ....

Nicht auch ein Endloop kommen ?

und dafür der Endloop unter dem Clear ls_accountcommunication-Email entfallen ?

Gruß

Re: Verschachtelte LOOP

Beitrag von AnnaNRW (ForumUser / 29 / 5 / 1 ) »
hallo Wreichelt,

hab es so gemacht wie du gesagt hast, aber leider funktioniert das nicht. Jetzt wird lediglich eine Zeile ausgegeben, obwohl mehrere Telefonnummern vorhanden sind. Vielen Dank im Voraus.
Liebe Grüße Anna

Hier der CODE:


CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL'
EXPORTING
BUSINESSPARTNER = IS_ACCOUNT-compid
IMPORTING
ADDRESSDATA = ls_Addressdata
TABLES
BAPIADTEL = lt_telefon
BAPIADFAX = lt_fax
BAPIADSMTP = lt_email
RETURN = lt_return.

"Hier muss doch glaube ich auch ein LOOP hin


loop at lt_telefon into ls_telefon.
if ls_telefon-tel_no is not initial.
move ls_telefon-tel_no to ls_ACCOUNTCOMMUNICATION-telefon.
else.
move '' to ls_Accountcommunication-telefon.
endif.
endloop.

loop at lt_fax into ls_fax.
if ls_fax-fax is not initial.
move ls_fax-fax to ls_ACCOUNTCOMMUNICATION-fax.
else.
ls_Accountcommunication-fax = ''.
endif.
endloop.

loop at lt_email into ls_email.
if ls_email-e_mail is not initial.
move ls_email-e_mail to ls_ACCOUNTCOMMUNICATION-email.
else.
move '' to ls_Accountcommunication-email.
endif.
endloop.

append ls_ACCOUNTCOMMUNICATION to ET_COMMUNICATION.

clear ls_accountcommunication-telefon.
clear ls_accountcommunication-fax.
clear ls_accountcommunication-email.

"Hier muss aber unbedingt ein Endloop hin, weil die Tabellen mehrere Einträge enthalten

Re: Verschachtelte LOOP

Beitrag von wreichelt (Top Expert / 1046 / 30 / 192 ) »
Hallo,

ja der Endloop muss dann wieder hin.

Aber jeder Loop at lt_telefon beginnt nach dem Append und Endloop wieder bei dem Tabellenplatz 1,
damit findet er auch wieder die Telefonnummer.

Mein Lösungsvorschlag wäre:

Loop.
Read lt-Telefon Index sy-tabix. "Beginnt mit 1
If lt_telefon is nötig initial.
.....
Endif.

Read lt_fax Index sy-tabix.

.....

Read lt-Email Index .....

...


Append ....

Clear.
Endloop.

Nicht sicher bin ich mir wie der Loop abgeschlossen wird, wieviele Tabellenplätze kann es geben.

Gruß
Wolfgang

Re: Verschachtelte LOOP

Beitrag von AnnaNRW (ForumUser / 29 / 5 / 1 ) »
Hallo,

habs so gemacht wie du gesagt hast. Leider klappt es nicht. Jetzt wird überhaupt nichts mehr ausgegeben.
Hier der Code:

Loop.
Read table lt_telefon into ls_telefon Index sy-tabix. "Beginnt mit 1
If lt_telefon is not initial.
move ls_telefon-tel_no to ls_ACCOUNTCOMMUNICATION-telefon.
Endif.

Read table lt_fax into ls_fax Index sy-tabix.
If lt_fax is not initial.
move ls_fax-fax to ls_ACCOUNTCOMMUNICATION-fax.
Endif.


Read table lt_Email into ls_email Index sy-tabix.
If lt_email is not initial.
move ls_email-e_mail to ls_ACCOUNTCOMMUNICATION-email.
Endif.


Append ls_ACCOUNTCOMMUNICATION to ET_COMMUNICATION.
clear ls_accountcommunication-telefon.
clear ls_accountcommunication-fax.
clear ls_accountcommunication-email.
Endloop.

Re: Verschachtelte LOOP

Beitrag von wreichelt (Top Expert / 1046 / 30 / 192 ) »
Hallo Anna,

jetzt habe ich keine Idee mehr.

Gruß
Wolfgang

Re: Verschachtelte LOOP

Beitrag von AnnaNRW (ForumUser / 29 / 5 / 1 ) »
danke trotzdem, dass du es versucht hast.
Wünsche dir einen schönen Abend.

Liebe Grüße
Anna

Folgende Benutzer bedankten sich beim Autor AnnaNRW für den Beitrag:
wreichelt


Re: Verschachtelte LOOP

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin.

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& Report  ZTEST_LOOP_ABAPFORUM                                        *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  ztest_loop_abapforum.

TYPES:  BEGIN OF t_info,
        addrnumber TYPE ad_addrnum,
        telefon TYPE ad_telnrlg,
        fax TYPE ad_fxnmbr,
        email TYPE ad_smtpadr,
        END OF t_info.

DATA ls_accountcommunication TYPE t_info.
DATA et_communication TYPE TABLE OF t_info.

DATA lt_telefon TYPE TABLE OF bapiadtel.
DATA ls_telefon TYPE bapiadtel.
DATA lt_fax TYPE TABLE OF bapiadfax.
DATA ls_fax TYPE bapiadfax.
DATA lt_email TYPE TABLE OF bapiadsmtp.
DATA ls_email TYPE bapiadsmtp.
DATA lt_return TYPE TABLE OF bapiret2.
DATA ls_return TYPE bapiret2.

DATA ls_addressdata TYPE bapibus1006_address.

DATA is_account_compid TYPE bapibus1006_head-bpartner.

CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL'
  EXPORTING
    businesspartner = is_account_compid
  IMPORTING
    addressdata     = ls_addressdata
  TABLES
    bapiadtel       = lt_telefon
    bapiadfax       = lt_fax
    bapiadsmtp      = lt_email
    return          = lt_return.

* Fehler prüfung
CLEAR ls_return.
LOOP AT lt_return INTO ls_return WHERE type = 'E' OR type ='A'.
  EXIT.
ENDLOOP.
* Wenn Fehler -> tschüss
CHECK ls_return IS INITIAL.




*** Auswertung

REFRESH et_communication.
CLEAR ls_accountcommunication.

* Standard Telefon des Kunden (gibt nur Eine oder keine)
LOOP AT lt_telefon INTO ls_telefon WHERE std_no = 'X'.
  ls_accountcommunication-telefon = ls_telefon-tel_no.
ENDLOOP.

* Standard Fax des Kunden (gibt nur Eines oder keines)
LOOP AT lt_fax INTO ls_fax  WHERE std_no = 'X'.
  ls_accountcommunication-fax = ls_fax-fax.
ENDLOOP.

* Standard Email des Kunden
LOOP AT lt_email INTO ls_email WHERE std_no = 'X'.
  ls_accountcommunication-email = ls_email-e_mail.
ENDLOOP.

APPEND ls_accountcommunication TO et_communication.
Bemerkenswert ist, dass es in den Adressdaten nur EINE Default Telefonnummer und EINE Default Faxnummer und EINE Default Email gibt (oder nix).
Wenn man also die verbindlichen Standardverbindungen braucht, sollte man "STD_NO" abfragen. Dann kann es auch nur einen Eintrag in "et_communication" pro Kunde geben.

lg Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1453
Views
1
Antw.
368
Views
Verschachtelte Loops
von ABAPlerv » 03.04.2022 08:30 • Verfasst in ABAP® für Anfänger
4
Antw.
1535
Views
Verschachtelte Interne Tabelle zugreifen
von L0w-RiDer » 22.09.2020 13:02 • Verfasst in ABAP® für Anfänger
4
Antw.
3767
Views
LOOP in einem LOOP
von Bjuti » 10.09.2013 15:18 • Verfasst in ABAP® für Anfänger
39
Antw.
7986
Views
Loop
von Kai999 » 27.07.2017 16:15 • Verfasst in ABAP® für Anfänger

Ü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
vor 2 Tagen von Bright4.5 1 / 744
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2368
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8954