помогает, EXCEPTION OTHERS тоже.
Пример для воспроизведения
DATA input TYPE string VALUE '111'.
DATA output TYPE c LENGTH 2.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = input
IMPORTING
output = output.
Интересно, а CATCH SYSTEM-EXCEPTIONS сработает? https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abapcatch_sys.htm
DATA input TYPE string VALUE '111'. DATA output_tmp TYPE string. DATA output TYPE c LENGTH 2. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = input IMPORTING output = output_tmp. TRY . output = EXACT #( output_tmp ). CATCH cx_sy_conversion_error INTO DATA(exc). ENDTRY.
интересный подход, спасибо)
кинь дамп сюда
А разве это решение? Формулировка ведь была не "как получить значение вывода, возвращаемого ФМом, в char2", а как "поймать дамп" (хоть он и не исключение) при передаче в ФМ несоответствующего по типу параметра (ну, неочевидно не соответствующего, конечно, т.к. в параметрах ФМ clike)
в таком случае решение это вызов через tRFC / qRFC / bgRFC и автоматический анализ на дамп
Тоже были подобные мысли, чтобы не прерывался основной процесс выполнения. Но вот про то, что возможен анализ дампа - про это не знал. Там в SY-msgty = A можно анализировать? Или через интерфейс +RFC в exceptions можно анализировать?
надо пробовать, смотреть, готового ответа нет
Действительно, это не решение изначальной проблемы. Но в моем случае подходит
Изначально из Вашего посыла я понял, что интересует технический аспект предотвращения дампов подбного рода, а не получение результата из ФМ. :) Есть ещё одного рода дампы - при несовпадении типов формального и фактического параметров ФМ на этапе компиляции нет даже предупреждений, а в runtime получаем дамп. И тут никак это не перехватить, нужно привести типы. И в предложенном решении, поскольку используются char 2 и string, достаточно простого присвоения - дампа не должно быть. char, string могут содержать любые символы, и исключения конвертации не возникнет - разница только в длине значений переменных - в char2 положатся 2 символа из string
Соглашусь: при вызове ФМ стал маниакально проверять типы, а при сомнении везде CONV писать. Иначе нет-нет, да и прилетит дамп подобный.
Бывает даже разница в стандартных ФМ - если отличаются версии платформ, могут отличаться типы параметров, хоть и редкто это встречается. Не вспомню, какой это был ФМ..
Обсуждают сегодня