Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => Тема начата: themax от Март 10, 2015, 06:03:26 am

Название: Удаление пробела в строке
Отправлено: themax от Март 10, 2015, 06:03:26 am
Всем добрый день! Мне опять понадобилась помощь знающих Абаперов. Пытаюсь написать программу пакетного ввода материалов. Столкнулся с такой проблеммкой, значение одного из полей (название класса вкладки классификация материала) из файла откуда подтягиваются данные содержит в конце значение пробел, совсем не нужный мне пробел. Т.е. значение из файла передаётся типа 27.11.62.700 B или 26.11.30.300 A. Вот этот пробел между цифрами и буквой передаваемый из файла в программу нужно как то убрать. Пытался сделать это
 
Код: You are not allowed to view links. Register or Login
replace space with '' into wa-skp.
но не получается. Пробел не убирается. Есть ещё команда translate, но там нужно указывать какие символы заменяются, а тут пробел. Может кто подскажет? Буду весьма признательным за помощь.

 
Название: Re: Удаление пробела в строке
Отправлено: themax от Март 10, 2015, 07:47:47 am
Вроде бы понял как сделать. С помощью команды split сначала разделил поле на пробеле
Код: You are not allowed to view links. Register or Login
SPLIT wa-skp at ' ' INTO TABLE tab2.
  CLEAR wa-skp.
  loop at tab2.
    CONCATENATE wa-skp tab2-name into wa-skp.
и вроде соединилось без пробела.
Название: Re: Удаление пробела в строке
Отправлено: Uukrul от Март 10, 2015, 09:56:20 am
You are not allowed to view links. Register or Login
Вроде бы понял как сделать. С помощью команды split сначала разделил поле на пробеле
Да вроде как нет, а будет у вас там два пробела или больше, что делать будем? Все можно немного проще сделать:
Код: You are not allowed to view links. Register or Login
CONSTANTS: con_str(14) TYPE c VALUE '26.11.30.300 A'.

DATA: l_str(14) TYPE c.

l_str = con_str.

REPLACE ALL OCCURRENCES OF REGEX ' *' IN l_str WITH space.   "<- Типа так все проблемы убрать

WRITE: / l_str.

Название: Re: Удаление пробела в строке
Отправлено: themax от Март 10, 2015, 12:23:18 pm
Ну на данный момент у меня в шаблоне заполняемым пользователями всегда стоит один пробел,  но Ваша задумка действительно по лучше будет. Её тоже попробую, спасибо Uukrul.
Название: Re: Удаление пробела в строке
Отправлено: themax от Март 11, 2015, 12:45:04 pm
Я попробывал Вашу команду REPLACE ALL OCCURRENCES OF REGEX на примере того что вы написали, уважаемый Uukrul, убирает так же как и моём случае только один пробел. Если пробую добавить запись с одним пробелом, то его убирает нормально. Может надо как то иначе?
Название: Re: Удаление пробела в строке
Отправлено: Uukrul от Март 11, 2015, 01:10:45 pm
You are not allowed to view links. Register or Login
Может надо как то иначе?
Вот такой вот пример
Код: You are not allowed to view links. Register or Login
CONSTANTS: con_str(50) TYPE c VALUE '26. 11.   30. 300 A'.

DATA: l_str(50) TYPE c.

l_str = con_str.
REPLACE ALL OCCURRENCES OF REGEX ' *' IN l_str WITH space.
WRITE: / 'Исходная строка:', 30 con_str, / 'Обработанная строка:', 30 l_str.
На выходе получаем вот как на экране. Все убирает и обрабатывает все пробелы, которых там как видим изначально много было.
Название: Re: Удаление пробела в строке
Отправлено: Uukrul от Март 12, 2015, 05:42:47 pm
Что-то я совсем плохой стал, забыл про команду CONDENSE, которая как раз пробелы из строки удаляет.
Код: You are not allowed to view links. Register or Login
l_str = con_str.
CONDENSE l_str NO-GAPS.

WRITE: / 'Исходная строка:', 30 con_str, / 'Обработанная строка:', 30 l_str.

PS: Способ предложенный в самом начале, он конечно универсальный для любых символов, этот же работает именно только с пробелами.
Название: Re: Удаление пробела в строке
Отправлено: themax от Март 13, 2015, 05:51:20 am
Вот с командой CONDENSE как Вы описали действительно убирает все пробелы. Спасибо!
Название: Re: Удаление пробела в строке
Отправлено: SCORPION_Z от Декабрь 09, 2019, 11:45:14 am
К сожалению CONDENSE  NO-GAPS не убирает так называемый "неразрывный пробел", который может быть в текстах, пришедших из внешних систем, например
Название: Re: Удаление пробела в строке
Отправлено: Uukrul от Декабрь 10, 2019, 08:09:47 am
You are not allowed to view links. Register or Login
К сожалению CONDENSE  NO-GAPS не убирает так называемый "неразрывный пробел", который может быть в текстах, пришедших из внешних систем, например
Ну это уже не пробел к сожалению, а спецсимвол форматирования текста, так что правильно его не удаляет. Мало ли у кого какие символы форматирования могут быть. Но никто вам не мешает использовать REPLACE  который может заменить/убрать данный символ из текста.