Sapui5 从后端到客户端的ABAP AMC通道不';行不通

Sapui5 从后端到客户端的ABAP AMC通道不';行不通,sapui5,abap,channel,Sapui5,Abap,Channel,进入ABAP渠道协作,尝试实现4个场景,所有场景都使用PCP协议,借助一些非常好的帖子。前两个由作者提供,只有所做的更改与频道从文本到PCP的转换相关 来自SAPUI5客户端的Websocket调用,来自后端的响应 基于此,它工作得很好 后端通信 基于,也可以很好地工作 以下是两种方案都有效的AMC通道配置(方案1的类,方案2的报告): 让前两个有效,尝试将它们结合起来 通过websocket从客户端发送消息,传递到SAP会话 工作正常(我从SAPUI5客户端发送了消息,GUI后端会话收到了消

进入ABAP渠道协作,尝试实现4个场景,所有场景都使用PCP协议,借助一些非常好的帖子。前两个由作者提供,只有所做的更改与频道从文本到PCP的转换相关

  • 来自SAPUI5客户端的Websocket调用,来自后端的响应
  • 基于此,它工作得很好

  • 后端通信
  • 基于,也可以很好地工作

    以下是两种方案都有效的AMC通道配置(方案1的类,方案2的报告):

    让前两个有效,尝试将它们结合起来

  • 通过websocket从客户端发送消息,传递到SAP会话
  • 工作正常(我从SAPUI5客户端发送了消息,GUI后端会话收到了消息),我一删除APC通道接收器类,下面是新配置

  • 来自后端的消息,传递到SAPUI5客户端(实际上,其他3个仅用于到达此处)
  • 其背后的想法是从“授权程序”选项卡中删除报告接收器,并再次将其替换为APC接收器类,只是这次定义为“通过会话接收”,因此我可以从发送方报告接收消息并将其转发给客户端。调用SAPUI5应用程序,按预期打开APC通道的连接,调用后端报告,发送方应用程序正确发送消息(sy subrc=0,无异常),但似乎没有任何进展,因为a)客户端中没有显示任何内容,b)(最重要的)未命中APC类的on_message方法内的断点(未调用方法)

    假设所有其他3个场景都正常工作,那么我是否遗漏了什么/我应该看一看的某个特定点,或者我是否完全错误地理解了事情,并且场景3“顺便”工作?场景4 AMC配置如下


    您是否将推送通道绑定到特定APC通道

    METHOD if_apc_ws_extension~on_start.
    
      TRY.
    * bind the WebSocket connection to the AMC channel
    DATA(lo_binding) = i_context->get_binding_manager( ).
    lo_binding->bind_amc_message_consumer( i_application_id = ‘YAMC_TEST’
    i_channel_id      = ‘/ping’ ).
    CATCH cx_apc_error INTO DATA(lx_apc_error).
    DATA(lv_message) = lx_apc_error->get_text( ).
    MESSAGE lx_apc_error->get_text( ) TYPE ‘E’.
    ENDTRY.
    
    ENDMETHOD.
    

    您是否将推送通道绑定到特定APC通道

    METHOD if_apc_ws_extension~on_start.
    
      TRY.
    * bind the WebSocket connection to the AMC channel
    DATA(lo_binding) = i_context->get_binding_manager( ).
    lo_binding->bind_amc_message_consumer( i_application_id = ‘YAMC_TEST’
    i_channel_id      = ‘/ping’ ).
    CATCH cx_apc_error INTO DATA(lx_apc_error).
    DATA(lv_message) = lx_apc_error->get_text( ).
    MESSAGE lx_apc_error->get_text( ) TYPE ‘E’.
    ENDTRY.
    
    ENDMETHOD.
    

    是的,我有正确的声明,场景1已经工作了,但只是为了安全起见再次检查。不过,谢谢,值得一试。是的,我有正确的声明,场景1已经工作了,但只是为了安全起见再次检查。不过,谢谢,值得一试