Текущее время: Пт, июл 25 2025, 05:55

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Динамический вызов кода
СообщениеДобавлено: Пт, окт 28 2011, 12:51 
Начинающий
Начинающий

Зарегистрирован:
Пт, окт 28 2011, 12:24
Сообщения: 11
Здравствуйте!

Какие есть способы встроить в ABAP-Программу код, который должен выполняться, но не подвергаться синтаксической проверке?

Необходимо встроить кусок кода в SAP-системе версии 4.6. Код будет выполняться в системе ECC6.0.
версию системы будем проверять, только тогда запускать этот код. Возможности программировать в 6.0 нет, только тестировать.

Код такой:

DATA: lv_memid(10).

CALL METHOD cl_abap_container_utilities=>fill_container_c
EXPORTING
im_value = v_mem_id
IMPORTING
ex_container = lv_memid
EXCEPTIONS
illegal_parameter_type = 1
others = 2.

IMPORT it_samp = it_samp FROM MEMORY ID lv_memid.

Дело в том, что в 4.6 нет класса cl_abap_container_utilities , поэтому будет выскакивать ошибка.

Спасибо за ответы!


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

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
GENERATE SUBROUTINE POOL

А вы уверены что в 4.6 нет аналога этого метода?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамический вызов кода
СообщениеДобавлено: Пт, окт 28 2011, 13:10 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
fill_container_c не самая жизненно необходимая вещь. если напишите зачем оно вам, может и другие решения подскажут. А вообще можно поместить вызов в ФМ в отдельной группе функций и принудительно его активировать несмотря на ошибки. пока этот ФМ не вызываете в 4.6, дампа не будет.

upd. В этом методе 50 строк кода, попросите чтобы вам его прислали из версии 6.0


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

Зарегистрирован:
Пт, окт 03 2008, 17:20
Сообщения: 162
Code:
CALL METHOD ('CL_ABAP_CONTAINER_UTILITIES')=>fill_container_c

_________________
В SAPе есть всё, просто вы чего-то не нашли.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамический вызов кода
СообщениеДобавлено: Пт, окт 28 2011, 14:44 
Начинающий
Начинающий

Зарегистрирован:
Пт, окт 28 2011, 12:24
Сообщения: 11
zsap написал:
fill_container_c не самая жизненно необходимая вещь. если напишите зачем оно вам, может и другие решения подскажут. А вообще можно поместить вызов в ФМ в отдельной группе функций и принудительно его активировать несмотря на ошибки. пока этот ФМ не вызываете в 4.6, дампа не будет.

upd. В этом методе 50 строк кода, попросите чтобы вам его прислали из версии 6.0


cl_abap_container_utilities=> fill_container_c нужен для того, чтобы присвоить структуре bapiparex значения из структуры bapi_te_mepoitem. В bapiparex только CHAR поля, в bapi_te_mepoitem у нас затесалось одно поле
CURR. Т.о., прямое присвоение bapiparex = bapi_te_mepoitem, в Unicode-системе выдает ошибку. SAP предлагает этот метод для решения проблемы.

Спасибо за помощь, предложения очень дельные!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамический вызов кода
СообщениеДобавлено: Пт, окт 28 2011, 14:45 
Начинающий
Начинающий

Зарегистрирован:
Пт, окт 28 2011, 12:24
Сообщения: 11
SYS написал(а):
Code:
CALL METHOD ('CL_ABAP_CONTAINER_UTILITIES')=>fill_container_c


О, это тоже очень здорово!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамический вызов кода
СообщениеДобавлено: Пт, окт 28 2011, 14:55 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
SAP1988 написал(а):
cl_abap_container_utilities=> fill_container_c нужен для того, чтобы присвоить структуре bapiparex значения из структуры bapi_te_mepoitem. В bapiparex только CHAR поля, в bapi_te_mepoitem у нас затесалось одно поле
CURR. Т.о., прямое присвоение bapiparex = bapi_te_mepoitem, в Unicode-системе выдает ошибку. SAP предлагает этот метод для решения проблемы.

Если вы из самописной проги дергаете бапи, совсем не обязательно передавать дополнительные данные через Extension. Можно например создать статический атрибут глобального класса и через него передать таблицу в нормальном виде, без преобразования в char


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамический вызов кода
СообщениеДобавлено: Пт, окт 28 2011, 15:06 
Начинающий
Начинающий

Зарегистрирован:
Пт, окт 28 2011, 12:24
Сообщения: 11
zsap написал:
SAP1988 написал(а):
cl_abap_container_utilities=> fill_container_c нужен для того, чтобы присвоить структуре bapiparex значения из структуры bapi_te_mepoitem. В bapiparex только CHAR поля, в bapi_te_mepoitem у нас затесалось одно поле
CURR. Т.о., прямое присвоение bapiparex = bapi_te_mepoitem, в Unicode-системе выдает ошибку. SAP предлагает этот метод для решения проблемы.

Если вы из самописной проги дергаете бапи, совсем не обязательно передавать дополнительные данные через Extension. Можно например создать статический атрибут глобального класса и через него передать таблицу в нормальном виде, без преобразования в char


Статический атрибут не получится. Для этого нужно знать, какие поля в bapi_te_mepoitem. А это может меняться. Мы должны предложить решение тому, кто поставляет нам программу. Они программируют в 4.6, мы сейчас переходим на 6.0. В 6.0 они не программируют, якобы, потому что другие подразделения не перешли на 6.0. Собственные поля в ЕКРО разные у разных отделов. Поэтому эти разработчики предлагают всем одно решение: переводите все поля в CHAR. Мы этого не хотим, в случае с CURR это все равно будет плохо работать.


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

Зарегистрирован:
Пт, окт 08 2010, 11:37
Сообщения: 322
Если не ошибаюсь, динамическое программирование рассматривается в BC402(C примерами :D )


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамический вызов кода
СообщениеДобавлено: Пт, окт 28 2011, 15:15 
Начинающий
Начинающий

Зарегистрирован:
Пт, окт 28 2011, 12:24
Сообщения: 11
LELUK написал(а):
Если не ошибаюсь, динамическое программирование рассматривается в BC402(C примерами :D )


Ну не могу же я сейчас BC402 перечитывать :wink: :D


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

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
SAP1988 написал(а):
Статический атрибут не получится. Для этого нужно знать, какие поля в bapi_te_mepoitem. А это может меняться.

Зачем знать какие там поля, сделайте таблицу со ссылкой на структуру bapi_te_mepoitem. Вам же в любом случае в какой-то момент придется их перекладывать из extension в bapi_te_mepoitem


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

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


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

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


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

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