SAPфорум.RU https://sapboard.ru/forum/ |
|
ZWWW - ФМ для выгрузки данных в WORD, EXCEL https://sapboard.ru/forum/viewtopic.php?f=13&t=4880 |
Страница 48 из 161 |
Автор: | organmusic [ Вт, янв 18 2011, 11:58 ] |
Заголовок сообщения: | Re: ФМ для выгрузки данных в WORD, EXCEL |
Parazit написал: organmusic написал(а): Добрый день! Столнулся с такой вот проблемкой: Вывожу в ячейку Excel значение (текстовое) больше 255 символов - ничего не выводится, до 255 - все нормально. Есть ограничение на длину строки? Как можно преодолеть это ограничение Спасибо заранее за ответы Это ограничение функции поиска/замены Excel. Обойти можно по разному. Например вывод в ячейку напрямую - VAR_NAME = имя ячейки; FIND_TEXT = пусто. Или выводить частями, в ячейку поместить несколько меток, типа [1][2][3]. Однако надо учитывать, что у Excel есть и другое ограничение на количество символов в ячейке (около 900 байт для MS 2003). Спасибо, вполне исчерпывающий ответ. Я кстати тоже пришел к тому чтобы писать в ячейке несколько меток [1][2] - этот вариант вполне работает и вроде без больших переделок |
Автор: | __Gennady [ Вт, янв 18 2011, 15:06 ] |
Заголовок сообщения: | Re: ФМ для выгрузки данных в WORD, EXCEL |
Besa написал: __Gennady написал(а): Сдается мне, это ограничение реализации OLE интерфейса Вряд ли, передавал через Оле(макросом) стринговую переменную, там больше 255 было... (Не через этот ФМ) Открываем группу типов OLE2 смотрим TYPES BEGIN OF OLE2_METH_PARMS. INCLUDE STRUCTURE SWCONT. TYPES POINTER TYPE OLE2_PCB. TYPES END OF OLE2_METH_PARMS. SWCONT: ELEMENT SWC_ELEM CHAR 32 TAB_INDEX SWC_INDEX NUMC 6 ELEMLENGTH SWC_LENGTH NUMC 3 TYPE SWC_TYPE CHAR 1 VALUE SWC_VALUE CHAR 255 Что-то мне подсказывает, что SET\GET PROPERTY не съест больше 255 |
Автор: | Parazit [ Вт, янв 18 2011, 15:25 ] |
Заголовок сообщения: | Re: ФМ для выгрузки данных в WORD, EXCEL |
__Gennady написал(а): Что-то мне подсказывает, что SET\GET PROPERTY не съест больше 255 Besa правильно сказал, с типом string нет проблем. |
Автор: | __Gennady [ Вт, янв 18 2011, 15:29 ] |
Заголовок сообщения: | Re: ФМ для выгрузки данных в WORD, EXCEL |
Пример записи или считывания из ячейки можно? (без доп. операций типа макросов) |
Автор: | Parazit [ Вт, янв 18 2011, 16:10 ] |
Заголовок сообщения: | Re: ФМ для выгрузки данных в WORD, EXCEL |
__Gennady написал(а): Пример записи или считывания из ячейки можно? (без доп. операций типа макросов) Code: Report Z_Hello_World.
Data: it_val type standard table of ZWWW_VALUES with header line. it_val-VAR_NAME = 'C5'. Concatenate sy-uline sy-uline into it_val-VALUE. Append it_val. Call function 'ZWWW_OPENFORM' exporting FORM_NAME = 'ZWWW_MACROS' PRINTDIALOG = '' tables IT_VALUES = it_val. |
Автор: | __Gennady [ Вт, янв 18 2011, 16:25 ] |
Заголовок сообщения: | Re: ФМ для выгрузки данных в WORD, EXCEL |
Замечательно. А внутри что? SPREADSHEET интерфейс? Там тоже ограничение в 255, насколько помню. Переформулирую вопрос - можно низкоуровневый, так сказать, пример - чтобы можно было сразу взять и проверить. |
Автор: | Parazit [ Вт, янв 18 2011, 16:34 ] |
Заголовок сообщения: | Re: ФМ для выгрузки данных в WORD, EXCEL |
__Gennady написал(а): Замечательно. А внутри что? SPREADSHEET интерфейс? Там тоже ограничение в 255, насколько помню. Переформулирую вопрос - можно низкоуровневый, так сказать, пример - чтобы можно было сразу взять и проверить. В отладке: LZWWWFORMF01 строка: Set property of Cell 'Value' = <Value>. |
Автор: | __Gennady [ Вт, янв 18 2011, 17:06 ] |
Заголовок сообщения: | Re: ФМ для выгрузки данных в WORD, EXCEL |
Поверил, приятно удивился. Действительно SET PROPERTY позволяет записывать длинные тексты. Тогда еще один вопрос - есть ли возможность массово считать длинные тексты, не поячеечно? |
Автор: | Parazit [ Вт, янв 18 2011, 17:17 ] |
Заголовок сообщения: | Re: ФМ для выгрузки данных в WORD, EXCEL |
__Gennady написал(а): Поверил, приятно удивился. Действительно SET PROPERTY позволяет записывать длинные тексты. Тогда еще один вопрос - есть ли возможность массово считать длинные тексты, не поячеечно? Я делал просто, сохранял страницу в текстовый файл (програмно через OLE) и грузил через GUI_UPLOAD |
Автор: | Пономарев Артем [ Пт, янв 21 2011, 12:59 ] |
Заголовок сообщения: | Re: ФМ для выгрузки данных в WORD, EXCEL |
Баг репорт. Некорректно работает с 2000 и более ранними версиями Excel определение разделителя дробной части. Т.к. у объекта 'Excel.Application' отсутствует свойство 'UseSystemSeparators'. Проблема маленькая, конечно. Но поправить надо бы. Inclide LZWWWFORMF01 Текуший вариант: Code: *---------------------------------------------------------------------* * FORM Get_Excel_Decimal_Separator * *---------------------------------------------------------------------* FORM GET_EXCEL_DECIMAL_SEPARATOR USING RESULT. DATA: APP TYPE OLE2_OBJECT, USESYSTEMSEPARATORS(10). CREATE OBJECT APP 'Excel.Application'. IF SY-SUBRC = 0. GET PROPERTY OF APP 'UseSystemSeparators' = USESYSTEMSEPARATORS. CALL FUNCTION 'FLUSH'. IF SY-SUBRC <> 0 OR ( SY-SUBRC = 0 AND USESYSTEMSEPARATORS <> 0 ). PERFORM GET_SYSTEM_DECIMAL_SEPARATOR USING RESULT. ELSE. GET PROPERTY OF APP 'DecimalSeparator' = RESULT. CALL FUNCTION 'FLUSH'. ENDIF. FREE OBJECT APP. CALL FUNCTION 'FLUSH'. ENDIF. ENDFORM. "GET_EXCEL_DECIMAL_SEPARATOR Вариант исправления: Code: *---------------------------------------------------------------------* * FORM Get_Excel_Decimal_Separator * *---------------------------------------------------------------------* FORM GET_EXCEL_DECIMAL_SEPARATOR USING RESULT. DATA: APP TYPE OLE2_OBJECT, USESYSTEMSEPARATORS(10). CREATE OBJECT APP 'Excel.Application'. IF SY-SUBRC = 0. GET PROPERTY OF APP 'UseSystemSeparators' = USESYSTEMSEPARATORS. CALL FUNCTION 'FLUSH'. IF SY-SUBRC NE 0 OR USESYSTEMSEPARATORS NE 0 OR USESYSTEMSEPARATORS IS INITIAL. PERFORM GET_SYSTEM_DECIMAL_SEPARATOR USING RESULT. ELSE. GET PROPERTY OF APP 'DecimalSeparator' = RESULT. CALL FUNCTION 'FLUSH'. ENDIF. FREE OBJECT APP. CALL FUNCTION 'FLUSH'. ENDIF. ENDFORM. "GET_EXCEL_DECIMAL_SEPARATOR P.S.: Я как был, так остаюсь противником использования сторонних не своих/компании-работодателя компонент в SAP. Но вот коллеги отрапортовали. |
Автор: | Parazit [ Пт, янв 21 2011, 14:46 ] |
Заголовок сообщения: | Re: ФМ для выгрузки данных в WORD, EXCEL |
Пономарев Артем написал: Баг репорт. Некорректно работает с 2000 и более ранними версиями Excel определение разделителя дробной части. Т.к. у объекта 'Excel.Application' отсутствует свойство 'UseSystemSeparators'. Проблема маленькая, конечно. Но поправить надо бы. Вот блин, я же закладывал обработку для MS 2000, еще в стародавние времена, что, собственно, и реализовано в форме. А вот лишнюю строку "CALL FUNCTION 'FLUSH'" оставил, видимо после очередной отладки. Она сбрасывает sy-subrc = 0, оттуда и проблема. В общем достаточно ее просто убрать. Code: *---------------------------------------------------------------------* * FORM Get_Excel_Decimal_Separator * *---------------------------------------------------------------------* FORM GET_EXCEL_DECIMAL_SEPARATOR USING RESULT. ... GET PROPERTY OF APP 'UseSystemSeparators' = USESYSTEMSEPARATORS. * CALL FUNCTION 'FLUSH'. ... ENDFORM. "GET_EXCEL_DECIMAL_SEPARATOR Спасибо за обнаруженный косяк! |
Автор: | AlexABAPoff [ Ср, фев 02 2011, 10:33 ] |
Заголовок сообщения: | Re: ФМ для выгрузки данных в WORD, EXCEL |
Добрый день! Возник такой косяк: при выгрузке в EXCEL, текстовая переменная 310000000000000717 отображается в шаблоне как 3.1Е+17. Поле в шаблоне текстовое, в таблице с выходными данными тоже нормальное значение. EXCEL 2003. Подскажите, в чём может быть проблема. Спасибо! |
Автор: | Parazit [ Ср, фев 02 2011, 10:53 ] |
Заголовок сообщения: | Re: ФМ для выгрузки данных в WORD, EXCEL |
AlexABAPoff написал(а): Добрый день! Возник такой косяк: при выгрузке в EXCEL, текстовая переменная 310000000000000717 отображается в шаблоне как 3.1Е+17. Поле в шаблоне текстовое, в таблице с выходными данными тоже нормальное значение. EXCEL 2003. Подскажите, в чём может быть проблема. Спасибо! Проблема в том, что Excel в функции поиска/замены, которую я использую, пытается любую информацию преобразовать в число при подстановке его в ячейку, независимо от типа ячейки. Я считаю это косяком Excel. Избавиться удается при помощи апострофа в первом символе содержимого ячейки, например в шаблоне можно сделать так '[1], или к выгружаемым данным прибавлять апостроф, типа так '310000000000000717 |
Автор: | AlexABAPoff [ Ср, фев 02 2011, 14:29 ] |
Заголовок сообщения: | Re: ФМ для выгрузки данных в WORD, EXCEL |
Большое спасибо, всё получилось! |
Автор: | Parazit [ Чт, фев 03 2011, 18:12 ] |
Заголовок сообщения: | Re: ФМ для выгрузки данных в WORD, EXCEL |
Поскольку тема весьма разраслась и некоторые вопросы стали повторяться, ибо читать всё подряд - мало кто захочет. Дабы не усугублять распухание темы, затеял я FAQ (ЧАВО) - ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ, расположенный на первой странице темы, чуть пониже первого поста. |
Страница 48 из 161 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |