Loading



+ Sapforum.Biz » Инструменты » ABAP - Инструментальные средства » SE38 - ABAP Редактор (Модератор: Dmitriy)Тема:
|- field-symbols- может кто-то пояснить



Автор Тема: field-symbols- может кто-то пояснить  (Прочитано 3019 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.319
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
field-symbols- может кто-то пояснить
« : Декабрь 30, 2008, 02:11:57 pm »
field-symbols: <fs_aktiv> type any.
может кто-то пояснить начинаещему абаперу  :) простыми словами что есть сие, или ссылку даст на нормальное описание

Онлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.147
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Re: field-symbols- может кто-то пояснить
« Ответ #1 : Декабрь 30, 2008, 08:25:52 pm »
field-symbols: <fs_aktiv> type any.
может кто-то пояснить начинаещему абаперу  :) простыми словами что есть сие, или ссылку даст на нормальное описание
Ну <fs_aktiv> может ссылаться в операторе ASSIGN на любую переменную, любого типа, любую структуру и т.д. В общем, типа на что надо на то по ходу и с делают ссылку.

Онлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.147
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Re: field-symbols- может кто-то пояснить
« Ответ #2 : Январь 10, 2009, 12:57:45 pm »
В общем чтобы снова не вспоминать, как достучаться до таблиц через field-symbols, небольшой примерчик. Из концепции, в замещениях FI, нужно было дотянуться до позиций документов ММ. В принципе как бы ясно что в контексте выполнения данные находятся в структурах MSEG и XMSEG, собственно сама таблица позиций это XMSEG, откуда знаю, ну скажем так опыт, так вот есть замещение, сделанное по принципу из этой темы: http://sapforum.biz/index.php/topic,57.0.html (Замещение контрольного счета в MIRO). В этом замещении чтобы получить данные позиций документа ММ, к которому создается документ FI, нужно сделать следующее:
  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 имеем позиции документа материала.
« Последнее редактирование: Январь 10, 2009, 12:59:35 pm от Uukrul »

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.319
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: field-symbols- может кто-то пояснить
« Ответ #3 : Январь 10, 2009, 04:48:56 pm »
Не мог бы ты подробнее обьяснить конструкцию
ASSIGN ('(SAPMM07M)xmseg[]')

Онлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.147
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Re: field-symbols- может кто-то пояснить
« Ответ #4 : Январь 11, 2009, 01:17:48 pm »
Не мог бы ты подробнее обьяснить конструкцию
ASSIGN ('(SAPMM07M)xmseg[]')
Получает ссылку на внутреннюю таблицу объявленную в  программе SAPMM07M. Т.е. фактически обходится межмодульная защита данныъ кода. В принципе можно с полученной ссылкой сразу и работать, без копирования ее в lt_mseg[], но этим можно нарушить данные программы SAPMM07M и получить просто мифические сбои в работе, поэтому я все таки рекомендую после получения ссылки данные копировать во внутреннюю структуру и уже дальше работать со своей переменной.

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.319
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: field-symbols- может кто-то пояснить
« Ответ #5 : Январь 11, 2009, 01:20:19 pm »
вау, то есть это похоже на tPerson.SomeMetod() или tPerson.Address[] (масив, табличка),
круто, спасибо ....

Онлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.147
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Re: field-symbols- может кто-то пояснить
« Ответ #6 : Январь 11, 2009, 01:32:38 pm »
вау, то есть это похоже на tPerson.SomeMetod() или tPerson.Address[] (масив, табличка),
круто, спасибо ....
Не знаю похоже ли это на то что ты написал  ::) но такой штукой пользоваться можно, но осторожно, так как мало ли что будет при апгрейдах на новые версии...

Оффлайн №1

  • Administrator
  • Jr. Member
  • *****
  • Сообщений: 511
  • Reputation Power: 1
  • №1 has no influence.
  • Пол: Мужской
  • Самая большая ложь - это неверно понятая правда.
Re: field-symbols- может кто-то пояснить
« Ответ #7 : Январь 11, 2009, 03:10:44 pm »
Не знаю похоже ли это на то что ты написал  ::) но такой штукой пользоваться можно, но осторожно, так как мало ли что будет при апгрейдах на новые версии...
Будет - проверено ;D

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.319
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: field-symbols- может кто-то пояснить
« Ответ #8 : Январь 11, 2009, 04:32:42 pm »
отлично,будем пользоватся, век живи- век учись .....

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 297
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Re: field-symbols- может кто-то пояснить
« Ответ #9 : Январь 13, 2009, 03:37:00 pm »
2 Паганель: про использование еще можно посмотреть последний пост про оптимизацию. Чуть позже опишу как работать, когда <fs_aktiv> в твоем первом посте - рабочая область для работы со внутренними таблицами.

Онлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.147
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Re: field-symbols- может кто-то пояснить
« Ответ #10 : Январь 13, 2009, 09:33:24 pm »
Спасибо Дима, жду с нетерпением ....  :)
Так я вроде ж как про таблицы и показал?! Или ты имеешь в виду объявление вместо FIELD-SYMBOLS: <fs_mseg> TYPE ANY TABLE., делать такую штуку как:
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>.
Или я что не так понял?

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 297
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Re: field-symbols- может кто-то пояснить
« Ответ #11 : Январь 13, 2009, 09:39:12 pm »
Так я вроде ж как про таблицы и показал?! Или ты имеешь в виду объявление вместо FIELD-SYMBOLS: <fs_mseg> TYPE ANY TABLE., делать такую штуку как:
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. Чуть позже, как отлажу на системе...

Онлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.147
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Re: field-symbols- может кто-то пояснить
« Ответ #12 : Январь 13, 2009, 09:53:23 pm »
Угадал?  :D
DATA wa2 TYPE c LENGTH 512.
FIELD-SYMBOLS <scarr2> TYPE scarr.

ASSIGN wa2 TO <scarr2> CASTING.
<scarr2>-carrid = '...'.
« Последнее редактирование: Январь 13, 2009, 09:59:10 pm от Dmitriy »

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 297
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Re: field-symbols- может кто-то пояснить
« Ответ #13 : Январь 13, 2009, 10:02:29 pm »
Угадал?  :D
DATA wa2 TYPE c LENGTH 512.
FIELD-SYMBOLS <scarr2> TYPE scarr.

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

P.S. Хех, вместо "Цитировать" кликнул поначалу "Изменить". Ничего не потер из твоего поста?

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.319
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: field-symbols- может кто-то пояснить
« Ответ #14 : Январь 13, 2009, 10:03:57 pm »
Все правильно ты показал. А я имел ввиду не про считывание из памяти, а про то, как работать с типом ANY, когда это Work area. Чуть позже, как отлажу на системе...

Ну как работать если нужна табличка, вроде бы понятно ... а вот если Work Area ... наверное есть какие-то секреты?  :)

Оффлайн Паганель

  • blogger
  • Full Member
  • *
  • Сообщений: 1.319
  • Reputation Power: 0
  • Паганель has no influence.
  • Пол: Мужской
Re: field-symbols- может кто-то пояснить
« Ответ #15 : Январь 13, 2009, 10:10:50 pm »
хакеры хр... хорошие ...  :)
Вы лучше обьясните какая разница когда ANY используется для таблички и для воркареа ?
« Последнее редактирование: Январь 13, 2009, 10:14:58 pm от Паганель »

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 297
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Re: field-symbols- может кто-то пояснить
« Ответ #16 : Январь 13, 2009, 10:19:03 pm »
хакеры хр... хорошие ...  :)
Вы лучше обьясните какая разница когда ANY используется для таблички и для воркареа ?
Для таблички не ANY. Все, в ближайшее время материал соберу, напишу.

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Administrator
  • Newbie
  • *****
  • Сообщений: 297
  • Reputation Power: 0
  • Dmitriy has no influence.
  • Пол: Мужской
  • Embracive Fire
Re: field-symbols- может кто-то пояснить
« Ответ #17 : Март 14, 2009, 06:06:45 pm »
Немного из засоленного. ;)
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.
« Последнее редактирование: Март 14, 2009, 06:13:44 pm от Dmitriy »

Dimas

  • Гость
Re: field-symbols- может кто-то пояснить
« Ответ #18 : Апрель 16, 2010, 10:13:13 am »
Не претендую на оригинальность (сам недавно за ABAP взялся) но вот такой вариант имеет место быть
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.

Онлайн Uukrul

  • SAP R/3 4.6C
  • Administrator
  • Hero Member
  • *****
  • Сообщений: 2.147
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
    • Sapforum.BIZ
Re: field-symbols- может кто-то пояснить
« Ответ #19 : Апрель 16, 2010, 10:17:47 pm »
Не претендую на оригинальность (сам недавно за ABAP взялся) но вот такой вариант имеет место быть
Ну если начали то вот ветка оптимизации ABAP и там этот вопрос раскрыт более подробно зачем так делаеть лучше, ну и вообще веточка получилась полезной:
http://sapforum.biz/index.php/topic,174.msg1919.html#msg1919


 


Facebook Comments