169 похожих чатов

Всем привет! Кто-нибудь знает как поймать дамп CONV_EXIT_FIELD_TOO_SHORT? TRY/CATCH не

помогает, 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.

13 ответов

79 просмотров

Интересно, а 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.

Alexander-Nosov Автор вопроса
Oleg Bashkatov
DATA input TYPE string VALUE '111'. DATA output_tm...

интересный подход, спасибо)

кинь дамп сюда

Alexander Nosov
интересный подход, спасибо)

А разве это решение? Формулировка ведь была не "как получить значение вывода, возвращаемого ФМом, в char2", а как "поймать дамп" (хоть он и не исключение) при передаче в ФМ несоответствующего по типу параметра (ну, неочевидно не соответствующего, конечно, т.к. в параметрах ФМ clike)

Alexander Rybin
А разве это решение? Формулировка ведь была не "ка...

в таком случае решение это вызов через tRFC / qRFC / bgRFC и автоматический анализ на дамп

Iliya Kuznetsov
в таком случае решение это вызов через tRFC / qRFC...

Тоже были подобные мысли, чтобы не прерывался основной процесс выполнения. Но вот про то, что возможен анализ дампа - про это не знал. Там в SY-msgty = A можно анализировать? Или через интерфейс +RFC в exceptions можно анализировать?

Alexander Rybin
Тоже были подобные мысли, чтобы не прерывался осно...

надо пробовать, смотреть, готового ответа нет

Alexander-Nosov Автор вопроса
Alexander Rybin
А разве это решение? Формулировка ведь была не "ка...

Действительно, это не решение изначальной проблемы. Но в моем случае подходит

Alexander Nosov
Действительно, это не решение изначальной проблемы...

Изначально из Вашего посыла я понял, что интересует технический аспект предотвращения дампов подбного рода, а не получение результата из ФМ. :) Есть ещё одного рода дампы - при несовпадении типов формального и фактического параметров ФМ на этапе компиляции нет даже предупреждений, а в runtime получаем дамп. И тут никак это не перехватить, нужно привести типы. И в предложенном решении, поскольку используются char 2 и string, достаточно простого присвоения - дампа не должно быть. char, string могут содержать любые символы, и исключения конвертации не возникнет - разница только в длине значений переменных - в char2 положатся 2 символа из string

Alexander Rybin
Изначально из Вашего посыла я понял, что интересуе...

Соглашусь: при вызове ФМ стал маниакально проверять типы, а при сомнении везде CONV писать. Иначе нет-нет, да и прилетит дамп подобный.

Vladimir K
Соглашусь: при вызове ФМ стал маниакально проверят...

Бывает даже разница в стандартных ФМ - если отличаются версии платформ, могут отличаться типы параметров, хоть и редкто это встречается. Не вспомню, какой это был ФМ..

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта