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

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


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

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


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

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