Автор Тема: Удаление пробела в строке  (Прочитано 16699 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн themax

  • Newbie
  • *
  • Сообщений: 346
  • Репутация: +5/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Удаление пробела в строке
« : Март 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, но там нужно указывать какие символы заменяются, а тут пробел. Может кто подскажет? Буду весьма признательным за помощь.

 

Оффлайн themax

  • Newbie
  • *
  • Сообщений: 346
  • Репутация: +5/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Удаление пробела в строке
« Ответ #1 : Март 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.
и вроде соединилось без пробела.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Удаление пробела в строке
« Ответ #2 : Март 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.


Оффлайн themax

  • Newbie
  • *
  • Сообщений: 346
  • Репутация: +5/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Удаление пробела в строке
« Ответ #3 : Март 10, 2015, 12:23:18 pm »
Ну на данный момент у меня в шаблоне заполняемым пользователями всегда стоит один пробел,  но Ваша задумка действительно по лучше будет. Её тоже попробую, спасибо Uukrul.

Оффлайн themax

  • Newbie
  • *
  • Сообщений: 346
  • Репутация: +5/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Удаление пробела в строке
« Ответ #4 : Март 11, 2015, 12:45:04 pm »
Я попробывал Вашу команду REPLACE ALL OCCURRENCES OF REGEX на примере того что вы написали, уважаемый Uukrul, убирает так же как и моём случае только один пробел. Если пробую добавить запись с одним пробелом, то его убирает нормально. Может надо как то иначе?

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Удаление пробела в строке
« Ответ #5 : Март 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.
На выходе получаем вот как на экране. Все убирает и обрабатывает все пробелы, которых там как видим изначально много было.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Удаление пробела в строке
« Ответ #6 : Март 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: Способ предложенный в самом начале, он конечно универсальный для любых символов, этот же работает именно только с пробелами.

Оффлайн themax

  • Newbie
  • *
  • Сообщений: 346
  • Репутация: +5/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Удаление пробела в строке
« Ответ #7 : Март 13, 2015, 05:51:20 am »
Вот с командой CONDENSE как Вы описали действительно убирает все пробелы. Спасибо!

Оффлайн SCORPION_Z

  • Newbie
  • *
  • Сообщений: 14
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Удаление пробела в строке
« Ответ #8 : Декабрь 09, 2019, 11:45:14 am »
К сожалению CONDENSE  NO-GAPS не убирает так называемый "неразрывный пробел", который может быть в текстах, пришедших из внешних систем, например

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Удаление пробела в строке
« Ответ #9 : Декабрь 10, 2019, 08:09:47 am »
You are not allowed to view links. Register or Login
К сожалению CONDENSE  NO-GAPS не убирает так называемый "неразрывный пробел", который может быть в текстах, пришедших из внешних систем, например
Ну это уже не пробел к сожалению, а спецсимвол форматирования текста, так что правильно его не удаляет. Мало ли у кого какие символы форматирования могут быть. Но никто вам не мешает использовать REPLACE  который может заменить/убрать данный символ из текста.

Sapforum.Biz

Re: Удаление пробела в строке
« Ответ #9 : Декабрь 10, 2019, 08:09:47 am »