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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Ahrefs [Bot], Google [Bot]


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

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