Как создать экземпляр контроллера BSP вручную

Я пробовал изначально

DATA: cl_rest_bo_list TYPE REF TO zcl_rm_rest_bulk_orders.
CREATE OBJECT cl_rest_bo_list.
cl_rest_bo_list->request->if_http_request~set_method( 'GET' ).
cl_rest_bo_list->do_request( ).

Это привело к окончанию, доступ к request который не был инициализирован.

Затем я попытался создать экземпляр запроса и ответа

DATA: cl_rest_bo_list TYPE REF TO zcl_rm_rest_bulk_orders.
DATA: cl_request  TYPE REF TO cl_http_request.
DATA: cl_response TYPE REF TO cl_http_response.
CREATE OBJECT cl_rest_bo_list.
CREATE OBJECT cl_request.
CREATE OBJECT cl_response.
request->if_http_request~set_method( 'GET' ).
cl_rest_bo_list->request = cl_request.
cl_rest_bo_list->response = cl_response.    
cl_rest_bo_list->do_request( ).

Это, по крайней мере, не завершается, но set_method возвращает код ошибки здесь и фактически не устанавливает метод.

  system-call ict
    did
      ihttp_scid_set_request_method
    parameters
      m_c_msg                            " > c handle
      method                             " > method
      m_last_error.                      " < return code

Так как Google не знает о ihttp_scid_set_request_method, я почти уверен, что я делаю это неправильно. Может быть, не предусмотрено создание экземпляров контроллеров BSP, хотя я не уверен, что это означает для ABAP-модульного тестирования контроллеров BSP.

В качестве решения на данный момент я поднял всю бизнес-логику в отдельный метод, который вызывается / тестируется без проблем. Тем не менее, если кто-нибудь знает, как создавать экземпляры классов CL_BSP_CONTROLLER2, это было бы здорово.

1 ответ

Решение

Насколько я знаю, контроллер BSP может быть создан только изнутри обработки ICF, поскольку он получает информацию о вызове из ядра. Я не уверен, почему вы хотите установить модульные тесты для пользовательского интерфейса, если только вы не разделили пользовательский интерфейс и бизнес-логику, как следует из вашего комментария об "отмене"....

Другие вопросы по тегам