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.
- Aggregation mit VALUE, GROUPS und FOR - 17. Dezember 2020
- Automatische Aufgabengenerierung [abapGit] - 20. Oktober 2020
- Loop At ITAB Group By - 9. September 2020