Текущее время: Сб, авг 02 2025, 12:48

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Переводы строк в операторе Write и в itab, длина вывода.
СообщениеДобавлено: Вт, янв 13 2009, 16:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
Уважаемые абаперы, пишу вот такой отчет:

Code:
REPORT  z_gen_plfox_xml.

DATA lt_rsplf TYPE STANDARD TABLE OF rsplf_srv_p.
DATA ls_rsplf LIKE LINE OF lt_rsplf.
*DATA lv_fox type string.

SELECT *
INTO CORRESPONDING FIELDS OF TABLE lt_rsplf
FROM rsplf_srv_p
WHERE parnm = 'FLINE' AND srvnm LIKE 'ZSBL05_F012%'
ORDER BY srvnm indx.

LOOP AT lt_rsplf INTO ls_rsplf.
  AT NEW srvnm.
    WRITE: /, '<fox name="', ls_rsplf-srvnm, '">'.
  ENDAT.

  WRITE ls_rsplf-value NO-GAP.

  AT END OF srvnm.
    WRITE '</fox>'.
  ENDAT.
ENDLOOP.


Цель: выгрузить в XML-файл тексты FOX-формул.
Достигаю этого выводом информации на экран с последующим сохранением в файл вручную.
Тексты хранятся в таблице rsplf_srv_p разбитые по 60 символов и содержат в себе переводы строк.
При выводе оператором WRITE переводы строк отображаются как двойная решетка (##), но при сохранении в файл выглядят нормально.
Проблема в том, что WRITE переводит строку при достижении строки на экране определенной длины (вроде 176 символов) и эти переводы строк сохраняются в файл и случаются в неожиданных местах.

Что посоветуете? Действовать как-то иначе? Использовать какие-либо параметры WRITE чтобы не переводило строку?

Заранее благодарен.

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Переводы строк в операторе Write и в itab, длина вывода.
СообщениеДобавлено: Вт, янв 13 2009, 16:22 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
попробуйте посмотреть опции к ключевому слову REPORT, в частности LINE-SIZE

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Переводы строк в операторе Write и в itab, длина вывода.
СообщениеДобавлено: Вт, янв 13 2009, 18:02 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
ArmAnn написал:
попробуйте посмотреть опции к ключевому слову REPORT, в частности LINE-SIZE

Спасибо за ответ. Полезная информация.

Но в данном случае мешает ограничение:
Цитата:
The maximum line width is 1,023 characters.

Многие FOX-формулы больше этого размера.

Но чтобы обойти все серьезные проблемы оказалось достаточно. :)
Спасибо.

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Переводы строк в операторе Write и в itab, длина вывода.
СообщениеДобавлено: Вт, янв 13 2009, 18:15 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
G написал:
ArmAnn написал:
попробуйте посмотреть опции к ключевому слову REPORT, в частности LINE-SIZE

Спасибо за ответ. Полезная информация.

Но в данном случае мешает ограничение:
Цитата:
The maximum line width is 1,023 characters.

Многие FOX-формулы больше этого размера.

Но чтобы обойти все серьезные проблемы оказалось достаточно. :)
Спасибо.

А вы ваш xml формируйте во внутренней таблице с типом строки String и выгружайте CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Переводы строк в операторе Write и в itab, длина вывода.
СообщениеДобавлено: Вт, янв 13 2009, 19:08 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
sy-uname написал(а):
А вы ваш xml формируйте во внутренней таблице с типом строки String и выгружайте CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD

Что-то у меня не срослось со string.
Я поначалу складывал в него всю формулу (с помощью CONCATENATE), а попадало только несколько первых строк.

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Переводы строк в операторе Write и в itab, длина вывода.
СообщениеДобавлено: Вт, янв 13 2009, 19:13 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
G написал:
Что-то у меня не срослось со string.
Я поначалу складывал в него всю формулу (с помощью CONCATENATE), а попадало только несколько первых строк.

Как то не так складывали.
Или смотрели содержимое отладчиком.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Переводы строк в операторе Write и в itab, длина вывода.
СообщениеДобавлено: Вт, янв 13 2009, 20:42 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, авг 22 2005, 14:50
Сообщения: 1285
Откуда: с работы
Пол: Женский
кста, и отладчиком можно посмотреть
например вместо поля aaaa стринговое вбейте aaaa+100 :lol:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Переводы строк в операторе Write и в itab, длина вывода.
СообщениеДобавлено: Вт, янв 13 2009, 21:33 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
sy-uname написал(а):
Как то не так складывали.
Или смотрели содержимое отладчиком.


Дело было как-то так:
Code:
REPORT  z_gen_plfox_xml.

DATA lt_rsplf TYPE STANDARD TABLE OF rsplf_srv_p.
DATA ls_rsplf LIKE LINE OF lt_rsplf.
DATA lv_fox type string.

SELECT *
INTO CORRESPONDING FIELDS OF TABLE lt_rsplf
FROM rsplf_srv_p
WHERE parnm = 'FLINE' AND srvnm LIKE 'ZSBL05_F012%'
ORDER BY srvnm indx.

LOOP AT lt_rsplf INTO ls_rsplf.
  AT NEW srvnm.
    CONCATENATE '<fox name="' ls_rsplf-srvnm '">' INTO lv_fox.
  ENDAT.

  CONCATENATE lv_fox ls_rsplf-value INTO lv_fox.

  AT END OF srvnm.
   WRITE / lv_fox.
   WRITE '</fox>'.
  ENDAT.
ENDLOOP.


Т.е. не в отладчике дело было.

_________________
Глаза боятся, а руки крюки


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

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


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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