Ansicht
Dokumentation

BAPI_ADDRESSCONTPART_CHANGE - BAPI zum Ändern von Ansprechpartneradressen

BAPI_ADDRESSCONTPART_CHANGE - BAPI zum Ändern von Ansprechpartneradressen

Vendor Master (General Section)   PERFORM Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Anhand der angegebenen Objekttypen und der Objektschlüssel wird die zugehörige Ansprechpartneradresse bestimmt und mit den angegebenen Adreß- und Kommunkikationsdaten aktualisiert, soweit dies erwünscht ist.
Dieser Baustein weicht insofern von einem Standard-Change-BAPI ab, als daß nicht nur vorhandene Einträge geändert sondern auch Telefonnummern, Faxnummern usw., welche als Attribute an einer Adresse hängen, gelöscht bzw. hinzugefügt werden können.
Es werden Referenzstrukturleisten (Ankreuzleisten) benutzt, um zu ändernde Einträge zu markieren.

Beispiel

* Ändern einer Ansprechpartneradresse:
* Ändern einer Telefonnummer, Löschen einer Telefonnummer
* und Hinzufügen einer Telefonummer

  DATA: objtype_p LIKE bapi4003_1-objtype,
        obj_id_p LIKE bapi4003_1-objkey,
        objtype_c LIKE bapi4003_1-objtype,
        obj_id_c LIKE bapi4003_1-objkey,
        obj_id_ext LIKE bapi4003_1-extension,
        context LIKE bapi4003_1-context,
        address_number LIKE adrc-addrnumber,
        person_number LIKE adrp-persnumber,
        bapiadtel LIKE bapiadtel OCCURS 0 WITH HEADER LINE,
        bapiadtel_x LIKE bapiadtelx OCCURS 0 WITH HEADER LINE,
        return LIKE bapiret2 OCCURS 0.

* Bei der Zuweisung der Objekttypen und der Objektschlüssels der
* Kundenansprechpartneradresse sind folgende Werte zu wählen:
  objtype_p  = 'BUS1006001'
  obj_id_p   =
  objtype_c  = 'KNA1'
  obj_id_c   =
  obj_id_ext = ' '
  context    = '0005'

* Besorgen der vorhandenen Daten durch Aufuf von z.B.
* FB 'BAPI_ADDRESSCONTPART_GETDETAIL'
  ...

* Füllen der Referenzstrukturleisten und der dazugehörigen Daten
* Die Telefonnummer mit laufender Nummer '002' soll gelöscht werden,
* die Durchwahl der Telefonnummer mit laufender Nummer '003'
* soll aktualisiert werden.
  CLEAR: bapiadtel[], bapiadtel_x[].

  CLEAR: bapiadtel, bapiadtel_x.
  bapiadtel-consnumber = '002'.
  bapiadtel_x-updateflag = 'D'.
  APPEND: bapiadtel, bapiadtel_x. "Eintrag löschen

  CLEAR: bapiadtel, bapiadtel_x.
  bapiadtel-consnumber = '003'.
  bapiadtel-extension = '77733'.
  bapiadtel_x-extension = 'X'.
  bapiadtel_x-updateflag = 'U'.
  APPEND: bapiadtel, bapiadtel_x. "Eintrag aktualisieren

  CLEAR: bapiadtel, bapiadtel_x.
  bapiadtel-telephone = '06227'.
  bapiadtel-extension = '11111'.
  bapiadtel_x-updateflag = 'I'.
  APPEND: bapiadtel, bapiadtel_x. "Einen neuen Eintrag hinzufügen

* Aufruf des Change-Bausteins
  CALL FUNCTION 'BAPI_ADDRCONTPART_CHANGE'
     EXPORTING
          obj_type_p     = objtype
          obj_id_p       = obj_id
          obj_type_c     = objtype
          obj_id_c       = obj_id
          obj_id_ext     = obj_id_ext
          context        = context
     IMPORTING
         address_number = address_number
         person_number  = person_number
     TABLES
         bapiadtel      = bapiadtel
         bapiadtel_x    = bapiadtel_x
         return         = return.

* Fehler und Warnungen können nun aus der Tabelle RETURN entnommen
* werden. Sollte alles gut gegangen sein, ist die Ansprechpartner-
* adresse mitsamt Kommunikationsdaten jetzt mit den neuen Werten
* aktualisiert im System vorhanden.
* Die Adreßnummer steht im Feld ADDRESS_NUMBER, die Personennummer ist
* im Feld PERSON_NUMBER.

Hinweise

Zum Löschen von z.B. einer Telefonnummer in der Tabelle der schon
vorhandenen Telefonnummern zu einer Adresse muß das Feld 'UPDATEFLAG' in der Referenzstrukturleiste der entsprechenden Zeile ein 'D' enthalten.
Zum Einfügen eines Eintrags muß dieses Feld mit einem 'I' gefüllt sein. Dabei ist darauf zu achten, daß zu einer mit einem 'I' gekennzeichneten Referenzstrukturleiste auch entsprechende Daten zum Einfügen mitgegeben werden.
Alle neu einzufügenden (I) zeilenartigen Einträge mitsamt zugehörigen Referenzstrukturleisten müssen hinter allen zu ändernden (U) und zu löschenden (D) Einträgen stehen.

Schlüsselfelder müssen bei den Änderungsdaten immer gefüllt sein und werden soweit wie möglich berücksichtigt. Daher ist es unerheblich ob z.B. zuerst alle Bemerkungen zu den Telefonnummern und dann die Bemerkungen zu den Faxnummern oder umgekehrt als Änderungsdaten aufgeführt werden, es sei denn man läßt die laufenden Nummern bei den Kommunikationsadressen oder den Bemerkungen ganz weg oder gibt sie nur teilweise an. Dann spielt die Reihenfolge der Daten eine sehr
wesentliche Rolle.
Folgende Felder werden hier als Schlüsselfelder betrachtet:

Struktur | Felder
---------------------------------
BAPIAD3VL | ADDR_VERS, FROM_DATE
BAPIADTEL | CONSNUMBER
... | ...
BAPIADPAG | CONSNUMBER
BAPICOMREM | COMM_TYPE, CONSNUMBER, LANGU

Es ist möglich, die laufenden Nummern bei den Kommunikationsadressen und den Bemerkungen leer zu übergeben. In diesem Fall zählt die Reihenfolge der übergebenen Daten, das heißt zum Beispiel, wenn man von den in aufsteigender Reihenfolge nach laufenden Nummern sortierten schon angelegten Telefonnummern die an zweiter Stelle stehende Telefonnummer löschen möchte, muß man mit diesem Funktionsbaustein an erster Stelle eine Dummy-Telefonnummernzeile mit Aktualisierungskennzeichen (U) übergeben, ohne dabei Felder zum Aktualisieren zu markieren, und an zweiter Stelle eine Telefonnummernzeile mit Löschkennzeichen (D) übergeben.
Man muß dabei beachten, daß die auf der Datenbank stehenden Kommunikationsadressen in der Regel nicht nach laufenden Nummern sortiert sind. Deshalb muß man zunächst die Reihenfolge der nach laufenden Nummern sortierten Kommunikationsadressen ermitteln.
Von obiger Vorgehensweise ist allerdings abzuraten, da man sehr leicht Fehler bei der Zuordnung der Daten machen kann. Die Angabe der laufenden Nummern als Schlüssel ist wesentlich sicherer.

Bei den zum Anlegen (I) vorgesehenen Kommunikationsadressen und den Adressen dazu sollte man eigene laufende Nummern vergeben, damit die Zuordnung Kommunikationsadresse - Bemerkung klar ist. Achten muß man in diesem Fall nur darauf, daß die laufenden Nummern noch nicht auf der Datenbank verwendet werden, es sei denn man möchte eine Bemerkung explizit einer schon vorhandenen Kommunikationsadresse zuordnen. Unterläßt man die Nummernvergabe, so wird davon ausgegangen, daß alle einzufügenden Bemerkungen auch zu einzufügenden Kommunikationsadressen gehören und nicht etwa zu schon vorhandenen Kommunikationsadressen hinzugefügt werden sollen (dies würde Sinn machen, wenn eine Bemerkung in einer anderen als der Anlegesprache einer Kommunikationsadresse zu dieser hinzugefügt werden soll).
Die Zuordnung erfolgt dann einzig und allein über die Reihenfolge der übergebenen Daten. Also die erste angegebene Bemerkung zu einer Telefonnummer in deutscher Sprache, die zum Anlegen (I) gekennzeichnet ist, wird auch der ersten angegebenen zum Einfügen vorgesehenen Telefonummer zugeordnet. die dritte Bemerkung in englischer Sprache mit Einfüge-Kennzeichen (I) zu einer Faxnummer wird der dritten angegebenen zum Einfügen vorgesehenen Faxnummer zugeordnet.
Es ist in diesem Fall nicht möglich eine Bemerkung zu einer schon vorhandenen Kommunikationsadresse hinzuzufügen. Dafür benötigt man immer die richtige laufende Nummer.

Werden bei einem Typ von Kommunikationsadressen und deren Bemerkungen die laufenden Nummern gefüllt und bei einem anderen Typ nicht, so hat dies keine Auswirkungen auf die Gesamtfunktionalität. Alle Kommunikationsarten werden separat verarbeitet, d.h. sind bei einer Kommunikationsart vollständig laufende Nummern angegeben, so werden diese auch berücksichtigt, auch wenn bei einer anderen Kommunikationsart vollständig oder teilweise die laufenden Nummern fehlen. In den letzteren beiden Fällen wird die Reihenfolge der Daten zur Verarbeitung verwendet.

Es ist erlaubt, bei den einzufügenden (I) Kommunikationsadressen die laufenden Nummern anzugeben und sie bei den zu aktualisierenden (U) und zu löschenden (D) Kommunikationsadressen wegzulassen und umgekehrt. Die Verarbeitung erfolgt getrennt je nach Fall mit laufenden Nummern oder über die Reihenfolge der Daten. Lediglich zu aktualisierende (U) und zu löschende (D) Kommunikationsadressen müssen beide gemeinsam entweder vollständig mit oder vollständig ohne laufende Nummern übergeben werden.
Auf der sicheren Seite ist man auf jeden Fall immer, wenn bei allen Daten vollständig die laufenden Nummern angegeben werden.

Ein vorheriges Nachlesen der zu ändernden Daten ist erforderlich (z.B. mittels FB BAPI_ADDRESSCONTPART_GETDETAIL), falls auch Kommunikationsdaten geändert werden sollen, damit man die laufenden Nummern der Kommunikationsdaten kennt.

Die Adreßnummer der zum Objekttyp und zum Objektschlüssel zugehörigen Organisation wird im Export-Parameter ADDRESS_NUMBER zurückgegeben, die Personennummer des Ansprechpartners im Feld PERSON_NUMBER.

Eventuelle Warnungen und Fehler bei der Verarbeitung können in der Tabelle RETURN nachgelesen werden.

Um mit diesem Funktionsbaustein arbeiten zu können, muß das System wissen, wie es die Zuordnung zwischen dem zu verarbeitenden BOR-Objekttyp und den Referenzen auf die abgelegte zugehörige Adresse ermitteln soll.
Dazu muß Tabelle TSADOBJ zum BOR-Objekttyp die Namen der Anwendungstabellen und Felder enthalten, in denen die Adreßreferenzen abgelegt sind. Außerdem muß in Tabelle TSADRV der Name des Callback-Funktionsbausteins vermerkt sein, mit welchem diese Adreßreferenzen ausgelesen werden können.
Sind die entsprechenden Tabelleneinträge in TSADOBJ und TSADRV nicht vorhanden, so gibt der Funktionsbaustein eine Meldung in der Fehlertabelle RETURN zurück und die Adresse des BOR-Objektes kann nicht weiter verarbeitet werden.

In dieser Funktion wird kein COMMIT-Befehl abgesetzt, welches den Programmierrichtlinien für BAPIs ab Release 4.0 entspricht.
Bitte beachten Sie hierzu den OSS-Hinweis 131838.

In die Übergabestrukturen BAPIADTEL, BAPIADFAX, ... , BAPIADPAG für die Kommunikationsdaten und BAPICOMREM für die Bemerkungen dazu wird das Ergebnis der Verarbeitung zurückgestellt, sofern nicht ein Ausnahmefehler ('E') während der BAPI-Verarbeitung aufgetreten ist.
Das heißt, konnte eine Kommunikationsadresse verarbeitet werden, stehen in BAPIAD* nach der Verarbeitung die Daten so, wie sie dann auf der Datenbank vorhanden sind bzw. nach einem anschließenden COMMIT auf der Datenbank stehen würden.
Bei einer Telefonnummer wird zum Beispiel das Feld 'TEL_NO' für die vollständige Telefonnummer gefüllt. Wichtiger ist, daß auch die verwendeten laufenden Nummern der Kommunikationsadressen zurückgegeben werden. Dies spielt insbesondere eine Rolle bei Kommunikationsadressen, die neu eingefügt wurden.
Konnte eine Kommunikationsadresse oder eine Bemerkung dazu nicht verarbeitet werden, so wird in der entsprechenden Zeile der zugehörigen BAPIAD*-Struktur das Fehlerkennzeichen 'ERRORFLAG' auf 'X' gesetzt und die laufende Nummer 'CONSNUMBER' erhält den Wert '000'.

Wenn Sie mit diesem BAPI auch Kommunikationsdaten zur Adresse pflegen möchten, so müssen Sie folgende Punkte beachten:

Achten Sie darauf, daß beim Anlegen von Kommunikationsdaten immer genau eine Nummer als Standardnummer (Feld STD_NO = 'X') gekennzeichnet ist.
Beim Ändern, Löschen oder Hinzufügen von Kommunikationsdaten muß ebenfalls sichergestellt sein, daß sich unter den resultierenden Daten genau eine Standardnummer befindet.

Geben Sie außerdem bei jeder Kommunikationsadresse eine laufende Nummer mit (Feld CONSNUMBER). Dies ist insbesondere dann notwendig, falls Sie zusätzlich noch Bemerkungen zu den Kommunikationsadressen, vielleicht sogar in mehreren Sprachen, pflegen wollen. Die Zuordnung zwischen Kommunikationsadressen und Bemerkungen erfolgt nämlich gerade über diese laufenden Nummern.
Beim Anlegen oder Hinzufügen sind diese laufenden Nummern frei wählbar, es kann jedoch sein, daß diese beim Sichern auf andere Werte geändert werden, wenn zum Beispiel die Nummern schon verwendet werden.
Beim Ändern oder Löschen von Kommunikationsadressen sind natürlich die laufenden Nummern zu verwenden, mit denen die Daten auf der Datenbank angelegt wurden.





Parameter

ACCEPT_ERROR
ADDRESS_NUMBER
BAPIAD3VL
BAPIAD3VL_X
BAPIADFAX
BAPIADFAX_X
BAPIADPAG
BAPIADPAG_X
BAPIADPRT
BAPIADPRT_X
BAPIADRFC
BAPIADRFC_X
BAPIADRML
BAPIADRML_X
BAPIADSMTP
BAPIADSMT_X
BAPIADSSF
BAPIADSSF_X
BAPIADTEL
BAPIADTEL_X
BAPIADTLX
BAPIADTLX_X
BAPIADTTX
BAPIADTTX_X
BAPIADURI
BAPIADURI_X
BAPIADUSE
BAPIADUSE_X
BAPIADX400
BAPIADX40_X
BAPICOMREM
BAPICOMRE_X
CONTEXT
IV_CHECK_ADDRESS
IV_TIME_DEPENDENT_COMM_DATA
OBJ_ID_C
OBJ_ID_EXT
OBJ_ID_P
OBJ_TYPE_C
OBJ_TYPE_P
PERSON_NUMBER
RETURN
SAVE_ADDRESS

Ausnahmen

Funktionsgruppe

SZAM

rdisp/max_wprun_time - Maximum work process run time   TXBHW - Original Tax Base Amount in Local Currency  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 16779 Date: 20240523 Time: 102647     sap01-206 ( 294 ms )