SAP 接口主动推送企业微信异常消息

news2024/10/2 12:23:14

在这里插入图片描述
在这里插入图片描述

    "推送企业微信格式
    lv_json = '{ "msgtype": "markdown", "markdown": ' &&
    '{  "content": "### 异常JOB通知\n >JOB名称:' && gt_alv-jobname &&
    ' \n 程序名称:' && gt_alv-progname &&
    ' \n 变式名称:' && gt_alv-variant &&
    ' \n 最后一次执行时间:'
    && gt_alv-sdldate+0(4) &&'/'&& gt_alv-sdldate+4(2) &&'/'&& gt_alv-sdldate+6(2) && ','
    && gt_alv-sdltime+0(2) &&':'&& gt_alv-sdltime+2(2) &&':'&& gt_alv-sdltime+4(2) &&
    ' \n 频率:<font color=\"info\">**'&& gt_alv-pl &&'**</font> \n ' &&
    '距最后一次执行时间: <font color=\"warning\">**' && gt_alv-min_c && '**</font> '&&
    ' \n 检查时间:'
    && gt_alv-datum_check+0(4) &&'/'&& gt_alv-datum_check+4(2) &&'/'&& gt_alv-datum_check+6(2) && ','
    && gt_alv-uzeit_check+0(2) &&':'&& gt_alv-uzeit_check+2(2) &&':'&& gt_alv-uzeit_check+4(2) &&
    '"  }'.

源码
FUNCTION zfm_send_check_job.
*“----------------------------------------------------------------------
"“本地接口:
*” IMPORTING
*” VALUE(IV_JSON) TYPE STRING OPTIONAL
*" EXPORTING
*" VALUE(EV_RESULTMSG) TYPE STRING
*" VALUE(EV_STATUS) TYPE I
*" VALUE(EV_MESSAGE) TYPE CHAR100
*" VALUE(EV_STATUS_C) TYPE CHAR1
*"----------------------------------------------------------------------
DATA:lv_url TYPE string.
DATA:lv_http_client TYPE REF TO if_http_client.
DATA:lv_http_method TYPE string.

  • iv_json = ‘{ “msgtype”: “markdown”, “markdown”: { “content”: "### 异常JOB通知\n >JOB名称:’ &&

  •        'XXXXXX \n 程序名称:XXXXXX \n 最后一次执行时间:\n 频率:<font color=\"info\">**5分钟**</font> \n ' &&
    
  •        '距最后一次执行时间: <font color=\"warning\">**50分钟**</font> \n 检查时间:"  }'.
    

    SELECT SINGLE url
    INTO lv_url
    FROM ztip
    WHERE proname = ‘ZFM_SEND_CHECK_JOB’.
    IF sy-subrc <> 0.
    MESSAGE ‘ZTIP配置表没有地址’ TYPE ‘E’ DISPLAY LIKE ‘S’.
    RETURN.
    ENDIF.

    "记录日志使用
    DATA: ls_log_tab TYPE zcat_log_info.
    DATA: lv_nr_range_nr TYPE inri-nrrangenr,
    lv_object TYPE inri-object.

  • *写入日志信息。
    lv_object = ‘ZCANR001’.
    lv_nr_range_nr = ‘01’.
    CALL FUNCTION ‘NUMBER_GET_NEXT’
    EXPORTING
    nr_range_nr = lv_nr_range_nr
    object = lv_object
    quantity = ‘1’
    IMPORTING
    number = ls_log_tab-zlogn "日志编号。
    EXCEPTIONS
    interval_not_found = 1
    number_range_not_intern = 2
    object_not_found = 3
    quantity_is_0 = 4
    quantity_is_not_1 = 5
    interval_overflow = 6
    buffer_overflow = 7
    OTHERS = 8.
    CALL TRANSFORMATION id
    SOURCE
    lv_url = lv_url
    iv_json = iv_json
    RESULT XML ls_log_tab-reque .
    ls_log_tab-zsyss = ‘企业微信消息’ .
    ls_log_tab-funco = ‘ZFM_SEND_CHECK_JOB’.
    ls_log_tab-intern = ‘后台JOB检查结果自动推送企业微信’ .
    ls_log_tab-ernam = sy-uname .
    ls_log_tab-erdat = sy-datum .
    ls_log_tab-ertim = sy-uzeit .
    ls_log_tab-ftype = ‘SOAP’ .
    MODIFY zcat_log_info FROM ls_log_tab .
    COMMIT WORK AND WAIT .

"URL接连
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = lv_url
IMPORTING
client = lv_http_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH
sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

CHECK lv_http_client IS NOT INITIAL.

lv_http_method = if_http_request=>co_request_method_post.
lv_http_client->request->set_method( lv_http_method ).

lv_http_client->propertytype_logon_popup = lv_http_client->co_disabled.

CALL METHOD lv_http_client->request->set_header_field
EXPORTING
name = ‘Content-Type’
value = ‘application/json’.

DATA(lv_len) = strlen( iv_json ).

CALL METHOD lv_http_client->request->set_cdata
EXPORTING
data = iv_json
offset = 0
length = lv_len.

"发送请求
lv_http_client->send( EXCEPTIONS http_communication_failure = 1
http_invalid_state = 2 ).

IF sy-subrc <> 0.
"操作失败,获取失败原因
lv_http_client->get_last_error( IMPORTING message = ev_resultmsg ).

ELSE.
"读取远程服务返回的处理过结果。
lv_http_client->receive( EXCEPTIONS http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3 ).
IF sy-subrc <> 0 .
lv_http_client->get_last_error( IMPORTING message = ev_resultmsg ).
ELSE.
"读取返回返回内容
ev_resultmsg = lv_http_client->response->get_cdata( ).
"获取HTTP返回值
lv_http_client->response->get_status( IMPORTING code = ev_status ).
ENDIF.
ENDIF.

IF lv_http_client IS NOT INITIAL.
CALL METHOD lv_http_client->close.
ENDIF.

"{“errcode”:0,“errmsg”:"ok. WARNING: json missing last curly brackets. "}
TYPES:BEGIN OF ty_json,
errcode TYPE string,
errmsg TYPE string,
END OF ty_json.

DATA:ls_json TYPE ty_json.
"解析异常捕捉
TRY.
CALL METHOD /ui2/cl_json=>deserialize
EXPORTING
json = ev_resultmsg
CHANGING
data = ls_json.

  IF ls_json-errcode = '0'.
    ev_message = ls_json-errmsg.
    ev_status_c = 'S'.

  ELSE.
    ev_message = ev_resultmsg.
    ev_status_c = 'E'.

  ENDIF.

CATCH cx_sy_move_cast_error.
  ev_message = ev_resultmsg.
  ev_status_c = 'E'.

ENDTRY.

*调用日志。
CALL TRANSFORMATION id
SOURCE
ev_message = ev_message
ev_status_c = ev_status_c
ev_resultmsg = ev_resultmsg
ev_status = ev_status
RESULT XML ls_log_tab-respo .
REPLACE FIRST OCCURRENCE OF ‘/’ IN ls_log_tab-innid WITH space .
CONDENSE ls_log_tab-innid .

UPDATE zcat_log_info
SET respo = ls_log_tab-respo
innid = ls_log_tab-innid
ifmsg = ev_status_c
WHERE zlogn = ls_log_tab-zlogn.
IF sy-subrc = 0 .
COMMIT WORK AND WAIT .
ENDIF .

ENDFUNCTION.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/54412.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

戟星安全实验室|五分钟教你挖掘小程序漏洞

戟星安全实验室 忆享科技旗下高端的网络安全攻防服务团队.安服内容包括渗透测试、代码审计、应急响应、漏洞研究、威胁情报、安全运维、攻防演练等。 本文约1252字&#xff0c;阅读约需5分钟。 前言 现在大多小程序反编译教程所使用的都是node.js&#xff0c;操作过程较为麻烦…

第一周练习——认识复杂度和简单排序算法

前言&#xff1a; &#x1f44f;作者简介&#xff1a;我是笑霸final&#xff0c;一名热爱技术的在校学生。 &#x1f4dd;个人主页&#xff1a;个人主页1 || 笑霸final的主页2 &#x1f4d5;系列专栏&#xff1a;《数据结构与算法》 &#x1f4e7;如果文章知识点有错误的地方&a…

Mediapipe学习记录

学习文档 1、Google MediaPipe&#xff1a;设备端机器学习【完整解决方案】背后的技术实现 - 极术社区 - 连接开发者与智能计算生态 2、【转载】Google MediaPipe&#xff1a;设备端机器学习【完整解决方案】背后的技术实现 3、MediaPipe框架结构 - 走看看 Handtracking封装…

qt creator 设置 项目依赖关系

qt creator中有两种设置项目依赖关系的方式。 1、对于有依赖的项目&#xff0c;如果工程比较简单&#xff0c;可以将所有项目放到一个空的项目下&#xff0c;然后显示地指定从属关系&#xff0c;参考&#xff1a;qmake TEMPLATE subdirs_丘上人的博客-CSDN博客 2、通过qt cre…

leecode#Excel表列序号#组合两个表

题目描述&#xff1a; 给你一个字符串 columnTitle &#xff0c;表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 分析&#xff1a; 法1&#xff0c;进制转换 这道题要求将Excel 表中的列名称转换成相对应的列序号。由于Excel 表的列名称由大写字母组成&#xff…

vue学习53~60(Vue组件化编程)

2 Vue组件化编程 2.1 模块与组件、模块化与组件化 2.1.1 模块 理解:向外提供特定功能的js程序,一般就是一 个js文件为什么: js 文件很多很复杂作用:复用js,简化js的编写,提高js运行效率 2.1.2 组件 理解:用来实现局部(特定)功能效果的代码集合(html/css/js/image…)为什么…

正大国际期货:外盘期货交易中常见的五类技术分析方法

外盘期货交易中&#xff0c;技术分析是必不可少的&#xff0c;技术分析是指以市场行为为研究对象&#xff0c;以判断市场趋势并跟随趋势的周期性变化来进行一切金融衍生物交易决策的方法的总和。常用的技术方法大体上可以分五大类&#xff1a;指标类、切线类、形态类、波浪类、…

安卓程序逆向与防护

安卓程序逆向与防护实际用处代码打包生成apk的步骤程序基础逆向步骤程序基础防御代码混淆针对逆向工具的防御手段ProguardSO文件防止二次打包程序进阶逆向攻击实战练习逆向简易安卓程序实际用处 1.当想要获得一款前后端分离的安卓程序的数据时&#xff0c;一般会考虑抓包后端传…

Kanzi:关于kanzi的一点杂谈

概述&#xff1a; 做过开发的小伙伴在初次接触Kanzi Studio 这个开发工具时&#xff0c;可能有点摸不着头脑&#xff0c;由于 它不像Android studio 也 不像QT &#xff0c;而且最大的一个区别是&#xff1a;kanzi基本不用写代码逻辑来控制程序显示UI&#xff0c;但是Android …

做外贸一定要知道的20条经验教训

做外贸你必须知道的20课&#xff0c;由米贸搜为你整理如下: 1.在工厂里&#xff0c;客人抱怨价格太高的时候&#xff0c;我总是说一分钱一分货&#xff0c;质量好的回复。进入一家贸易公司后&#xff0c;我知道价格才是硬道理&#xff0c;尤其是大客人。对价格的考虑肯定高于对…

1776年美国才建国,那一年中国在干什么?

时代淘汰你&#xff0c;都不会跟你打一声招呼。时代的残酷性&#xff0c;对人如此&#xff0c;对国家也是这般。美国的历史是太嫩了&#xff0c;在1776年才得以建国。但在这年&#xff0c;美国踏上了工业化革命的节奏&#xff0c;走上了扬帆起航之旅&#xff0c;逐步成为了超级…

JavaIO流处理笔记(万字总结)

学习视频561-JavaSE进阶-IO流概述_哔哩哔哩_bilibili 目录 IO流概述 IO流的分类 IO流四大家族 FileInputStream初步(并非最终方法) FileInputStream循环读(并非最终方法) 往byte数组中读 FileInputStream最终版 FileInputStream的其他常用方法 FileOutputStream的使用…

Kamiya丨Kamiya艾美捷抗冷休克结构域蛋白E1说明书

Kamiya艾美捷抗冷休克结构域蛋白E1化学性质&#xff1a; 物种反应性&#xff1a;人类其他未知物种。 Ig同种型&#xff1a;正常兔全血抗体 免疫原&#xff1a;表达重组CSDE1&#xff08;Met1~Val245&#xff09;在大肠杆菌中 格式&#xff1a;500g/mL多克隆抗体在0.01M PBS…

【Redis】List类型和底层原理

文章目录List类型1.List介绍1.1常用命令2.List底层实现3.ziplist剖析3.1ziplist结构3.2创建一个空的ziplist3.3ziplist的元素节点结构3.4ziplisqt的连锁更新3.5ziplist的缺陷4.quicklist剖析4.1quicklist表头结构5.List的应用场景----消息队列5.1保证消息保序5.2处理重复的消息…

Ubuntu搭建本地web站点,并内网穿透实现公网访问

本次教程我们通过搭建Apache服务&#xff0c;部署一个简单的静态样例站点&#xff0c;并使用cpolar内网穿透将内网样例站点发布到公网来进行演示。 1. 设置 Apache Web 服务器 1.1 安装Apache Web sudo apt-get install apache2 -y1.2 启动Apache Web sudo service apache2…

[附源码]计算机毕业设计springboot校园招聘微信小程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]计算机毕业设计自行车租赁管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

CSS盒子模型

&#x1f353;个人主页&#xff1a;bit.. &#x1f352;系列专栏&#xff1a;Linux(Ubuntu)入门必看 C语言刷题 数据结构与算法 HTML和CSS3 目录 1.盒子模型 1.2盒子模型&#xff08;Box Model&#xff09;组成 1.3边框&#xff08;border&#xff09; 1.4 表格的…

异常概述、常见异常 、自定义异常 、重载重写的异常区别

1.异常概述 程序运行过程中任何打断程序正常流程的情况称为异常或错误。比如:文件打不开、网络中断、操作符越界、类加载找不到等。 Java程序在执行过程中所发生的异常事件可分为两类&#xff1a; public class Test {public static void main (string [] args){stri…

靶向嵌合体PEG-ethoxycarbonyl-propanoic/Dodecaethylene glycol

蛋白水解靶向嵌合体(proteolysis targeting chimeras,PROTACs)通过连接基团将靶蛋白配体与E3连接酶配体利用化学键连接,将E3连接酶“募集”到靶蛋白附近,并利用细胞内的泛素-蛋白酶体系统,实现靶蛋白的泛素化标记和蛋白降解。靶蛋白一旦被降解,PROTACs分子便游离出来,参与到下一…