Текущее время: Пн, авг 04 2025, 16:41

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Передача таблицы со ссылкой из программы в программу
СообщениеДобавлено: Пт, июн 27 2008, 05:42 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Чт, май 29 2008, 05:21
Сообщения: 19
Откуда: Новокузнецк -> Москва
Коллеги! Подскажите, пожалуйста, существует ли способ передать таблицу из одной ABAP-программы в другую, если одно из полей таблицы объявлено как
Code:
TYPE REF TO DATA

Обычный
Code:
EXPORT/IMPORT... TO/FROM MEMORY ID ''

при этом использовать не получается - ошибка при активации.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача таблицы со ссылкой из программы в программу
СообщениеДобавлено: Пт, июн 27 2008, 09:07 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Сначала назначь указатель филд-симболу, а уж его передавай.
Типа:

Assign DataRef->* to <Table>.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 27 2008, 09:48 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Чт, май 29 2008, 05:21
Сообщения: 19
Откуда: Новокузнецк -> Москва
Теперь программа активируется, это уже сдвиг. :)
Но при попытке экспорта подобного объекта в память - DUMP REFS_NOT_SUPPORTED_YET . :(

Code:
For the statement “EXPORT/IMPORT…”, object references, interface references, and data references are currently not supported.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 27 2008, 09:59 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
А программы запущены в одной сессии параллельно?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Передача таблицы со ссылкой из программы в программу
СообщениеДобавлено: Пт, июн 27 2008, 10:01 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Parazit написал:
Сначала назначь указатель филд-симболу, а уж его передавай.

Не указатель содержит таблицу, а таблица указатель.

Фактически задача сводится к тому, как наиболее просто и быстро сериализовать соединённые через указатели данные данные в один кусок, чтобы потом сделать экспорт.

Этот вопрос уже, помнится, обсуждался в одной теме.
Как простой, но не быстрый, вариант можно использовать CALL TRANSFORMATION id...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 27 2008, 10:49 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Чт, май 29 2008, 05:21
Сообщения: 19
Откуда: Новокузнецк -> Москва
Для Konstantin Anikeev: одна программа вызывает другую во время выполнения.

Для sibrin: Вы правы, таблица содержит указатель.

Но идея передать некоторый объект через FS, который нельзя передать напрямую через EXPORT/IMPORT показалась интересной, но к сожалению, не работает... :(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 27 2008, 11:05 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
ElenaK написал(а):

Но идея передать некоторый объект через FS, который нельзя передать напрямую через EXPORT/IMPORT показалась интересной, но к сожалению, не работает... :(

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

_________________
"После" - не значит "вследствие"


Последний раз редактировалось sy-uname Пт, июн 27 2008, 13:47, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 27 2008, 13:39 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
В вот так не сработает?
SAPLBBP_PDH_WFL - имя Группы фунций, но я думаю, что для программ не сильно отличается :)

*--> KA999
CONSTANTS: c_appr_memory_id TYPE bdcdata-fnam VALUE '(SAPLBBP_PDH_WFL)GT_APPROVAL_PREVIEW[]'.

TYPES: gtt_wf_approver TYPE TABLE OF bbp_approval_preview_table.

DATA: lv_fnam TYPE bdcdata-fnam.

FIELD-SYMBOLS: <fs_approvers> TYPE gtt_wf_approver.

IF sy-uname = 'KANIKEEV_DT'.

lv_fnam = c_appr_memory_id.
ASSIGN (lv_fnam) TO <fs_approvers>.
IF <fs_approvers> IS ASSIGNED.

ENDIF.
*<-- KA999


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 27 2008, 13:45 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Konstantin Anikeev написал:
*--> KA999
CONSTANTS: c_appr_memory_id TYPE bdcdata-fnam VALUE '(SAPLBBP_PDH_WFL)GT_APPROVAL_PREVIEW[]'.

lv_fnam = c_appr_memory_id.
ASSIGN (lv_fnam) TO <fs_approvers>.
*<-- KA999

Это работает внутри внутренней сессии. Добраться до переменной, которая осталась в программе, выполневшей submit ... and return или call transaction не получиться

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 27 2008, 14:33 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
А можно попробовать из вызываемой программы заполнять табличку в вызывающей... :)
Другое дело, что непонятно, выживет ли класс, после return...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 27 2008, 14:48 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Konstantin Anikeev написал:
А можно попробовать из вызываемой программы заполнять табличку в вызывающей... :)...
Внутреннюю таблицу? И каким-же образом?
Или таблицу БД? И чем это будет принципиально сильно отличаться от EXPORT\IMPORT?

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 27 2008, 15:20 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
sy-uname написал(а):
Konstantin Anikeev написал:
А можно попробовать из вызываемой программы заполнять табличку в вызывающей... :)...
Внутреннюю таблицу? И каким-же образом?
Или таблицу БД? И чем это будет принципиально сильно отличаться от EXPORT\IMPORT?

не... не внутренюю, глобальную для программы... можно же ее в TOP-Include объявить... А разница в том, что IMPORT/EXPORT не поддерживает классы, а в табличку можно попытаться его запихнуть...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 27 2008, 16:04 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Konstantin Anikeev написал:
... а в табличку можно попытаться его запихнуть...
Поясните, каким образом можно запихнуть объект класса в табличку (именно объект)? И если его можно запихнуть в табличку, почему тогда нельзя пропихнуть табличку через EXPORT\IMPORT?

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 27 2008, 17:04 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Так... Давайте разберемся... :)

Я совершенно не утверждаю, что написанное мной является истиной и будет работать... Возможно, я пишу полную чушь, но опупительное мое упрямство позволяет мне опробовать предложенной мной вариант дома в свободное от работы время и отписаться о результатах (даже если результаты заставят меня признать свою неправоту) не позже воскресенья :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 27 2008, 21:01 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Konstantin Anikeev написал:
Так... Давайте разберемся... :)

Смысл в том, что assign из одной внутренней сессии в другую сделать нельзя. Две внутренние сессии могут обмениваться данными только через (в порядке уменьшения желательности):
1) параметры вызова;
2) ABAP-memory в рамках главной сессии;
3) set/get-параметры в рамках пользовательской сессии;
4) shared memory в рамках сервера приложений;
5) файл на сервере приложений;
5) базу данных в рамках инстанции;
6) RFC в другой R/3 системе, коннект к внешней БД, веб-сервисы и любое другое извращение.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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