Текущее время: Пн, авг 04 2025, 21:34

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


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

Сейчас этот форум просматривают: Mixail167


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

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