Текущее время: Сб, июн 28 2025, 21:41

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Передача динамической таблицы как выходного параметра функции
СообщениеДобавлено: Ср, июл 15 2009, 13:46 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Вт, фев 10 2009, 13:20
Сообщения: 33
Пол: Женский
В функции RFC я динамически создаю таблицу - field-symbol <tab>.
Вот часть кода:
Code:
data: lt_fieldcat type LVC_T_FCAT,
      gt_outtab   type ref to data.

field-symbols: <tab> type table.

CALL METHOD cl_alv_table_create=>create_dynamic_table
           EXPORTING it_fieldcatalog = lt_fieldcat
           IMPORTING ep_table        = gt_outtab.

ASSIGN gt_outtab->* TO <tab>.

Как теперь передать эту таблицу в выходной параметр функции?
Возможно ли передать параметр как field-symbol ?

Если нет, то как по известному FS, который ссылается на таблицу, получить саму таблицу - как её объявить и создать?

Буду благодарна за помощь.

Пономарев Артем: пользуйтесь тэгами для оформления кода, пожалуйста.

_________________
Вместо нас всегда возвращается кто-то другой...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Передача динамической таблицы как выходного параметра функции
СообщениеДобавлено: Ср, июл 15 2009, 13:52 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Что значит создать?
Вы только что это сделали с помощью метода create_dynamic_table.
Передать наружу можно с помощью параметра типа ANY TABLE, например.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Передача динамической таблицы как выходного параметра функции
СообщениеДобавлено: Ср, июл 15 2009, 14:05 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 31 2008, 15:58
Сообщения: 70
Добрый день.

По поводу создания таблицы на основе имеющего fs.

Получаем описание структуры на основе RTTI
Code:
    DATA: lcl_table_descr TYPE REF TO cl_abap_tabledescr,
          lcl_struc_descr TYPE REF TO cl_abap_structdescr.

    lcl_table_descr ?= cl_abap_typedescr=>describe_by_data( <fs> ).
    lcl_struc_descr ?= lcl_table_descr->get_table_line_type( ).
    ret_components = lcl_struc_descr->components.

Раскидываем в нужный fieldcatalog
Code:
    LOOP AT ret_components INTO wa_ret_components .

      wa_ct_fieldcat-fieldname = wa_ret_components-name.
      wa_ct_fieldcat-col_pos = sy-tabix.
      wa_ct_fieldcat-datatype = 'CHAR'.
      wa_ct_fieldcat-inttype = 'C'.
      wa_ct_fieldcat-intlen = wa_ret_components-length.
      APPEND wa_ct_fieldcat TO im_fldcat.
      CLEAR wa_ct_fieldcat.
    ENDLOOP.

Создаем.
Code:
    CALL METHOD cl_alv_table_create=>create_dynamic_table
      EXPORTING
        it_fieldcatalog           = ct_fieldcat
      IMPORTING
        ep_table                  = im_table2
      EXCEPTIONS
        generate_subpool_dir_full = 1
        OTHERS                    = 2.


    IF sy-subrc <> 0.
*     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ASSIGN im_table1->* TO <l_table1>.

Вообще наверное имеет смысл ознакомится с отдельным куром про динамическое програмирование и поиском. Тут очень много тем про это.

С Уважением, Абрамов Виктор.

_________________
С Уважением, Абрамов Виктор.
The devil is in the detail.


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

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Пономарев Артем написал:
Что значит создать?
Вы только что это сделали с помощью метода create_dynamic_table.
Передать наружу можно с помощью параметра типа ANY TABLE, например.


Там RFC вроде.

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


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

Зарегистрирован:
Вт, фев 10 2009, 13:20
Сообщения: 33
Пол: Женский
Может быть я не совсем корректно выразилась.
С помощью метода create_dynamic_table я создала FS.

Теперь мне его надо передать наружу из RFC функции.

Цитата:
Передать наружу можно с помощью параметра типа ANY TABLE, например.

При создании параметра на вкладке Tables:
ETK_TABLE TYPE ANY TABLE

А далее в коде:
Code:
field-symbols:  <tab1>  .
assign ETK_TABLE to <tab1>.
<tab1> = <tab>.



Пишет, что внутренняя таблица должна иметь тип STANDARD TABLE, что в данном случае невозможно.

_________________
Вместо нас всегда возвращается кто-то другой...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Передача динамической таблицы как выходного параметра функции
СообщениеДобавлено: Ср, июл 15 2009, 14:54 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
А система у Вас какая ?
Может быть попробовать через
Code:
create data ... type table ..

Зачем Вам для создания указателей пользоваться RFC функциями?

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Последний раз редактировалось Lars Ср, июл 15 2009, 15:33, всего редактировалось 1 раз.

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

Зарегистрирован:
Вт, фев 10 2009, 13:20
Сообщения: 33
Пол: Женский
Система: SAP ECC 6.0
Цитата:
Может быть попробовать через

Code:
create data ... tape table ..



Написала так:
Code:
DATA dref TYPE REF TO data.

create data dref type table OF <tab>.

Пишет, что тип <tab> неизвестен.

Мне RFC функция нужна для получения данной динамической таблицы.
Хочу из указателя как-нибудь таблицу сделать и передать её.

_________________
Вместо нас всегда возвращается кто-то другой...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Передача динамической таблицы как выходного параметра функции
СообщениеДобавлено: Ср, июл 15 2009, 15:44 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Chiffa44 написала:
Система: SAP ECC 6.0
Написала так:
Code:
DATA dref TYPE REF TO data.

create data dref type table OF <tab>.



ну так то да, работать не будет. я тут имел ввиду немного другое.

давайте так, просто чобы понимать.
что передается в ФМ и почему он именно RFC?

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


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

Зарегистрирован:
Вт, фев 10 2009, 13:20
Сообщения: 33
Пол: Женский
Внутри RFC вызывается upb_pm_read_data_rfc. В мою RFC передаются параметры, необходимые для этой функции.
Далее получаем 3 таблицы: ETK_ROW(таблица строк), ETK_COL(таблица столбцов) и ETK_DATA(таблица с данными).
Мне надо из этих 3х таблиц сделать одну и передать её как выходной параметр.

RFC нужно обязательно, т.к. вызывается не из САП'а и удалённо.

_________________
Вместо нас всегда возвращается кто-то другой...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Передача динамической таблицы как выходного параметра функции
СообщениеДобавлено: Ср, июл 15 2009, 16:20 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Я бы посоветовал преобразование данных папок планирования на вызывающей стороне делать.


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

Зарегистрирован:
Вт, фев 10 2009, 13:20
Сообщения: 33
Пол: Женский
Цитата:
Я бы посоветовал преобразование данных папок планирования на вызывающей стороне делать.


Этот вариант я уже тоже продумала. Но там VBScript генериться как-то по-левому. Пока в нём разберёшься...
Если так не получится - буду с другой стороны подходить.

_________________
Вместо нас всегда возвращается кто-то другой...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Передача динамической таблицы как выходного параметра функции
СообщениеДобавлено: Ср, июл 15 2009, 17:04 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Я думаю что стоит использовать какой-нибудь из методов сериализации. Т.е. : или таблицу текстовую какой-нибудь большой длины, чтобы в нее точно влезла строка, а в вызывающей системе просто парсить ее в программе, или заюзать XML( внутри ФМ результат упаковать в XML, после отработки RFC - провести обратную трансформацию).


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

Зарегистрирован:
Вт, фев 10 2009, 13:20
Сообщения: 33
Пол: Женский
Спасибо.
Если никто не предложит как можно таблицу в параметр запихнуть буду думать над XMLом.

_________________
Вместо нас всегда возвращается кто-то другой...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Передача динамической таблицы как выходного параметра функции
СообщениеДобавлено: Чт, июл 16 2009, 03:46 
Специалист
Специалист

Зарегистрирован:
Ср, янв 26 2005, 05:11
Сообщения: 185
Пол: Мужской
В RFC функциях можно в качестве параметров использовать только типизированные плоские типы. Это связано с реализацией самого RFC. Если надо передать неизвестно что, для этого очень хорошо подходит CALL TRANSFOMATION


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Передача динамической таблицы как выходного параметра функции
СообщениеДобавлено: Чт, июл 16 2009, 15:01 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
можно просто как в RFC_READ_TABLE
дополнительно передавать описание в общем типе


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

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


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

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


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

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