如何手动实例化BSP控制器

时间:2013-02-21 23:04:36

标签: sap abap sap-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 个答案:

答案 0 :(得分:2)

据我所知,BSP控制器只能在ICF处理中实例化,因为它从内核中检索有关调用的信息。我不确定你为什么要首先为UI安装单元测试,除非你没有将UI和业务逻辑分开,因为你对“提升”的评论建议....