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中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

SpringCloud集成AlloyDB的示例代码

《SpringCloud集成AlloyDB的示例代码》AlloyDB是GoogleCloud提供的一种高度可扩展、强性能的关系型数据库服务,它兼容PostgreSQL,并提供了更快的查询性能... 目录1.AlloyDBjavascript是什么?AlloyDB 的工作原理2.搭建测试环境3.代码工程1.

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

SpringBoot集成SOL链的详细过程

《SpringBoot集成SOL链的详细过程》Solanaj是一个用于与Solana区块链交互的Java库,它为Java开发者提供了一套功能丰富的API,使得在Java环境中可以轻松构建与Solana... 目录一、什么是solanaj?二、Pom依赖三、主要类3.1 RpcClient3.2 Public

SpringBoot3集成swagger文档的使用方法

《SpringBoot3集成swagger文档的使用方法》本文介绍了Swagger的诞生背景、主要功能以及如何在SpringBoot3中集成Swagger文档,Swagger可以帮助自动生成API文档... 目录一、前言1. API 文档自动生成2. 交互式 API 测试3. API 设计和开发协作二、使用

SpringBoot如何集成Kaptcha验证码

《SpringBoot如何集成Kaptcha验证码》本文介绍了如何在Java开发中使用Kaptcha生成验证码的功能,包括在pom.xml中配置依赖、在系统公共配置类中添加配置、在控制器中添加生成验证... 目录SpringBoot集成Kaptcha验证码简介实现步骤1. 在 pom.XML 配置文件中2.

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。