Текущее время: Вс, июл 27 2025, 22:56

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Отчеты ALV + Выгрузка в EXCEL
СообщениеДобавлено: Вт, окт 28 2008, 11:37 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, авг 24 2007, 11:29
Сообщения: 350
Здравствуйте коллеги!

Есть 2 задачи:
1. В Отчете ALV необходимо отображать поле длиной 1500 символов(ну разумеется не все на экран, а символов 30)
2. Этот отчет необходимо выгружать в EXCEL со всеми фильтрами и суммами

Есть проблема:
1. В ALV_GRID можно выводить поле не больше чем 128 символов, ну соответственнов и в EXCEL выгружаются 128
ALV_LIST как пишет этот форум максимально можно вывисти 255 символов, что тоже мало
2. если пробовать выгружать руками то(через ФМ) то выгружается 480 символов, а надо 1500 + фильтры и суммы не сохраняются!!!

Да, и тербование заказчика чтобы все это было в одном поле, длиной 1500 символов(совершенно не переубеждаются)Я ИДИЁТ, УБЕЙТЕ МИНЯ КТО-НИБУДЬ!

Подскажите как можно решить мою проблему???

Заранее большое спасибо!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отчеты ALV + Выгрузка в EXCEL
СообщениеДобавлено: Вт, окт 28 2008, 11:46 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
slim написал(а):
Здравствуйте коллеги!

Есть 2 задачи:
1. В Отчете ALV необходимо отображать поле длиной 1500 символов(ну разумеется не все на экран, а символов 30)
2. Этот отчет необходимо выгружать в EXCEL со всеми фильтрами и суммами

Есть проблема:
1. В ALV_GRID можно выводить поле не больше чем 128 символов, ну соответственнов и в EXCEL выгружаются 128
ALV_LIST как пишет этот форум максимально можно вывисти 255 символов, что тоже мало
2. если пробовать выгружать руками то(через ФМ) то выгружается 480 символов, а надо 1500 + фильтры и суммы не сохраняются!!!

Да, и тербование заказчика чтобы все это было в одном поле, длиной 1500 символов(совершенно не переубеждаются)Я ИДИЁТ, УБЕЙТЕ МИНЯ КТО-НИБУДЬ!

Подскажите как можно решить мою проблему???

Заранее большое спасибо!

Думаю что хранить надо в текстах в настройках, так как это сделано в стандартных транзакциях, например vf02 и тд, потом ФМ read_text и выгружать. Тока когда ИД текста создавать будете не привязывайте его ни к каким объектам.
Что то я не то написал, не правильно понял, <я не знать русский языка>. :oops:


Последний раз редактировалось Besa Вт, окт 28 2008, 11:51, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 28 2008, 11:47 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
ИМХО, только руками. А ограничение ФМа - это сугубо проблемы конкретного кода. Есть другие способы. Хоть то же OLE напрямую.
Фильтр и суммы в таком варианте тоже ручной обработкой учитывать придется.

UPD: Согласен с предыдущим автором. Такой текст я бы в алв не выводил. Можно организовать спец. контрол для текста рядом с гридом и отображать текст в нем.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 07 2008, 14:25 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, авг 24 2007, 11:29
Сообщения: 350
Пономарев Артем написал:
ИМХО, только руками. А ограничение ФМа - это сугубо проблемы конкретного кода. Есть другие способы. Хоть то же OLE напрямую.
Фильтр и суммы в таком варианте тоже ручной обработкой учитывать придется.


Подскажите пожалуйста такой ФМ (чтобы выгружал 1500 символов).
На поиски времени почти не осталось!

P.S. Через OLE работает слишком долго, а выгружать приходится большое кол-во записей.

Большое спасибо!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 07 2008, 14:27 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Я выгружал через DOI, а форматирование делал в конце через OLE.

Обработка OLE после создания документа через DOI

Добавил: сделайте два поля для текстов во внутренней табличке - 50 и 1500. В ALV показывайте 50, в Excel выгружайте - 1500.

Добавил: на счет 1500 символов правда не <я не знать русский языка>, но есть подозрение, что получится. А выгрузка через DOI в разы быстрее будет, чем OLE.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 10 2008, 12:22 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, авг 24 2007, 11:29
Сообщения: 350
Коллеги пытаюсь выгрузить через DOI, он мне выгружает все в 1 ячейку.
Где я ошибаюсь???

Code:
CALL METHOD control->get_document_proxy
    EXPORTING
      document_type  = excelsheet
    IMPORTING
      document_proxy = document
      error          = error.

CALL METHOD document->OPEN_DOCUMENT_FROM_TABLE
  EXPORTING
    DOCUMENT_SIZE = 1500
    DOCUMENT_TABLE = OUT_TAB
    NO_FLUSH = ''
    DOCUMENT_TITLE = 'list name'(h00)
    OPEN_INPLACE = ' '
  IMPORTING
    ERROR = ERROR.


Где OUT_TAB моя табличка 100Х10000 примерно!
Заранее спасибо!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 10 2008, 12:53 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Можно <я не знать русский языка> через метод INSERT_FULL интерфейса I_OI_SPREADSHEET сделать:

Code:
DATA: SPREADSHEET TYPE REF TO I_OI_SPREADSHEET,
      RETCODE TYPE SOI_RET_STRING.
DATA: LT_SEMA TYPE TABLE OF GXXLT_S WITH HEADER LINE,
      LT_HKEY TYPE TABLE OF GXXLT_H WITH HEADER LINE,
      LT_VKEY TYPE TABLE OF GXXLT_V WITH HEADER LINE,
      LT_ONLINE TYPE TABLE OF GXXLT_O WITH HEADER LINE,
      LT_PRINT TYPE TABLE OF GXXLT_P WITH HEADER LINE,
      XLINE TYPE I, YLINE TYPE I.

CALL METHOD DOCUMENT->GET_SPREADSHEET_INTERFACE
  EXPORTING
    NO_FLUSH        = 'X'
  IMPORTING
    SHEET_INTERFACE = SPREADSHEET
    RETCODE         = RETCODE.
CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE
  EXPORTING
    TYPE = 'E'.

* Нужно корректно заполнить таблички
* LT_VKEY - ключевые поля таблицы (минимум 1 строка, достаточно название первого поля)
* LT_HKEY - поля таблицы (можно цикл по каталогу полей сделать минус ключевые поля)
* LT_SEMA - по типу полей из кталога полей

FIELD-SYMBOLS: <F>.
DO.
  ASSIGN COMPONENT SY-INDEX OF STRUCTURE СТРУКТУРА_КАТАЛОГА_ПОЛЕЙ TO <F>.
  IF SY-SUBRC NE 0.
    N_DAT_COLS = SY-INDEX - 1.
    EXIT.
  ELSE.
    LT_SEMA-COL_NO = SY-INDEX.
    IF SY-INDEX LE 0.
      LT_SEMA-COL_OPS = 'DFT'.
      LT_SEMA-COL_TYP = 'STR'.
    ELSE.
      DESCRIBE FIELD <F> TYPE COL__TYP.
      CASE COL__TYP.
        WHEN 'C'.
          LT_SEMA-COL_OPS = 'NOP'.
          LT_SEMA-COL_TYP = 'STR'.
        WHEN 'T'.
          LT_SEMA-COL_OPS = 'NOP'.
          LT_SEMA-COL_TYP = 'STR'.
        WHEN 'D'.
          LT_SEMA-COL_OPS = 'NOP'.
          LT_SEMA-COL_TYP = 'DAT'.
        WHEN OTHERS.
          LT_SEMA-COL_OPS = 'ADD'.
          LT_SEMA-COL_TYP = 'NUM'.
      ENDCASE.
    ENDIF.
    APPEND LT_SEMA.
  ENDIF.
ENDDO.

CALL METHOD SPREADSHEET->INSERT_FULL
  EXPORTING
    DATA              = ITAB
    SEMA              = LT_SEMA[]
    HKEY              = LT_HKEY[]
    VKEY              = LT_VKEY[]
    ONLINE_TEXT       = LT_ONLINE[]
    N_VRT_KEYS        = 1
    N_HRZ_KEYS        = 1
    N_ATT_COLS        = YLINE
  IMPORTING
    RETCODE           = RETCODE
  EXCEPTIONS
    DIM_MISMATCH_DATA = 1
    DIM_MISMATCH_SEMA = 2
    DIM_MISMATCH_VKEY = 3
    ERROR_IN_HKEY     = 4
    ERROR_IN_VKEY     = 5
    INV_DATA_RANGE    = 6
    ERROR_IN_SEMA     = 7
    OTHERS            = 8.



Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, ноя 12 2008, 08:52 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, авг 24 2007, 11:29
Сообщения: 350
Спасибо всем за ответы!

С ВАШЕЙ помощью выгружаю в EXCEL через DOI метод INSERT_ONE_TABLE! С помощью этого метода можно выгружать строки не более 911 символов.

Но возникли проблемы с Сортировками и Фильтрами, отсюда еще вопросы:
1. Как отсортировать табличку с помощью DOI (из таблички сортировки)?
2. Как отфильтровать табличку с помощью DOI (из таблички фильтров)?

P.S. Сортировать и фильтровать внутренюю табличку перед выгрузкой не получается: в SORT нельзя передать табличку сортировки, а LOOP не понимает динамические условия!!!
P.S.S. У меня версия 4.7


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

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


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

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


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

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