SAPфорум.RU
https://sapboard.ru/forum/

Результат работы метода CLIPBOARD_IMPORT класса CL_GUI_FRONTEND_SERVICES отличается в 731 и 750
https://sapboard.ru/forum/viewtopic.php?f=13&t=95067
Страница 1 из 1

Автор:  wolf_sv [ Пт, июн 30 2017, 11:19 ]
Заголовок сообщения:  Результат работы метода CLIPBOARD_IMPORT класса CL_GUI_FRONTEND_SERVICES отличается в 731 и 750

Здравствуйте, коллеги.

Участвую в ABAP разработках в системе SAP BW (версия продукта SAP NetWeaver AS ABAP 7.31, SAP_BASIS 731, SAP_ABA 731). Сейчас планируем переход на версию продукта SAP NETWEAVER 7.5 (SAP_BASIS 750, SAP_ABA 750) и выполняем проверку работоспособности всех своих реализаций на версии 750. Использую SAP Logon Pad 740.

При тестировании разработки по загрузки данных из Excel при помощи метода «CLIPBOARD_IMPORT» класса «CL_GUI_FRONTEND_SERVICES» выяснилось, что результат работы данного метода отличается в версиях 731 и 750.

Структура данных Excel файла фрагментирована, последовательно с вверху вниз идут области данных. Каждая область данных содержит область заголовка и предваряется техническим именем области. Например,
T_RANGE1
Код | Дата начала действия | Версия | Наименование | Полное наименование
0001| 20130611 | 001 | Яблоки | Молдавские яблоки
0002| 20130611 | 001 | Яблоки | Яблоки зелённые
T_RANGE2
Код | Дата начала действия | Версия | Атрибуты
0001| 20130611 | 001 | Вес
0001| 20130611 | 001 | Цена

Разница результатов работы выше указанного метода заключается в том, что когда длина строки в Excel получается длинной, то в версии 750 выше указанный метод отдаёт длинную строку из Excel в виде двух строк в отличии от версии 731. Приведу пример на уже выше указанном примере данных в Excel. Пример выше указанных данных очень упрощён, но думаю будет понятно. Реальная первая область данных T_RANGE1 содержит область заголовка с наименованиями, состоящую из 135 полей, длина строки из этих наименований полей получается приличной в отличии от длины строки полученной из области с данными области T_RANGE1, поэтому выше указанный метод область заголовка отдаёт в виде двух строк, а строку области данных отдаёт в виде одной строки. Вторая область данных T_RANGE2 покороче, поэтому выше указанный метод каждую область по ней отдаёт в виде одной строки.

В версии 750 будет так:
T_RANGE1####
Код#Дата начала действия#Версия
Наименование#Полное наименование
0001#20130611#001#Яблоки#Молдавские яблоки
0002#20130611#001#Яблоки#Яблоки зелённые
T_RANGE2###
Код#Дата начала действия#Версия#Атрибуты
0001#20130611#001#Вес
0001#20130611#001#Цена

В версии 731 будет так:
T_RANGE1####
Код#Дата начала действия#Версия#Наименование#Полное наименование
0001#20130611#001#Яблоки#Молдавские яблоки
0002#20130611#001#Яблоки#Яблоки зелённые
T_RANGE2###
Код#Дата начала действия#Версия#Атрибуты
0001#20130611#001#Вес
0001#20130611#001#Цена

Сам пока не понял почему результаты работы выше указанного метода отличаются на версиях 731 и 750. Ищу решение данной проблемы для версии 750. Может быть ноту надо поставить или версию SAP Logon поменять….

Заранее благодарен за любую помощь.

Спасибо.

Автор:  Rodon [ Чт, фев 22 2018, 08:28 ]
Заголовок сообщения:  Re: Результат работы метода CLIPBOARD_IMPORT класса CL_GUI_FRONTEND_SERVICES отличается в 731 и 750

Привет.
Проблема была решена? как?

Автор:  R256 [ Пн, фев 25 2019, 19:53 ]
Заголовок сообщения:  Re: Результат работы метода CLIPBOARD_IMPORT класса CL_GUI_FRONTEND_SERVICES отличается в 731 и 750

А какой тип у параметра DATA в методе CLIPBOARD_IMPORT?
Предположу следующее.
В методе
CALL METHOD cl_gui_frontend_services=>clipboard_export
параметр DATA определен как TYPE STANDARD TABLE. Не знаю как это работало в предыдущих версиях, но в 7.5 работает так:
В вызывающей программе объявляется таблица с одним символьным полем длиной 100 знаков.
Если в буфере обмена содержится строка длиной менее 100 символов, то в таблице вернется одна строка, если больше 100 знаков, то вернется две строки, что при "разборе" excel будет не совсем корректно. Поэтому и спрашиваю про тип, может он определяется динамически и некорректно перед вызовом CLIPBOARD_IMPORT. Может просто надо аккуратно расширить длину таблицы. Но если таблица объявлена как itab TYPE STANDARD TABLE OF string, то метод зависает и больше не работает. А так бы string таблица была бы идеальна

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/