Code: Alles auswählen.
LOOP AT lt_contactperson ASSIGNING <fs_cperson>.
IF <fs_cperson>-relationshipcategory <> lv_rel_type.
DELETE lt_contactperson WHERE partner1 = <fs_cperson>-partner1.
ENDIF.
IF <fs_cperson>-defaultrelationship = ' '.
DELETE lt_contactperson WHERE partner1 = <fs_cperson>-partner1.
CONTINUE.
ENDIF.
IF p_radd = 'X'. "Beziehungen hinzufügen
"PERFORM up_add.
FORM up_add. "HIER WiLL ICH MEIN UNTERPROGRAMM______________________________________________________________________________
CALL FUNCTION 'BAPI_BUPR_RELATIONSHIP_CREATE'
EXPORTING
businesspartner1 = <fs_cperson>-partner1
businesspartner2 = lv_partner
relationshipcategory = lv_rel_type
validfromdate = sy-datlo
validuntildate = '99991231'
TABLES
return = lt_return.
LOOP AT lt_return INTO ls_return.
IF ls_return-type = 'E'.
PERFORM select_name.
WRITE:/'Fehler: '(013) , <fs_cperson>-partner1, ' ', ls_name-name_first(15), ls_name-name_last(15), ' ist bereits vorhanden'.
ENDIF. "End of ls_return-type = 'E'
IF ls_return-type = 'S'.
PERFORM select_name.
WRITE:/ 'Mitarbeiter'(008), lv_partner, t_bps_to(20), ' erhält'(009),<fs_cperson>-partner1, ' ', ls_name-name_first(15), ls_name-name_last.
ENDIF. "End of ls_return-type = 'S'
ENDLOOP. "End of loop lt_return
ENDFORM. "ENDFORM ______________________________________________________________________________________________________________
ENDIF. "End of p_radd = 'X'
IF p_rdel = 'X'. "Beziehungen löschen
CALL FUNCTION 'BAPI_BUPR_RELATIONSHIP_DELETE'
EXPORTING
businesspartner1 = <fs_cperson>-partner1
businesspartner2 = lv_partner
relationshipcategory = lv_rel_type
TABLES
return = lt_return.
IF lt_return IS INITIAL.
PERFORM select_name.
WRITE: / 'Beziehung von'(001), lv_partner2, t_bps_to(18), '>>>>>'(011) ,<fs_cperson>-partner1,
ls_name-name_first(15), ls_name-name_last(15), 'wurde erfolgreich gelöscht(15)'.
ELSE.
LOOP AT lt_return INTO ls_return.
WRITE: ls_return-message.
ENDLOOP.
ENDIF.
ENDIF.
ENDLOOP.
ELSE.
WRITE: 'Gleiche Mitarbeiternummer, bitte neu auswählen!'.
ENDIF.
Hast du eigentlich mal eine vollständige Fehlerbeschreibung? Gibt die Syntax-Prüfung eine Fehlermeldung aus, oder steht der Saturn im fünften Haus des Mondes und deshalb fallen ein Paar BITs aus dem Register?cschmoel hat geschrieben:Klar ^^
Falls die 1. IF-Bedingung erfüllt ist sollte die 2. IF-Bedingung dumpen, da durch das DELETE dein Feldsymbol nicht mehr assigned ist.cschmoel hat geschrieben:Klar ^^
Code: Alles auswählen.
IF <fs_cperson>-relationshipcategory <> lv_rel_type. DELETE lt_contactperson WHERE partner1 = <fs_cperson>-partner1. ENDIF. IF <fs_cperson>-defaultrelationship = ' '. DELETE lt_contactperson WHERE partner1 = <fs_cperson>-partner1. CONTINUE. ENDIF.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
cschmoel
Wahrscheinlich willst du etwas anderes aussagen als das was ich da gerade aus diesem Text interpretiere. Denn das hört sich völlig falsch an.wreichelt hat geschrieben:Hallo,
aufpassen muss auf SY-TABIX der wird beim zweiten Loop verändert und dann geht der erste Loop an der falschen
Stelle weiter.
Dann würden geschachtelte Loops ja nie funktionieren... Das hört sich für mich etwas, äh, seltsam an.wreichelt hat geschrieben: aufpassen muss auf SY-TABIX der wird beim zweiten Loop verändert und dann geht der erste Loop an der falschen
Stelle weiter.
Ich dachte beim ersten Lesen (und Betrachten des Codes), dass das Delete automatisch die Feldsymbol Zuordnung löschen würde (warum auch immer - Ich bin Abap Anfänger...). Ein 2. Lesen brachte dann Klarheit...black_adept hat geschrieben: Falls die 1. IF-Bedingung erfüllt ist sollte die 2. IF-Bedingung dumpen, da durch das DELETE dein Feldsymbol nicht mehr assigned ist.