Как функциональный модуль SPELL_AMOUNT преобразует число в строковые переменные? - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь понять исходный код функционального модуля SPELL_AMOUNT в SAP, который преобразует число, сумму или представление валюты в буквы.Например, «568» будет преобразовано в ПЯТЬ СТО ШЕСТЬДЕСЯТ ВОСЕМЬ.

Однако, когда я использую SE37 для чтения исходного кода FM, я не смог найти фрагмент кода, который указывает, что числопреобразуется в строку.Например, IF int_decimal = 10. APPEND "TEN" INTO in_word.

Пожалуйста, объясните, если у вас есть доступ к исходному коду ABAP

спасибо.

1 Ответ

0 голосов
/ 29 декабря 2018

Функциональный модуль использует значения, хранящиеся в таблице базы данных T015Z («Цифры и цифры в словах»).
Там числа в разных единицах отображаются в слова на разных языках.enter image description here

См. В том числе LF017F01, форма ziffern_in_worten (по-немецки «цифры в словах»).
Таблица читается в формате FORM t015z_lesen во внутреннемтаблица с тем же именем (t015z).
После извлечения этих данных они обрабатываются, чтобы получить текст для полного числа / суммы.Смотрите эти три вызова подпрограммы:

  PERFORM ziffern_in_worten.   "Get data from the database, convert numbers to words
  PERFORM betrag_in_worten.    "Get amount in words
  PERFORM nachkomma_in_worten. "Get decimal part in words

enter image description here

...