Текущее время: Вт, май 13 2025, 16:34

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 28 2004, 17:56 
Гость
Странно, при попытке выполнить любой из описанных выше примеров (пригодных для 4.6С) у меня на операторе ASSIGN ('(Z_TEST_PRG)dt') TO <fs>. неизменно sy-subrc = 4.
Может какие здесь хитрости есть (последовательность вызовов, тип программ, еще что-то)?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 28 2004, 18:38 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Надо название переменной тоже писать большими буквами, проверено в 4.7:
Code:
ASSIGN ('(Z_TEST_PRG)DT') TO <fs>.

Может это только с базиса 6.10 работает? К сожалению сейяас негде проверить.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 28 2004, 19:40 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
CoMan написал(а):
Странно, при попытке выполнить любой из описанных выше примеров (пригодных для 4.6С) у меня на операторе ASSIGN ('(Z_TEST_PRG)dt') TO <fs>. неизменно sy-subrc = 4.
Может какие здесь хитрости есть (последовательность вызовов, тип программ, еще что-то)?


Если делаешь ASSIGN по имени переменной - имя переменной должно быть полностью ОБЯЗАТЕЛЬНО в верхнем регистре.
То же самое относится ко всем другим случаям, когда идет любое обращение по имени какого-либо объекта в литеральном виде (вызов ФМ, вызов перформа, и т.д., и т.п.).

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 29 2004, 06:36 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan
У меня, например, 100% работает такая конструкция (хотя и используются не заглавные символы для обозначения переменной):

Т.е в расширении MIGO нужно получить данные по полям, введенным
на 1 экране:

data: i_godynpro type godynpro.

field-symbols: <x_godynpro> type any.

assign ('(SAPLMIGO)godynpro') to <x_godynpro>.

if sy-subrc eq 0.
move: <x_godynpro> to i_godynpro.
....
endif.

От чего это зависит, что в одном случае конструкция работает (как у меня), а в другом нет (как у CoMan) ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 29 2004, 09:41 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
OlegDm написал(а):
От чего это зависит, что в одном случае конструкция работает (как у меня), а в другом нет (как у CoMan) ?


Написать слово в верхнем регистре несложно? Или перевести в верхний регистр значение строковой переменной?

Лично я один-два раза на эти грабли наступил, и больше не экспериментировал. И все железно работает, безо всяких гаданий.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 29 2004, 10:34 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan
111 написал(а):
OlegDm написал(а):
От чего это зависит, что в одном случае конструкция работает (как у меня), а в другом нет (как у CoMan) ?


Написать слово в верхнем регистре несложно? Или перевести в верхний регистр значение строковой переменной?

Лично я один-два раза на эти грабли наступил, и больше не экспериментировал. И все железно работает, безо всяких гаданий.


Ннндда, на грабли иной раз полезно наступать - лучше запоминается :)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 29 2004, 11:19 
Гость
Пробовал я разные регистры - не вышел у меня "каменный цветок" ... :?
Еще вопрос - есть ФМ, в нем объявлены глобальные переменные (на уровне ФГ), если я гружу ФГ в память где работает программа (вызвав один из ФМ-ов), могу ли я получить ссылку указанным выше методом на одну из глобальных переменных ФГ в 4.6С?
Попутный вопрос можно ли грузануть ФГ в память не вызывая ФМ?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 29 2004, 11:33 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
CoMan написал(а):
Пробовал я разные регистры - не вышел у меня "каменный цветок" ... :?


Проверено не раз - все работает. Значит, ищи ошибки.

CoMan написал(а):
Еще вопрос - есть ФМ, в нем объявлены глобальные переменные (на уровне ФГ), если я гружу ФГ в память где работает программа (вызвав один из ФМ-ов), могу ли я получить ссылку указанным выше методом на одну из глобальных переменных ФГ в 4.6С?


ДА. Можно использовать переменные, если они объявлены на уровне группы функций (в области глобальных переменных группы функций).

CoMan написал(а):
Попутный вопрос можно ли грузануть ФГ в память не вызывая ФМ?


Вряд ли. Программу ФГ (группы функций) надо инициализировать хитрым способом. Проще всего это сделать автоматом при вызове какого-либо ФМ из этой ФГ.

Далее - программа ФГ живет, пока живет вызвавшая ФМ программа. Например, можно одним ФМ передавать в ФГ данные, а другим - читать эти же данные - они легко доживут от одного вызова ФМ до другого.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 29 2004, 12:17 
Гость
Мд-а, надо где-то руки поправить :oops:

С ФГ все получилось, боагодарю за ответ.

А вот с программами не катит :( делал так (эмулируя вызов стандартной программой пользовательского расширения, именно из-за чего и интересует ASSIGN):

REPORT Z1.
DATA: dt(4) type c value 'TEST'.
SUBMIT Z2 AND RETURN.

REPORT Z2.
DATA: dt(4) type c.

DATA dref TYPE REF TO data.
FIELD-SYMBOLS: <dt> TYPE c.

CREATE DATA dref TYPE sec_d_references.
ASSIGN dref->* TO <dt>.
ASSIGN ('(Z1)DT') TO <dt>.
"здесь sy-subrc = 4

Что не так сделал?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 29 2004, 12:28 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
CoMan написал(а):
Code:
  SUBMIT Z2 AND RETURN.

Что не так сделал?


Скорее всего, дело в том, что такие извраты возможны только в пределах одной сессии.
А
===================
The addition AND RETURN starts the executable program in a new internal session. The session for the calling program is retained. Once program access is completed, program execution for the calling program continues after the SUBMIT statement.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 29 2004, 13:45 
Гость
Ясно ...
Другой вопрос пытаюсь получить ссылку на объектную переменную, причем класс определен локально в стандартной програграмме, чтобы поличть аналогичный класс у себя включил соответсвующий инклуд.
Но при попытке сделать ASSIGN ('(SAPLFVW4)OBJ_CACHE') TO <obj_cache>. Программы уходит в дамп с сообщением "You attempted to assign a field to a typed field symbol, but the field does not have the required type."
Я пытаюсь сделать что-то невозможное?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 29 2004, 14:16 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
Цитата:
Скорее всего, дело в том, что такие извраты возможны только в пределах одной сессии.

Совершенно верно. Попробуйте вместо SUBMIT использовать CALL FUNCTION.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 29 2004, 14:35 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
CoMan написал(а):
Но при попытке сделать ASSIGN ('(SAPLFVW4)OBJ_CACHE') TO <obj_cache>. Программы уходит в дамп с сообщением "You attempted to assign a field to a typed field symbol, but the field does not have the required type."
Я пытаюсь сделать что-то невозможное?


Попробуй сделать принудительный кастинг
ASSIGN ('(SAPLFVW4)OBJ_CACHE') TO <obj_cache> CASTING TYPE <ТвойКласс>.

Но не уверен.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 29 2004, 16:11 
Гость
111 написал(а):
Попробуй сделать принудительный кастинг
ASSIGN ('(SAPLFVW4)OBJ_CACHE') TO <obj_cache> CASTING TYPE <ТвойКласс>.

Но не уверен.


Отвечает - Field symbol "<obj_cache>" may not have a type.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 04 2005, 12:34 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 08:55
Сообщения: 331
Откуда: Украина, г.Мариуполь
Пол: Мужской
Прошу прощения, что вопрос не совсем по данной теме. Но очень близко. Я посмотрел, что стандартные отчеты (вроде MC.5 и прочих) заполняют внутреннюю таблицу int_s000 посредством вызова подпрограмм в других программах. Я тоже хотел таким образом заполнить эту структуру (нужно было для отчета). Но я не знаю, как заставить другую программу заполнить мою структуру. Подскажите, может, кто делал подобное.


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

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


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

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


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

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