Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => Тема начата: Victor Ghost от Март 16, 2018, 01:33:53 pm

Название: вызов одного фм запускает не его, а другой фм
Отправлено: Victor Ghost от Март 16, 2018, 01:33:53 pm
Доброго дня всем живым на этом форуме :)

Столкнулся сейчас с непонятным (для меня и еще нескольких человек из консультантов и абаперов):
имеем фм 'TABCONTROL_RETRIEVE_SEL_OPTS', в котором вызывается фм 'DP_GET_TABLE', но, если зайти в отладку, то вместо 'DP_GET_TABLE' запускается 'DD_GET_NAMETAB_HEADER'.  :-\
Не пойму, как такое может быть..

/вообще оно нужно по причине "средство поиска по краткому тексту материала не всегда выдает результат поиска". Пример: ввожу (в MM03), например, название материала "ФРИТЮРНИЦА FB 4+4LT BECKERS ITALY SRL", не выдает в поиске ни одного материала. Ввожу "ФРИТЮРНИЦА FB 4+4LT BECKERS ITALY *" - выдает. Посмотрел, что происходит в отладчике - вот как раз после вызова фм 'DP_GET_TABLE' от названия "ФРИТЮРНИЦА FB 4+4LT BECKERS ITALY SRL" остается только "ФРИТЮРНИЦА FB 4+4LT BECKERS ITALY S". Но почему, непонятно. Пробовал на других материалах - длина текста роли не играет, разные символы тоже. Думается мне, что преобразование где-то некорректно происходит...
Название: Re: вызов одного фм запускает не его, а другой фм
Отправлено: Uukrul от Март 16, 2018, 04:12:19 pm
Вообще-то:
Код: You are not allowed to view links. Register or Login
@CG\QАктуальная позиция пакета 18 FUNCTION DD_GET_NAMETAB_HEADER
                                    17 FORM DYN_ANALYSE_TABLE
                                    16 FUNCTION DP_GET_TABLE
                                    15 FUNCTION TABCONTROL_RETRIEVE_SEL_OPTS
Как-то типа так вызывается похоже.
Название: Re: вызов одного фм запускает не его, а другой фм
Отправлено: Victor Ghost от Март 19, 2018, 07:19:31 am
это да. я потом в отладчике увидел, что за чем вызвалось.
но не пойму, как (вызвалось и отследить изменения в таблице) :)

/это получается динамический вызов фм идет?
Название: Re: вызов одного фм запускает не его, а другой фм
Отправлено: Uukrul от Март 19, 2018, 09:39:21 am
You are not allowed to view links. Register or Login
/это получается динамический вызов фм идет?
Динамический вызов ФМ идет если вы видите в коде что-то типа CALL FUNCTION (function_module), т.е. вызов модуля по имени находящемуся в переменной, для этого имя переменной будет в скобах. Ну ли более сложный вариант, если где-то ранее вызывается динамическая генерация программы. В остальных случаях скорее всего у вас не включена отладка системных модулей кода.
Название: Re: вызов одного фм запускает не его, а другой фм
Отправлено: Victor Ghost от Март 19, 2018, 03:00:39 pm
точно! с новым интерфейсом непонятно, в каком месте находятся функции старые привычные.. спасибо :)

/правда, с включенной системной отладкой добрался до вызова функции 'DP_GET_CLIENT_TABLE45A', после которой как раз появляется урезанный текст в таблице, но отладчик в эту функцию не заходит.
Название: Re: вызов одного фм запускает не его, а другой фм
Отправлено: Uukrul от Март 19, 2018, 04:27:38 pm
You are not allowed to view links. Register or Login
/правда, с включенной системной отладкой добрался до вызова функции 'DP_GET_CLIENT_TABLE45A', после которой как раз появляется
Ну у меня такой функции вообще нет в системе. Так что тут не подскажу...
Название: Re: вызов одного фм запускает не его, а другой фм
Отправлено: Victor Ghost от Март 21, 2018, 09:46:23 am
и на том спасибо =)