Sapforum.Biz

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

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

Столкнулся сейчас с непонятным (для меня и еще нескольких человек из консультантов и абаперов):
имеем фм '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 ПП
Вообще-то:

@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 ДП
это да. я потом в отладчике увидел, что за чем вызвалось.
но не пойму, как (вызвалось и отследить изменения в таблице) :)

/это получается динамический вызов фм идет?
Назва: Re: вызов одного фм запускает не его, а другой фм
Відправлено: Uukrul від Березень 19, 2018, 09:39:21 ДП
Цитата: Victor Ghost від Березень 19, 2018, 07:19:31 ДП
/это получается динамический вызов фм идет?
Динамический вызов ФМ идет если вы видите в коде что-то типа CALL FUNCTION (function_module), т.е. вызов модуля по имени находящемуся в переменной, для этого имя переменной будет в скобах. Ну ли более сложный вариант, если где-то ранее вызывается динамическая генерация программы. В остальных случаях скорее всего у вас не включена отладка системных модулей кода.
Назва: Re: вызов одного фм запускает не его, а другой фм
Відправлено: Victor Ghost від Березень 19, 2018, 03:00:39 ПП
точно! с новым интерфейсом непонятно, в каком месте находятся функции старые привычные.. спасибо :)

/правда, с включенной системной отладкой добрался до вызова функции 'DP_GET_CLIENT_TABLE45A', после которой как раз появляется урезанный текст в таблице, но отладчик в эту функцию не заходит.
Назва: Re: вызов одного фм запускает не его, а другой фм
Відправлено: Uukrul від Березень 19, 2018, 04:27:38 ПП
Цитата: Victor Ghost від Березень 19, 2018, 03:00:39 ПП
/правда, с включенной системной отладкой добрался до вызова функции 'DP_GET_CLIENT_TABLE45A', после которой как раз появляется
Ну у меня такой функции вообще нет в системе. Так что тут не подскажу...
Назва: Re: вызов одного фм запускает не его, а другой фм
Відправлено: Victor Ghost від Березень 21, 2018, 09:46:23 ДП
и на том спасибо =)