Funktionsbaustein ADDR COMM GET

Aus SAP-Wiki
Wechseln zu:Navigation, Suche

Siehe Sammlung Funktionsbausteine.

Der Funktionsbaustein ADDR_COMM_GET kann verwendet werden, um zu einer Adresse die Kommunikationsdaten auszulesen.

Lesen einer Adresse, die zur Laufzeit angelegt wird

  • Mindestens im Kundenauftrag hat die Verwendung dieses Funktionsbausteins den Vorteil, dass auch zur Laufzeit (im Kundenauftragserstellungsprozess) angelegte Adressen hiermit ausgelesen werden können. Direktes Lesen der entsprechenden Datenbankentabellen würde hier nicht weiterhelfen, da die Daten noch nicht auf die Datenbanktabellen fortgeschrieben sind. In diesem Fall werden offensichtlich im Coding der Kundenauftragserstellung Daten in das Hauptprogramm der Funktionsgruppe SZA0 geschrieben, die dann vom Funktionsbaustein verwendet werden können.
  • Im Kundenauftrag sieht man in der internen Tabelle der Vertriebspartner XVBPA im Feld der Adressnummer, dass hier keine Adressnummer steht, sondern u. a. das Sonderzeichen "$", wenn die Adresse erst im Kundenauftragsprozess angelegt wird. Diesen Feldwert wird nun dem Adresshandler (Parameter ADDR_HANDLE) übergeben und der Parameter mit der Adressnummer (Parameter ADDRESS_NUMBER) leer gelassen.
  • Im Kundenprojekt hat dieser Trick geholfen eine Telefonnummer einer angelegten Adresse vom Warenempfänger auszulesen, die ansonsten in der vollständigen Länge nicht in den globalen Daten vom Kundenauftragsprozess zu finden war. In den globalen Daten (einer Adressstruktur) war die Telefonnummer nur bis zur Länge 16 zu finden, was bei den meisten Adressen ausreichen würde, aber leider nicht immer.

Coding

 DATA: lv_table_type   TYPE szad_field-table_type,
       lt_comm_table   TYPE TABLE OF adtel,
       lv_returncode   TYPE szad_field-returncode,
       lt_error_table  TYPE STANDARD TABLE OF addr_error,
       lv_adrnr        TYPE adrc-addrnumber,
       lv_adrnr_handle TYPE szad_field-handle.
 
 ...  "Die Partnerdaten vom Partner WE stehen in der Field-Symbol-Struktur "<fs_vbpa>"

* Prüfung auf das Sonderzeichen '$', dann ist die Adresse frisch angelegt im Beleg
  IF <fs_vbpa>-adrnr CA '$'.
    lv_adrnr        = space.
    lv_adrnr_handle = <fs_vbpa>-adrnr.  "'WE $...'
  ELSE.  "Hier ist die Adresse bekannt
    lv_adrnr = <fs_vbpa>-adrnr.         "Adressnummer vom WE
    clear lv_adrnr_handle.
  ENDIF.
 
  lv_table_type = 'ADTEL'.

* Lesen Telekommunikationsdaten zu einer Adresse
  CALL FUNCTION 'ADDR_COMM_GET'
    EXPORTING
      ADDRESS_HANDLE    = lv_adrnr_handle
      address_number    = lv_adrnr
*     DATE_FROM         = '00010101'
*     LANGUAGE          = sy-langu
      table_type        = lv_table_type
      IV_CURRENT_STATE  = 'X'
    IMPORTING
      returncode        = lv_returncode
    TABLES
      comm_table        = lt_comm_table
      error_table       = lt_error_table
    EXCEPTIONS
      parameter_error   = 1
      address_not_exist = 2
      internal_error    = 3
      address_blocked   = 4
      OTHERS            = 5.
  IF sy-subrc <> 0.
    message i531(0u) with 'Fehler bei Funktionsbaustein ADDR_COMM_GET'.
  ENDIF.