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

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


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

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


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

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