ABAP - SAP与企业微信集成

2024-06-08 20:04
文章标签 微信 企业 集成 sap abap

本文主要是介绍ABAP - SAP与企业微信集成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 最近接到一个SAP直接给企业微信推送消息的需求,说实话之前一直没接触过,脑袋空空的,最终通过在百度搜索案例成功解决了,百度虽然一直被诟病,但却无法否认它的神奇。
  • 实现效果

  • 实现思路:从需求出发,SAP给企业微信推送消息,其本质上是SAP调用企业微信对外发布的API,按照这个思路去找企业微信的API就好了。
  • 1.获取企业内部开发>服务端API>开发指南>获取access_tokenicon-default.png?t=N7T8https://developer.work.weixin.qq.com/document/path/910392.企业内部开发>服务端API>消息推送>发送应用消息icon-default.png?t=N7T8https://developer.work.weixin.qq.com/document/path/90236 
  • 开发技巧
  1. 获取access_token请求地址: https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=企业ID&corpsecret=SECRET;两个参数企业ID和SECRET可以去找企业微信管理员的同事获取,拿到两个参数可以在postman测试;
  2. 根据第一步获取的ACCESS_TOKEN再次调用企业微信API发送应用消息;请求地址: https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN


  • ABAP 代码
    DATA lv_get_url   TYPE string.
    DATA lv_post_url  TYPE string.TYPES:BEGIN OF ty_get_receive,errcode      TYPE i,errmsg       TYPE string,access_token TYPE string,expires_in   TYPE i.
    TYPES:END OF ty_get_receive.DATA ls_get_receive TYPE ty_get_receive.TYPES:BEGIN OF ty_content,content TYPE string.
    TYPES:END OF ty_content.TYPES:BEGIN OF ty_post_request,touser                   TYPE string,msgtype                  TYPE string,agentid                  TYPE i,text                     TYPE ty_content,safe                     TYPE i,enable_id_trans          TYPE i,enable_duplicate_check   TYPE i,duplicate_check_interval TYPE i.
    TYPES:END OF ty_post_request.DATA ls_post_request TYPE ty_post_request.TYPES:BEGIN OF ty_post_receive,errcode TYPE i,errmsg  TYPE string,msgid   TYPE string.
    TYPES:END OF ty_post_receive.DATA ls_post_receive TYPE ty_post_receive.START-OF-SELECTION.lv_get_url = `https://qyapi.weixin.qq.com/cgi-bin/gettoken?` &&`corpid=企业ID` &&`&corpsecret=企业应用Secret`.ls_post_request-text-content = |外购产品同步销售订单通知:\n|&& |{ sy-datum DATE = ISO } { sy-uzeit TIME = ISO }\n|&& |1234567890|&& |采购订单没有同步销售订单,请知悉! |."设置传输内容ls_post_request-touser = `8073|404|613|646`.ls_post_request-msgtype = `text`.ls_post_request-agentid = 1000061.ls_post_request-safe = 0.ls_post_request-enable_id_trans = 0.ls_post_request-enable_duplicate_check = 0.ls_post_request-duplicate_check_interval = 0.*** 第一步:获取access_token请求cl_http_client=>create_by_url( EXPORTING url    = lv_get_urlIMPORTING client = DATA(io_http_client) ).io_http_client->request->set_content_type( content_type = 'application/json; charset=utf-8' ).io_http_client->request->set_method( if_http_request=>co_request_method_get ).io_http_client->send( EXCEPTIONS http_communication_failure = 1http_invalid_state         = 2  ).IF sy-subrc NE 0.io_http_client->get_last_error( IMPORTING message = DATA(lv_message) code = DATA(lv_code) ).CONCATENATE '获取access_token失败原因:' lv_message INTO lv_message.ENDIF.io_http_client->receive( EXCEPTIONS http_communication_failure = 1http_invalid_state         = 2http_processing_failed     = 3 ).IF sy-subrc EQ 0.DATA(lv_get_res) = io_http_client->response->get_cdata( ).ELSE.io_http_client->get_last_error( IMPORTING message = DATA(lv_msg) code = DATA(lv_code1) ).CONCATENATE '企业微信服务器响应失败原因:' lv_msg INTO lv_msg.ENDIF."将Json报文转换成SAP结构/ui2/cl_json=>deserialize( EXPORTING json = lv_get_respretty_name = /ui2/cl_json=>pretty_mode-camel_caseCHANGING data = ls_get_receive ).IF ls_get_receive-errmsg NE `ok`.MESSAGE '获取access_token失败' TYPE 'E'.ENDIF.*** 第二步:发送到企业微信CLEAR:io_http_client.lv_post_url = `https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=` &&ls_get_receive-access_token.cl_http_client=>create_by_url( EXPORTING url    = lv_post_urlIMPORTING client = io_http_client ).io_http_client->request->set_content_type( content_type = 'application/json; charset=utf-8' ).io_http_client->request->set_method( if_http_request=>co_request_method_post ).DATA(lv_send_data) = /ui2/cl_json=>serialize( data        = ls_post_requestcompress    = abap_falsepretty_name = /ui2/cl_json=>pretty_mode-camel_case ).io_http_client->request->set_cdata( data = lv_send_data ).io_http_client->send( EXCEPTIONS http_communication_failure = 1http_invalid_state         = 2  ).IF sy-subrc NE 0.io_http_client->get_last_error( IMPORTING message = lv_message code = lv_code ).CONCATENATE '发送POST请求给企业微信失败:' lv_message INTO lv_message.ENDIF.io_http_client->receive( EXCEPTIONS http_communication_failure = 1http_invalid_state         = 2http_processing_failed     = 3 ).IF sy-subrc EQ 0.DATA(lv_post_res) = io_http_client->response->get_cdata( ).ELSE.io_http_client->get_last_error( IMPORTING message = lv_msg code = lv_code1 ).CONCATENATE '企业微信服务器响应失败原因:' lv_msg INTO lv_msg.ENDIF."将Json报文转换成SAP结构/ui2/cl_json=>deserialize( EXPORTING json = lv_post_respretty_name = /ui2/cl_json=>pretty_mode-camel_caseCHANGING data = ls_post_receive ).IF ls_post_receive-errmsg NE `ok`.MESSAGE '发送POST请求给企业微信失败' TYPE 'S' DISPLAY LIKE 'E'.ELSE.MESSAGE '发送POST请求给企业微信成功' TYPE 'S'.ENDIF.

这篇关于ABAP - SAP与企业微信集成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1043174

相关文章

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

JAVA集成本地部署的DeepSeek的图文教程

《JAVA集成本地部署的DeepSeek的图文教程》本文主要介绍了JAVA集成本地部署的DeepSeek的图文教程,包含配置环境变量及下载DeepSeek-R1模型并启动,具有一定的参考价值,感兴趣的... 目录一、下载部署DeepSeek1.下载ollama2.下载DeepSeek-R1模型并启动 二、J

Docker部署Jenkins持续集成(CI)工具的实现

《Docker部署Jenkins持续集成(CI)工具的实现》Jenkins是一个流行的开源自动化工具,广泛应用于持续集成(CI)和持续交付(CD)的环境中,本文介绍了使用Docker部署Jenkins... 目录前言一、准备工作二、设置变量和目录结构三、配置 docker 权限和网络四、启动 Jenkins

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

Debezium 与 Apache Kafka 的集成方式步骤详解

《Debezium与ApacheKafka的集成方式步骤详解》本文详细介绍了如何将Debezium与ApacheKafka集成,包括集成概述、步骤、注意事项等,通过KafkaConnect,D... 目录一、集成概述二、集成步骤1. 准备 Kafka 环境2. 配置 Kafka Connect3. 安装 D

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2