创建SAP WebSocket Server使用外部系统连接示例
ABAP连接WEBSocket Server示例
=>Reference
- Introduction to ABAP Channels
- ABAP Channels Examples
- ABAP Channels Part 1: WebSocket Communication Using ABAP Push Channels
- RS_APC_WSP_EXCHANGE_MESSAGE
- ABAP连接 外部WebSocket Server示例
1.在SAP服务端创建一个WebSocket Server
SE80->新建一个abap push Channel(APC)
生成类和服务
导航到类,进行类实施
- 重定义->ON_START;完成后保存退出
METHOD if_apc_wsp_extension~on_start. *call METHOD super->if_apc_wsp_extension~on_start * exporting * i_context = i_context * i_message_manager = i_message_manager * . 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 = 'ZWEBSOCKET_01_AMC' i_channel_id = '/zamc01' ). "send the message on websocket connection DATA(lo_message) = i_message_manager->create_message( ). lo_message->set_text( |[CLIENT:{ sy-mandt }/User:{ sy-uname }]: 成功连接!| ). i_message_manager->send( lo_message ). 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.
- 重定义->ON_MESSAGE;完成后激活实施类、保存退出
METHOD if_apc_wsp_extension~on_message. *call METHOD super->if_apc_wsp_extension~on_message * exporting * i_message = i_message * i_message_manager = i_message_manager * i_context = i_context * . DATA: lo_producer TYPE REF TO if_amc_message_producer_text. TRY. " retrieve the text message DATA(lv_text) = i_message->get_text( ). lo_producer ?= cl_amc_channel_manager=>create_message_producer( i_application_id = 'ZWEBSOCKET_01_AMC' i_channel_id = '/zamc01' ). lo_producer->send( i_message = |[CLIENT:{ sy-mandt }/User:{ sy-uname }] Send Message:{ lv_text }| ). * " create the message object * DATA(lo_message) = i_message_manager->create_message( ). * lo_message->set_text( |[CLIENT:{ sy-mandt }/User:{ sy-uname }] Send Message:{ lv_text }| ). * i_message_manager->send( lo_message ). CATCH cx_amc_error INTO DATA(lx_amc_error). MESSAGE lx_amc_error->get_text( ) TYPE 'E'. CATCH cx_apc_error INTO DATA(lx_apc_error). MESSAGE lx_apc_error->get_text( ) TYPE 'E'. ENDTRY. ENDMETHOD.
- 重定义->ON_START;完成后保存退出
SE80->新建一个abap message channel(AMC)
Application Channels必须和ON_START ON_MESSAGE中的 i_application_id i_channel_id对应
设置其他参数,设置CLASS验证程序用于联动同步多客户端消息
激活APC;导航到服务
- 配置服务默认登录,否则需要WebSocket Client实现认证;然后激活服务(暂时未测试实现)
- 配置服务默认登录,否则需要WebSocket Client实现认证;然后激活服务(暂时未测试实现)
测试服务(方法一:直接测试APC服务)
- 测试页面可看到发布的WebSocket连接地址(创建服务会同时生成Http/Https协议的Websocket;可通过地址区分)
--HTTP协议(ws表示http协议): APC测试地址: http://xxx.com:8000/sap/bc/apc/sap/zwebsocket_01?sap-client=310 WebSocket Server连接地址: ws://xxx.com:8000/sap/bc/apc/sap/zwebsocket_01 --HTTPS协议(wss表示https协议): APC测试地址: https://xxx.com:8143/sap/bc/apc/sap/zwebsocket_01?sap-client=310 WebSocket Server连接地址: wss://xxx.com:8143/sap/bc/apc/sap/zwebsocket_01
测试服务(方法二:WDR_TEST_APC 测试APC服务)
- 有时候直接测试APC服务显示 “HTTP ERROR 501” 但是实际上APC服务是成功运行的;这时我们可以用 WDR_TEST_APC 测试
- SICF->定位到服务 WDR_TEST_APC,并运行测试
- 经测试可以正常连接到APC 服务
--HTTP协议(ws表示http协议): APC测试地址: http://xxx.com:8000/sap/bc/webdynpro/sap/WDR_TEST_APC_WSP?SAP-CLIENT=310&SAP-LANGUAGE=ZH# WebSocket Server连接地址: ws://xxx.com:8000/sap/bc/apc/sap/zwebsocket_01 --HTTPS协议(wss表示https协议): APC测试地址: https://xxx.com:8143/sap/bc/webdynpro/sap/WDR_TEST_APC_WSP?SAP-CLIENT=310&SAP-LANGUAGE=ZH# WebSocket Server连接地址: wss://xxx.com:8143/sap/bc/apc/sap/zwebsocket_01
- 有时候直接测试APC服务显示 “HTTP ERROR 501” 但是实际上APC服务是成功运行的;这时我们可以用 WDR_TEST_APC 测试
2.连接测试
- WDR_TEST_APC 测试平台用非默认账号登录连接到WebSocket服务
- 外部WebSocket客户端,使用默认账号身份登录
- 互相发送消息测试
post SAP-Garson
原文链接:https://blog.csdn.net/qq_30797051/article/details/123611706文章来自于网络,如果侵犯了您的权益,请联系站长删除!