Как получить переменную вне TEST-INJECTION? - PullRequest
2 голосов
/ 08 мая 2019

Я хотел бы иметь доступ к переменной вне области действия TEST-INJECTION. Чтобы уточнить, что я имею в виду, рассмотрим следующий пример:

DATA lt_doc_import TYPE zcl_za_doc_cleaner=>tt_doc_protocol.
MOVE-CORRESPONDING mo_dc_cleaner->mt_doc_import TO lt_doc_import.

TEST-INJECTION query_doc_protocol.
  rt_doc_protocol = lt_doc_import.
END-TEST-INJECTION.

DATA(lt_protocol) = mo_dc_cleaner->query_doc_protocol( ).

mo_dc_cleaner->filter_delete_protocol(
  EXPORTING
    it_doc_import = mo_dc_cleaner->mt_doc_import
    it_doc_protocol = lt_protocol
  IMPORTING
    et_doc_import = mo_dc_cleaner->mt_doc_import
    et_msg = DATA(lt_msg)
).

DESCRIBE TABLE lt_msg LINES DATA(lv_msg).
DESCRIBE TABLE mo_dc_cleaner->mt_doc_import LINES DATA(lv_doc_import).

Компилятор жалуется, что переменная lt_doc_import неизвестна. Как получить переменную снаружи от TEST-INJECTION?

1 Ответ

3 голосов
/ 08 мая 2019

Цитата из документации SAP по теме есть что ...

Инъекции не могут получить доступ к типам и объектам, которые не видны в месте указанного тестового шва.

Это относится, в частности, к типам и объектам тестового класса и тестового метода, определенных в инъекции. Эти типы и объекты размещаются в местоположении оператора TEST-INJECTION, но не видны в инъекции.

Так что, к сожалению, невозможно получить доступ к переменным, которые находятся в той же области видимости, что и TEST-INJECTION. Вы можете получить доступ только к тем переменным, которые также отображаются в той же области, что и TEST-SEAM.

...