Текущее время: Пн, июл 28 2025, 22:15

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


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


ВНИМАНИЕ!

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



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

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

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

Parazit, боюсь тут вы не правы. Ссылки без проблем переживают и изменение и сортировку таблицы. Конечно это применимо если только одна таблица задана жестко, а вторую можно сделать любой. У автора как выяснилось вторая тоже не допускает изменений, так что метод со ссылками не годится. Остается MOVE-CORRESPONDING. Остальные предложенные методы явно ведут к ухудшению кармы :)


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

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
zsap написал:
Parazit написал:
Если "другая таблица" будет изменена, например, сортировка, все ссылки поедут. В лучшем случае будет дамп, в худшем заметите искажение данных в продуктиве. :)

Parazit, боюсь тут вы не правы. Ссылки без проблем переживают и изменение и сортировку таблицы. Конечно это применимо если только одна таблица задана жестко, а вторую можно сделать любой. У автора как выяснилось вторая тоже не допускает изменений, так что метод со ссылками не годится. Остается MOVE-CORRESPONDING. Остальные предложенные методы явно ведут к ухудшению кармы :)

Вы правы, я не ожидал такой прыти от SAP. :)
Проверил на коде в 4.6 - работает (см.код ниже). Причем выдержало не только сортировку, но даже удаление записей. Видимо я не правильно представлял себе внутреннее устройство таблиц. Я представлял его в виде массива записей, как в Pascal-е например, а при сортировке происходит перемещение записей целиком. Вероятно, на самом деле, записи хранятся в памяти как отдельные переменные, а в таблице всегда хранятся лишь указатели на них.
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,
          ref_abc type ref to data,
          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.

Field-symbols:
  <abc> type t_abc.

Start-of-Selection.
  it_abc-a = '20121231'.
  it_abc-b = 'видим 1-ю abc'.
  it_abc-c = 54321.
  Append it_abc.
  Read table it_abc assigning <abc> index sy-tabix.
  Get reference of <abc> into it_abcde-ref_abc.
  it_abcde-d = 'Для 1-й abcde'.
  it_abcde-e = '20130101'.
  Append it_abcde.

  Clear it_abc.
  it_abc-b = 'удалим'.
  Append it_abc.
  Read table it_abc assigning <abc> index sy-tabix.
  Get reference of <abc> into it_abcde-ref_abc.
  it_abcde-d = 'Для пустой'.
  it_abcde-e = '99991231'.
  Append it_abcde.

  it_abc-a = '20120101'.
  it_abc-b = 'видим 2-ю abc'.
  it_abc-c = 98765.
  Append it_abc.
  Read table it_abc assigning <abc> index sy-tabix.
  Get reference of <abc> into it_abcde-ref_abc.
  it_abcde-d = 'Для 2-й abcde'.
  it_abcde-e = '99991231'.
  Append it_abcde.

  Write: / 'До сортировки:'.
  Loop at it_abcde.
    Assign it_abcde-ref_abc->* to <abc>.
    Write: / <abc>-a, it_abcde-d, <abc>-b.
  EndLoop.

  Skip.

  Delete it_abc index 2.
  Sort it_abc by a.

  Write: / 'После сортировки:'.
  Loop at it_abcde.
    Assign it_abcde-ref_abc->* to <abc>.
    check sy-subrc = 0.
    Write: / <abc>-a, it_abcde-d, <abc>-b.
  EndLoop.

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


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

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


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

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


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

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