(SAP / ABAP) Группировка цифр и удаление 0 (ноль) перед значением - PullRequest
5 голосов
/ 23 октября 2011

Я все еще новичок в ABAP, и я хочу знать, как сделать 1. Группировка цифр 2. Удалить 0 перед значением

  1. Группировка цифр, когда у меня есть соотношение цены и качестванапример, 3000000 (3 миллиона) я хочу напечатать 3.000.000 на экране (есть точка каждые три символа от последнего символа)

  2. Удалить 0 (ноль) перед значениемКогда я выбираю значение из таблицы и печатаю его на экране, значение 0 на левой стороне проверяет значение базы данных: 129, когда я помещаю его во внутреннюю таблицу и печатаю его, оно становится 0000129

Спасибо, приятель

Ответы [ 4 ]

5 голосов
/ 23 октября 2011

Оператор WRITE позволяет указать валюту.Пример:

DATA price TYPE p DECIMALS 2.
price = '3000000'.
WRITE: / price CURRENCY 'USD'.

Обратите внимание, что это не интерпретирует само число, а просто добавляет запятые и точки в определенных позициях в зависимости от указанной валюты.Поэтому, если у вас есть целое число со значением 3000000, и вы пишете его с валютой USD, результат будет 30.000,00.

Я предлагаю вам прочитать справочную информацию F1 на WRITE оператор, потому что кроме этого есть намного больше опций.

-

Удаление ведущих нулей выполняется с помощью процедуры преобразования.CONVERSION_EXIT_ALPHA_INPUT добавит ведущие нули, а CONVERSION_EXIT_ALPHA_OUTPUT удалит их.Можно добавить эти подпрограммы в домен в словаре, поэтому преобразование будет выполнено автоматически.Например, тип MATNR:

DATA matnr TYPE matnr.
matnr = '0000129'.
WRITE: / matnr.

. Будет выведено 129, поскольку в домене MATNR задана процедура преобразования.

В случае типа, который неиметь это, например:

DATA value(7) TYPE n.
value = '0000129'.
WRITE: / value.

Выход будет 0000129.Вы можете вызвать процедуру CONVERSION_EXIT_ALPHA_OUTPUT, чтобы получить результат без начальных нулей:

DATA value(7) TYPE n.
value = '0000129'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
  EXPORTING
    input  = value
  IMPORTING
    output = value.
WRITE: / value.
2 голосов
/ 14 декабря 2011

Также обратите внимание, что преобразование вывода для числовидных типов - запускается оператором WRITE - управляется свойством в основных данных пользователя.Там должны быть настроены десятичный разделитель и группировка цифр.

Вы можете проверить это в основных транзакциях пользователя, например, SU01 или SU01D.

1 голос
/ 03 июня 2013

Для удаления начальных нулей вы можете сделать следующее:

data: lv_n type n length 10 value '129'.

shift lv_n left deleting leading '0'.
1 голос
/ 23 октября 2011

Для удаления заполнения нулями используйте оператор NO-ZERO.Для разделителя тысяч я не вижу никаких проблем, потому что это стандартный способ, которым ABAP печатает значения типа P. Вот пример кода.

REPORT  ZZZ.

DATA:
  g_n TYPE n LENGTH 10 VALUE '129',
  g_p TYPE p LENGTH 12 DECIMALS 2 VALUE '3000000'.

START-OF-SELECTION.
  WRITE /: g_n, g_p.
  WRITE /: g_n NO-ZERO, g_p.

Это производит вывод.

000000129
           3.000.000,00
      129
           3.000.000,00
...