Загрузить в Excel

Обновлено: 05.07.2024

Я хочу создать поток, который берет список из Excel и загружает его в SAP. Возможно ли это с MS-Flow?

<р>1. Лист Excel заполнен

<р>2. MS-Flow открывает SAP и предлагает войти в систему

<р>3. T-код, введенный потоком MS

<р>4. MS-Flow извлекает данные из листа Excel, вводит их в SAP и выполняет (нажмите F8)

<р>5. MS-Flow извлекает следующую строку и продолжает до ошибки или пропускает ошибку и продолжает до завершения.

<р>6. Возвращает список ошибок.

в-алжан-msft

  • Отметить как новое
  • Добавить в закладки
  • Подписаться
  • Отключить звук
  • Отправить сообщение другу

Не могли бы вы объяснить подробнее об ошибке, о которой вы упомянули?

Майкрософт поток может получать строки из существующей таблицы Excel и сохранять строки в списке точек доступа. Если вы хотите получить строки из существующей таблицы Excel и сохранить строки в списке точек обмена, вы можете попробовать с Microsoft поток.

Команда поддержки сообщества _ Элис Чжан
Если это сообщение поможет , рассмотрите вариант "Принять" как решение, которое поможет другим участникам быстрее найти его.

  • Отметить как новое
  • Добавить в закладки
  • Подписаться
  • Отключить звук
  • Отправить сообщение другу

Этого можно добиться с помощью пользовательского интерфейса. Пожалуйста, найдите скриншот потока, который я сейчас использую.

Список EXCEL в SAP

в-алжан-msft

  • Отметить как новое
  • Добавить в закладки
  • Подписаться
  • Отключить звук
  • Отправить сообщение другу

Не могли бы вы объяснить подробнее об ошибке, о которой вы упомянули?

Майкрософт поток может получать строки из существующей таблицы Excel и сохранять строки в списке точек доступа. Если вы хотите получить строки из существующей таблицы Excel и сохранить строки в списке точек обмена, вы можете попробовать с Microsoft поток.

Команда поддержки сообщества _ Элис Чжан
Если это сообщение поможет , рассмотрите вариант "Принять" как решение, которое поможет другим участникам быстрее найти его.

  • Отметить как новое
  • Добавить в закладки
  • Подписаться
  • Отключить звук
  • Отправить сообщение другу

Correct Flow можно извлечь из Excel.

Можно ли вставить MS-Flow в поля SAP и запустить процедурный запуск, возобновить при ошибке или приостановить при ошибке.

Например: я могу сделать это прямо сейчас, используя скрипты SAP-GUI, завернутые в оболочку W32. Возьмите лист данных Excel, вставьте его в SAP и запустите до завершения. Это также можно сделать с помощью Python или PowerShell.

Я хочу знать, могу ли я сделать это с помощью MS-Flow? возьмите лист Excel и вставьте ячейки Excel в поля в графическом интерфейсе SAP и запустите до завершения или до действия, основанного на ошибке.

ПРИМЕР 2. Может ли MS-FLOW взять данные из листа Excel и вставить их в поля веб-страницы. затем выполняйте до тех пор, пока лист Excel не будет завершен или не произойдет ошибка.

в-алжан-msft

  • Отметить как новое
  • Добавить в закладки
  • Подписаться
  • Отключить звук
  • Отправить сообщение другу

Извините, что нет.

Упомянутые вами функции в настоящее время не поддерживаются в потоке Microsoft.

Команда поддержки сообщества _ Элис Чжан
Если это сообщение поможет , рассмотрите вариант "Принять" как решение, которое поможет другим участникам быстрее найти его.

  • Отметить как новое
  • Добавить в закладки
  • Подписаться
  • Отключить звук
  • Отправить сообщение другу

Это не решено, мне нужен SAP для Excel "Flow".

  • Отметить как новое
  • Добавить в закладки
  • Подписаться
  • Отключить звук
  • Отправить сообщение другу

РЕШЕНИЕ: SAP TO EXCEL ИЛИ EXCEL TO SAP НЕ ПОДДЕРЖИВАЕТСЯ В MS-FLOW.

  • Отметить как новое
  • Добавить в закладки
  • Подписаться
  • Отключить звук
  • Отправить сообщение другу

Этого можно добиться с помощью пользовательского интерфейса. Пожалуйста, найдите скриншот потока, который я сейчас использую.

Список EXCEL в SAP

  • Отметить как новое
  • Добавить в закладки
  • Подписаться
  • Отключить звук
  • Отправить сообщение другу

Я думаю, вы можете это сделать. Вам нужно будет создать поток пользовательского интерфейса, использовать WinAutomation для создания задачи RPA/RDA, использовать эту задачу для запуска VBScript или консольного приложения, которое использует SAP GUI Scripting API, обрабатывать любые возвращаемые значения (вы должны это разработать), и в конечном итоге запустите поток пользовательского интерфейса из другого потока Power Automate. Я только что попробовал это на своей работе, и я могу создать мобильное приложение с помощью кнопки, нажать ее и подключиться к назначенному компьютеру через шлюз для запуска потока пользовательского интерфейса. Хитрость в том, что у меня лично нет прав на создание шлюза!

Подводя итог:
Power App (мобильное, веб-приложение и т. д.; необязательно) ->

Мощная автоматизация процесса ->

Power Automate UI Flow ->

Подключается к виртуальной машине или ПК с установленным WinAutomation ->

Запускает процесс WinAutomation, который сам запускает VBScript или консольное приложение, созданное ВАМИ.
Сценарий или приложение использует SAP GUI Scripting API и другие COM-интерфейсы для получения вашего Excel, сбора данных, их обработки, перейдите в SAP и вставьте в форму (возможно, что-то, что вы уже создали) ->

Любые ошибки, которые вы зафиксируете самостоятельно и установите в качестве возвращаемого значения в сценарии, который обрабатывается в WinAutomation (если вы создали консольное приложение, вам может потребоваться запустить его как программу DOS для захвата возвращаемого значения) ->
Все остальное обрабатывается в потоке, как обычно.

Функциональный модуль ABAP TEXT_CONVERT_XLS_TO_SAP используется для загрузки данных из Excel в таблицы SAP или внутренние таблицы ABAP.
Чтобы показать, как загружать данные из файла Excel, я экспортировал некоторые данные за пределы системы SAP из базы данных MS SQL Server 2008 AdventureWorks.
Данные поставщика из базы данных экспортируются в файл Excel, а приведенный ниже отчет/программа ABAP будет импортировать или загружать данные из Excel во внутреннюю таблицу ABAP.

выбрать-Excel-файл-для-ABAP-загрузки-данные

Пример программы ABAP UPLOAD_FROM_EXCEL имеет ЭКРАН ВЫБОРА, где пользователи ABAP или пользователи SAP могут выбрать исходный файл для данных Excel.
Экран выбора использует метод cl_gui_frontend_services=>file_open_dialog для отображения файлового экспортера типа Windows для диалогового экрана открытия файла.

выберите-исходный-Excel-файл-для-загрузки-abap

После того, как файл Excel для загрузки данных выбран в диалоговом окне открытия файла, процедура формы UploadExcelData и процедура формы DisplayInternalTableData выполняются по порядку.
UploadExcelData загружает данные Excel из выбранного исходного файла Excel во внутреннюю таблицу ABAP с помощью вызова функции ABAP TEXT_CONVERT_XLS_TO_SAP.
При вызове функции TEXT_CONVERT_XLS_TO_SAP важно установить внутреннюю таблицу, подходящую для исходного файла.
По этой причине я определил пользовательский тип gty_Vendors в разделе объявлений TYPES.
Объявления рабочей области gs_Vendors и внутренней таблицы gt_Vendors выполняются с использованием этого глобального типа.
После объявления типов и определения данных я использовал свойство i_tab_converted_data функции TEXT_CONVERT_XLS_TO_SAP ABAP, чтобы указать на целевую внутреннюю таблицу для процесса загрузки Excel.
Форма DisplayInternalTableData просто зацикливается на внутренней таблице и отображает информацию о поставщике на экране с помощью метода WRITE.

upload-excel-data-to-abap-internal-table

ТИПЫ:
НАЧАЛО gty_Vendors,
VendorID TYPE I,
AccountNumber(20) TYPE C,
Name(50) TYPE C,
CreditRating(5 ) ТИП C,
PreferredVendorStatus(5) ТИП C,
ActiveFlag(5) ТИП C,
PurchasingWebServiceURL(40) ТИП C,
ModifiedDate(20) ТИП C,
КОНЕЦ gty_Vendors.

ДАННЫЕ:
g_raw_data TYPE TRUXS_T_TEXT_DATA,
gs_Vendors TYPE gty_Vendors,
gt_Vendors TYPE TABLE OF gty_Vendors.


ЭКРАН ВЫБОРА НАЧАЛО БЛОКА БЛОК-1 С НАЗВАНИЕМ ТЕКСТА-001.

ПАРАМЕТРЫ: pa_file LIKE rlgrap-filename ПО УМОЛЧАНИЮ 'C:\excel.xls'.
" или CFFILE-FILENAME

ВЫБОР-ЭКРАН КОНЕЦ БЛОКА БЛОК-1.

НА ЭКРАНЕ ВЫБОРА ПО ЗНАЧЕНИЮ-ЗАПРОСУ ДЛЯ pa_file.
ВЫПОЛНЯЙТЕ u_SelectFile, ИСПОЛЬЗУЯ pa_file.

ВЫПОЛНИТЬ u_UploadExcelData.
ВЫПОЛНИТЬ u_DisplayInternalTableData.

ДАННЫЕ:
lv_subrc LIKE sy-subrc,
lt_it_tab TYPE filetable.

" Показать элемент управления/экран диалога открытия файла
СПОСОБ ВЫЗОВА cl_gui_frontend_services=>file_open_dialog
ЭКСПОРТ
window_title = 'Выбрать исходный файл Excel'
default_filename = '*.xls' < br />multiselection = ' '
ИЗМЕНЕНИЕ
file_table = lt_it_tab
rc = lv_subrc.

" Запишите путь в области ввода
LOOP AT lt_it_tab INTO p_pa_file.
ENDLOOP.

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
ЭКСПОРТ
i_line_header = 'X'
i_tab_raw_data = g_raw_data
i_filename = pa_file
ТАБЛИЦЫ
i_tab_converted_data = gt_Vendors[] " Данные
ИСКЛЮЧЕНИЯ
conversion_failed = 1
ДРУГИЕ = 2.

ЗАПИСАТЬ: /
' VendorId' ПРАВИЛЬНО,
13 'AccountNumber',
34 'Имя',
88 'CR' ПРАВИЛЬНО,
>93 'PVS' ПО ПРАВУ,
101 'A' ПО ПРАВУ,
104 'URL',
144 'ModifiedDate'.

ЗАПУСКАТЬ gt_Vendors В gs_Vendors.
ЗАПИСАТЬ: /
gs_Vendors-VendorId СООТВЕТСТВУЕТ ПРАВУ,
gs_Vendors-AccountNumber,
gs_Vendors-Name,
gs_Vendors-CreditRating СООТВЕТСТВУЕТ ПРАВУ,
gs_Vendors -PreferredVendorStatus ПОДТВЕРЖДЕНО ПРАВОМ,
gs_Vendors-ActiveFlag ПОДТВЕРЖДЕНО ПРАВОМ,
gs_Vendors-PurchasingWebServiceURL,
gs_Vendors-ModifiedDate.
ENDLOOP.

Я надеюсь, что эта демонстрация загрузки ABAP в Excel будет полезна для ваших кодов ABAP, используемых для загрузки данных Excel.

Загрузка данных Excel в SAP: 7 рекомендаций. Даже если SAP предоставляет стандартизированные бизнес-процессы и централизованные хранилища данных, многие данные компании остаются в электронных таблицах. Ввод данных в эти электронные таблицы и SAP — одна из задач, стоящих перед ИТ-отделами бизнеса. Много подразделений

Когда вы вводите данные вручную с ошибками, вы теряете ресурсы, повторно вводя эти данные вручную в SAP. ИТ-специалисты и функциональные аналитики завалены запросами от бизнес-пользователей на автоматическую загрузку данных Excel в SAP.

o Бизнес-пользователи SAP пытаются сократить объем ручного ввода данных или внести масштабные изменения в данные SAP, особенно если данные уже существуют в Excel?

o Ищут ли ИТ-специалисты или технические аналитики способы более эффективного реагирования на запросы конечных пользователей на загрузку данных?

Вы ищете, как ваша компания может сэкономить время и ресурсы при управлении данными SAP?

Если вы ответите на любой из этих вопросов, вам понадобится эта статья. В этой статье описаны семь рекомендаций по автоматизации загрузки Excel.

Преобразование данных в SAP. Применяя эти передовые методы, вы можете смягчить многие проблемы, с которыми сталкиваются бизнес-пользователи и ИТ-аналитики при загрузке данных Excel в SAP.

Загрузка данных Excel в SAP: 7 рекомендаций

Если у вас есть несколько вариантов подключения Excel и SAP, не связанных с планированием, пользовательское планирование с помощью ALAP или VB является крайним средством при загрузке временных данных Excel в SAP. Это не просто программирование,

Дорогие и медленные программы, которые используются только один раз в год или только один раз, особенно расточительны. Кроме того, создание мощной программы требует большого количества тестов, и если программа не протестирована должным образом, она может быть опасной и привести к непоправимому повреждению данных.

По возможности используйте методы без сценариев или программирования. Сторонние инструменты, такие как BDC, CATT, LSMW и Winshotel TxSuttle от SAP, могут сильно блокировать программирование.

<р>2. Не загружайте непосредственно в таблицу SAP. Это очевидно, но это

Вы не можете переоценить это. Для записи непосредственно в таблицу SAP данные не требуются.

Проверка, проверка и балансировка при создании данных

Обычная торговля SAP. Поэтому не используйте метод, написанный непосредственно в SAP.

Данные должны быть загружены через предварительно настроенную транзакцию SAP или MAPI. Еще раз

В число таких инструментов, как BDC, CATT, LSMW или Tx Super, входят:

Вместо записи непосредственно в таблицу SAP данные создаются посредством транзакций SAP.

<р>3. Выберите журналы, карты и политики выполнения. Запись, сопоставление и выполнение политик

Как правило, сначала необходимо опубликовать транзакции SAP, для которых требуются данные.

сканировать. За этапом записи следует этап назначения SAP и данные

Поля, захваченные во время записи, сопоставляются с полем Excel. Наконец

Повторяйте транзакции с разными уровнями данных.

Создайте файл Excel. Запись, сопоставление и выполнение политик

Запуск макросов для автоматизации общих задач.

Преимущество выбора регистрации, сопоставления и применения политик: (а)

Очень распространено, может работать хорошо, много разных задач по загрузке и много

Даже если есть разные сделки SAP, пользовательские сделки, (б) это просто

Сэкономьте много времени благодаря интуитивно понятным методам и множеству обновлений данных (c)

Даже корпоративные пользователи могут делать что-то самостоятельно без необходимости

Много ИТ-поддержки.

Чтобы загрузить данные из Excel, необходимо использовать записи, сопоставление и применение политик.

сок. SAP снова предлагает такие инструменты, как BDC, CATT и LSMW, для обеспечения полной совместимости.

Его можно применять к таким политикам и множеству различных загружаемых приложений. это

Инструмент TxSuttle значительно упрощает задачи записи и отображения карты.

Это проще для бизнес-пользователей. Кроме того, необходимо приложение

Используйте заголовки и позиции, например журналы, для загрузки данных о транзакциях

Суперинструменты Tx, такие как документы, счета, заказы на покупку и заказы на продажу,

Это очень полезная функция.

<р>4. Выберите, как обеспечить безопасность и соответствие требованиям SOX: обязательно выберите один из них.

Поддерживать безопасность на основе ролей SAP и обеспечивать безопасность. в настоящее время

Аудит Cerbagens Oxley (SOX) невозможно переоценить. Ключевые аспекты

Статья 404 заключается в том, что права на проверку и долги распределяются отдельно.

Чтобы ни одно физическое лицо не имело права передавать бизнес,

Они торгуют мошенническим образом. Один из самых распространенных открытых аудитов SOX

Проблема в том, что ИТ-пользователи имеют очень широкий доступ к продукту

Данные SAP. Таким образом, для обеспечения соответствия SOX широкомасштабные изменения или нагрузки

В идеале это должен сделать доступный бизнес-пользователь

Разрешить бизнес-пользователям выполнять загрузку с помощью нагрузки, предоставляемой SAP

Для использования торговых инструментов потребуется дополнительное разрешение

инструмент. Если ваша компания не может предоставить такое разрешение, воспользуйтесь им.

Продукты Tx Shutter от Winsuttel могут быть более подходящими, поскольку они устанавливаются снаружи

Основные системы SAP обычно не требуют дополнительных разрешений.

<р>5. Сохраняйте данные в исходном формате Excel. Если у вас еще есть данные для загрузки

Он не преобразуется в исходный формат Excel, не разделен запятыми или .

Теги определяют форматы текстовых файлов и значительно упрощают процесс загрузки. 1

Пользователей не слишком беспокоит эта процедура.

Продукт Winsuttel TxSuttle позволяет пользователям сохранять данные.

Исходный формат Excel.

<р>6. Выбор внешних методов: два способа ввода внешних данных

Вклад в SAP: (a) Обратный подход к вводу данных в инструменте импорта данных

Используется для ввода внешних данных во внешние методы SAP (b)

Используйте инструменты вне SAP для ввода внешних данных SAP. 1

Для внутреннего внешнего подхода обычно требуются все сценарии и программы импорта данных.

Вы должны обновить версию SAP, чтобы работать в реальном времени в SAP.

Обновите скрипт, даже если он использовался только один раз. Таким образом, это уникальное использование

Сценарии могут перегрузить систему SAP при использовании входных и выходных данных. снаружи

Этот метод обеспечивает более чистую альтернативу,

Объявлен совместный продукт Microsoft и SAP Mendocino

Недавно была подтверждена важность обеих компаний для внешних компаний

метод. Другие надстройки, такие как Tx Shutel, также включены извне

Как подключиться к SAP.

Расширение возможностей бизнес-пользователей: наконец, одна из лучших практик

Увеличить нагрузку на бизнес-пользователей при загрузке данных Excel в SAP

себя. Выберите правильный инструмент для своих бизнес-пользователей.

Легко загружать данные без программирования.

Еще предстоит пройти долгий путь, чтобы использовать пустые ИТ-ресурсы для увеличения количества критически важных приложений.

Соответствует Sox, чтобы предоставить бизнес-пользователям контроль над своими данными

Простые в использовании продукты, такие как TX Shutter от Winshutl, приносят пользу

Пользователи загружают свои данные Excel в SAP, чтобы разрешить доступ к этим данным.

Другими словами, здесь рекомендуется загружать данные Excel в рекомендации SAP.

Существует множество стандартных функций SAP для загрузки файла электронной таблицы Excel во внутреннюю таблицу ABAP.

Они имеют некоторые отличия, например: максимальная длина возвращаемого значения ячейки, передача данных с буфером обмена или без него, передача скрытых столбцов, открытие или отсутствие экземпляра приложения Excel и т. д.

Этот пример программы должен помочь вам проверить, какая функция лучше всего соответствует вашим потребностям, и показать, как вызывать функции и принимать возвращаемые данные.

Внимание: у всех этих функций есть одна общая черта: они не доступны для клиентов, и SAP не предоставляет вам поддержку. Прочтите примечание OSS 933420. Используйте на свой страх и риск.

  • ALSM_EXCEL_TO_INTERNAL_TABLE
  • FILE_READ_AND_CONVERT_SAP_DATA
  • IMPORT_FROM_SPREADSHEET
  • KCD_EXCEL_OLE_TO_INT_CONVERT
  • TEXT_CONVERT_XLS_TO_SAP
  • UPLOAD_XLS_FILE_2_ITAB
  • ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ

ТИПЫ:
tv_data(256) ТИП c,

НАЧАЛО ts_data,
value_0001 TYPE tv_data,
value_0002 TYPE tv_data,
value_0003 TYPE tv_data,
value_0004 TYPE tv_data,
value_0005 TYPE tv_data,
>value_0006 TYPE tv_data,
value_0007 TYPE tv_data,
value_0008 TYPE tv_data,
value_0009 TYPE tv_data,
value_0010 TYPE tv_data,
value_0011 TYPE tv_data,
value_0012 ТИП tv_data,
value_0013 ТИП tv_data,
value_0014 ТИП tv_data,
value_0015 ТИП tv_data,
value_0016 ТИП tv_data,
value_0017 ТИП tv_data,
value_0018 ТИП tv_data ,
value_0019 TYPE tv_data,
value_0020 TYPE tv_data,
END OF ts_data,

tt_data ТАБЛИЦА ТИПОВ ts_data,
tv_index(4) ТИП n.

КОНСТАНТЫ:
co_max_col TYPE i VALUE 20,
co_max_row TYPE i VALUE 9999.

*&-------------------------------------------------------------------------- ------------------------*
*& ЭКРАН ВЫБОРА
*&---------- -------------------------------------------------- ---------*
ВЫБОР-ЭКРАН НАЧАЛО СТРОКИ.
КОММЕНТАРИЙ НА ЭКРАНЕ ВЫБОРА (33) tx_fname FOR FIELD pa_fname.
ПАРАМЕТРЫ pa_fname ТИП localfile ОБЯЗАТЕЛЬНО СТРОЧНЫМИ РЕГИСТРАМИ ПАМЯТИ ID fnm.
ВЫБОР-ЭКРАН КОНЕЦ СТРОКИ.

ЭКРАН ВЫБОРА НАЧАЛО СТРОКИ.
КОММЕНТАРИЙ НА ЭКРАНЕ ВЫБОРА (83) tx_read0.
ВЫБОР-ЭКРАН КОНЕЦ СТРОКИ.

ЭКРАН ВЫБОРА НАЧАЛО СТРОКИ.
КОММЕНТАРИЙ НА ЭКРАНЕ ВЫБОРА (33) tx_read1 ДЛЯ ПОЛЯ pa_read1.
ПАРАМЕТРЫ pa_read1 ГРУППА РАДИОКНОПОК rad1.
ВЫБОР-ЭКРАН КОНЕЦ СТРОКИ.

ЭКРАН ВЫБОРА НАЧАЛО СТРОКИ.
КОММЕНТАРИЙ НА ЭКРАНЕ ВЫБОРА (33) tx_read2 ДЛЯ ПОЛЯ pa_read2.
ПАРАМЕТРЫ pa_read2 ГРУППА РАДИОКНОПОК rad1.
ВЫБОР-ЭКРАН КОНЕЦ СТРОКИ.

ЭКРАН ВЫБОРА НАЧАЛО СТРОКИ.
КОММЕНТАРИЙ НА ЭКРАНЕ ВЫБОРА (33) tx_read3 ДЛЯ ПОЛЯ pa_read3.
ПАРАМЕТРЫ pa_read3 ГРУППА РАДИОКНОПОК rad1.
ВЫБОР-ЭКРАН КОНЕЦ СТРОКИ.

ЭКРАН ВЫБОРА НАЧАЛО СТРОКИ.
КОММЕНТАРИЙ НА ЭКРАНЕ ВЫБОРА (33) tx_read4 ДЛЯ ПОЛЯ pa_read4.
ПАРАМЕТРЫ pa_read4 ГРУППА РАДИОКНОПОК rad1.
ВЫБОР-ЭКРАН КОНЕЦ СТРОКИ.

ЭКРАН ВЫБОРА НАЧАЛО СТРОКИ.
КОММЕНТАРИЙ НА ЭКРАНЕ ВЫБОРА (33) tx_read5 ДЛЯ ПОЛЯ pa_read5.
ПАРАМЕТРЫ pa_read5 ГРУППА РАДИОКНОПОК rad1.
ВЫБОР-ЭКРАН КОНЕЦ СТРОКИ.

ЭКРАН ВЫБОРА НАЧАЛО СТРОКИ.
КОММЕНТАРИЙ НА ЭКРАНЕ ВЫБОРА (33) tx_read6 ДЛЯ ПОЛЯ pa_read6.
ПАРАМЕТРЫ pa_read6 ГРУППА РАДИОКНОПОК rad1.
ВЫБОР-ЭКРАН КОНЕЦ СТРОКИ.

ЭКРАН ВЫБОРА НАЧАЛО СТРОКИ.
КОММЕНТАРИЙ НА ЭКРАНЕ ВЫБОРА (33) tx_read7 ДЛЯ ПОЛЯ pa_read7.
ПАРАМЕТРЫ pa_read7 ГРУППА РАДИОКНОПОК rad1.
ВЫБОР-ЭКРАН КОНЕЦ СТРОКИ.

НА ВЫВОДЕ ЭКРАНА ВЫБОРА.
tx_fname = 'Путь и имя Excel для открытия'.
tx_read0 = 'Функция:'.
tx_read1 = 'ALSM_EXCEL_TO_INTERNAL_TABLE'.
tx_read2 = 'FILE_READ_AND_CONVERT_SAP_DATA'.
tx_read3 = 'IMPORT_FROM_SPREADSHEET'.
tx_read4 = 'KCD_EXCEL_OLE_TO_INT_CONVERT'.
tx_read5 = 'TEXT_CONVERT_XLS_TO_SAP'.
tx_read6 = 'UPLOAD_XLS_FILE_2_ITAB'.
tx_read7 = 'ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ'.

ДАННЫЕ:
lt_data TYPE tt_data.

ЕСЛИ pa_read1 = 'X'.
ЗАПИСАТЬ: / 'Функция ALSM_EXCEL_TO_INTERNAL_TABLE'.
ПРОПУСТИТЬ.
ВЫПОЛНИТЬ excel_read1 ИЗМЕНЕНИЕ lt_data.

ELSEIF pa_read2 = 'X'.
ЗАПИСАТЬ: / 'Функция FILE_READ_AND_CONVERT_SAP_DATA'.
ПРОПУСТИТЬ.
ВЫПОЛНИТЬ excel_read2 ИЗМЕНЕНИЕ lt_data.

ELSEIF pa_read3 = 'X'.
WRITE: / 'Функция IMPORT_FROM_SPREADSHEET'.
ПРОПУСТИТЬ.
ВЫПОЛНИТЬ excel_read3 ИЗМЕНЕНИЕ lt_data.

ELSEIF pa_read4 = 'X'.
ЗАПИСАТЬ: / 'Функция KCD_EXCEL_OLE_TO_INT_CONVERT'.
ПРОПУСТИТЬ.
ВЫПОЛНИТЬ excel_read4 ИЗМЕНЕНИЕ lt_data.

ELSEIF pa_read5 = 'X'.
ЗАПИСАТЬ: / 'Функция TEXT_CONVERT_XLS_TO_SAP'.
ПРОПУСТИТЬ.
ВЫПОЛНИТЬ excel_read5 ИЗМЕНЕНИЕ lt_data.

ELSEIF pa_read6 = 'X'.
ЗАПИСАТЬ: / 'Функция UPLOAD_XLS_FILE_2_ITAB'.
ПРОПУСТИТЬ.
ВЫПОЛНИТЬ excel_read6 ИЗМЕНЕНИЕ lt_data.

ELSEIF pa_read7 = 'X'.
ПИСАТЬ: / 'ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ'.
ПРОПУСТИТЬ.
ВЫПОЛНИТЬ excel_read7 ИЗМЕНЕНИЕ lt_data.
КОНЕЦ.

ВЫПОЛНИТЕ itab_display, ИСПОЛЬЗУЯ lt_data.

ДАННЫЕ:
lt_excel ТИП СТАНДАРТНАЯ ТАБЛИЦА alsmex_tabline,
ls_excel ТИП alsmex_tabline,
lv_data ТИП tv_data,
lv_error ТИП строка.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
ЭКСПОРТИРОВАНИЕ
filename = pa_fname
i_begin_col = 1
i_begin_row = 1
i_end_col = co_max_col
i_end_row = co_max_row
ТАБЛИЦЫ
intern = lt_excel
ИСКЛЮЧЕНИЯ
несовместимые_параметры = 1
upload_ole = 2
ДРУГИЕ = 3.

ЕСЛИ sy-subrc <> 0.
ПИСАТЬ: / 'SY-SUBRC = ', sy-subrc.
ИДЕНТИФИКАТОР СООБЩЕНИЯ sy-msgid НОМЕР ТИПА 'E' sy-msgno
С sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 В lv_error.
ПИСАТЬ: /lv_error.
СТОП.
КОНЕЦ.

ЗАциклИВАТЬ lt_excel В ls_excel.
lv_data = значение ls_excel.
ВЫПОЛНЯЙТЕ itab_insert_value, ИСПОЛЬЗУЯ ls_excel-col ls_excel-row lv_data
ИЗМЕНЯЯ pt_data.
КОНЕЦ ПЕТЛИ.
КОНЕЦФОРМ. "excel_read1

ДАННЫЕ:
lv_fname TYPE filename-fileintern,
lv_error TYPE string.

lv_fname = pa_fname.
CALL FUNCTION 'FILE_READ_AND_CONVERT_SAP_DATA'
ЭКСПОРТ
i_filename = lv_fname
i_servertyp = 'OLE2'
i_fileformat = 'XLS'
* I_FIELD_SEPERATOR =
* I_LINE_HEADER =
TABLES
i_tab_receiver = pt_data
ИСКЛЮЧЕНИЯ
file_not_found = 1
close_failed = 2
authorization_failed = 3
open_failed = 4
/>conversion_failed = 5
ДРУГИЕ = 6.

ЕСЛИ sy-subrc <> 0.
ПИСАТЬ: / 'SY-SUBRC = ', sy-subrc.
ИДЕНТИФИКАТОР СООБЩЕНИЯ sy-msgid НОМЕР ТИПА 'E' sy-msgno
С sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 В lv_error.
ПИСАТЬ: /lv_error.
СТОП.
КОНЕЦ.
КОНЕЦФОРМ. "excel_read2

ДАННЫЕ:
lv_url(256) ТИП c,
ls_range ТИП soi_dimension_item,
lt_range ТИП soi_dimension_table,
lt_excel ТИП soi_generic_table,
ls_excel ТИП soi_generic_item,
/>lv_data ТИП tv_data,
lv_col ТИП tv_index,
lv_row ТИП tv_index.

СЦЕПИТЬ 'file://' pa_fname INTO lv_url.

ls_range-row = 1.
ls_range-column = 1.
ls_range-rows = co_max_row.
ls_range-columns = co_max_col.
ПРИЛОЖИТЬ ls_range К lt_range.

CALL FUNCTION 'IMPORT_FROM_SPREADSHEET'
ЭКСПОРТ
item_url = lv_url
document_type = 'Excel.Sheet'
ТАБЛИЦЫ
data_table = lt_excel
ranges = lt_range .

ЗАциклИВАТЬ lt_excel В ls_excel.
lv_data = значение ls_excel.
lv_col = ls_excel-столбец.
lv_row = ls_excel-строка.
ВЫПОЛНИТЕ itab_insert_value, ИСПОЛЬЗУЯ lv_col lv_row lv_data
ИЗМЕНЯЯ pt_data.
КОНЕЦ ПЕТЛИ.
КОНЕЦФОРМ. "excel_read3

ДАННЫЕ:
lt_excel TYPE kcde_intern,
ls_excel TYPE kcde_intern_struc,
lv_data TYPE tv_data,
lv_error TYPE string.

CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
ЭКСПОРТ
filename = pa_fname
i_begin_col = 1
i_begin_row = 1
i_end_col = co_max_col
i_end_row = co_max_row
ТАБЛИЦЫ
intern = lt_excel
ИСКЛЮЧЕНИЯ
несовместимые_параметры = 1
upload_ole = 2
ДРУГИЕ = 3.

ЕСЛИ sy-subrc <> 0.
ПИСАТЬ: / 'SY-SUBRC = ', sy-subrc.
ИДЕНТИФИКАТОР СООБЩЕНИЯ sy-msgid НОМЕР ТИПА 'E' sy-msgno
С sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 В lv_error.
ПИСАТЬ: /lv_error.
СТОП.
КОНЕЦ.

ЗАциклИВАТЬ lt_excel В ls_excel.
lv_data = значение ls_excel.
ВЫПОЛНЯЙТЕ itab_insert_value, ИСПОЛЬЗУЯ ls_excel-col ls_excel-row lv_data
ИЗМЕНЯЯ pt_data.
КОНЕЦ ПЕТЛИ.
КОНЕЦФОРМ. "excel_read4

ДАННЫЕ:
lt_raw_data(4096) TYPE c ПРОИСХОДИТ 0,
lt_data TYPE STANDARD TABLE OF string,
lv_error TYPE string.

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
ЭКСПОРТ
* I_FIELD_SEPERATOR =
* I_LINE_HEADER =
i_tab_raw_data = lt_raw_data
i_filename = pa_fname
TABLES
i_tab_converted_data = pt_data
ИСКЛЮЧЕНИЯ
conversion_failed = 1
ДРУГИЕ = 2.

ЕСЛИ sy-subrc <> 0.
ПИСАТЬ: / 'SY-SUBRC = ', sy-subrc.
ИДЕНТИФИКАТОР СООБЩЕНИЯ sy-msgid НОМЕР ТИПА 'E' sy-msgno
С sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 В lv_error.
ПИСАТЬ: /lv_error.
СТОП.
КОНЕЦ.
КОНЕЦФОРМ. "excel_read5

ДАННЫЕ:
lv_error TYPE string.

CALL FUNCTION 'UPLOAD_XLS_FILE_2_ITAB'
ЭКСПОРТИРОВАНИЕ
i_filename = pa_fname
ТАБЛИЦЫ
e_itab = pt_data
ИСКЛЮЧЕНИЯ
file_error = 1
ДРУГОЕ = 2.

ЕСЛИ sy-subrc <> 0.
ПИСАТЬ: / 'SY-SUBRC = ', sy-subrc.
ИДЕНТИФИКАТОР СООБЩЕНИЯ sy-msgid НОМЕР ТИПА 'E' sy-msgno
С sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 В lv_error.
ПИСАТЬ: /lv_error.
СТОП.
КОНЕЦ.
КОНЕЦФОРМ. "excel_read6

ДАННЫЕ:
lo_control ССЫЛКА ТИПА НА i_oi_container_control,
lo_error ССЫЛКА ТИПА на i_oi_error,
lo_container ССЫЛКА ТИПА НА cl_gui_custom_container,
lo_document ССЫЛКА ТИПА НА i_oi_document_proxy,
lo_spreadsheet ТИП ССЫЛКА НА i_oi_spreadsheet,
lv_url ТИП char256,
lv_has_sheet ТИП i.

* 1. control get
СПОСОБ ВЫЗОВА c_oi_container_control_creator=>get_container_control
ИМПОРТ
control = lo_control
error = lo_error.

ЕСЛИ lo_error->has_failed = 'X'.
СПОСОБ ВЫЗОВА lo_error->raise_message( type = 'E' ).
КОНЕЦ.

* 2. container create
CREATE OBJECT lo_container
EXPORTING
* parent =
container_name = 'CONTAINER'
* style =
* life = life_default
* repid =
* dynnr =
* no_autodef_progid_dynnr =
ИСКЛЮЧЕНИЯ
cntl_error = 1
cntl_system_error = 2
create_error = 3
/>lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
ДРУГИЕ = 6.

ASSERT sy-subrc = 0.

* 3. управление init с контейнером
СПОСОБ ВЫЗОВА lo_control->init_control
ЭКСПОРТ
* dynpro_nr = SY-DYNNR
* gui_container = ' '
inplace_enabled = 'X'
* inplace_mode = 0
* inplace_resize_documents = ' '
inplace_scroll_documents = 'X'
* inplace_show_toolbars = 'X'
* no_flush = ' '
* parent_id = cl_gui_cfw=>dynpro_0
r3_application_name = 'Excel'
* register_on_close_event = ' '
* register_on_custom_event = ' '
* rep_id = SY-REPID
* shell_style = 1384185856
parent = lo_container
* name =
* autoalign = 'x'
IMPORTING
error = lo_error
ИСКЛЮЧЕНИЯ
javabeannotsupported = 1
ДРУГИЕ = 2.

ASSERT sy-subrc = 0.

ЕСЛИ lo_error->has_failed = 'X'.
СПОСОБ ВЫЗОВА lo_error->raise_message( type = 'E' ).
КОНЕЦ.

* 4. control get proxy
СПОСОБ ВЫЗОВА lo_control->get_document_proxy
ЭКСПОРТ
* document_format = 'NATIVE'
document_type = soi_doctype_excel_sheet " 'Excel.Sheet'
* no_flush = ' '
* register_container = ' '
ИМПОРТ
document_proxy = lo_document
error = lo_error.

ЕСЛИ lo_error->has_failed = 'X'.
СПОСОБ ВЫЗОВА lo_error->raise_message( type = 'E' ).
КОНЕЦ.

<р>* 5.открыть документ
СОЕДИНИТЬ 'FILE://' pa_fname INTO lv_url.

СПОСОБ ВЫЗОВА lo_document->open_document
ЭКСПОРТ
* document_title = ' '
document_url = lv_url
* no_flush = ' '
open_inplace = 'X'
open_readonly = 'X'
* protect_document = ' '
* onsave_macro = ' '
* startup_macro = ''
* user_info =
ИМПОРТ
ошибка = lo_error.

ЕСЛИ lo_error->has_failed = 'X'.
СПОСОБ ВЫЗОВА lo_error->raise_message( type = 'E' ).
КОНЕЦ.

* 6. Проверка электронной таблицы существует
СПОСОБ ВЫЗОВА lo_document->has_spreadsheet_interface
* ЭКСПОРТ
* no_flush = ' '
ИМПОРТИРОВКА
error = lo_error
is_available = lv_has_sheet.

ЕСЛИ lo_error->has_failed = 'X'.
СПОСОБ ВЫЗОВА lo_error->raise_message( type = 'E' ).
КОНЕЦ.

ЕСЛИ НЕ lv_has_sheet ЯВЛЯЕТСЯ НАЧАЛЬНЫМ.

* 7. электронная таблица get
СПОСОБ ВЫЗОВА lo_document->get_spreadsheet_interface
ЭКСПОРТ
no_flush = ' '
ИМПОРТ
error = lo_error
sheet_interface = lo_spreadsheet .

ЕСЛИ lo_error->has_failed = 'X'.
СПОСОБ ВЫЗОВА lo_error->raise_message( type = 'E' ).
КОНЕЦ.

* 8. чтение данных
ДАННЫЕ:
lv_row_start TYPE i значение 1, " первая строка
lv_row_block TYPE i значение 100, " количество строк, считанных в одном блоке (диапазон)
lv_row_empty TYPE i значение 0, " количество пустых строк в конце блока
lt_value TYPE soi_generic_table,
ls_value TYPE soi_generic_item,
lt_rangesdef TYPE soi_dimension_table,
ls_rangesdef TYPE soi_dimension_item,
lt_ranges TYPE soi_range_list,
ls_data TYPE ts_data,
lv_col_index TYPE tv_index,
lv_fieldname TYPE string.

СИМВОЛЫ ПОЛЯ:
ТИП tv_data.

ПОКА lv_row_empty * диапазон создается
ОЧИСТИТЬ ls_rangesdef.
ОЧИСТИТЬ lt_rangesdef.
ls_rangesdef-row = lv_row_start.
ls_rangesdef-column = 1.
ls_rangesdef-rows = lv_row_block.
ls_rangesdef-columns = co_max_col.
ВСТАВЬТЕ ls_rangesdef В ТАБЛИЦУ lt_rangesdef.

* данные считываются из диапазона
СПОСОБ ВЫЗОВА lo_spreadsheet->get_ranges_data
ЭКСПОРТ
* no_flush = ' '
* all = ' '
* update = -1
rangesdef = lt_rangesdef
ИМПОРТ
contents = lt_value
error = lo_error
ИЗМЕНЕНИЕ
ranges = lt_ranges.

ЕСЛИ lo_error->has_failed = 'X'.
СПОСОБ ВЫЗОВА lo_error->raise_message( type = 'E' ).
КОНЕЦ.

* передача данных
LOOP AT lt_value INTO ls_value.

В НОВОЙ строке.
ОЧИСТИТЬ ls_data.
КОНЕЦ.

lv_col_index = ls_value-столбец.
СЦЕПИТЬ 'VALUE_' lv_col_index INTO lv_fieldname.
НАЗНАЧИТЬ КОМПОНЕНТ lv_fieldname СТРУКТУРЫ ls_data .
ASSERT sy-subrc = 0.
= ls_value-value.

В КОНЦЕ строки.
ПРИЛОЖИТЬ ls_data К pt_data.

ЕСЛИ ls_data ЯВЛЯЕТСЯ НАЧАЛЬНЫМ.
ДОБАВИТЬ 1 К lv_row_empty.
ДРУГОЕ.
ОЧИСТИТЬ lv_row_empty.
КОНЕЦ.
КОНЕЦ.
ENDLOOP.

ДОБАВЬТЕ lv_row_block К lv_row_start.
КОНЕЦ.

* данные удаляют пустые строки в конце
ДАННЫЕ:
lv_index TYPE sy-tabix.

lv_index = строки(pt_data).

ПОКА lv_index > 0.
ЧИТАТЬ ТАБЛИЦУ pt_data В ls_data INDEX lv_index.
ЕСЛИ ls_data ЯВЛЯЕТСЯ НАЧАЛЬНЫМ.
УДАЛИТЬ pt_data INDEX lv_index.
ДРУГОЕ.
ВЫХОД.
КОНЕЦ.
ВЫЧИТАТЬ 1 ИЗ lv_index.
КОНЕЦ.
ДРУГОЕ.
СООБЩЕНИЕ e323(bf00) С pa_fname ВОЗНИКАЕТ file_error.
КОНЕЦ.

*9. Окончательная очистка
ЕСЛИ НЕ lo_spreadsheet ЯВЛЯЕТСЯ НАЧАЛЬНЫМ.
БЕСПЛАТНО lo_spreadsheet.
КОНЕЦ.

ЕСЛИ НЕ lo_document ЯВЛЯЕТСЯ ИСХОДНЫМ.
СПОСОБ ВЫЗОВА lo_document->close_document.
СПОСОБ ВЫЗОВА lo_document->release_document.
БЕСПЛАТНО lo_document.
КОНЕЦ.

ЕСЛИ НЕ lo_control ЯВЛЯЕТСЯ ИСХОДНЫМ.
СПОСОБ ВЫЗОВА lo_control->destroy_control.
БЕСПЛАТНО lo_control.
КОНЕЦ.
КОНЕЦФОРМ. "excel_read7

ДАННЫЕ:
lv_fieldname TYPE string.

СИМВОЛЫ ПОЛЕ:
ТИП ts_data,
ТИП tv_data.

ПОКА pi_row > строк( pt_data ).
ВСТАВИТЬ НАЧАЛЬНУЮ СТРОКУ В ТАБЛИЦУ pt_data.
КОНЕЦ.

ПРОЧИТАТЬ ТАБЛИЦУ pt_data НАЗНАЧЕНИЕ ИНДЕКС pi_row.
ASSERT sy-subrc = 0.
СЦЕПИТЬ 'VALUE_' pi_col INTO lv_fieldname.
НАЗНАЧИТЬ КОМПОНЕНТ lv_fieldname СТРУКТУРЫ .
ASSERT sy-subrc = 0.
= pi_value.
КОНЕЦФОРМ. "itab_insert_value

ДАННЫЕ:
lv_count TYPE i,
ls_data TYPE ts_data,
lv_value TYPE tv_data.

lv_count = количество строк (pt_data).

ЗАПИСАТЬ: / 'Количество строк', lv_count.
ПРОПУСТИТЬ.

ЦИКЛИЗАЦИЯ pt_data В ls_data.

ПИСАТЬ / ''. " sy-tabix.
СДЕЛАТЬ co_max_col В РАЗ ИЗМЕНЕНИЕ lv_value ОТ ls_data-value_0001
ДАЛЕЕ ls_data-value_0002.
ЗАПИСАТЬ: lv_value(10).
ENDDO.
ENDLOOP.
ENDFORM. "itab_display

Полный список примеров в моей инфодепо

Если у вас есть вопрос, вы нашли ошибку или просто хотите связаться со мной, воспользуйтесь этой формой.

Отказ от ответственности: я не являюсь аффилированным или связанным лицом с каким-либо подразделением или дочерней компанией SAP AG.
Товарные знаки или зарегистрированные товарные знаки любых продуктов или компаний, упомянутых на этом сайте, принадлежат этим компаниям.
Любой, кто использует данные решения, делает это под свою ответственность и на свой страх и риск.

Читайте также: