Текущее время: Пн, июл 21 2025, 02:14

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


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

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


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

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