В большинстве случае ABAP-компилятор и ABAP-Runtime показывают один и тот же результат: рекомендации или ошибки. Однако не в 100% случаев. Сниппет ниже демонстрирует один из таких вариантов. (полный код). При активации (компиляции) программа не выдаст ошибки, однако в runtime (при запуске) система остановится и будет runtime error: MOVE_TO_LIT_NOTALLOWED_NODATA. Причина: changing параметр предполагает изменение переменной. А в качестве строки в сниппете указана сортированная таблица. В ней нельзя менять порядок строк; и RUNTIME плохо себя чувствует, когда строка передаётся на changing. При этом компилятор, как можно убедиться – не сообщит об ошибке. Кроме того, реального изменения ключа нет (но теоретически могло быть 😊 ). А вот код ниже (где мы changing поменяли на ссылку и также внесли изменения) уже будет выполнен без проблем 😊. Думаете это фича или баг?) Единственный способ вычислять подобные ситуации являются юнит и DD-тесты (data driven). О них мы также будет активно писать. А
Тройничок: ABAP-Компилятор и ABAP-Runtime и сортированная таблица
9 декабря 20249 дек 2024
23
1 мин