Текущее время: Вс, июл 20 2025, 19:28

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Многоразовое использование одного FIELD-SYMBOLS для разных типов
СообщениеДобавлено: Ср, апр 25 2012, 16:58 
Специалист
Специалист

Зарегистрирован:
Ср, дек 07 2005, 09:18
Сообщения: 141
Откуда: Запорожье
Добрый день.
Подскажите, можно ли использовать FIELD-SYMBOLS несколько раз в программе, присваивая ему разные типы данных?

Code:

data:
  i_mk type string,
  i_mkpf like mkpf.

FIELD-SYMBOLS <imk> TYPE ANY.
...
CONCATENATE 'I_MKPF-' columns-pole into i_mk.
...
ASSIGN (i_mk) TO <imk>.
CHECK <imk> IS ASSIGNED.
...
UNASSIGN <imk>.


i_mk = I_MKPF-BUDAT при 1-ом проходе
при втором проходе
i_mk = I_MKPF-LGORT
и при попытке присвоить это значение, ничего не происходит, sy-subrc = 4.

Почему не происходит переприсвоение и как в данном случае работает оператор UNASSIGN.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Многоразовое использование одного FIELD-SYMBOLS для разных типов
СообщениеДобавлено: Ср, апр 25 2012, 17:06 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
Razum написал(а):
Добрый день.
Подскажите, можно ли использовать FIELD-SYMBOLS несколько раз в программе, присваивая ему разные типы данных?

Можно, UNASSIGN не требуется
Razum написал(а):
Почему не происходит переприсвоение и как в данном случае работает оператор UNASSIGN.

Потому что в MKPF нет поля LGORT, оно в MSEG


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многоразовое использование одного FIELD-SYMBOLS для разных типов
СообщениеДобавлено: Ср, апр 25 2012, 17:13 
Специалист
Специалист

Зарегистрирован:
Ср, дек 07 2005, 09:18
Сообщения: 141
Откуда: Запорожье
здесь я немного ошибся, у меня идет проверка сначала в таблице MKPF, а затем в MSEG. Я заранее не знаю какое поле мне необходимо проверять, если BUDAT, то в MKPF, иначе все остальные мне нужные в MSEG.
Если вы говорите можно, то как это сделать, ведь когда я присвоил i_mk = I_MKPF-BUDAT символ <i_mk> стал типа дата, когда я присваиваю ему значение I_MKPF-LGORT присваинвание не происходит, ибо тип не соответствует.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Многоразовое использование одного FIELD-SYMBOLS для разных типов
СообщениеДобавлено: Ср, апр 25 2012, 18:58 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 351
Razum написал(а):
здесь я немного ошибся, у меня идет проверка сначала в таблице MKPF, а затем в MSEG. Я заранее не знаю какое поле мне необходимо проверять, если BUDAT, то в MKPF, иначе все остальные мне нужные в MSEG.
Если вы говорите можно, то как это сделать, ведь когда я присвоил i_mk = I_MKPF-BUDAT символ <i_mk> стал типа дата, когда я присваиваю ему значение I_MKPF-LGORT присваинвание не происходит, ибо тип не соответствует.
"когда я присваиваю ему значение I_MKPF-LGORT присваинвание не происходит, ибо" этого не достаточно, чтобы в I_MKPF like mkpf добавилось поле LGORT.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многоразовое использование одного FIELD-SYMBOLS для разных типов
СообщениеДобавлено: Чт, апр 26 2012, 06:24 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июл 15 2009, 05:55
Сообщения: 174
Откуда: Мегион - > СПб
Пол: Мужской
Razum написал(а):
Code:

FIELD-SYMBOLS <imk> TYPE ANY.
...
CONCATENATE 'I_MKPF-' columns-pole into i_mk.
...
ASSIGN (i_mk) TO <imk>.
CHECK <imk> IS ASSIGNED.
...
UNASSIGN <imk>.



Я тоже по началу так эссайнил значение какого-то поля структуры, но есть более удобная и правильная запись:

Code:
Assign component columns-pole of structure _ваша структура_ into <imk>.



LAT написал(а):
"когда я присваиваю ему значение I_MKPF-LGORT присваинвание не происходит, ибо" этого не достаточно, чтобы в I_MKPF like mkpf добавилось поле LGORT.

:gigi:

_________________
Ничто так не заразительно, как смех начальника...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Многоразовое использование одного FIELD-SYMBOLS для разных типов
СообщениеДобавлено: Чт, апр 26 2012, 11:39 
Специалист
Специалист

Зарегистрирован:
Ср, дек 07 2005, 09:18
Сообщения: 141
Откуда: Запорожье
помогите разобраться
определил тип
Code:
TYPES: begin of all_tabs,
        budat LIKE mkpf-budat,
        include type mseg,
       end of all_tabs.

field-symbols: <fs1> type all_tabs.
data: dref1 type ref to data.

create data dref1 type all_tabs.
assign dref1->* to <fs1>.

дальше не получается
код
Assign component columns-pole of structure all_tabs to <fs1>.
здесь не подходит.
как ему дать понять что я хочу взять таблицу I_MKPF и columns-pole не понимаю, посоветуйте.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Многоразовое использование одного FIELD-SYMBOLS для разных типов
СообщениеДобавлено: Чт, апр 26 2012, 12:04 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Code:
Assign component (pole) of structure all_tabs to <fs1>


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многоразовое использование одного FIELD-SYMBOLS для разных типов
СообщениеДобавлено: Чт, апр 26 2012, 12:05 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 351
Razum написал(а):
помогите разобраться
Code:
TYPES: begin of all_tabs,
        budat LIKE mkpf-budat,
        include type mseg,
       end of all_tabs.

Таким образом создается тип, содержащий поля budat и include соответствующих типов. Если создать переменную такого типа, в отладчике это хорошо видно. Чтобы просто включить все поля mseg в all_tabs (я так подозреваю, Вы именно этого добиваетесь), нужно:
Code:
TYPES: BEGIN OF all_tabs,
        budat TYPE mkpf-budat.
        INCLUDE TYPE mseg.
TYPES: END OF all_tabs.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многоразовое использование одного FIELD-SYMBOLS для разных типов
СообщениеДобавлено: Чт, апр 26 2012, 12:14 
Специалист
Специалист

Зарегистрирован:
Ср, дек 07 2005, 09:18
Сообщения: 141
Откуда: Запорожье
ребята, а как я ему объясню чтонадо братьс таблицы i_mkpf, выборку из которой я делаю ранее?
Code:
select single * from mkpf into i_mkpf where mblnr = result-mblnr and mjahr = result-mjahr.


и если я пишу
Code:
Assign component (pole) of structure all_tabs to <fs1>

то он ругается на all_tabs, что нет такого поля all_tabs


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Многоразовое использование одного FIELD-SYMBOLS для разных типов
СообщениеДобавлено: Чт, апр 26 2012, 12:36 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 351
Razum написал(а):
и если я пишу
Code:
Assign component (pole) of structure all_tabs to <fs1>

то он ругается на all_tabs, что нет такого поля all_tabs

Code:
DATA: a TYPE all_tabs.
FIELD-SYMBOLS: <fs> TYPE any.

DATA: name TYPE string VALUE 'LGORT'.         " регистр важен!
ASSIGN COMPONENT name of structure a to <fs>.

Или же делайте assign, как Вы планировали в своем 1-м посте.


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

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


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

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


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

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