Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => SE38 - ABAP Редактор => Тема начата: Паганель от Декабрь 30, 2008, 02:11:57 pm

Название: field-symbols- может кто-то пояснить
Отправлено: Паганель от Декабрь 30, 2008, 02:11:57 pm
field-symbols: <fs_aktiv> type any.
может кто-то пояснить начинаещему абаперу  :) простыми словами что есть сие, или ссылку даст на нормальное описание
Название: Re: field-symbols- может кто-то пояснить
Отправлено: Uukrul от Декабрь 30, 2008, 08:25:52 pm
You are not allowed to view links. Register or Login
field-symbols: <fs_aktiv> type any.
может кто-то пояснить начинаещему абаперу  :) простыми словами что есть сие, или ссылку даст на нормальное описание
Ну <fs_aktiv> может ссылаться в операторе ASSIGN на любую переменную, любого типа, любую структуру и т.д. В общем, типа на что надо на то по ходу и с делают ссылку.
Название: Re: field-symbols- может кто-то пояснить
Отправлено: Uukrul от Январь 10, 2009, 12:57:45 pm
В общем чтобы снова не вспоминать, как достучаться до таблиц через field-symbols, небольшой примерчик. Из концепции, в замещениях FI, нужно было дотянуться до позиций документов ММ. В принципе как бы ясно что в контексте выполнения данные находятся в структурах MSEG и XMSEG, собственно сама таблица позиций это XMSEG, откуда знаю, ну скажем так опыт, так вот есть замещение, сделанное по принципу из этой темы: http://sapforum.biz/index.php/topic,57.0.html (Замещение контрольного счета в MIRO). В этом замещении чтобы получить данные позиций документа ММ, к которому создается документ FI, нужно сделать следующее:
Код: You are not allowed to view links. Register or Login
  DATA: l_mseg LIKE mseg,
        lt_mseg LIKE mseg OCCURS 1 WITH HEADER LINE.
  FIELD-SYMBOLS: <fs_mseg> TYPE ANY TABLE.

  ASSIGN ('(SAPMM07M)xmseg[]') TO <fs_mseg>.
  lt_mseg[] = <fs_mseg>[].
  UNASSIGN <fs_mseg>.
Код можно у упростить, но я предпочитаю сразу же полученные данные копировать в свою локальную структуру, ссылку тут же освобождать и дальше уже без проблем работать с локальными данными. В общем после этого кода, в lt_mseg имеем позиции документа материала.
Название: Re: field-symbols- может кто-то пояснить
Отправлено: Паганель от Январь 10, 2009, 04:48:56 pm
Не мог бы ты подробнее обьяснить конструкцию
ASSIGN ('(SAPMM07M)xmseg[]')
Название: Re: field-symbols- может кто-то пояснить
Отправлено: Uukrul от Январь 11, 2009, 01:17:48 pm
You are not allowed to view links. Register or Login
Не мог бы ты подробнее обьяснить конструкцию
ASSIGN ('(SAPMM07M)xmseg[]')
Получает ссылку на внутреннюю таблицу объявленную в  программе SAPMM07M. Т.е. фактически обходится межмодульная защита данныъ кода. В принципе можно с полученной ссылкой сразу и работать, без копирования ее в lt_mseg[], но этим можно нарушить данные программы SAPMM07M и получить просто мифические сбои в работе, поэтому я все таки рекомендую после получения ссылки данные копировать во внутреннюю структуру и уже дальше работать со своей переменной.
Название: Re: field-symbols- может кто-то пояснить
Отправлено: Паганель от Январь 11, 2009, 01:20:19 pm
вау, то есть это похоже на tPerson.SomeMetod() или tPerson.Address[] (масив, табличка),
круто, спасибо ....
Название: Re: field-symbols- может кто-то пояснить
Отправлено: Uukrul от Январь 11, 2009, 01:32:38 pm
You are not allowed to view links. Register or Login
вау, то есть это похоже на tPerson.SomeMetod() или tPerson.Address[] (масив, табличка),
круто, спасибо ....
Не знаю похоже ли это на то что ты написал  ::) но такой штукой пользоваться можно, но осторожно, так как мало ли что будет при апгрейдах на новые версии...
Название: Re: field-symbols- может кто-то пояснить
Отправлено: №1 от Январь 11, 2009, 03:10:44 pm
You are not allowed to view links. Register or Login
Не знаю похоже ли это на то что ты написал  ::) но такой штукой пользоваться можно, но осторожно, так как мало ли что будет при апгрейдах на новые версии...
Будет - проверено ;D
Название: Re: field-symbols- может кто-то пояснить
Отправлено: Паганель от Январь 11, 2009, 04:32:42 pm
отлично,будем пользоватся, век живи- век учись .....
Название: Re: field-symbols- может кто-то пояснить
Отправлено: Dmitriy от Январь 13, 2009, 03:37:00 pm
2 Паганель: про использование еще можно посмотреть последний пост про оптимизацию. Чуть позже опишу как работать, когда <fs_aktiv> в твоем первом посте - рабочая область для работы со внутренними таблицами.
Название: Re: field-symbols- может кто-то пояснить
Отправлено: Uukrul от Январь 13, 2009, 09:33:24 pm
You are not allowed to view links. Register or Login
Спасибо Дима, жду с нетерпением ....  :)
Так я вроде ж как про таблицы и показал?! Или ты имеешь в виду объявление вместо FIELD-SYMBOLS: <fs_mseg> TYPE ANY TABLE., делать такую штуку как:
Код: You are not allowed to view links. Register or Login
DATA: lt_mseg LIKE mseg OCCURS 1 WITH HEADER LINE.
FIELD-SYMBOLS: <fs_mseg> STRUCTURE mseg DEFAULT lt_mseg.

ASSIGN ('(SAPMM07M)xmseg[]') TO <fs_mseg>.

LOOP AT lt_mseg.
* Чего надо делаем...
ENDLOOP.

UNASSIGN <fs_mseg>.
Или я что не так понял?
Название: Re: field-symbols- может кто-то пояснить
Отправлено: Dmitriy от Январь 13, 2009, 09:39:12 pm
You are not allowed to view links. Register or Login
Так я вроде ж как про таблицы и показал?! Или ты имеешь в виду объявление вместо FIELD-SYMBOLS: <fs_mseg> TYPE ANY TABLE., делать такую штуку как:
Код: You are not allowed to view links. Register or Login
DATA: lt_mseg LIKE mseg OCCURS 1 WITH HEADER LINE.
FIELD-SYMBOLS: <fs_mseg> STRUCTURE mseg DEFAULT lt_mseg.

ASSIGN ('(SAPMM07M)xmseg[]') TO <fs_mseg>.

LOOP AT lt_mseg.
* Чего надо делаем...
ENDLOOP.

UNASSIGN <fs_mseg>.
Или я что не так понял?
Все правильно ты показал. А я имел ввиду не про считывание из памяти, а про то, как работать с типом ANY, когда это Work area. Чуть позже, как отлажу на системе...
Название: Re: field-symbols- может кто-то пояснить
Отправлено: Uukrul от Январь 13, 2009, 09:53:23 pm
Угадал?  :D
Код: You are not allowed to view links. Register or Login
DATA wa2 TYPE c LENGTH 512.
FIELD-SYMBOLS <scarr2> TYPE scarr.

ASSIGN wa2 TO <scarr2> CASTING.
<scarr2>-carrid = '...'.
Название: Re: field-symbols- может кто-то пояснить
Отправлено: Dmitriy от Январь 13, 2009, 10:02:29 pm
You are not allowed to view links. Register or Login
Угадал?  :D
Код: You are not allowed to view links. Register or Login
DATA wa2 TYPE c LENGTH 512.
FIELD-SYMBOLS <scarr2> TYPE scarr.

Почти :)
ASSIGN COMPONENT OF STRUCTURE ..., ну ты понял... ;)
Про динамику, когда с вн. таб. работаем, объявленной через FIELD-SYMBOL. На днях подниму, выложу, счас бы с этим гемором по замещениям оперативно разобраться. :D

P.S. Хех, вместо "Цитировать" кликнул поначалу "Изменить". Ничего не потер из твоего поста?
Название: Re: field-symbols- может кто-то пояснить
Отправлено: Паганель от Январь 13, 2009, 10:03:57 pm
You are not allowed to view links. Register or Login
Все правильно ты показал. А я имел ввиду не про считывание из памяти, а про то, как работать с типом ANY, когда это Work area. Чуть позже, как отлажу на системе...

Ну как работать если нужна табличка, вроде бы понятно ... а вот если Work Area ... наверное есть какие-то секреты?  :)
Название: Re: field-symbols- может кто-то пояснить
Отправлено: Паганель от Январь 13, 2009, 10:10:50 pm
хакеры хр... хорошие ...  :)
Вы лучше обьясните какая разница когда ANY используется для таблички и для воркареа ?
Название: Re: field-symbols- может кто-то пояснить
Отправлено: Dmitriy от Январь 13, 2009, 10:19:03 pm
You are not allowed to view links. Register or Login
хакеры хр... хорошие ...  :)
Вы лучше обьясните какая разница когда ANY используется для таблички и для воркареа ?
Для таблички не ANY. Все, в ближайшее время материал соберу, напишу.
Название: Re: field-symbols- может кто-то пояснить
Отправлено: Dmitriy от Март 14, 2009, 06:06:45 pm
Немного из засоленного. ;)
Код: You are not allowed to view links. Register or Login
DATA: lt_table TYPE REF TO data.
FIELD-SYMBOLS: <gt_lvc_fieldcatalog> TYPE lvc_t_fcat, " Каталог полей
                        <gt_lvc_outtab>       TYPE table, " Таблица
                        <ls_lvc_outtab>        TYPE ANY,  " Рабочая область
                        <lv_field_val>           TYPE ANY.  " Значение поля

* ..........Наш код........
* здесь же формируем <gt_lvc_fieldcatalog> для задания структуры динамически генерируемой вн. таблицы

* create dynamic table (according to fieldcatalog)
        CALL METHOD cl_alv_table_create=>create_dynamic_table
                    EXPORTING it_fieldcatalog = <gt_lvc_fieldcatalog>
                    IMPORTING ep_table = lt_table.

        ASSIGN lt_table->* TO <gt_lvc_outtab>.

        LOOP AT <gt_lvc_outtab> ASSIGNING <ls_lvc_outtab>.
        ............
* Если известно расположение поля (№44) относительно начала структуры 
           ASSIGN COMPONENT 44 OF STRUCTURE <ls_lvc_outtab> TO <lv_field_val>.
* Или, если известно имя поля (SUMM44):
           ASSIGN COMPONENT 'SUMM44' OF STRUCTURE <ls_lvc_outtab> TO <lv_field_val>.
        ............
        ENDLOOP.
Название: Re: field-symbols- может кто-то пояснить
Отправлено: Dimas от Апрель 16, 2010, 10:13:13 am
Не претендую на оригинальность (сам недавно за ABAP взялся) но вот такой вариант имеет место быть
Код: You are not allowed to view links. Register or Login
field-SYMBOLS <fs> type any table.
data l_t_spfli type TABLE OF spfli.
data l_s_spfli type spfli.

assign l_t_spfli to <fs>.

select single * into l_s_spfli from spfli.
insert l_s_spfli into table <fs>.

loop at <fs> INTO l_s_spfli.
  write l_s_spfli-carrid.
endloop.
Название: Re: field-symbols- может кто-то пояснить
Отправлено: Uukrul от Апрель 16, 2010, 10:17:47 pm
You are not allowed to view links. Register or Login
Не претендую на оригинальность (сам недавно за ABAP взялся) но вот такой вариант имеет место быть
Ну если начали то вот ветка оптимизации ABAP и там этот вопрос раскрыт более подробно зачем так делаеть лучше, ну и вообще веточка получилась полезной:
http://sapforum.biz/index.php/topic,174.msg1919.html#msg1919