ABAP推送企业微信机器人2-markdown类型<转载>

原文链接:https://blog.csdn.net/huanglin6/article/details/120652147
参数说明

参数是否必填说明
msgtype消息类型,此时固定为markdown
contentmarkdown内容,最长不超过4096个字节,必须是utf8编码

效果展示
在这里插入图片描述
Demo Code


  DATA:LV_TX_ROBOT_WEBHOOK TYPE STRING VALUE 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=50d640d9-9ad6-4d39-98aa-c94c2002e6d4'.
  DATA:LV_ZIF_ID LIKE ZHRT_0001-ZIF_ID,
       LO_HTTP_CLIENT              TYPE REF TO IF_HTTP_CLIENT,
       LV_SERVICE                  TYPE STRING,
       LV_RESULT_STRING            TYPE STRING,
       LV_LEN                      TYPE I,
       LV_MSG                      TYPE STRING,
       LV_MESSAGE                  TYPE STRING,
       LV_HTTP_METHOD              TYPE STRING,
       LV_MEDIA_ID                 TYPE STRING,
       LV_JSON_DATA                TYPE STRING,
       LS_RETURN                   TYPE BAPIRETURN.

  LV_ZIF_ID = 'HR00000032'.
  LV_HTTP_METHOD = IF_HTTP_REQUEST=>CO_REQUEST_METHOD_POST.

  SELECT SINGLE *
    INTO @DATA(LS_ZHRT_0001)
    FROM ZHRT_0001
   WHERE CLIENT EQ @SY-MANDT
     AND ZIF_ID EQ @LV_ZIF_ID.
  IF SY-SUBRC NE 0.
    LS_RETURN-TYPE = 'E'.
    LS_RETURN-MESSAGE = TEXT-E01."接口未配置
    RETURN.
  ENDIF.

  IF LS_ZHRT_0001-ZIF_OPEN EQ SPACE.
    LS_RETURN-TYPE = 'E'.
    LS_RETURN-MESSAGE = TEXT-E01."接口启用
    RETURN.
  ENDIF.
*  IF ET_TABLE[] IS NOT INITIAL.
*
*    CALL FUNCTION 'ZZF_HR_TX_ROBOT_POST_FILE'
*      EXPORTING
*        IV_FIELD_NAME       = IV_FIELD_NAME
*      IMPORTING
*        EV_MEDIA_ID         = LV_MEDIA_ID
*      TABLES
*        ET_TABLE            = ET_TABLE
*              .
*
*  ENDIF.

  LV_SERVICE = LS_ZHRT_0001-ZURL && LS_ZHRT_0001-ZPARA1 .
  REPLACE 'HR_PARA1' IN LV_SERVICE WITH LS_ZHRT_0001-ZPARA1_STR.


  CL_HTTP_CLIENT=>CREATE_BY_URL(
    EXPORTING
      URL                = LV_SERVICE
    IMPORTING
      CLIENT             = LO_HTTP_CLIENT
    EXCEPTIONS
      ARGUMENT_NOT_FOUND = 1
      PLUGIN_NOT_ACTIVE  = 2
      INTERNAL_ERROR     = 3
      OTHERS             = 4 ).

  LO_HTTP_CLIENT->request->set_method( LV_HTTP_METHOD ).

*   "设置字符类别
  CALL METHOD LO_HTTP_CLIENT->request->set_header_field
    EXPORTING
      name  = 'content-type'
      value = 'application/json'.
      LV_MSG =

    '{'                                                                                                  &&
        '"msgtype": "markdown",'                                                                         &&"消息类型,此时固定为markdown
        '"markdown": {'                                                                                  &&
            '"content": "Any question you can find answer in here:[Joker''s Blog](https://blog.csdn.net/huanglin6)"'  &&"markdown内容,最长不超过4096个字节,必须是utf8编码
        '}' &&
    '}'.

    LV_LEN = STRLEN( LV_MSG ).
    CALL METHOD LO_HTTP_CLIENT->REQUEST->SET_CDATA
      EXPORTING
        DATA   = LV_MSG
        OFFSET = 0
        LENGTH = LV_LEN.

  "设置待传输内容
  CALL METHOD LO_HTTP_CLIENT->SEND
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2.
  IF SY-SUBRC <> 0.
    "操作失败,获取失败原因
    LO_HTTP_CLIENT->GET_LAST_ERROR( IMPORTING MESSAGE = LV_MESSAGE ).
    LS_RETURN-MESSAGE = LV_MESSAGE.
    LS_RETURN-TYPE = 'E'.
    RETURN..
  ENDIF.

  "读取远程服务返回的处理过结果。
  CALL METHOD LO_HTTP_CLIENT->RECEIVE
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2
      HTTP_PROCESSING_FAILED     = 3.
  IF SY-SUBRC <> 0 .
    LO_HTTP_CLIENT->GET_LAST_ERROR( IMPORTING MESSAGE = LV_MESSAGE ).
    LS_RETURN-MESSAGE = LV_MESSAGE.
    LS_RETURN-TYPE = 'E'.
    RETURN.
  ELSE.
    LV_RESULT_STRING = LO_HTTP_CLIENT->RESPONSE->GET_CDATA( ).
    CALL FUNCTION 'ZHTTP_UNICODE_TO_ZH'
      EXPORTING
        IV_STRING = LV_RESULT_STRING
        IV_FLAG   = '\u'
      IMPORTING
        RV_STRING = LV_RESULT_STRING.
    LV_JSON_DATA = LV_RESULT_STRING.

  ENDIF.

总结
完美支持Markdown语法,稍微需要注意的是如果有特殊字符,如’(单引号)这种的,需要按照ABAP的语法转换后方可以使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值