Текущее время: Вс, июл 27 2025, 13:40

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Две внутренние таблицы(разных структур) с общими данными, возможно ли?
СообщениеДобавлено: Чт, дек 06 2012, 17:04 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, май 19 2010, 12:10
Сообщения: 87
доброго времени суток
представим ситуацию :)
в программу приходит таблицы с колонками: a, b, c.
вопрос: можно ли в программе объявить таблицу с колонками: a, b, c, D, E. так чтобы a, b, c были общими для двух таблиц? аля филдсимвол но расширенной структуры?
зачем надо? попытка избавиться от тупого лупа с мув-кореспондингом...

:mrgreen:


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Две внутренние таблицы(разных структур) с общими данными, возможно ли?
СообщениеДобавлено: Чт, дек 06 2012, 17:31 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
[censored] написал(а):
попытка избавиться от тупого лупа с мув-кореспондингом...
:mrgreen:

Если нужно избавиться от move-corresponding, то в программу сразу передавайте таблицу с нужной структурой.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Две внутренние таблицы(разных структур) с общими данными, возможно ли?
СообщениеДобавлено: Чт, дек 06 2012, 17:32 
Ассистент
Ассистент

Зарегистрирован:
Пт, ноя 03 2006, 07:42
Сообщения: 31
Не получится.
И не думаю, что мув-корреспондинг в лупе это плохо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Две внутренние таблицы(разных структур) с общими данными, возможно ли?
СообщениеДобавлено: Чт, дек 06 2012, 19:20 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, май 19 2010, 12:10
Сообщения: 87
Удав, спасибо, но не выйдет, т.к. в моем конкретном случае речь идет о юзерэкзите.
да и вообще теперь уже просто интересно стало.. есть ли такая возможность)
хотя пожалуй это было бы довольно опасно) но все-таки))

Aff, а если речь идет про мув >500 полей.. то хорошим это назвать тоже язык не поворачивается)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Две внутренние таблицы(разных структур) с общими данными, возможно ли?
СообщениеДобавлено: Чт, дек 06 2012, 20:25 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, апр 12 2006, 12:43
Сообщения: 863
Откуда: СССР
Пол: Мужской
[censored] написал(а):
доброго времени суток
представим ситуацию :)
в программу приходит таблицы с колонками: a, b, c.
вопрос: можно ли в программе объявить таблицу с колонками: a, b, c, D, E. так чтобы a, b, c были общими для двух таблиц? аля филдсимвол но расширенной структуры?
зачем надо? попытка избавиться от тупого лупа с мув-кореспондингом... :mrgreen:

Если левая часть общая, то
Code:
DATA:
   ls_abcde  TYPE type_abcde,
   ls_abc      TYPE type_abc.

FIELD-SYMBOLS:
   <ls_abc>     TYPE type_abc,
   <ls_abcde> TYPE type_abcde.

loop at tin_abcde into ls_abcde (или ASSIGNING to <ls_abcde>)
    append ls_abcde to tout_abcde
endloop.

loop at tin_abc into ls_abc
    clear ls_abcde.
    ASSIGN ls_abcde(длина type_abc) TO <ls_abc>.
    <ls_abc> = ls_abc.
    append ls_abcde to tout_abcde
endloop.

Ну или как-то так, не знаю, что в конечном итоге нужно...

_________________
Никого не трогаю, примусы починяю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Две внутренние таблицы(разных структур) с общими данными, возможно ли?
СообщениеДобавлено: Чт, дек 06 2012, 21:09 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
[censored] написал(а):
если речь идет про мув >500 полей.. то хорошим это назвать тоже язык не поворачивается)

Изначально речь велась о 3-х общих полях ;)
Это что за задача такая, что нужно обрабатывать >500 полей :shock:

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Две внутренние таблицы(разных структур) с общими данными, возможно ли?
СообщениеДобавлено: Пт, дек 07 2012, 07:28 
Специалист
Специалист

Зарегистрирован:
Ср, дек 22 2010, 19:49
Сообщения: 114
Можно сэкономить несколько строчек на loop, если использовать метод класса cl_reca_data_services=>move_corresponding_table

_________________
Человек готов работать 24 часа в сутки, лишь бы ничего не делать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Две внутренние таблицы(разных структур) с общими данными, возможно ли?
СообщениеДобавлено: Пт, дек 07 2012, 07:30 
Специалист
Специалист

Зарегистрирован:
Чт, дек 16 2010, 15:23
Сообщения: 133
Откуда: Набережные Челны
Пол: Мужской
Как вариант в одной из таблиц хранить reference на значения другой таблицы.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Две внутренние таблицы(разных структур) с общими данными, возможно ли?
СообщениеДобавлено: Пт, дек 07 2012, 07:48 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
broker.chelny написал:
Как вариант в одной из таблиц хранить reference на значения другой таблицы.

Вот это самый правильный вариант, в одной из таблиц хранить ссылку на строку другой таблицы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Две внутренние таблицы(разных структур) с общими данными, возможно ли?
СообщениеДобавлено: Пт, дек 07 2012, 10:38 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, май 19 2010, 12:10
Сообщения: 87
hoar, хм, то что в assign можно указывать длину не знал, спасибо! полезная информация :)

Удав написал(а):
Это что за задача такая, что нужно обрабатывать >500 полей :shock:

изначально была попытка обобщить, и узнать возможно ли такое вообще :)
а если более конкретно ставить задачу то например: из VBAP (>500) переложить в VBAPVB (>700 полей).
после чего вызвать какой-нибудь FM который требует на вход VBAPVB, что ему и приходиться предоставлять дабы не было дампа по несоответствию типов.
причем (чтобы опять таки обобщить ситуацию) ФМ представляется как блэкбокс, т.е. какие именно из полей будет использовать ФМ неизвестно (ну или сидеть разбираться - неоправданная трата времени) :)

NeMurometz написал(а):
Можно сэкономить несколько строчек на loop, если использовать метод класса cl_reca_data_services=>move_corresponding_table

про метод наслышан, однако внутри там у себя он делает тот же луп и мув-кореспондинг :)
мне же более интересно избавление от ненужной "перетасовки" данных туда (а может и обратно)) ) с целью ускорения работы программы)

broker.chelny написал:
Как вариант в одной из таблиц хранить reference на значения другой таблицы.

вот что-то такое я пока и пытаюсь сделать, но какая-то ерунда получается :oops:
буду пробовать дальше :)

всем спасибо за активность :)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Две внутренние таблицы(разных структур) с общими данными, возможно ли?
СообщениеДобавлено: Пт, дек 07 2012, 10:58 
Ассистент
Ассистент

Зарегистрирован:
Пт, ноя 03 2006, 07:42
Сообщения: 31
Да можно и просто вложенную структуру использовать.
in-a
in-b
out-in-a
out-in-b
out-c

и тогда просто присваивать внутренние структуры без мув-корреспондинга, они одного типа.
loop at in.
out-in = in.
out-c = 'X'.
append out.
endloop.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Две внутренние таблицы(разных структур) с общими данными, возможно ли?
СообщениеДобавлено: Пт, дек 07 2012, 11:58 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
[censored] написал(а):
а если более конкретно ставить задачу то например: из VBAP (>500) переложить в VBAPVB (>700 полей).
после чего вызвать какой-нибудь FM который требует на вход VBAPVB, что ему и приходиться предоставлять дабы не было дампа по несоответствию типов.
причем (чтобы опять таки обобщить ситуацию) ФМ представляется как блэкбокс, т.е. какие именно из полей будет использовать ФМ неизвестно (ну или сидеть разбираться - неоправданная трата времени) :)

Извиняте, но если нужно вызвать ФМ, то для передачи параметров по-любому нужен LOOP и MOVE-CORRESPONDING.
Несовместимость типов при вызове карается дампом.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Две внутренние таблицы(разных структур) с общими данными, возможно ли?
СообщениеДобавлено: Пт, дек 07 2012, 12:36 
Специалист
Специалист

Зарегистрирован:
Чт, дек 16 2010, 15:23
Сообщения: 133
Откуда: Набережные Челны
Пол: Мужской
Еще как вариант определить компоненты в обеих структурах. Сделать таблицу сопоставления между номером поля одной структуры и номером поля другой структуры.
А дальше через assign component index of structure присваивать ссылки к полям и переносить значения.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Две внутренние таблицы(разных структур) с общими данными, возможно ли?
СообщениеДобавлено: Пт, дек 07 2012, 19:16 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
zsap написал:
broker.chelny написал:
Как вариант в одной из таблиц хранить reference на значения другой таблицы.

Вот это самый правильный вариант, в одной из таблиц хранить ссылку на строку другой таблицы

Если "другая таблица" будет изменена, например, сортировка, все ссылки поедут. В лучшем случае будет дамп, в худшем заметите искажение данных в продуктиве. :)

Один из правильных способов - сделать через классы. Например, zcl_abc, от него потомок zcl_de. Тогда у обоих классов данные abc будут общими. Метод zcl_abc->read будет возвращать структуру abc, метод zcl_de->read возвратит abc+de. Во внутренней таблице хранить указатели на конкретные объекты. Тогда и сортировка по любым данным будет корректной.
Однако, в скорости потеряете в несколько раз! :)

Самое простое объявить наиболее полную структуру z_abcde, лучше в словаре. И использовать её во всех программах и ФМ. Там, где надо только abc - используйте abc, какие проблемы?
Если настаивать, что "в программу приходит таблицы с колонками: a, b, c", а источник данных менять нельзя, тогда вся тема не имеет смысла - можно закрывать.
Если ограничить задачу копированием в свою таблицу без move-corresponding, опишите свою структуру abcde, в которую в начале включена структура abc. Если структуры не содержат числовых форматов типа I, P или F, то можно ограничиться простым присвоением abc = abcde, или abcde = abc. Если есть числовые данные, тогда через assign.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Две внутренние таблицы(разных структур) с общими данными, возможно ли?
СообщениеДобавлено: Пт, дек 07 2012, 20:04 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Parazit написал:
...Если структуры не содержат числовых форматов типа I, P или F, то можно ограничиться простым присвоением abc = abcde, или abcde = abc.

Дополню, а также можно ограничиться простым присвоением таблиц: abc[] = abcde[], или abcde[] = abc[]. Только что проверил код для 4.6D (не юникод) и 7.01 (юникод).
Code:
REPORT ZPROBA .


Types:
  Begin of t_abc,
    a type sy-datum,
    b type char30,
    c type num10,
  End of t_abc.

Types:  Begin of t_abcde.
include   type t_abc.
Types:    d type char20,
          e type d,
        End of t_abcde.

Data:
  it_abc   type standard table of t_abc
    with header line,
  it_abcde type standard table of t_abcde
    with header line.

Start-of-Selection.
  it_abcde-a = '20121207'.
  it_abcde-b = '123456789012345678901234567890'.
  it_abcde-c = 54321.
  it_abcde-d = 'abcdeabcdeabcdeabcde'.
  it_abcde-e = '20130101'.
  Append it_abcde.

  it_abcde-a = '20121221'.
  it_abcde-b = 'конец света близко,уже сегодня'.
  it_abcde-c = 98765.
  it_abcde-d = 'истинная азбука русс'.
  it_abcde-e = '99991231'.
  Append it_abcde.


  it_abc[] = it_abcde[].

  Loop at it_abcde.
    Write: / it_abcde-a, it_abcde-b, it_abcde-c, it_abcde-d, it_abcde-e.
  EndLoop.

  Skip.

  Loop at it_abc.
    Write: / it_abc-a, it_abc-b, it_abc-c.
  EndLoop.

  Skip.

  Refresh it_abcde[].
  it_abcde[] = it_abc[].
  Loop at it_abcde.
    Write: / it_abcde-a, it_abcde-b, it_abcde-c, it_abcde-d, it_abcde-e.
  EndLoop.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


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

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


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

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


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

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