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

相关文章

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

如何用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