Текущее время: Пн, июл 28 2025, 15:04

Часовой пояс: 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 часа


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

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


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

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