маска

Маска ввода для номера телефона

Есть в природе так называемые маски для ввода, но в SAP нет такого понятия.

Вместо этого в ABAP есть такое свойство домена как “Conversion exit” или “Подпрограмма преобразования”.

В чём фикус – признаётся разница между отображением данных и внутренним хранением. Примеры:

  • Внутренний формат хранения даты = YYYYMMDD, но показывается как DD.MM.YYYY
  • Дату можно вводить без разделителей и она преобразовывается к нужному формату
  • Счёт ГК хранится с полным комплектом лидирующих нулей, а показывается без них
  • Счёт ГК можно вводить с лидирующими нулями, которые исчезнут после ввода

Для реализации такого поведения требуется два фрагмента кода:

Преобразование из внутреннего формата хранения в формат ввода/вывода
Преобразование из формата ввода/вывода во внутренний формат хранения

Для примера разберём алгоритм поведения альфа-преобразования:

Берём INTERNAL (0000101101), убираем оттуда лидирующие нули, кладём в EXTERNAL (101101)
Берём EXTERNAL (101101), если поле содержит только цифры, то сдвигаем все поля вправо, заполняя пустое место символами нулей и кладём в INTERNAL (0000101101)

Для полноты демонстрации реализуем кое-что веселее альфа-преобразования – номер телефона:

Принимаем следующий формат вывода: +7(701)123-45-67
Принимаем следующий внутренний формат: 10 значащих цифр 7011234567

Подписка на маска