Lerne und übe ABAP. In der ABAP-Übung „Phone Number“ implementierst Du ein ABAP-Programm, um eingegebene Telefonnummern zu bereinigen. Es gibt 40 geniale ABAP Übungen auf exercism. Du kannst diese Übung entweder in Deinem SAP-System ausprobieren oder Dich kostenlos auf der Plattform anmelden und die Übung absolvieren. Du kannst Dir sogar Lösungen von anderen Nutzen ansehen und dadurch Deine Lösung vergleichen.
Aufgabenstellung
Bereinige vom Benutzer eingegebene Telefonnummern, damit sie als SMS versendet werden können.
Der North American Numbering Plan (NANP) ist ein Telefonnummernsystem, das von vielen Ländern in Nordamerika wie den Vereinigten Staaten, Kanada oder Bermuda verwendet wird. Alle NANP-Länder haben dieselbe internationale Landesvorwahl: 1.
NANP-Nummern sind zehnstellige Nummern, die aus einer dreistelligen Nummerierungsplan-Vorwahl, allgemein bekannt als Ortsvorwahl, gefolgt von einer siebenstelligen Ortsnummer bestehen. Die ersten drei Ziffern der Ortsnetzkennzahl stellen die Vorwahl dar, gefolgt von der vierstelligen eindeutigen Teilnehmernummer.
Das Format lautet in der Regel
(NXX)-NXX-XXXX
wobei N für eine beliebige Ziffer von 2 bis 9 und X für eine beliebige Ziffer von 0 bis 9 steht.
Deine Aufgabe ist es, unterschiedlich formatierte Telefonnummern zu bereinigen, indem du Satzzeichen und die Landesvorwahl (1) entfernst, falls vorhanden.
Zum Beispiel die Eingaben
- +1 (613)-995-0253
- 613-995-0253
- 1 613 995 0253
- 613.995.0253
sollten alle die folgende Ausgabe erzeugen
6139950253
Hinweis: Da es in dieser Übung nur um Telefonnummern geht, die in NANP-Ländern verwendet werden, wird nur 1 als gültige Ländervorwahl betrachtet.
Beispiel Programmierung
CLASS zcl_phone_number DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. METHODS clean IMPORTING !number TYPE string RETURNING VALUE(result) TYPE string RAISING cx_parameter_invalid. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_phone_number IMPLEMENTATION. METHOD clean. number = replace( val = number regex = '\W' with = '' occ = 0 ). CONDENSE number NO-GAPS. DATA(lv_length) = strlen( number ). IF lv_length <= 9 OR lv_length > 11 OR ( lv_length = 11 AND number(1) <> '1' ). RAISE EXCEPTION TYPE cx_parameter_invalid. ENDIF. IF number CO '0123456789'. IF lv_length = 10. DATA(lv_plan_area_code) = number(3). DATA(lv_exchange_code) = number+3(lv_length). ELSEIF lv_length = 11. lv_plan_area_code = number+1(3). lv_exchange_code = number+4(lv_length). ENDIF. IF lv_plan_area_code(1) CO '01' OR lv_exchange_code(1) CO '01'. RAISE EXCEPTION TYPE cx_parameter_invalid. ENDIF. ELSE. RAISE EXCEPTION TYPE cx_parameter_invalid. ENDIF. IF lv_length = 11 AND number(1) = '1'. lv_length = lv_length - 1. number = number+1(lv_length). ENDIF. result = number. ENDMETHOD. ENDCLASS.
Erklärung
Die Methode clean nimmt eine Zeichenkette als Eingabe und gibt eine bereinigte Telefonnummer zurück.
Zuerst werden alle nicht-numerischen Zeichen aus der Eingabezeichenkette entfernt, indem die Methode replace mit regulären Ausdrücken verwendet wird. Danach werden alle Leerzeichen aus der Zeichenkette mit der Methode CONDENSE entfernt.
Als nächstes wird geprüft, ob die Länge der Zeichenkette 10 oder 11 ist und ob bei einer Länge von 11 das erste Zeichen „1“ ist. Ist dies nicht der Fall, wird die Ausnahme cx_parameter_invalid geworfen.
Anschließend wird geprüft, ob der String nur aus Zahlen besteht. Ist dies nicht der Fall, wird eine Ausnahme cx_parameter_invalid geworfen.
Zuletzt wird geprüft, ob das erste Zeichen des ersten Teils des Strings (Präfix) oder des zweiten Teils (Exchange-Code) „0“ oder „1“ ist. Ist dies der Fall, wird eine Ausnahme cx_parameter_invalid geworfen.
Wenn das erste Zeichen bei einer Länge von 11 „1“ ist, wird es aus dem String entfernt und das Ergebnis ist der bereinigte String.
Über den Autor
Mein Name ist Andreas Geiger und ich bin ein erfahrener Senior SAP Berater. Mit mehr als 10 Jahren Berufserfahrung habe ich mehrere SAP-Projekte erfolgreich abgeschlossen und umfangreiche Kenntnisse in verschiedenen Bereichen wie SAP FI, SAP MM und ABAP erworben. Nun möchte ich mein Wissen mit Dir teilen, um Dir einen Mehrwert zu bieten und Dich bei Deiner täglichen Arbeit mit dem SAP-System zu unterstützen.
ERP UP unterstützen
Wenn Du mit ERP UP zufrieden bist, kannst Du mich gerne unterstützen. Dabei gibt es unzählige Möglichkeiten, wie Du mich einfach und schnell unterstützen kannst. Wie Du genau ERP UP unterstützen kannst, erfährst Du hier. Vielen Dank.