Текущее время: Ср, июл 30 2025, 20:21

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Выгрузга из EXСEL в ДИНАМИЧЕСКУЮ таблицу
СообщениеДобавлено: Пт, авг 28 2009, 17:01 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Нужны классы cl_abap_structdescr, cl_abap_tabledescr, cl_abap_typedescr. Я попробовал: таблица в 2000 столбцов генерится свободно.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выгрузга из EXСEL в ДИНАМИЧЕСКУЮ таблицу
СообщениеДобавлено: Сб, авг 29 2009, 23:19 
Специалист
Специалист

Зарегистрирован:
Вт, июл 07 2009, 13:24
Сообщения: 235
Кодер написал(а):
Нужны классы cl_abap_structdescr, cl_abap_tabledescr, cl_abap_typedescr. Я попробовал: таблица в 2000 столбцов генерится свободно.
Kодер esli vas ne zatrudnit skinte pogalusta kusok koda?Zaranee spasibo


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выгрузга из EXСEL в ДИНАМИЧЕСКУЮ таблицу
СообщениеДобавлено: Пн, авг 31 2009, 10:45 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
В help-е все есть:
Цитата:
CREATE DATA - HANDLE
Dynamic creation of a two-component structure using the CREATE method of the CL_ABAP_STRUCTDESCR class. The description of the components in the structure is provided in the comp_tab internal table.


Code:
DATA: struct_type TYPE REF TO cl_abap_structdescr,
      comp_tab    TYPE cl_abap_structdescr=>component_table,
      comp        LIKE LINE OF comp_tab,
      dref        TYPE REF TO data.

FIELD-SYMBOLS: <struc> TYPE ANY,
               <comp>  TYPE ANY.

comp-name = 'column1'.
comp-type = cl_abap_elemdescr=>get_c( 40 ).
APPEND comp TO comp_tab.

comp-name = 'column2'.
comp-type = cl_abap_elemdescr=>get_i( ).
APPEND comp TO comp_tab.

struct_type = cl_abap_structdescr=>create( comp_tab ).

CREATE DATA dref TYPE HANDLE struct_type.

ASSIGN dref->* TO <struc>.
ASSIGN COMPONENT 'COLUMN1' OF STRUCTURE <struc> TO <comp>.
<comp> = 'Amount'.


По аналогии - делается и с таблицей


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выгрузга из EXСEL в ДИНАМИЧЕСКУЮ таблицу
СообщениеДобавлено: Пн, авг 31 2009, 16:01 
Специалист
Специалист

Зарегистрирован:
Вт, июл 07 2009, 13:24
Сообщения: 235
Спасибо сделал немного по другому, динамические таблицы работают сними все нормально, но как всегда возникла еще одна проблема, так как необходимо иметь возможность выгружать произвольный объем данных из excel а то есть и весь фаил или покрайне мере 9999х256 (9999 строк и 256 столбцов),но такая таблица может занимать очень много памяти, не подскажите есть ли какое либо ограничение от SAP (понятно что есть ограничения от самой системы , обусловленные наличием памяти и т.д.) на размер таблицы , количество строк и столбцов?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выгрузга из EXСEL в ДИНАМИЧЕСКУЮ таблицу
СообщениеДобавлено: Пн, авг 31 2009, 23:53 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июн 02 2009, 22:28
Сообщения: 228
Откуда: MOW
Пол: Мужской
Касаемо ответа на вопрос о максимальном количестве столбцов и строк: пример кода на VBA для определения максимального числа строк/столбцов для листа (на ABAP лень переводить)

Code:
MaxNumRows = ActiveSheet.UsedRange.Rows.Count
MaxNumColumns = ActiveSheet.UsedRange.Columns.Count


На 95% работает правильно (неправильно, если например заполнили строки/столбцы на листе, а потом удалили del-ом, он где-то запоминает старые границы)

Касаемо вопроса про ограничение на размер внутренних таблиц - 9999х256 поместится свободно
Вообще на эту тему на форуме были посты, в доках есть информация по этому поводу


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выгрузга из EXСEL в ДИНАМИЧЕСКУЮ таблицу
СообщениеДобавлено: Ср, сен 02 2009, 12:35 
Специалист
Специалист

Зарегистрирован:
Вт, июл 07 2009, 13:24
Сообщения: 235
Создать таблицу пол дела, была создана таблица еще больщих размеров ,но проблемма возникает при оброботке данных содержащихся в ней


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Выгрузга из EXСEL в ДИНАМИЧЕСКУЮ таблицу
СообщениеДобавлено: Пн, ноя 30 2009, 16:16 
Начинающий
Начинающий

Зарегистрирован:
Ср, ноя 18 2009, 11:39
Сообщения: 12
DaV написал(а):
Hello,
Есть следующая задача выгрузить из произвольного EXEL файла данные в таблицу.
Как выгрузить из файла с фиксированным числом строк и столбцов знаю<...>


Добрый день.
Моя проблема легче - известна структура EXEL файла. Подскажите, пожалуйста, каким образом выгрузить из файла xls данные в таблицу?
Спасибо.

_________________
SAP BW 7.0


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выгрузга из EXСEL в ДИНАМИЧЕСКУЮ таблицу
СообщениеДобавлено: Пн, ноя 30 2009, 16:22 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
Shamrik написал(а):
DaV написал(а):
Hello,
Есть следующая задача выгрузить из произвольного EXEL файла данные в таблицу.
Как выгрузить из файла с фиксированным числом строк и столбцов знаю<...>


Добрый день.
Моя проблема легче - известна структура EXEL файла. Подскажите, пожалуйста, каким образом выгрузить из файла xls данные в таблицу?
Спасибо.
ALSM_EXCEL_TO_INTERNAL_TABLE

_________________
"I have a dream"(c)Martin Luther King, Jr.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выгрузга из EXСEL в ДИНАМИЧЕСКУЮ таблицу
СообщениеДобавлено: Вт, дек 01 2009, 09:06 
Начинающий
Начинающий

Зарегистрирован:
Ср, ноя 18 2009, 11:39
Сообщения: 12
Alex80 написал:
ALSM_EXCEL_TO_INTERNAL_TABLE

Спасибо за совет.
К сожалению, у меня не оказалось ФМ ALSM_EXCEL_TO_INTERNAL_TABLE.

_________________
SAP BW 7.0


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выгрузга из EXСEL в ДИНАМИЧЕСКУЮ таблицу
СообщениеДобавлено: Вт, дек 01 2009, 09:36 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
Shamrik написал(а):
Alex80 написал:
ALSM_EXCEL_TO_INTERNAL_TABLE

Спасибо за совет.
К сожалению, у меня не оказалось ФМ ALSM_EXCEL_TO_INTERNAL_TABLE.
В BW можно через OLE (тот же код ALSM_EXCEL_TO_INTERNAL_TABLE взять не из BW-системы).
OLE, Excel там есть "There is another Example that reads data from Excel file cell by cell."

_________________
"I have a dream"(c)Martin Luther King, Jr.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выгрузга из EXСEL в ДИНАМИЧЕСКУЮ таблицу
СообщениеДобавлено: Вт, дек 01 2009, 09:38 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Вот пример на SDN - ABAP - Upload data from Excel to Sap using OO.
Его чуть-чуть доработать с конструкцией ASSIGN COMPONENT sy-index ...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выгрузга из EXСEL в ДИНАМИЧЕСКУЮ таблицу
СообщениеДобавлено: Вт, дек 01 2009, 10:17 
Начинающий
Начинающий

Зарегистрирован:
Ср, ноя 18 2009, 11:39
Сообщения: 12
John Doe, Alex80 спасибо большое за советы, моя задача теперь решена. :pivo:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выгрузга из EXСEL в ДИНАМИЧЕСКУЮ таблицу
СообщениеДобавлено: Ср, дек 02 2009, 13:04 
Начинающий
Начинающий

Зарегистрирован:
Ср, ноя 18 2009, 11:39
Сообщения: 12
raaleksandr написал:
Касаемо ответа на вопрос о максимальном количестве столбцов и строк: пример кода на VBA для определения максимального числа строк/столбцов для листа (на ABAP лень переводить)
Code:
MaxNumRows = ActiveSheet.UsedRange.Rows.Count
MaxNumColumns = ActiveSheet.UsedRange.Columns.Count

...

:oops: Подскажите пожалуйста, как перевести этот VB в ABAP? Ибо все Range и DIMENSION для документа по умолчанию не заданы.
Или смоделировать вызов VB-скрипта, которого нет в документе Excel, формируя скрипт "на лету", получить значения переменных MaxNumRows и MaxNumColumns?
Спасибо.

_________________
SAP BW 7.0


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выгрузга из EXСEL в ДИНАМИЧЕСКУЮ таблицу
СообщениеДобавлено: Ср, дек 02 2009, 13:45 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, окт 22 2009, 12:41
Сообщения: 473
Наверное имелось ввиду:

Code:
INCLUDE OLE2INCL.

data: EXCEL        TYPE OLE2_OBJECT,
      WORKBOOK     TYPE OLE2_OBJECT,
      ActiveSheet  TYPE OLE2_OBJECT,
      UsedRange    TYPE OLE2_OBJECT,
      Rows         TYPE OLE2_OBJECT,
      count        TYPE i.


CREATE OBJECT EXCEL 'Excel.Application' .
CALL METHOD OF EXCEL 'Workbooks' = WORKBOOK .

CALL METHOD OF WORKBOOK 'ActiveSheet.UsedRange.Rows.Count' = count.

"или так (незнаю что сработает):

CALL METHOD OF WORKBOOK 'ActiveSheet' = ActiveSheet.
CALL METHOD OF WORKBOOK 'UsedRange' = UsedRange.
CALL METHOD OF WORKBOOK 'Rows' = Rows.
CALL METHOD OF WORKBOOK 'Count' = count.


Если, конечно, ActiveSheet принадлежит Workbook =)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Выгрузга из EXСEL в ДИНАМИЧЕСКУЮ таблицу
СообщениеДобавлено: Ср, дек 02 2009, 15:59 
Начинающий
Начинающий

Зарегистрирован:
Ср, ноя 18 2009, 11:39
Сообщения: 12
Weise, СПАСИБО!
Сработал такой вариант:

Code:
INCLUDE OLE2INCL.

data: EXCEL        TYPE OLE2_OBJECT,
      WORKBOOK     TYPE OLE2_OBJECT,
      THIS_WORKBOOK TYPE OLE2_OBJECT, " workbook
      ActiveSheet  TYPE OLE2_OBJECT,
      UsedRange    TYPE OLE2_OBJECT,
      Rows         TYPE OLE2_OBJECT,
      count        TYPE i.


CREATE OBJECT EXCEL 'Excel.Application' .
CALL METHOD OF EXCEL 'Workbooks' = WORKBOOK .

CALL METHOD OF WORKBOOKS 'Add' = THIS_WORKBOOK.
PERFORM CHECK_ERRORS.

CALL METHOD OF THIS_WORKBOOK 'ActiveSheet' = ActiveSheet.
PERFORM CHECK_ERRORS.
CALL METHOD OF ActiveSheet 'UsedRange' = UsedRange.
PERFORM CHECK_ERRORS.
CALL METHOD OF UsedRange 'Rows' = Rows.
PERFORM CHECK_ERRORS.
CALL METHOD OF Rows 'Count' = count .
PERFORM CHECK_ERRORS.

И ActiveSheet, конечно же, принадлежит THIS_WORKBOOK :wink:

_________________
SAP BW 7.0


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу Пред.  1, 2

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


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

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


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

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