Текущее время: Сб, июл 19 2025, 09:21

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Стринг в integer
СообщениеДобавлено: Чт, сен 28 2006, 10:35 
Начинающий
Начинающий

Зарегистрирован:
Вт, сен 05 2006, 13:45
Сообщения: 11
Драствуите. Помагите пожалуиста. У меня есть поле стринг '104,000.00'.
мне надо превратить этот стринг в int ili currn . Как это сделать?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 28 2006, 10:39 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
ФМ HRCM_STRING_TO_AMOUNT_CONVERT


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 28 2006, 10:40 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 07 2004, 10:39
Сообщения: 610
малость корявый фм
RS_CONV_EX_2_IN_DTEL
приводит к табличному типу
должен быть способ красивее

_________________
полный SAPец


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 28 2006, 19:51 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Не претендуя на красоту, а чисто спортивного интереса ради. :)

Code:
DATA: input_string TYPE string,
      output_integer TYPE i.

CATCH SYSTEM-EXCEPTIONS
             arithmetic_errors = 1
             conversion_errors = 2.
  TRANSLATE input_string USING ', '.
  CONDENSE input_string NO-GAPS.
  output_integer = input_string.
ENDCATCH.

IF sy-subrc <> 0.
* error message - string contains wrong characters
ENDIF.


На выходе может быть любой цифровой тип, не обязательно I. Кстати, заодно проверила: работает со знаком +/-, причем знак в STRING может быть как перед числом так и после.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, сен 29 2006, 06:32 
Специалист
Специалист

Зарегистрирован:
Пт, июн 16 2006, 11:39
Сообщения: 178
Откуда: Москва
2 Jelena:
Красивая идея :wink:
В данном примере Ваш код будет работать.
Однако в индивидуальных настройках пользователя разделителем групп разрядов, а также целой и дробной части, может оказаться любой символ, не обязательно запятая .


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, сен 29 2006, 07:34 
Менеджер
Менеджер

Зарегистрирован:
Чт, янв 20 2005, 08:34
Сообщения: 573
Пол: Мужской
Цитата:
может оказаться любой символ


Ну не знаю как насчет любого, в 4.7, по моему, это только "пробел", "запятая", "точка".

Можно установить еще и другие?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, сен 29 2006, 08:02 
Специалист
Специалист

Зарегистрирован:
Пт, июн 16 2006, 11:39
Сообщения: 178
Откуда: Москва
Sergo написал:
Цитата:
может оказаться любой символ


Ну не знаю как насчет любого, в 4.7, по моему, это только "пробел", "запятая", "точка".

Можно установить еще и другие?

Согласен, любой из допустимых, суть не меняется.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, сен 29 2006, 08:21 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Code:
  SELECT SINGLE dcpfm INTO dcpfm FROM usr01 WHERE bname = sy-uname.
  CASE dcpfm.
      WHEN ' '.
         dcs = '.'. dcp = ','.
      WHEN 'X'.
         dcs = ','. dcp = '.'.
      WHEN 'Y'.
         dcs = ' '. dcp = ','.
  ENDCASE.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, сен 29 2006, 18:15 
Начинающий
Начинающий

Зарегистрирован:
Вт, авг 15 2006, 18:04
Сообщения: 2
Для преобразования строки в число с проверкой корректности ввода можно воспользоваться функцией:

Code:
  CALL FUNCTION 'MOVE_CHAR_TO_NUM'
    EXPORTING
      CHR             = pf_qty_e
    IMPORTING
      NUM             = pf_qty
    EXCEPTIONS
      CONVT_NO_NUMBER = 1
      CONVT_OVERFLOW  = 2
      OTHERS          = 3.


Для корректной работы рекомендую применить все ноты по этой функции для вашей системы.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, сен 29 2006, 20:01 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Попробовала MOVE_CHAR_TO_NUM (спасибо, кстати). Ей нужно давать CHAR, а на выходе должно быть Р. Если пробовать STRING и I, то валится в дамп, что естественно. Кроме того, Р нужно определять с DECIMALS, иначе число округляется. Так что если как у автора STRING в I, то еще нужно туда-сюда сконвертировать. Мда, за универсальность надо платить. :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 30 2006, 23:53 
Гость
Code:
CALL FUNCTION 'RS_CONV_EX_2_IN_NO_DD'
      EXPORTING
        INPUT_EXTERNAL  = SSSS
      IMPORTING
        OUTPUT_INTERNAL = ZZZZZ
      EXCEPTIONS
        ERROR_MESSAGE   = 100
        OTHERS          = 200.


приведет SSSS к такому виду, как определен ZZZZZ
(можно и к integer, и к P )


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 31 2006, 09:54 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Ну вот еще вариант:
Code:
      CALL FUNCTION 'CATS_NUMERIC_INPUT_CHECK'
           EXPORTING
                input      = input
                internal   = 'X'
           IMPORTING
                output     = output
           EXCEPTIONS
                no_numeric = 1
                OTHERS     = 2.

И input, и output должны быть символьными, если internal = 'X', то в output будет внутренний формат, который можно присвоить переменной числового типа. Функция проверяет формат с учетом пользовательской настройки.
Функция существует, начиная с 4.6с

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB