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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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