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/ |