Выгрузка в excel abap
Хочу подарить народу ФМ для выгрузки данных в WORD, EXCEL.
Не хочу, чтобы пропадал мой "скорбный труд"
Прежде чем задать вопрос в теме, рекомендую сначала почитать FAQ (ЧАВО) - ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ, который можно увидеть чуть ниже.
Дополнение от 09/08/2007:
Разработка позволяет использовать для выгрузки WWW-шаблоны (транзакция SMW0) и BDS-шаблоны (транзация OAOR). Основной ее принцип - максимальное соответствие технологии WYSIWYG. Т.е. ваша ABAP-программа занимается только выборкой и выводом данных, форма отчета, раскраска и стиль задаются шаблоном. Технология вывода в Word и Excel идентичная, т.е. практически любую форму отчета Excel можно реализовать средствами Word (и наоборот), не изменяя при этом вашу ABAP-программу, просто заменив шаблон.
При этом, для нормального вывода, нет необходимости в каждый шаблон вставлять какие-либо макросы. Однако возможно использовать собственные макросы для специфической обработки, например для автоматического форматирования. При чем они будут работать даже при включенном максимальном уровне безопасности макросов MS-Office, также не требуется разрешения доступа к VB, что позволяет соблюсти политику безопасности компании.
Все это позволяет максимально упростить использование уже готовых форм, подготовленных средствами MS-Office, например, выгруженных из Консультант+. Т.о. разработку и модификацию шаблонов можно поручить функционалам или продвинутым пользователям.
Дополнение от 12/01/2010:
До версии 2.6 подразумевалась полностью ручная установка всех объектов разработки: программ, модулей, шаблонов, элементов словаря и т.д. Это создавало определенные неудобства, а для начинающих разработчиков серьёзные трудности.
С версии 2.6 возможна облегченная процедура установки-обновления разработки:
1. Распаковать ZIP-файл в корень диска C:. Создастся папка C:\ZWWW\
2. В системе создать запрос разработки.
3. Создать класс разработки ZWWW_EXCEL. Если хотите использовать другое имя (или уже используете), то нужно переименовать папку ZWWW_EXCEL.DEVC на .DEVC
4. В системе создать программу с именем ZWWW_MIGRATE и скопировать в нее содержимое файла C:\ZWWW\ZWWW_EXCEL.DEVC\PROG\ZWWW_MIGRATE\REPORT.txt (с версии 2.90 \ZWWW_EXCEL.DEVC\PROG.R3TR\ZWWW_MIGRATE\REPS.LIMU\ZWWW_MIGRATE>ABAPTEXT.TXT)
5. Запустить ZWWW_MIGRATE, в экранное поле S_TRKORR подставить номер вашего запроса, в S_CLASS имя вашего класса, выбрать режим "Импорт" (радиокнопка P_IMPORT), нажать F8, в ALV-Grid выбрать необходимые компоненты (предпочтительно ВСЕ) и кликнуть кнопочку Import.
Всё!
Дополнение от 22/01/2010:
Пример программы Hello World
Data:
it_val type standard table of ZWWW_VALUES
with header line.
* Выведем текст в ячейку с адресом C5
it_val-VAR_NAME = 'C5'.
it_val-VALUE = 'Hello World!'.
Append it_val.
Call function 'ZWWW_OPENFORM'
exporting
FORM_NAME = 'ZWWW_MACROS'
PRINTDIALOG = ''
tables
IT_VALUES = it_val.
Последний раз редактировалось Parazit Сб, авг 21 2021, 21:02, всего редактировалось 25 раз(а).
FAQ (ЧАВО) - ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Шаблон Ворд-документа содержит колонтитул, в котором я хочу разместить данные(из АБАП) - обычным способом . ничего не получается - похоже на то, что колонтитулы при поиске текста для замены игнорируются
В колонтитуле нужно создать закладку. Тогда работает как присвоение всей закладки (FIND_TEXT = пусто), так и поиск/замена в ней отдельного текста.
Подскажите, можно ли сделать так, чтобы повторять табличку на одном листе Excel n-ное кол-во раз? Например, для каждого контрагента своя табличка и свои надписи над табличкой и подписи под ней?
Конечно можно!
Самый простой наглядный вариант, каждой строке шаблона присвоить имя и собирать отчет из них, как из кирпичиков. Опять же для наглядности, можно присвоить имя (например: "МестоВывода") пустой строке в самом низу и перекладывать туда строки шаблона.
Типа так:
*табличка 1
SetVal 'Место Вывода' 1 '' 'V' 'Заголовок'.
SetVal 'Место Вывода' 2 '' 'V' 'Строка'.
SetVal 'Место Вывода' 2 '[1]' '' 'значение ячейки 1'.
SetVal 'Место Вывода' 2 '[2]' '' 'значение ячейки 2'.
SetVal 'Место Вывода' 3 '' 'V' 'ПустаяСтрока'.
*табличка 2
SetVal 'Место Вывода' 4 '' 'V' 'Заголовок'.
SetVal 'Место Вывода' 5 '' 'V' 'Строка'.
SetVal 'Место Вывода' 5 '[1]' '' 'значение ячейки 1'.
SetVal 'Место Вывода' 5 '[2]' '' 'значение ячейки 2'.
SetVal 'Место Вывода' 6 '' 'V' 'ПустаяСтрока'.
После выгрузки файл защищен соответственно его нельзя редактировать.
Для снятия защиты он требует пароль.
Поэтому вопрос: Какой пароль? И можно ли сразу сделать так чтобы защита листа была снята?
По умолчанию параметр PROTECT = 'X', поэтому документ защищен, пароль генерится динамически. Соотвественно, укажите PROTECT = '' и всё откроется.
Кстати, если необходимо изменение только отдельных частей документа, можно открыть их штатными средствами Word и Excel в шаблоне, в таком случае PROTECT отменять не надо.
При выгрузке в excel числа преобразуются в строку.
Поэтому в excel не работают суммы по ячейкам с этими числами.
Можно ли при выгрузке указать что в ячейке должно быть число, а не текст?
Используйте такой текстовый формат для вывода чисел, чтобы разделитель десятичных знаков был точкой, и не было разделителей тысяч.
Самый простой способ VALUE = .
Версия 2.71 была адаптирована для использования через Web GUI. Это позволяет использовать обычные разработки с выгрузкой отчетов MS Office через веб-интерефейс.
Для использования напрямую из Web Dynpro пока данная разработка не пригодна.
Есть примеры, например ZWWW_SAMPLE_INVOICE.
Строка
SetVal 'Я_Формат' '' '' 'M' 'Macros_AutoFit'.
запустит макрос с именем Macros_AutoFit, передав ему в качестве параметра именованную область 'Я_Формат'.
Указанная именованная область 'Я_Формат' дожна быть обязательно объявлена в листе, даже если не используется - без нее макрос не запускается.
Макрос должен лежать в Modules (не в Книге и не в Листе)
Вывожу в ячейку Excel значение (текстовое) больше 255 символов - ничего не выводится, до 255 - все нормально.
Есть ограничение на длину строки?
Это ограничение функции поиска/замены Excel. Обойти можно по разному. Например вывод в ячейку напрямую - VAR_NAME = имя ячейки; FIND_TEXT = пусто. Или выводить частями, в ячейку поместить несколько меток, типа [1][2][3]. Однако надо учитывать, что у Excel есть и другое ограничение на количество символов в ячейке (около 900 байт для MS 2003).
при выгрузке в EXCEL, текстовая переменная 310000000000000717 отображается в шаблоне как 3.1Е+17. Поле в шаблоне текстовое, в таблице с выходными данными тоже нормальное значение.
Проблема в том, что Excel в функции поиска/замены, которую я использую, пытается любую информацию преобразовать в число при подстановке его в ячейку, независимо от типа ячейки. Я считаю это косяком Excel. Избавиться удается при помощи апострофа в первом символе содержимого ячейки, например в шаблоне можно сделать так '[1], или к выгружаемым данным прибавлять апостроф, типа так '310000000000000717
Еще и значение "02" превращается в просто "2". В общем, сконкатенейтил апостроф и значение, пусть пока так. Думал еще макросом заменить апостроф на ничто — фиг, слетает формат.
Вот такой макрос убирает все апострофы, причем одни махом во всей выделенной области. Главное, чтобы форматы ячеек были какие-надо.
Что отрабатывает первым, макрос или вставка данных в Excel?
У меня проблема в следующем, при формирования ТЗ у меня запускается макрос, который добавляет n-ое количество столбцов, после чего вставляются данные, но в добавленные столбцы ничего не падает, т.е. происходит смещение данных за границы таблицы. Такое ощущение, что сначала записались данные таблицы, а потом макрос отработал.
Заполнение в абапе:
** Макрос
setval 'Value_mac' '' '' '' col_num.
setval 'Value_mac' '' '' 'M' 'CopyCol'.
** Строка
setval 'POSITION' lv_pos '[1]' 'R' lv_strvalue.
Вывод производится в алфавитом порядке значения VAR_NAME и не зависит от того порядка, в котором заполняется внутренняя таблица.
В приведенном примере сначала сработает заполнение POSITION, а затем вызовется макрос для VALUE_MAC. В данном случае можно переименовать VALUE_MAC, например, в A_VALUE_MAC.
Последний раз редактировалось Parazit Чт, апр 21 2011, 10:13, всего редактировалось 16 раз(а).
Разумеется можно и через транспорт
Вешаешь всё на один запрос целыми объектами. Лучше даже ручками список заполнить типа:
R3TR FUGR [имя]
R3TR PROG [имя]
R3TR DOMA [имя]
R3TR DTEL [имя]
R3TR TABL [имя]
Проблема может возникнуть с именами. Вдруг повторятся ) тогда загруженная версия убъёт предыдущую.
*=======================================
Есть еще всякие программки, которыми пользуются для выгрузки/загрузки, которые в своём формате фигачат. У нас где-то мелькала такая, но загружать я ей не пробовал ни разу..
Хочу подарить народу ФМ для выгрузки данных в WORD, EXCEL.
Не хочу, чтобы пропадал мой "скорбный труд"
Есть функциональная группа, элементы данных и домены в словаре, программы с примерами.
А что, использование стандартных средств уже не катит?
По-моему, в системе достаточно ФМ, классов и интерфейсов, чтобы состряпать такую программку за 3-4 часа.
_________________
"Прежде чем сделать что-то, подумай, к чему это может привести. "
Хочу подарить народу ФМ для выгрузки данных в WORD, EXCEL.
Не хочу, чтобы пропадал мой "скорбный труд"
In this Blog-post I’d like to give a few insights on how we process XLSX file by using latest ABAP, which might be quite different than in most other implementations, for example:ABAP and OLE or Excel with SAP – An Overview
By using CL_XLSX_DOCUMENT (available from 2008), it is easy to load file, workbook, sheets, rows and columns. A good example code can be found within class CL_EHFND_XLSX(available on ABAP AS 752 SP-Level 0004, Software Component S4CORE Release 102, SP 4.).
On the other hand, you can set document format by using IF_IXML_NODE, below example code show how …
- Download any DDIC table’s content into xlsx file
- Change value in the xlsx file
- upload xlsx file into DDIC table
- check changed value in DDIC table.
And the dynamic structure is used in this report. The code style is what I would like to present also.
User Interface
Main Functionality
Download table content into local excel file (xlsx)
Select action “Export”
Input existing table , e.g. Table Name T000, File Full Path: c:\demo\t000.xlsx
Change the value of non-key column in xlsx file.
Upload local excel file (*.xlsx) into table
Select action “Import”
Input existing table , e.g. Table Name T000, File Full Path: c:\demo\t000.xlsx
Empty row will be skip, and table entries will be modified (Insert or Update). It is not possible to delete existing table entry.
Exception Handling
You will get exception of structure infliction if xlsx file is not for that table.
First row will be the table columns’ name
Local Class Definition
Thank you for your interest in XLSX2ABAP and ABAP2XLSX. Example code is tested on SAP_BASIS 755, S4CORE 105.
Assigned Tags
Interesting. Does SAP plan to propagate and extend the CL_XLSX_DOCUMENT? Currently it is not much used and known.
FIY: There is quite successful project, which is already named "ABAP2XLSX".
Thanks a lot. CL_EHFND_XLSX is build on top of CL_XLSX_DOCUMENT. This is my understanding.
What means "propagate and extend"? CL_XLSX_DOCUMENT is available since Netweaver 7.02 and many people used it for a long time.
CL_EHFND_XLSX is not available on ABAP AS 7.52 SP03.
It can be found on ABAP AS 752 SP-Level 0004.
Software Component S4CORE Release 102, SP 4.
I am really confused.
Firstly, as mentioned in the last comment, on what release does CL_EHFND_XLSX become available? Bear in mind that something made available internally within SAP in 2014 may not be available to customers until five or six years later.
Secondly are you saying that the functionality ABAP2XLSX provides is going to be re-invented as standard classes inside standard SAP?
For the last few years once a month on average someone from outside of SAP posts a blog on SCN describing a new way they have come up with to do a limited subset of what ABAP2XLSX can do.
This would be because they have never heard of it, and it is quite possible many within SAP itself have never heard of it either.
It can be found on ABAP AS 752 SP-Level 0004.
Software Component S4CORE Release 102, SP 4.
Do you know if any downporting is planned for CL_EHFND_XLSX (eg via sapnote)?
99% of the developers here don't have access to that release. 🙁
I'm just as confused as Paul Hardy - every month someone posts a blog on SCN reinventing ABAP2XLSX for some reason. Now that a blog is posted by an SAP employee this sends quite a confusing message.
Availability of classes is not driven by year. It's not like every year each SAP customer gets a box of presents at Christmas with all the new classes and goodies from SAP. Availability is driven by the release and support pack level. We're on ABAP 7.31 and don't have class CL_EHFND_XLSX, for example.
And I also would like to know if this means that SAP will be offering ABAP2XLSX as part of standard?
P.S. I'm getting "you don't have rights" when trying to open the link at the end of the blog. When posting on SCN, please make sure to use only what is open to general population and not just at SAP internally.
I update the info of ABAP version accordingly. Row limits help link is removed also.
It's pretty good !!
I have some question for you to use this method :).
Can I set cell color or cell width when file export(ITAB to xls) ??
( I found XLSX_DOCUMNT's internal content table(MS_SHEET_DATA).
But, i don`t know how to change cell style ).
is it possible to add the custom properties for excel\word document using
You can also use the abap2xlsx tool described in SDN blog abap2xlsx - Generate your professional Excel spreadsheet from ABAP, by Ivan Femia, which generates an XLSX file (available from Excel 2007). It is much more simple to use.
Exporting data to Excel - XML to the rescue
There is often a requierment to export report data to a Microsoft Excel spreadsheet. If the report is a simple ALV grid then the ALV control can do it automatically, but otherwise ABAP coding is required.
The simplest solution is to download a tab separated file and then open this in Excel. This is fine for simple data, but has lots of problems:
- no formatting (headings, colours, column widths etc)
- dates are YYYYMMDD, so are not shown as a date in Excel
- Only one worksheet can be exported
- leading zeros are lost
- numeric fields of more than about 15 digits are truncated
There have traditionally been a few ways around this problem
- Use SAP function modules to create an XLS file (no customisation possible)
- Use OLE to start Excel and manipulate the data cell by cell (difficult, not much help, presentation server only)
However, Excel can now read and write xml files. An ABAP program can create an xml file and it can be opened directly into Excel. The advantages and possibilities are endless:
- An xml file is plain text so can be created on the presentation server or application server;
- alternatively, it can be sent as an attachment to an email, or can be provided as a parameter to a web service;
- colours, fonts, number formats and so on can be specified;
- formatting can be applied to rows, columns or single cells;
- column heights and widths can be specified, or auto-formatted;
- multiple worksheets can be created;
- formulas can be entered in cells;
How to proceed
View and analyse xml file created by Excel
Create a new Excel workbook and enter the data you would like to see. Add formatting, headings, sheet names etc, and some data.
Save as an xml file.
Open the xml file in a text editor (eg Notepad).
It should look something like this:
Manual coding
Possibly the simplest way to create the XML is to create an internal table and fill it with the xml tags and data.
This code is from the ABAP forum, by Rudolf Lindenmann
Ошибка визуализации кода макроса: задано недействительное значение для параметра «com.atlassian.confluence.ext.code.render.InvalidValueException»
Coding using the xml DOM concept
SAP provides an interface and classes for building up an xml document. This ensures that the xml document is well formed, ie does not contain any syntax errors. There is some overhead in the coding, so it is probably overkill for a really simple export, but it is a much better alternative for anything complex.
There are a number of blogs on creating an xml document using DOM.
Sample code for a report to download any database table to a file on the presentation server.
Column headings are provided from the data dictionary, formatted bold with yellow background, wordwrap.
Numeric fields are formatted with the number of decimal places specified in the data dictionary.
Text fields are formatted as Text rather than General
Ошибка визуализации кода макроса: задано недействительное значение для параметра «com.atlassian.confluence.ext.code.render.InvalidValueException»
Coding using transformations
With ECC5 and later, xml can be created using Transformations. The transformation can be either coded with an ABAP-like syntax, or an XSLT style sheet.
For more information, look the F1 help on CALL TRANSFORMATION
Export the file
Last but not least, the file needs to be exported. Options include:
Download to presentation server using GUI_DOWNLOAD
Download to application server using OPEN DATASET etc
Send as an attachment to an email
Have the xml table/string as a parameter on a RFC or web service.
Данный блог посвящен решениям конкретных задач программирования в среде разработки ABAP/4 Workbench системы SAP.
Основное назначение данного блога: документирование накопленного моего опыта, что бы помнить и не забывать.
среда, 17 июля 2013 г.
Выгрузка в Excel через текстовые файлы.
Данный вид выгрузки не плохо подойдет, если необходимо выгрузить таблицу огромных размеров. Например, выгрузка пятидесяти тысяч записей в excel проходит за полторы минуты. В принципе данная выгрузка достаточно проста в использовании, имеет шаблонный вид, что очень удобно. Я использую ее по умолчанию, для всех своих разработок, главное что бы были полномочия на транзакцию SMW0, и разрешения на сохранение документа на компьютер пользователя. Данный код можно выделить в отдельный ФМ или подпрограмму, для более удобного использования.
*&---------------------------------------------------------------------*
*& Report Z_UNLOAD_EXCEL
*& Выгрузка в EXCEL ч / з текстовые файлы
*&---------------------------------------------------------------------*
report z_unload_excel .
include ole2incl .
data : lv_file type rlgrap - filename ,
formname type wwwdatatab - objid value 'ZMS_EXL3' , " имя объекта SMW0
filename type rlgrap - filename ,
filenametxt type rlgrap - filename .
" data : gt_sflight like sflight occurs 0 .
select * from sflight into table gt_sflight .
">>> Таблица для примера
" Запрашиваем имя файла
perform get_file_name changing lv_file .
check not lv_file is initial .
" Выгружаем шаблон
perform download_template using formname lv_file .
" Выгружаем таблицу в текстовый файл
perform download_file using formname gt_sflight changing filenametxt .
" Запускаем макрос
perform run_macros using filenametxt lv_file .
*&---------------------------------------------------------------------*
*& Form run_macros
*&---------------------------------------------------------------------*
form run_macros using p_filenametxt type rlgrap - filename
p_filename type rlgrap - filename .
data : application type ole2_object ,
workbooks type ole2_object .
create object application 'EXCEL.APPLICATION' .
if sy - subrc <> 0 .
message e011 ( zst ).
endif .
get property of application 'Workbooks' = workbooks .
* Открываем макрос
call method of
workbooks
'Open'
data : tempdir type rlgrap - filename .
call function 'GUI_GET_DESKTOP_INFO'
exporting
type = 4
changing
return = tempdir .
concatenate tempdir '\' p_formname '-' sy - timlo '.txt' into p_filenametxt .
call function 'WS_DOWNLOAD'
exporting
filename = p_filenametxt
filetype = 'DAT'
tables
data_tab = fp_table
exceptions
others = 9 .
check sy - subrc ne 0 .
set country '' .
* Удаляем фаил-txt с клиента
call function 'GUI_DELETE_FILE'
exporting
file_name = p_filenametxt .
message e129 ( sy ) with p_filenametxt 'WS_DOWNLOAD' .
endform . "f_ws_download
*&---------------------------------------------------------------------*
*& Form download_template
*&---------------------------------------------------------------------*
form download_template using p_formname type wwwdatatab - objid
p_filename type rlgrap - filename .
data : ext ( 255 ),
sy_subrc type sy - subrc ,
w_key type wwwdatatab .
call function 'WWWPARAMS_READ'
exporting
relid = 'MI'
objid = p_formname
name = 'fileextension'
importing
value = ext
exceptions
others = 1 .
if sy - subrc <> 0 .
message e000 ( swww ) with p_formname .
stop .
endif .
w_key - relid = 'MI' .
w_key - objid = p_formname .
call function 'DOWNLOAD_WEB_OBJECT'
exporting
key = w_key
destination = p_filename
importing
rc = sy_subrc .
endform . " DOWNLOAD_TEMPLATE
*&---------------------------------------------------------------------*
*& Form get_file_name
*&---------------------------------------------------------------------*
form get_file_name changing cv_file type rlgrap - filename .
data : lv_fullpath type string ,
lv_path type string ,
lv_file type string ,
lv_return type i .
do .
clear cv_file .
call method cl_gui_frontend_services => file_save_dialog
exporting
default_extension = 'xls'
default_file_name = lv_file
file_filter = cl_gui_frontend_services => filetype_excel
initial_directory = lv_path
changing
filename = lv_file
path = lv_path
fullpath = lv_fullpath
user_action = lv_return
exceptions
others = 4 .
if sy - subrc <> 0 or lv_return <> 0 . exit . endif .
cv_file = lv_fullpath .
if cv_file = lv_fullpath . exit . endif .
message ' Полное имя файла должно быть не более 128 символов !' type 'S' display like 'E' .
enddo .
endform . "get_file_name
Далее, нужно создать шаблон excel-файла, в котором будет запускаться макрос. Макрос будет подгружать данные из текстового файла. Там же можно создать макрос который будет запускать форматирование полученных данных в excel.
Создайте excel-файл. Откройте его и нажмите ALT+F11. Слева в окне Project Explorer нажмите правую кнопку мыши и выберите insert -> module. В открывшемся окне вставьте текст:
Sub StartExecute(ByVal fp_FileTab As String)
Open_File Application.ThisWorkbook, fp_FileTab, 1, "A1"
Application.DisplayAlerts = False
Range("A1").Select
ActiveWorkbook.Save
Application.Visible = True
End Sub
'--------------'
' открытие файла '
'--------------'
Private Sub Open_File(ByVal f_wb As Workbook, _
ByVal f_FileName1 As String, _
ByVal f_Idx As Integer, _
ByVal f_Range As String)
Dim wb As Workbook
Все шаблон готов, сохраняем и закрываем его. Шаблон excel-файла сохраняем ч/з транзакцию SMW0. Имя объекта для SMW0 выбирайте сами, это не принципиально, в моем случае это ZMS_EXL3. Выгрузка готова, можно пользоваться.
Данный блог посвящен решениям конкретных задач программирования в среде разработки ABAP/4 Workbench системы SAP.
Основное назначение данного блога: документирование накопленного моего опыта, что бы помнить и не забывать.
понедельник, 29 июля 2013 г.
Выгрузка в Excel через BDS (Business Document Service)
Предположим, что все, что описано в контексте этой статьи, сделано, создан бизнес-документ, выбран тот документ, который нам нужен, выполнено его открытие, выполнена инициализация интерфейса. Остается лишь перенести внутреннюю таблицу в эксель .
В первую очередь, в шаблоне эксель , необходимо, присвоить имя диапазону ячеек, для дальнейшей работы с ним. Диапазон будет расширяться динамический, в зависимости от количества выводимых столбцов и значений, но начинаться будет всегда на той строке, где он стоит изначально. На рисунке область диапазона выделена серым цветом, и ей присвоено имя « table 1».
call method document -> get_spreadsheet_interface
importing
sheet_interface = handle .
perform fill_exl_tab using lt_outtab .
endif .
Создаю простейший макрос для заполнения таблицы с ont , тип которой определен ранее как soi_generic_table .
"тут интуитивно все понятно, но все же пропишу
&2 = &2 + 1 "При каждом входе наращиваем значение, т.к. каждая последующая запись, в одной строке эксель формы, должна быть записана в новую ячейку
wa _ cont - row = &1 . "Строка в эксель форме
wa _ cont - column = &2 . "Колонка в эксель форме
wa _ cont - value = &3 . " Значение в ячейке , в эксель форме
append wa_cont to cont .
end-of-definition .
fill_cont :
s_tbx column wa _ottab - zplanz ,
s_tbx column wa_ottab - gjahr ,
s_tbx column wa_ottab - zfact ,
s_tbx column wa_ottab - zdatadem ,
s_tbx column wa_ottab - diam ,
s_tbx column wa_ottab - wall .
call method handle -> change_range
exporting
rangename = 'table1' " имя диапазона в эксель форме
rows = lines ( lt_outtab ) " количество строк
columns = 6 . "количество столбцов
rangei - name = 'table1' .
rangei - rows = lines ( lt_outtab ).
rangei - columns = 6 .
append rangei to ran .
И еще один момент. Если делать выгрузку без запуска основного отчета, то можно заметить, не вооруженным глазом, что после того как выгрузятся данные, excel-файл закрывается. Что бы этого не произошло, необходимо следом за выгрузкой вывести какое-либо информационное окно.
Читайте также: