Telefon/ Fax ändern

Ein kurzes Programm zum Anlegen neuer Telefon-/ Faxnummern oder Änderung.

Beschreibung

Dieser Report Ändert vorhandene Fax-Nummern oder legt einen neuen Eintrag an. Existiert bereits eine Nummer, so wird die neue Nummer zusätzlich angelegt.

Tipp

In gleicher Weise können natürlich auch die Telefonummern, Mail-Adressen, Teletext etc geändert werden. Anstelle von ADFAX in der DATA-Anweisung und im Übergabeparameter TABLE_TYPE müssen dann folgende Werte verwendet werden:

ADFAX  Faxnummern
ADPAG  Pagernummern
ADPRT  PRT-Adressen
ADRFC  RFC-Adressen
ADRML  RML-Adressen
ADSMTP SMTP-Adressen
ADSSF  SSF-Adressen
ADTEL  Telefonnummern
ADTLX  Telexnummern
ADTTX  Teletexnummern
ADURI  URI-Adressen
ADX400 X.400-Adressen

ADD_SAVE

Anstelle des verwendetes Baustein ADDR_MEMORY_SAVE kann auch der Baustein ADDR_SINGLE_SAVE unter Angabe der Adressnummer verwendet werden. Der Single-Save ist wahrscheinlich sogar am besten, denn wenn man innerhalb einer SAP-Anwendung programmiert (User-Exit, BAdI, …) kann der Memory-Save zu ungewünschten Fehlern führen, da evtl. unvollständige oder kopierte Adressen ebenfalls bereits gespeichert werden.

Code

REPORT  zz_address_fax_number.

*== data
DATA lt_fax         TYPE STANDARD TABLE OF adfax.
DATA ls_fax         TYPE adfax.
FIELD-SYMBOLS <fax> TYPE adfax.
DATA lt_errors      TYPE STANDARD TABLE OF addr_error.

*== selection screen
PARAMETERS p_adrnr TYPE adrc-addrnumber.
PARAMETERS p_faxnr TYPE adfax-fax_number DEFAULT ‚555 – 1234 556‘.
PARAMETERS p_new   AS CHECKBOX. „Create new address / append to existing

*== First read existing numbers
CALL FUNCTION ‚ADDR_COMM_GET‘
  EXPORTING
    address_number    = p_adrnr
    table_type        = ‚ADFAX‘
    iv_current_state  = ‚X‘
  TABLES
    comm_table        = lt_fax
    error_table       = lt_errors
  EXCEPTIONS
    parameter_error   = 1
    address_not_exist = 2
    internal_error    = 3
    OTHERS            = 4.
IF sy-subrc <> 0.
*== also check LT_ERRORS for entries with MSG_TYPE „E“!
  BREAK-POINT.
ENDIF.

*== as there can be warnings in ERROR-table: Clear existing entries
CLEAR lt_errors.


IF lt_fax IS INITIAL OR p_new = ‚X‘.
*== do not change existing numbers:
  CLEAR lt_fax.
*== ADD the new number
  ls_fax-fax_number = p_faxnr.
  ls_fax-country    = ‚DE‘.
  ls_fax-updateflag = ‚I‘.
  APPEND ls_fax TO lt_fax.
ELSE.
  READ TABLE lt_fax ASSIGNING <fax> INDEX 1.
*== CHANGE the existing number
  IF sy-subrc = 0.
    <fax>-fax_number = p_faxnr.
    <fax>-country    = ‚DE‘.
    <fax>-updateflag = ‚U‘.
  ENDIF.
ENDIF.

*== set number
CALL FUNCTION ‚ADDR_COMM_MAINTAIN‘
  EXPORTING
    address_number    = p_adrnr
    language          = sy-langu
    table_type        = ‚ADFAX‘
    check_address     = ‚X‘
  TABLES
    comm_table        = lt_fax
    error_table       = lt_errors
  EXCEPTIONS
    parameter_error   = 1
    address_not_exist = 2
    internal_error    = 3
    OTHERS            = 4.
IF sy-subrc <> 0.
*== Also check for LT_ERRORS!!
  BREAK-POINT.
ELSE.
*== Everything okay: Save address
  CALL FUNCTION ‚ADDR_MEMORY_SAVE‘.
*==> Also ADDR_SINGLE_SAVE is possible!:
*  CALL FUNCTION ‚ADDR_SINGLE_SAVE‘
*    EXPORTING
*      address_number = p_adrnr.

ENDIF.

 

image_pdfimage_print