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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Как быстрее скопировать поля из таблицы A в B?
СообщениеДобавлено: Чт, апр 14 2011, 12:08 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
На входе есть таблица A неизвестной структуры.
Нужно скопировать в таблицу B поля, которые есть и в A и в B.
Как это сделать наиболее быстро?

На текущем этап я делаю просто:
Code:
       
          LOOP AT <itPos> INTO <waPos>.
              LOOP AT it_FCshare ASSIGNING <wa_FCshare>.
                ASSIGN COMPONENT <wa_FCshare>-FIELDNAME
                    OF STRUCTURE waIT_POS TO <fsTo>.
                IF sy-subrc = 0.
                  ASSIGN COMPONENT <wa_FCshare>-FIELDNAME
                      OF STRUCTURE <waPos> TO <fsFrom>.
                  IF sy-subrc = 0.
                    <fsTo> = <fsFrom>.
                  ELSE.
                    ASSIGN COMPONENT <wa_FCshare>-FIELDNAME
                        OF STRUCTURE <waHead> TO <fsFrom>.
                    IF sy-subrc = 0.
                      <fsTo> = <fsFrom>.
                    ELSE.
                      CLEAR <fsTo>.
                    ENDIF.
                  ENDIF.
                  APPEND waIT_POS TO IT_POS.
                ENDIF.
             ENDLOOP.
        ENDLOOP.

Какие есть предложения по улучшению?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как быстрее скопировать поля из таблицы A в B?
СообщениеДобавлено: Чт, апр 14 2011, 12:17 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, ноя 01 2004, 12:17
Сообщения: 298
Пол: Мужской
MOVE-CORRESPONDING


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как быстрее скопировать поля из таблицы A в B?
СообщениеДобавлено: Чт, апр 14 2011, 12:23 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, фев 17 2006, 07:38
Сообщения: 99
Может быть так:
Code:
DATA:
  a TYPE TABLE OF mseg,
  b TYPE TABLE OF bseg.

FIELD-SYMBOLS:
  <fs_a> TYPE data,
  <fs_b> TYPE data.

LOOP AT a ASSIGNING <fs_a>.
  APPEND INITIAL LINE TO b ASSIGNING <fs_b>.
  MOVE-CORRESPONDING <fs_a> TO <fs_b>.
ENDLOOP.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как быстрее скопировать поля из таблицы A в B?
СообщениеДобавлено: Чт, апр 14 2011, 12:35 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
RA написал:
MOVE-CORRESPONDING

Он требует, чтобы структуры были типизированы. В моем случае таблица A нетипизирована.

Всё упирается в эту нетипизированность. :(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как быстрее скопировать поля из таблицы A в B?
СообщениеДобавлено: Чт, апр 14 2011, 12:43 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Валерка написал(а):
RA написал:
MOVE-CORRESPONDING

Он требует, чтобы структуры были типизированы. В моем случае таблица A нетипизирована.

Всё упирается в эту нетипизированность. :(

Значит у вас система 4.6.
Используйте свой начальный код.

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


Последний раз редактировалось Parazit Чт, апр 14 2011, 13:23, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как быстрее скопировать поля из таблицы A в B?
СообщениеДобавлено: Чт, апр 14 2011, 13:04 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
http://sapboard.ru/forum/viewtopic.php?f=13&t=59842&start=0


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как быстрее скопировать поля из таблицы A в B?
СообщениеДобавлено: Чт, апр 14 2011, 16:14 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
Почитав, и проведя тесты пришел к выводу, что нужно заменить
Цитата:
ASSIGN FIELDNAME

на
Цитата:
ASSIGN INDEX

что дает выигрыш в скорости в 2-3 раза.

Так что переделал на ASSIGN через индексы. Сначало определяю индексы откуда->куда, а потом делаю ASSIGN по индексам


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как быстрее скопировать поля из таблицы A в B?
СообщениеДобавлено: Чт, апр 14 2011, 16:29 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
Можно еще попробовать:
create data wa_table1 type line of...
create data wa_table2 type line of...

loop at tab2 into <wa_tab1>.
move-corresponding <wa_tab1> to <wa_tab2>.
...
endloop.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

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


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

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


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

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