SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Работа со строками



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Wed Dec 19, 2007 2:34 pm    Post subject: Работа со строками Reply with quote

Подскажите, как сделать в ABAP такую работу со строковыми параметрами...

Я читаю из таблицы в LOOP строки типа char.
Мне надо соединить их таким образом, чтобы каждая из этих строк заканчивалась переходом на новую строку (что-то вроде \n\r).
Т.е. если я прочитал, например, 3 записи (123, 456 и 789), то вид моей окончательной строки должен быть такой:
123
456
789
Потом мне надо вывести эту результирующую строку в сообщении.
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Wed Dec 19, 2007 2:58 pm    Post subject: Reply with quote

Может это нужно?
Code:
DATA STRING TYPE STRING.
LOOP AT ITAB.
  CONCATENATE STRING
              CL_ABAP_CHAR_UTILITIES=>CR_LF "символ перевода корретки
              ITAB-VALUE
  INTO STRING.
ENDLOOP.
Back to top
View user's profile Send private message Blog
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Wed Dec 19, 2007 3:05 pm    Post subject: Reply with quote

сейчас проверю... Smile
Back to top
View user's profile Send private message
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Wed Dec 19, 2007 3:15 pm    Post subject: Reply with quote

Дописываю:
MESSAGE string TYPE 'I'.

выводится в сообщении:
123##456##789##

Никак нельзя вывести 3 строки?
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Wed Dec 19, 2007 3:49 pm    Post subject: Reply with quote

Кажется оператор MESSAGE так не умеет. Если, подготовленную таким образом, строку вывести в текстовом редакторе - она будет с переносами на новую строку.
Back to top
View user's profile Send private message Blog
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Wed Dec 19, 2007 3:52 pm    Post subject: Reply with quote

я попробовал через WRITE - тот же самый результат

Как же все-таки соединять строчки по-нормальному?

Суть в том, что мне необходимо эту совокупную строку записывать в таблицу в БД. Потом к этой строке будет обращаться другая программа. А если там вместо переносов будут решетки, то получится чушь
Back to top
View user's profile Send private message
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Wed Dec 19, 2007 5:41 pm    Post subject: Reply with quote

Попробовал выводить в текстовый файл - вроде нормально получается.

Теперь такой вопрос: как эту STRING превратить в char?
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 180
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Wed Dec 19, 2007 9:45 pm    Post subject: Reply with quote

Если в отладчике в строке нажать плюсик, то видно, что обычный
MOVE копирует без искажения.

Code:
DATA STRING TYPE STRING.
DATA STR(128).

CONCATENATE
'123'
CL_ABAP_CHAR_UTILITIES=>CR_LF "символ перевода корретки
'456'
CL_ABAP_CHAR_UTILITIES=>CR_LF "символ перевода корретки
'789'
CL_ABAP_CHAR_UTILITIES=>CR_LF "символ перевода корретки
INTO STRING.

MOVE STRING TO STR.
WRITE: STR.



string_str_in_debug.jpg
 Description:
 Filesize:  11.96 KB
 Viewed:  19823 Time(s)

string_str_in_debug.jpg


Back to top
View user's profile Send private message Blog Visit poster's website
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Fri Dec 21, 2007 1:11 pm    Post subject: Reply with quote

Не подскажите еще, какую-нибудь функцию, чтобы в строке выделить ее часть?
Ну есть какая-то строка, напр., S1 с содержимым 'ABCD 1234 EFGH'.
Надо узнать, что находится между 3 и 6 позициями, выделив этот кусок в S2.
Т.е. есть ли в ABAP некий аналог Mid()?
Back to top
View user's profile Send private message
StasZh
Участник
Участник



Joined: 27 Sep 2007
Posts: 23

PostPosted: Fri Dec 21, 2007 1:58 pm    Post subject: Reply with quote

cbw07 wrote:
Не подскажите еще, какую-нибудь функцию, чтобы в строке выделить ее часть?
Ну есть какая-то строка, напр., S1 с содержимым 'ABCD 1234 EFGH'.
Надо узнать, что находится между 3 и 6 позициями, выделив этот кусок в S2.
Т.е. есть ли в ABAP некий аналог Mid()?


Это совсем просто:
s2= s1+3(2).
3 - смещение от 0
(2) - длина
Back to top
View user's profile Send private message
cbw07
Старший специалист
Старший специалист



Joined: 30 Nov 2007
Posts: 127

PostPosted: Fri Dec 21, 2007 2:31 pm    Post subject: Reply with quote

спасибо, сейчас вспомнил про это. Только недавно начал знакомиться с ABAP Laughing
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.