SAPфорум.RU
https://sapboard.ru/forum/

Спрятать повторяющиеся части в метод
https://sapboard.ru/forum/viewtopic.php?f=13&t=100498
Страница 1 из 1

Автор:  Haku [ Вт, мар 12 2024, 21:00 ]
Заголовок сообщения:  Спрятать повторяющиеся части в метод

Доброго дня!

Подскажите, пожалуйста, как оптимизировать повторяющиеся части кода и вставить их в метод???

Code:
CASE callcontrol-step.
    WHEN gcov_step_presel.
      APPEND INITIAL LINE TO shlp-selopt ASSIGNING FIELD-SYMBOL(<ls_selopt>).
      <ls_selopt>-shlpfield = gcov_fieldname_spras.
      <ls_selopt>-sign = gcov_sign_i.
      <ls_selopt>-option = gcov_option_eq.
      <ls_selopt>-low = gcov_value_ru.

      APPEND INITIAL LINE TO shlp-selopt ASSIGNING <ls_selopt>.
      <ls_selopt>-shlpfield = gcov_fieldname_mtart.
      <ls_selopt>-sign = gcov_sign_i.
      <ls_selopt>-option = gcov_option_eq.
      <ls_selopt>-low = gcov_value_roh.

      APPEND INITIAL LINE TO shlp-selopt ASSIGNING <ls_selopt>.
      <ls_selopt>-shlpfield = gcov_fieldname_mtart.
      <ls_selopt>-sign = gcov_sign_i.
      <ls_selopt>-option = gcov_option_eq.
      <ls_selopt>-low = gcov_value_fert.

      APPEND INITIAL LINE TO shlp-selopt ASSIGNING <ls_selopt>.
      <ls_selopt>-shlpfield = gcov_fieldname_atnam.
      <ls_selopt>-sign = gcov_sign_i.
      <ls_selopt>-option = gcov_option_eq.
      <ls_selopt>-low = gcov_value_type_zapis.

Автор:  Удав [ Вт, мар 12 2024, 23:11 ]
Заголовок сообщения:  Re: Спрятать повторяющиеся части в метод

Использовать макрос:
Code:
DEFINE _append_selopt.
      APPEND INITIAL LINE TO shlp-selopt ASSIGNING <ls_selopt>.
      <ls_selopt>-shlpfield = &1.
      <ls_selopt>-sign = gcov_sign_i.
      <ls_selopt>-option = gcov_option_eq.
      <ls_selopt>-low = &2.
END-OF-DEFINITION.
CASE callcontrol-step.
    WHEN gcov_step_presel.
      _append_selopt: gcov_fieldname_spras gcov_value_ru,
                      gcov_fieldname_mtart gcov_value_roh,
                      gcov_fieldname_mtart gcov_value_fert,
                      gcov_fieldname_atnam gcov_value_type_zapis.

Есть и другие способы оптимизации наполнения таблиц, начиная с базиса 7.40.

Автор:  Haku [ Ср, мар 13 2024, 08:17 ]
Заголовок сообщения:  Re: Спрятать повторяющиеся части в метод

The statement "_APPEND_SELOPT" is invalid. Check the spelling. - возникает ошибка, не знаю, в чем дело... Если его поставить над то пишет, что <LS_SELOPT> - неизвестное значение..

Автор:  Haku [ Ср, мар 13 2024, 08:25 ]
Заголовок сообщения:  Re: Спрятать повторяющиеся части в метод

Field "<LS_SELOPT>" is unknown. - пишет. Как-то не принимает прога :-((

Автор:  Korvax [ Ср, мар 13 2024, 09:26 ]
Заголовок сообщения:  Re: Спрятать повторяющиеся части в метод  Тема решена

SAP ведь явно написал, что не знает такую переменную. Следовательно, надо её объявить. например так:
APPEND INITIAL LINE TO shlp-selopt ASSIGNING FIELD-SYMBOL(<ls_selopt>).

В вашем случае можно обойтись и другим вариантом:
Code:
APPEND VALUE #(shlpfield = gcov_fieldname_spras
                    sign = gcov_sign_i
                  option = gcov_option_eq
                     low = gcov_value_ru ) to shlp-selopt.

Автор:  LKU [ Ср, мар 13 2024, 11:48 ]
Заголовок сообщения:  Re: Спрятать повторяющиеся части в метод

Хорошая практика - разделать алгоритмы и данные, плохая практика - использовать массовый хардкод (пусть и с объявлением констант).
Судя по коду, вам нужно применять настройки для select-options, их хорошо вынести так, чтобы в дальнейшем для изменения настроек не надо было менять ABAP-код программы.

Вариантов выноса настроек select-options из кода программы много:
1. На селекционник программы, в транзакции прописать вариант селекционника по умолчанию с нужными полями.
Можно использовать переносимый запросами вариант (код должен начинаться на cus&), можно настроить прямо в продуктиве после переноса
2. В отдельную настроечную z-таблицу
3. В хранение в тр. STVARV
4. В другие принятые у конкретного клиента инструменты для такой задачи (обычно они есть и даже не один).

Автор:  Haku [ Чт, мар 14 2024, 07:26 ]
Заголовок сообщения:  Re: Спрятать повторяющиеся части в метод

Спасибо!

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/