Исключение CX_SY_REF_IS_INITAL - PullRequest
0 голосов
/ 08 ноября 2019

Я устанавливаю вызов метода из класса

DATA: r_info TYPE REF TO zcl_sv_job_offline_ctrl.


 CALL METHOD r_info->create
    EXPORTING
         is_data   = lr_test_record.

И получаю следующие ошибки:

CX_SY_REF_IS_INITAL

You are trying to access a component with a 'ZERO' object reference (points to nothing). Variable: "R_INFO".

Я что-то упустил?

Ответы [ 2 ]

5 голосов
/ 08 ноября 2019

Вы пропустили создание объекта. поэтому вам необходимо:

create object r_info.

или

r_info = new zcl_sv_job_offline_ctrl( ).

или если существует «фабричный метод» (какой вашметод create указывает)

r_info = zcl_sv_job_offline_ctrl=>create( is_data = lr_test_record ).

Ваше исключение говорит вам, что ссылка (r_info) не связана с объектом в куче. Так что вам нужно сделать один из вышеперечисленных шагов, и тогда он должен работать. (в зависимости от вашего класса)

0 голосов
/ 16 ноября 2019

Извините, у меня пока нет представителя, чтобы комментировать ... Я заметил, что ваш класс - Z, поэтому мне интересно, пытаетесь ли вы создать синглтон-класс. В таком случае. Ваше «Создание» должно быть статичным. Ваш конструктор частный, а ваш экземпляр в личном атрибуте.
Из других комментариев, я согласен, в вашем вопросе отсутствуют некоторые ключевые детали для обеспечения точного ответа.
Если IO_DISPATCHER является частью конструктора, и вы не можете передать значение, вам нужно выкопатьнемного глубже в цели класса. Посмотрим, сможете ли вы дать ему то, что он хочет. Попробуйте «где используется» и посмотрите другие способы использования класса. Вы можете обнаружить, что смотрите на неправильный класс или, по крайней мере, приближаетесь с неправильного направления.
Если create - это какой-то метод в классе, и он не статичен, то вы никогда не заставите его работать, пока не создадитеэкземпляр класса.

Еще одна мысль, которая приходит в голову, - это то, что вы можете быть в правильном месте и просто делать неправильные вещи. Проверьте свои глобальные переменные, чтобы увидеть, существует ли уже экземпляр класса, и пытаетесь ли вы получить доступ к чему-либо через объявление в качестве данных, а не через глобальный экземпляр ?? Все угадайте работу без подробностей.

...