Условия при каких можно использовать READ TABLE?

Автор Паганель, Грудень 16, 2008, 05:35:40 ПП

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

Паганель

Для себя что бы потом сновая не искать, как пользоватся:

FORM test TABLES   gt_bk_in_move.
  DATA: rt_outtab TYPE STANDARD TABLE OF gs_outtab
        WITH HEADER LINE WITH KEY matnr werks.

  rt_outtab[] = gt_outtab[].

  LOOP AT gt_bk_in_move INTO ls_bk_in_move.
    READ TABLE rt_outtab WITH KEY matnr = ls_bk_in_move-matnr
                                  werks = ls_bk_in_move-werks.
    IF sy-subrc NE 0.
      rt_outtab-matnr  = ls_bk_in_move-matnr.
      rt_outtab-werks  = ls_bk_in_move-werks.
      rt_outtab-pmenge = ls_bk_in_move-menge.
      rt_outtab-pdmbtr = ls_bk_in_move-dmbtr.
      rt_outtab-waers  = ls_bk_in_move-waers.
      rt_outtab-meins  = ls_bk_in_move-meins.
      APPEND rt_outtab.
    ELSE.
      rt_outtab-pmenge = rt_outtab-pmenge + ls_bk_in_move-menge.
      rt_outtab-pdmbtr = rt_outtab-pdmbtr + ls_bk_in_move-dmbtr.
      MODIFY rt_outtab FROM rt_outtab INDEX sy-tabix.
    ENDIF.
  ENDLOOP.

  " ПЕРЕНОС ДАННЫХ
  gt_outtab[] = rt_outtab[].
  FREE rt_outtab[].

ENDFORM.         

Uukrul

Цитата: Паганель від Грудень 18, 2008, 02:40:58 ДП
Для себя что бы потом сновая не искать, как пользоватся:

  LOOP AT gt_bk_in_move INTO ls_bk_in_move.
    READ TABLE rt_outtab WITH KEY matnr = ls_bk_in_move-matnr
                                  werks = ls_bk_in_move-werks.
 

А как по поводу BINARY SEARCH?.


NachDenken

Привет, народу
вот у меня тоже как раз выборка bseg/bset
и сделав выборку по bset во внут табличку (созданную с типом таблица с ключами)
и выполнив поиск по ней с использование бинари сертч,
удалось добиться ускорения аж на 5 -10 %
ну не знаю...
мож у меня в консерватории нужно поправить :)

Dmitriy

Цитата: Паганель від Грудень 18, 2008, 04:28:24 ПП
Второй раз намекают на это, что-то не пойму что не так
Посмотри код, выше скинул же, только до цикла сортируй. :)

Паганель

спасибо, сразу не заметил  :)
ЦитатаSORT gt_outtab BY werks matnr.
READ TABLE gt_outtab WITH TABLE KEY werks = l_items-werks matnr = l_items-matnr BINARY SERCH.

Uukrul

Цитата: NachDenken від Грудень 18, 2008, 04:44:05 ПП
и выполнив поиск по ней с использование бинари сертч,
удалось добиться ускорения аж на 5 -10 %
Ну так 10% это уже не мало...  как говорится там 10 тут 5, глядишь и стало пошустрее... или оптимизация это когда 100-200%? Так это уже называется переписывание кода!

Паганель

а BINARY SERCH кроме скорости еще что то дает, хотя глупый вопрос конечно, не думаю что точность ...

Uukrul

Цитата: Паганель від Грудень 18, 2008, 11:14:06 ПП
а BINARY SERCH кроме скорости еще что то дает, хотя глупый вопрос конечно, не думаю что точность ...
В  смысле что-то дает? Вопрос не корректен, это типа а педаль газа в машине что-то кроме увеличения скорости дает? Ответ, дает больший расход бензина и увеличение скорости, чего мы и добиваемся, программа не только должна правильно считать, но и считать как можно быстрее  ;) вот бинарный поиск и позволяет получить ускорение в 5% - 10%, как по мне это не мало, особенно если поиск вызывается в каком-нибудь цикле пару тысяч раз.

Паганель

Цитата: Uukrul від Грудень 18, 2008, 11:49:22 ПП
В  смысле что-то дает? Вопрос не корректен, это типа а педаль газа в машине что-то кроме увеличения скорости дает? Ответ, дает больший расход бензина и увеличение скорости, чего мы и добиваемся, программа не только должна правильно считать, но и считать как можно быстрее  ;) вот бинарный поиск и позволяет получить ускорение в 5% - 10%, как по мне это не мало, особенно если поиск вызывается в каком-нибудь цикле пару тысяч раз.

Да Вопрос не корректен, просто тестирую, вижу что суммы не сходятся ...... грешным делом подумал на BINARY SERCH, потом правда нашел.

SMF spam blocked by CleanTalk