Текущее время: Пн, июл 21 2025, 17:13

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Проблема с REPLACE
СообщениеДобавлено: Чт, янв 15 2009, 16:07 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Доброго всем времени суток!

Возникла такая проблема. Есть переменная типа char18, которая содержит ' 1234567890' (тут не видно, но перед 1234567890 в переменной 8 пустых мест). Нужно получить '000000001234567890'.

Первый вариант
Code:
REPLACE ALL OCCURRENCES OF ' ' IN lv_equnr WITH '0' IN CHARACTER MODE.

приводит к дампу, где описано, что подобным вызовом программа будет зациклена.

Второй вариант
Code:
DO 1000 TIMES.
REPLACE FIRST OCCURRENCE OF ' ' IN lv_equnr WITH '0' IN CHARACTER MODE.
IF sy-subrc ne 0.
exit.
ENDIF.
ENDDO.

приводит к тому, что цикл заканчивается после первого прохода и в переменной значение '0 123456789' (между 0 и 123456789 все те же 8 пустых мест и пропал 0 в конце). sy-subrc после этого равен 2, что означает, что 0 был вставлен на позицию первого найденного пробела, а все предыдущее содержимое было сдвинуто вправо. Какой же это тогда REPLACE, если фактически самого REPLACE не происходит.

Подскажите, как выйти из ситуации. Заранее спасибо!

_________________
Вежливость - лучшее оружие чайника :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с REPLACE
СообщениеДобавлено: Чт, янв 15 2009, 16:17 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
ФМ CONVERSION_EXIT_ALPHA_INPUT

_________________
"I have a dream"(c)Martin Luther King, Jr.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с REPLACE
СообщениеДобавлено: Чт, янв 15 2009, 16:22 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Спасибо!!! :pivo: То, что доктор прописал!

_________________
Вежливость - лучшее оружие чайника :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с REPLACE
СообщениеДобавлено: Чт, янв 15 2009, 16:30 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, апр 07 2005, 05:27
Сообщения: 621
Откуда: Москва
Пол: Мужской
Вдогонку:

Я предпочитаю использовать OVERLAY со строчкой нулей


Последний раз редактировалось lumer Чт, янв 15 2009, 17:16, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с REPLACE
СообщениеДобавлено: Чт, янв 15 2009, 16:58 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
VID написал:
Первый вариант
Code:
REPLACE ALL OCCURRENCES OF ' ' IN lv_equnr WITH '0' IN CHARACTER MODE.


If sub_string in pattern is an empty string or is of type c, d, n, or t and only contains empty characters, the position before the first character or byte of the search area is located when the first occurrence is being searched for, and the content of new is inserted in front of the first character. If all occurrences are being searched for, the CX_SY_REPLACE_INFINITE_LOOP exception is triggered in this case.

Так что всё согласно документации работает

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с REPLACE
СообщениеДобавлено: Чт, янв 15 2009, 18:38 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Я согласен, что все без обмана :) Но по сути в этом случае это совсем не Replace. Уже б сделали по-человечески, чтобы заменяло во всех случаях.

_________________
Вежливость - лучшее оружие чайника :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с REPLACE
СообщениеДобавлено: Чт, янв 15 2009, 19:20 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Convert ‘1’ (source) into ‘0000...1’(target):

Code:
* Right-align and replace space with 0
target = source.
SHIFT target RIGHT DELETING TRAILING ' '.
TRANSLATE target USING ' 0'.

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с REPLACE
СообщениеДобавлено: Чт, янв 15 2009, 19:24 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Тоже вариант. У меня сначала стоял сдвиг, не хватало только оператора Translate.

_________________
Вежливость - лучшее оружие чайника :-)


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

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


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

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


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

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