Автор Тема: Оптимизация ABAP-а  (Прочитано 283340 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Кухня
  • Newbie
  • *
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Оптимизация ABAP-а
« Ответ #75 : Июнь 05, 2009, 10:18:09 pm »
You are not allowed to view links. Register or Login
Синтаксис не подскажешь сразу, а то я что-то найти не могу..
Нет, к сожелению, этот код не "засолил", повезло в свое время по поводу мегаотчетов, но может мужики-абаперы подскажут что, залез в исходники - много их... Нормально просто всегда индексы работали, а еще и с базисом общался, грамотный базисник дюжины начинающих абаперов стоит, если не вредный. ;) А потом уже (по поводу больших отчетов), мы просто присаживались с консулами (когда они были!) и предметно общаясь, договаривались, что они, как постановщики, будут клиенту говорить, можно/нельзя, а то иногда такие казусы... ::) Пошукаю, если найду - отпишу.
 

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Оптимизация ABAP-а
« Ответ #76 : Июнь 05, 2009, 10:24:52 pm »
You are not allowed to view links. Register or Login
А потом уже (по поводу больших отчетов), мы просто присаживались с консулами (когда они были!) и предметно общаясь, договаривались, что они, как постановщики, будут клиенту говорить, можно/нельзя, а то иногда такие казусы... ::) Пошукаю, если найду - отпишу.
Хорошо, наверное тебе, Дима, просто, нет у меня консулов, «Аз есмь…», и косул, и абапер, в одном лице :-), и задачу ставят не в виде ТЗ, а ближе к ФД (функциональному требованию, общему описанию, как должно быть) ... ну как говорят "и кузнец, и жнец, и трубе дудец"....
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Кухня
  • Newbie
  • *
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Оптимизация ABAP-а
« Ответ #77 : Июнь 05, 2009, 10:29:12 pm »
You are not allowed to view links. Register or Login
Хорошо, наверное тебе, Дима, просто, нет у меня консулов, «Аз есмь…», и косул, и абапер, в одном лице :-), и задачу ставят не в виде ТЗ, а ближе к ФД (функциональному требованию, общему описанию, как должно быть) ... ну как говорят "и кузнец, и жнец, и трубе дудец"....
Да это понятно, просто когда опыта поднаберешь, сможешь авторитетом "давить". А то мечтателей много, дай им то, это, а SAP ведь тоже не резиновый. :D

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Оптимизация ABAP-а
« Ответ #78 : Июнь 05, 2009, 10:31:33 pm »
You are not allowed to view links. Register or Login
Да это понятно, просто когда опыта поднаберешь, сможешь авторитетом "давить". А то мечтателей много, дай им то, это, а SAP ведь тоже не резиновый. :D
Знаем"с мы таких "мечтателей", сами такие, как сделаем, потом еще недельку оптимизируем .....

Дима, а ты о чем?
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Кухня
  • Newbie
  • *
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Оптимизация ABAP-а
« Ответ #79 : Июнь 05, 2009, 10:53:06 pm »
You are not allowed to view links. Register or Login
Знаем"с мы таких "мечтателей", сами такие, как сделаем, потом еще недельку оптимизируем .....

Дима, а ты о чем?
О понимании бизнес-процессов компании самим, руководством оной и умением объяснить Клиенту, не то, что он не прав, а то, как надо, т.е. научить/объяснить и подвести к тому, чтобы он был прав, но с учетом специфики параметров "железа" на котором все это дело функционирует и системных настроек.
« Последнее редактирование: Июнь 05, 2009, 11:10:00 pm от Dmitriy »

Оффлайн NachDenken

  • Newbie
  • *
  • Сообщений: 158
  • Репутация: +9/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Оптимизация ABAP-а
« Ответ #80 : Июнь 10, 2009, 11:26:06 am »
не могу найти пост где месье Паганель рассказывал про зависимость условий where и выбор индекса
действительно ли это так

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Оптимизация ABAP-а
« Ответ #81 : Июнь 10, 2009, 11:28:39 am »
You are not allowed to view links. Register or Login
не могу найти пост где месье Паганель рассказывал про зависимость условий where и выбор индекса
действительно ли это так
страницей выше в этой же теме (только это вопрос спорный)
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн NachDenken

  • Newbie
  • *
  • Сообщений: 158
  • Репутация: +9/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Оптимизация ABAP-а
« Ответ #82 : Июнь 11, 2009, 01:24:28 pm »
еще нужен синтаксис хинта ?
%_HINTS ORACLE 'index(MKPF "MKPF~Zblabla")'.

Оффлайн NachDenken

  • Newbie
  • *
  • Сообщений: 158
  • Репутация: +9/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Оптимизация ABAP-а
« Ответ #83 : Июнь 11, 2009, 01:26:03 pm »
по поводу индекса,
думаю со стратегией выбора индекса в sap не все так просто,
1 и тот же селект и условия, при одинаковых индексах в разных мандантах выбор разный.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Оптимизация ABAP-а
« Ответ #84 : Июнь 11, 2009, 01:59:34 pm »
You are not allowed to view links. Register or Login
1 и тот же селект и условия, при одинаковых индексах в разных мандантах выбор разный.
Ну там еще статистика индекса смотрится... т.е. для теста желательно сбор статистики сделать в обоих системах, посмотреть на результат, ну если данные в системах одинаковые, то должно совпасть и уже потом запускать отчеты и смотреть на индексы.

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Оптимизация ABAP-а
« Ответ #85 : Июнь 17, 2009, 03:37:07 pm »
Тут вот опять делаю оптимизацию, странные результаты:  

LOOP AT gt_alvtab INTO ls_alvtab - 33 302 061
LOOP AT gt_alvtab ASSIGNING <fs_alvtab>. - 36 540 526


Странно....  :o

Может это для небольшого к-ва тестовых данных?
« Последнее редактирование: Июнь 17, 2009, 03:39:08 pm от Паганель »
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Оптимизация ABAP-а
« Ответ #86 : Июнь 17, 2009, 03:48:10 pm »
Ошибся, в одном месте не заменил
PERFORM select_add_data CHANGING ls_alvtab на <fs_alvtab>.
Странно,  не думаю что из-за этого такой разброс?


Вопросик, каким образом, через <fs_alvtab> или еще как то можно оптимизировать такой код?
Код: You are not allowed to view links. Register or Login
" Очищаем все пустые
LOOP AT gt_alvtab INTO ls_alvtab WHERE is_null = 1.
    DELETE gt_alvtab INDEX sy-tabix.
    "DELETE gt_alvtab FROM ls_alvtab. " INDEX sy-tabix.
ENDLOOP.
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Удав

  • Newbie
  • *
  • Сообщений: 44
  • Репутация: +7/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Оптимизация ABAP-а
« Ответ #87 : Июнь 17, 2009, 04:32:35 pm »
Замени выборку данных на свою и посмотри результаты разных методов ;)
Код: You are not allowed to view links. Register or Login
REPORT  z_test_delete.

DATA: BEGIN OF gs_alvtab,
        belnr TYPE bkpf-belnr,
        is_null(1) TYPE c,
      END OF gs_alvtab,
      gt_alvtab LIKE STANDARD TABLE OF gs_alvtab,
      gt_alvtab2 LIKE STANDARD TABLE OF gs_alvtab,
      tabix TYPE sy-tabix,
      t1 TYPE i,
      t2 TYPE i.

FIELD-SYMBOLS: <fs_alvtab> LIKE gs_alvtab.

START-OF-SELECTION.

  SELECT belnr
  INTO CORRESPONDING FIELDS OF TABLE gt_alvtab
  FROM bkpf
  WHERE bukrs = '1100'.

  LOOP AT gt_alvtab ASSIGNING <fs_alvtab>.
    tabix = sy-tabix MOD 5.
    WRITE tabix TO <fs_alvtab>-is_null LEFT-JUSTIFIED.
  ENDLOOP.
  gt_alvtab2 = gt_alvtab.
  tabix = LINES( gt_alvtab ).
  WRITE: /(25) 'Count of records', tabix.
  GET RUN TIME FIELD t1.
  LOOP AT gt_alvtab ASSIGNING <fs_alvtab> WHERE is_null = 1.
    DELETE gt_alvtab INDEX sy-tabix.
  ENDLOOP.
  GET RUN TIME FIELD t2.
  t1 = t2 - t1.
  tabix = LINES( gt_alvtab ).
  WRITE: /(25) 'Loop w/o sort', t1, tabix.
  GET RUN TIME FIELD t1.
  SORT gt_alvtab2 BY is_null.
  GET RUN TIME FIELD t2.
  t1 = t2 - t1.
  WRITE: /(25) 'Sort', t1.
  gt_alvtab = gt_alvtab2.
  GET RUN TIME FIELD t1.
  LOOP AT gt_alvtab ASSIGNING <fs_alvtab> WHERE is_null = 1.
    DELETE gt_alvtab INDEX sy-tabix.
  ENDLOOP.
  GET RUN TIME FIELD t2.
  t1 = t2 - t1.
  tabix = LINES( gt_alvtab ).
  WRITE: /(25) 'Loop with sort', t1, tabix.
  gt_alvtab = gt_alvtab2.
  GET RUN TIME FIELD t1.
  READ TABLE gt_alvtab WITH KEY is_null = 1
    BINARY SEARCH
    TRANSPORTING NO FIELDS.
  tabix = sy-tabix.

  WHILE sy-subrc = 0.
    sy-subrc = 0.
    READ TABLE gt_alvtab ASSIGNING <fs_alvtab> INDEX tabix.
    IF sy-subrc <> 0.
      EXIT.
    ENDIF.
    IF <fs_alvtab>-is_null <> 1.
      sy-subrc = 4.
    ELSE.
      DELETE gt_alvtab INDEX tabix.
*      ADD 1 TO tabix.
    ENDIF.
  ENDWHILE.
  GET RUN TIME FIELD t2.
  t1 = t2 - t1.
  tabix = LINES( gt_alvtab ).
  WRITE: /(25) 'Read .. binary search', t1, tabix.

  gt_alvtab = gt_alvtab2.
  GET RUN TIME FIELD t1.
  DELETE gt_alvtab WHERE is_null = 1.
  GET RUN TIME FIELD t2.
  t1 = t2 - t1.
  tabix = LINES( gt_alvtab ).
  WRITE: /(25) 'Delete', t1, tabix.

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Оптимизация ABAP-а
« Ответ #88 : Июнь 17, 2009, 09:13:07 pm »
You are not allowed to view links. Register or Login
Замени выборку данных на свою и посмотри результаты разных методов ;)
Код: You are not allowed to view links. Register or Login
REPORT  z_test_delete.

DATA: BEGIN OF gs_alvtab,
        belnr TYPE bkpf-belnr,
        is_null(1) TYPE c,
      END OF gs_alvtab,
      gt_alvtab LIKE STANDARD TABLE OF gs_alvtab,
      gt_alvtab2 LIKE STANDARD TABLE OF gs_alvtab,
      tabix TYPE sy-tabix,
      t1 TYPE i,
      t2 TYPE i.

FIELD-SYMBOLS: <fs_alvtab> LIKE gs_alvtab.

START-OF-SELECTION.

  SELECT belnr
  INTO CORRESPONDING FIELDS OF TABLE gt_alvtab
  FROM bkpf
  WHERE bukrs = '1100'.

  LOOP AT gt_alvtab ASSIGNING <fs_alvtab>.
    tabix = sy-tabix MOD 5.
    WRITE tabix TO <fs_alvtab>-is_null LEFT-JUSTIFIED.
  ENDLOOP.
  gt_alvtab2 = gt_alvtab.
  tabix = LINES( gt_alvtab ).
  WRITE: /(25) 'Count of records', tabix.
  GET RUN TIME FIELD t1.
  LOOP AT gt_alvtab ASSIGNING <fs_alvtab> WHERE is_null = 1.
    DELETE gt_alvtab INDEX sy-tabix.
  ENDLOOP.
  GET RUN TIME FIELD t2.
  t1 = t2 - t1.
  tabix = LINES( gt_alvtab ).
  WRITE: /(25) 'Loop w/o sort', t1, tabix.
  GET RUN TIME FIELD t1.
  SORT gt_alvtab2 BY is_null.
  GET RUN TIME FIELD t2.
  t1 = t2 - t1.
  WRITE: /(25) 'Sort', t1.
  gt_alvtab = gt_alvtab2.
  GET RUN TIME FIELD t1.
  LOOP AT gt_alvtab ASSIGNING <fs_alvtab> WHERE is_null = 1.
    DELETE gt_alvtab INDEX sy-tabix.
  ENDLOOP.
  GET RUN TIME FIELD t2.
  t1 = t2 - t1.
  tabix = LINES( gt_alvtab ).
  WRITE: /(25) 'Loop with sort', t1, tabix.
  gt_alvtab = gt_alvtab2.
  GET RUN TIME FIELD t1.
  READ TABLE gt_alvtab WITH KEY is_null = 1
    BINARY SEARCH
    TRANSPORTING NO FIELDS.
  tabix = sy-tabix.

  WHILE sy-subrc = 0.
    sy-subrc = 0.
    READ TABLE gt_alvtab ASSIGNING <fs_alvtab> INDEX tabix.
    IF sy-subrc <> 0.
      EXIT.
    ENDIF.
    IF <fs_alvtab>-is_null <> 1.
      sy-subrc = 4.
    ELSE.
      DELETE gt_alvtab INDEX tabix.
*      ADD 1 TO tabix.
    ENDIF.
  ENDWHILE.
  GET RUN TIME FIELD t2.
  t1 = t2 - t1.
  tabix = LINES( gt_alvtab ).
  WRITE: /(25) 'Read .. binary search', t1, tabix.

  gt_alvtab = gt_alvtab2.
  GET RUN TIME FIELD t1.
  DELETE gt_alvtab WHERE is_null = 1.
  GET RUN TIME FIELD t2.
  t1 = t2 - t1.
  tabix = LINES( gt_alvtab ).
  WRITE: /(25) 'Delete', t1, tabix.

Слушай, спасибо очень помог, (держи кармы) я просто потрясен результатами, я не стал менять твою прогу, так добавил для себя комментарии в логе, но это веСЧ.

Тут есть подсказки не только как оптимизировать цикл с удалением, но и нашел для себя как оптимизировать еще один цикл ....

Мои результаты:
Рис1 и Рис2. странно что такой расброс в результатах для "Удаление. Loop w/o sort."
 между двумя запусками ..


Как вижу быстрее всего работает DELETE gt_alvtab WHERE is_null = 1.

Для циклов вижу нужно использовать сортировку, получается, время потраченное на сортировку, с лихвой компенсируется экономией на цикле.

« Последнее редактирование: Июнь 17, 2009, 09:14:43 pm от Паганель »
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн NachDenken

  • Newbie
  • *
  • Сообщений: 158
  • Репутация: +9/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Оптимизация ABAP-а
« Ответ #89 : Июнь 18, 2009, 10:04:00 am »

подскажите как средствами abap
сделать такой запрос только к внутренней itab

select p1 max(p2) sum(p3)
from blabla
group by p1

collect мне суммирует p2
Спасибо.

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Оптимизация ABAP-а
« Ответ #90 : Июнь 18, 2009, 10:09:55 am »
You are not allowed to view links. Register or Login
подскажите как средствами abap
сделать такой запрос только к внутренней itab

select p1 max(p2) sum(p3)
from blabla
group by p1

collect мне суммирует p2
Спасибо.

вроде бы только collect  или READ/LOOP c записью в еще одну табличку.

С  collect не работал, так как не очень понял как он работает и как выбирает поля по которым суммировать, но тут есть люди которые его наверняка юзали.

Выше в этой теме Уукрул приводил пример суммирования You are not allowed to view links. Register or Login

« Последнее редактирование: Июнь 18, 2009, 10:12:28 am от Паганель »
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Оптимизация ABAP-а
« Ответ #91 : Июнь 18, 2009, 10:52:09 am »
2Удав
You are not allowed to view links. Register or Login
Замени выборку данных на свою и посмотри результаты разных методов ;)
Код: You are not allowed to view links. Register or Login
REPORT  z_test_delete.

DATA: BEGIN OF gs_alvtab,
        belnr TYPE bkpf-belnr,
        is_null(1) TYPE c,
      END OF gs_alvtab,
      gt_alvtab LIKE STANDARD TABLE OF gs_alvtab,
      gt_alvtab2 LIKE STANDARD TABLE OF gs_alvtab,
      tabix TYPE sy-tabix,
      t1 TYPE i,
      t2 TYPE i.

FIELD-SYMBOLS: <fs_alvtab> LIKE gs_alvtab.

START-OF-SELECTION.

  SELECT belnr
  INTO CORRESPONDING FIELDS OF TABLE gt_alvtab
  FROM bkpf
  WHERE bukrs = '1100'.

  LOOP AT gt_alvtab ASSIGNING <fs_alvtab>.
    tabix = sy-tabix MOD 5.
    WRITE tabix TO <fs_alvtab>-is_null LEFT-JUSTIFIED.
  ENDLOOP.
  gt_alvtab2 = gt_alvtab.
  tabix = LINES( gt_alvtab ).
  WRITE: /(25) 'Count of records', tabix.
  GET RUN TIME FIELD t1.
  LOOP AT gt_alvtab ASSIGNING <fs_alvtab> WHERE is_null = 1.
    DELETE gt_alvtab INDEX sy-tabix.
  ENDLOOP.
  GET RUN TIME FIELD t2.
  t1 = t2 - t1.
  tabix = LINES( gt_alvtab ).
  WRITE: /(25) 'Loop w/o sort', t1, tabix.
  GET RUN TIME FIELD t1.
  SORT gt_alvtab2 BY is_null.
  GET RUN TIME FIELD t2.
  t1 = t2 - t1.
  WRITE: /(25) 'Sort', t1.
  gt_alvtab = gt_alvtab2.
  GET RUN TIME FIELD t1.
  LOOP AT gt_alvtab ASSIGNING <fs_alvtab> WHERE is_null = 1.
    DELETE gt_alvtab INDEX sy-tabix.
  ENDLOOP.
  GET RUN TIME FIELD t2.
  t1 = t2 - t1.
  tabix = LINES( gt_alvtab ).
  WRITE: /(25) 'Loop with sort', t1, tabix.
  gt_alvtab = gt_alvtab2.
  GET RUN TIME FIELD t1.
  READ TABLE gt_alvtab WITH KEY is_null = 1
    BINARY SEARCH
    TRANSPORTING NO FIELDS.
  tabix = sy-tabix.

  WHILE sy-subrc = 0.
    sy-subrc = 0.
    READ TABLE gt_alvtab ASSIGNING <fs_alvtab> INDEX tabix.
    IF sy-subrc <> 0.
      EXIT.
    ENDIF.
    IF <fs_alvtab>-is_null <> 1.
      sy-subrc = 4.
    ELSE.
      DELETE gt_alvtab INDEX tabix.
*      ADD 1 TO tabix.
    ENDIF.
  ENDWHILE.
  GET RUN TIME FIELD t2.
  t1 = t2 - t1.
  tabix = LINES( gt_alvtab ).
  WRITE: /(25) 'Read .. binary search', t1, tabix.

  gt_alvtab = gt_alvtab2.
  GET RUN TIME FIELD t1.
  DELETE gt_alvtab WHERE is_null = 1.
  GET RUN TIME FIELD t2.
  t1 = t2 - t1.
  tabix = LINES( gt_alvtab ).
  WRITE: /(25) 'Delete', t1, tabix.

Можеш обьяснить этот кусок кода:
Код: You are not allowed to view links. Register or Login
READ TABLE gt_alvtab WITH KEY is_null = 1
BINARY SEARCH
TRANSPORTING NO FIELDS.
tabix = sy-tabix.

WHILE sy-subrc = 0.
  sy-subrc = 0.
  READ TABLE gt_alvtab ASSIGNING <fs_alvtab> INDEX tabix.
  IF sy-subrc <> 0.
    EXIT.
  ENDIF.
  IF <fs_alvtab>-is_null <> 1.
    sy-subrc = 4.
  ELSE.
    DELETE gt_alvtab INDEX tabix.
*      ADD 1 TO tabix.
  ENDIF.
ENDWHILE.
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Оптимизация ABAP-а
« Ответ #92 : Июнь 18, 2009, 11:15:41 am »
You are not allowed to view links. Register or Login
collect мне суммирует p2
Ну таки да... руками через LOOP AT ENDLOOP. разве что... я что-то никаких описаний типа отключения суммирования для цифровых полей не нашел  ::)

Оффлайн NachDenken

  • Newbie
  • *
  • Сообщений: 158
  • Репутация: +9/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Оптимизация ABAP-а
« Ответ #93 : Июнь 24, 2009, 11:20:12 am »
помните ?
1) call function селект ...new task и потом их ловить в процедурке on end task
2) запустить  job_open submit селект

1 пункт не фоновый получается, а просто параллельный
2) и фоновый и паралельный

Оффлайн Удав

  • Newbie
  • *
  • Сообщений: 44
  • Репутация: +7/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Оптимизация ABAP-а
« Ответ #94 : Июль 27, 2009, 08:34:12 pm »
You are not allowed to view links. Register or Login
2Удав
Можеш обьяснить этот кусок кода:
Код: You are not allowed to view links. Register or Login
READ TABLE gt_alvtab WITH KEY is_null = 1
BINARY SEARCH
TRANSPORTING NO FIELDS.
tabix = sy-tabix.

WHILE sy-subrc = 0.
  sy-subrc = 0.
  READ TABLE gt_alvtab ASSIGNING <fs_alvtab> INDEX tabix.
  IF sy-subrc <> 0.
    EXIT.
  ENDIF.
  IF <fs_alvtab>-is_null <> 1.
    sy-subrc = 4.
  ELSE.
    DELETE gt_alvtab INDEX tabix.
*      ADD 1 TO tabix.
  ENDIF.
ENDWHILE.
Конечно :)
1.Сначала таблица сортируется по is_null по возрастанию (выше по коду)
2.Ищется 1-я запись с is_null = 1 по binary search
3.Удаляются записи, у которых is_null = 1.
Как только попадется запись, у которой is_null > 1 или достигнут конец таблицы - выход из цикла.

Оффлайн Martha

  • Newbie
  • *
  • Сообщений: 51
  • Репутация: +2/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Оптимизация ABAP-а
« Ответ #95 : Июль 29, 2009, 11:52:49 am »
Цитата: Uukrul  link=topic=174.msg4062#msg4062 date=1244207259
Ну ты же сам написал... порядок полей в условии WHERE!!!, а какая разница есть справа значение для сравнения или нет?!

этот порядок полей должен соответствовать порядку следования полей в индексе, который вы предполагаете, здесь будет использован или чему-то другому


Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Оптимизация ABAP-а
« Ответ #96 : Июль 29, 2009, 11:55:43 am »
You are not allowed to view links. Register or Login
этот порядок полей должен соответствовать порядку следования полей в индексе, который вы предполагаете, здесь будет использован или чему-то другому



Это вопрос?

Если да, то порядок не знаю, но наличие полей и значений - да.
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Оптимизация ABAP-а
« Ответ #97 : Июль 29, 2009, 12:27:37 pm »
You are not allowed to view links. Register or Login
этот порядок полей должен соответствовать порядку следования полей в индексе
Причем в индексе если таблица мандантно-зависимая, то обязательно должно быть включено поле манданта. Или иначе надо в запросе явно указывать что мандант не использовать.

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Оптимизация ABAP-а
« Ответ #98 : Июль 29, 2009, 12:35:09 pm »
Цитата: Uukrul  link=topic=174.msg4566#msg4566 date=1248859657
Причем в индексе если таблица мандантно-зависимая, то обязательно должно быть включено поле манданта. Или иначе надо в запросе явно указывать что мандант не использовать.

Пример, или подробнее можно?
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Martha

  • Newbie
  • *
  • Сообщений: 51
  • Репутация: +2/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Оптимизация ABAP-а
« Ответ #99 : Июль 30, 2009, 01:33:42 pm »
You are not allowed to view links. Register or Login
Это вопрос?

Если да, то порядок не знаю, но наличие полей и значений - да.

У нас есть таблица  t1 в которой помимо ключа, есть индекс по полям f1, f3,f6, f7.

Есть
 select  *  from t1
where f7  = z7  and f1 = z1 and f6 = z6 and f3 = z3.

Есть ли разница в скорости работы в том, в какой последовательности перечислены поля в where, если в индексе они идут – см выше.

Sapforum.Biz

Re: Оптимизация ABAP-а
« Ответ #99 : Июль 30, 2009, 01:33:42 pm »