169 похожих чатов

Разница между IF <ls>-bukrs = '1234'. ENDIF. и ASSIGN COMPONENT 'BUKRS' OF STRUCTURE <ls_any>

TO FIELD-SYMBOL(<lv_field>).
CHECK sy-subrc = 0.
IF <lv_field> = '1234'.
ENDIF.

в 4 раза в пользу статики.
Что там GET TIME STAMP FIELD возвращает, милисекунды? Для миллиона итераций получилось 0.109 и 0.419 соответственно.
Если это всё лежит в LOOP AT table, то сам цикл сожретв разы больше времени.

44 ответов

73 просмотра

спасибо! уточни плиз, какой абап, какая система?

Евгений- Автор вопроса

oracle, 750 - 0.339 и 1,472 - в 4.3 раза разница.

Евгений- Автор вопроса

oracle, 740 - 0.179 и 1,525 - в 8.5 раз разница.

Евгений
oracle, 740 - 0.179 и 1,525 - в 8.5 раз разница.

чтото прям очень много , даже не верится

Евгений- Автор вопроса
Evgeniy😇 Lapshin
чтото прям очень много , даже не верится

несколько раз перезапустил. Значит неплохо оптимизировали от 740 до 753

Евгений- Автор вопроса
Evgeniy😇 Lapshin
чтото прям очень много , даже не верится

в абсолютном выражении время мало и, имхо, будет незаметно на фоне основной логики типа тяжелых селектов или лупов по большой таблице. Все-таки не для микроконтроллеров пишем 😁

Евгений- Автор вопроса
Evgeniy😇 Lapshin
лупы будут у меня большими :)

на таблице с 300к записей разница 2.66 раза (было - 4). Если докидать еще какой-нибудь логики в цикл - скорее всего будет еще меньше.

Evgeniy😇 Lapshin
лупы будут у меня большими :)

А что за задача, любопытно просто, где и лупы большие и поля динамические? В частности, откуда имя поля берется, оно ведь переменное? иначе смысла нет отказываться от статики

Евгений- Автор вопроса
Dmitry B
А что за задача, любопытно просто, где и лупы боль...

может правила в настроечной таблице, к примеру.

Евгений
может правила в настроечной таблице, к примеру.

А получается либо хардкодить правила абапом, либо дать консультанту на откуп

Евгений- Автор вопроса
Dmitry B
А получается либо хардкодить правила абапом, либо ...

подождем ответа :) У меня вот есть загрузка хлама из экселя и табличка мэппинга - типа столбец А в поле Х, столбец В - в поле Y. Так мне проще динамически написать, чтобы конс через настройку мог поправить. А то что будет на 50 милисекунд дольше грузиться - пофиг.

Dmitry B
А что за задача, любопытно просто, где и лупы боль...

Универсальный метод для обогащения таблиц любого формата текстовыми значениями. Типа текст материала по коду материала. Загоняешь таблицу в метод и получаешь с заполненным текстом

Евгений- Автор вопроса
Evgeniy😇 Lapshin
Универсальный метод для обогащения таблиц любого ф...

имхо assign component далеко не в топе будет по затратам времени в ST12 ))

Евгений
имхо assign component далеко не в топе будет по за...

Согласен, но эксперты заказчика так не считают :)

Evgeniy😇 Lapshin
Универсальный метод для обогащения таблиц любого ф...

В этом случае сама постановка не оставляет альтернатив. Универсальность - это объективный фактор, он говорит нам о задаче экономии несравнимо большего времени людей и дискутировать о секундах экономии машинного времени уже нет смысла

Belial
Может еще тики проца считать?

мы только подмечаем, что будут проблемы. тики пока не просят считать

Dmitry B
В этом случае сама постановка не оставляет альтерн...

боюсь, что на 10М записях будет не несколько секунд :)

Евгений- Автор вопроса
Evgeniy😇 Lapshin
боюсь, что на 10М записях будет не несколько секун...

тогда вместо универсальности - джоины с текстовыми таблицами под каждый случай. В разы больше обезьяньей работы 😁 зато абапер занят.

Evgeniy😇 Lapshin
боюсь, что на 10М записях будет не несколько секун...

Может, по задаче можно будет как-нибудь так сравнивать? IF CORRESPONDING ts_compare( <ls_data> ) = ls_compare. " Данные одинаковы ENDIF.

Iurii Slobodchikov
Может, по задаче можно будет как-нибудь так сравни...

не понял идею. мне нужно не сравнить, а заполнить

Evgeniy😇 Lapshin
не понял идею. мне нужно не сравнить, а заполнить

идея в том, чтобы создать только одну динамическую структуру один раз (а может и вообще статическая подойдёт), а потом заполнять данные через MOVE-CORRESPONDING

Евгений- Автор вопроса
Iurii Slobodchikov
идея в том, чтобы создать только одну динамическую...

если я всё правильно понимаю, то статическая не подойдет. Ведь для материала одна текстовая таблица, для ЕИ - другая. Тут что-то типа выборки из системных таблиц откуда тексты берутся, потом выборка самого текста и обогащение таблицы, поданной на вход.

Dmitry B
А что за задача, любопытно просто, где и лупы боль...

самый простой пример: всяческие класс-экзиты в бобф на фпм (классы экзиты для FBI-ракурсов. Там стандарт, который вызывает Z-классы с определенными интерфейсами. Если нужно что-то подменить на стадии вывода на UI - то надо как раз поля динамически как-то смотреть)

Iurii Slobodchikov
В CORRESPONDING есть динамический MAPPING

там поля можно динамически указывать? через строковые параметры или только статикой?

Dmitry B
В этом случае сама постановка не оставляет альтерн...

на больших объемах там влегкую секунды становятся минутами. И экономия становится ну такой... неуловимой что ли )

Евгений- Автор вопроса
Iurii Slobodchikov
Можно динамически через строки в новом абапе

хелп говорит, что только для статически определенных MAPPING работает, если я правильно прочитал. А если хочешь для динамических структур да еще с разными именами полей, то для этого наваяли CL_ABAP_CORRESPONDING

Евгений
хелп говорит, что только для статически определенн...

Да, это он и есть, забыл что отдельный класс для этого

Evgeniy😇 Lapshin
а там внутри assign component of stucture? :)

Не, там всё внутрях делается как при MAPPING)

Евгений
хелп говорит, что только для статически определенн...

Этот класс, кстати, целые таблицы может корреспондить. Может быть, по задаче получится сразу целые таблицы обработать - так ещё быстрее будет.

Евгений
через lookup table?

Можно предварительно сделать какую-нибудь такую таблицу: NEW_MAKTX NEW_MEINS И через CL_ABAP_CORRESPONDING заполнить другую таблицу MATNR MAKTX MEINS Просто у первой таблицы должно быть точно такое же кол-во строк, как и у второй таблицы и чтобы номер строки первой таблицы соответствовал номеру строки второй таблицы. Но, может, по задаче такой способ не подойдёт.

Денис
на больших объемах там влегкую секунды становятся ...

Я бы лучше сказал непредсказуемой. Чисто механически машинное время все ещё дешевле времени разработчика. Да и тратится его все ещё меньше. Но во что выльется систематическое ожидание в несколько минут или часов - в раздражение сотрудника компании и он потеряет сон, и станет хуже работать, в раздражение клиента и он уйдет к конкурентам, в разачоровании в САПе и переходе на 1С - мы не знаем) Я бы тут действовал реактивно исходя из того, что обо всем этом подумали за меня)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта