ABAP 借助公司封装的钉钉URL,封装的RFC给钉钉发送消息

复制代码
FUNCTION ZRFC_BC_SMSSEND_DINGTALK.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(DESTUSRID) TYPE  CHAR255
*"     VALUE(CONTENT) TYPE  CHAR255
*"     VALUE(SRC) TYPE  CHAR50 OPTIONAL
*"  EXPORTING
*"     VALUE(STATUE) TYPE  BAPI_MTYPE
*"     VALUE(MESSTAB) TYPE  BAPI_MSG
*"----------------------------------------------------------------------
  DATA: LO_HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT,
        LV_LEN         TYPE I,
        LV_SMSURL(200) TYPE C,
        LV_RESPON      TYPE STRING,
        LV_SERVICE     TYPE STRING,
        LV_MSG         TYPE STRING,
        LV_CONTENT     TYPE STRING,
        HTTP_CLIENT    TYPE REF TO IF_HTTP_CLIENT, "http客户端
        LV_SERVER_NAME TYPE ZE_SERVER_NAME,
        LV_SRC         TYPE STRING,
        DEST           LIKE RFCDES-RFCDEST,
        LJSONNODE      TYPE REF TO ZCL_MDP_JSON_NODE,
        L_SAP_COL_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE,
        LV_RESULTS     TYPE STRING.
  DATA: ITAB TYPE TABLE OF STRING.

  DATA: P_CODE   TYPE I,
        P_REASON TYPE STRING.
  SRC = 'SAPS4' && SY-SYSID && SRC.
*https://market.chinajack.com/index.php?receiver=8256&sender=admin&thirdpartyCode=1001&title=尊敬的用户:您好,您的SAP账户(8256)因输错密码多次被锁定,现已经解锁并初始化,密码是(Jk12345678),请妥善保管!&s=/w2/Maintenance/DingTalkSystem/sendMessage/
  LV_CONTENT = CONTENT.
  CALL METHOD CL_HTTP_UTILITY=>ESCAPE_URL
    EXPORTING
      UNESCAPED = LV_CONTENT
    RECEIVING
      ESCAPED   = LV_CONTENT.

  LV_SRC = SRC.
  CALL METHOD CL_HTTP_UTILITY=>ESCAPE_URL
    EXPORTING
      UNESCAPED = LV_SRC
    RECEIVING
      ESCAPED   = LV_SRC.

  SELECT SINGLE VALUE INTO LV_SMSURL
    FROM /THINKWAY/TBUS0P WHERE PPKEY = 'DINGURL' AND EXCHANGE_SYSTEM = 'SMS'.
*  LV_SMSURL = '公司内部封装过的钉钉URL地址 '.
  CONCATENATE  'http://' LV_SMSURL '/index.php?receiver=' DESTUSRID '&title='
  LV_CONTENT '&thirdpartyCode=1001&sender=admin&s=/w2/Maintenance/DingTalkSystem/sendMessage/' INTO LV_SERVICE .

  CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL
    EXPORTING
      URL                = LV_SERVICE
    IMPORTING
      CLIENT             = HTTP_CLIENT
    EXCEPTIONS
      ARGUMENT_NOT_FOUND = 1
      PLUGIN_NOT_ACTIVE  = 2
      INTERNAL_ERROR     = 3
      OTHERS             = 4.
  "设定传输请求内容格式以及编码格式
  HTTP_CLIENT->REQUEST->SET_CONTENT_TYPE( CONTENT_TYPE = 'application/json; charset=utf-8' ).

  "设置http method 为Get
  HTTP_CLIENT->REQUEST->SET_METHOD( IF_HTTP_REQUEST=>CO_REQUEST_METHOD_POST ).

  CALL METHOD HTTP_CLIENT->SEND
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2
      HTTP_PROCESSING_FAILED     = 3
      HTTP_INVALID_TIMEOUT       = 4
      OTHERS                     = 5.

  "接收
  CALL METHOD HTTP_CLIENT->RECEIVE
    EXCEPTIONS
      HTTP_COMMUNICATION_FAILURE = 1
      HTTP_INVALID_STATE         = 2
      HTTP_PROCESSING_FAILED     = 3.
  "提取返回字符串
  LV_RESULTS = HTTP_CLIENT->RESPONSE->GET_CDATA( ).

  DATA: L_JSON_ROOT_OBJECT TYPE REF TO ZCL_MDP_JSON_NODE.
  LJSONNODE = ZCL_MDP_JSON_NODE=>DESERIALIZE( JSON = LV_RESULTS ).
  L_SAP_COL_OBJECT = LJSONNODE->OBJECT_GET_CHILD_NODE( KEY = 'success' ).
  IF L_SAP_COL_OBJECT->VALUE EQ 1.
    STATUE = 'S'.
  ELSE.
    STATUE = 'E'.
  ENDIF.

ENDFUNCTION.

有了这个,可以减少这种低级损耗

相关推荐
tongyiixiaohuang5 天前
MySQL与钉钉数据同步的灵活高效方案详解
android·mysql·钉钉
伟大的大威8 天前
用 AI Agent 给已有测试套件加一层“无人值守“:Hermes + Claude Code + Playwright + 云效 + 钉钉
人工智能·钉钉·hermes
wjc12313139 天前
蓝印RPA|钉钉应用机器人Agent配置说明
机器人·钉钉·rpa
切糕师学AI14 天前
钉钉API双轨制升级:平台演进的两难抉择与技术哲学
架构·钉钉
令狐少侠201116 天前
创建钉钉企业内应用,钉钉AI助手操作钉钉文档
ai·钉钉
Teable任意门互动18 天前
AI原生开源多维表格有哪些?主流开源多维表格对比解析
数据库·开源·excel·钉钉·飞书·开源软件·ai-native
2601_9557819818 天前
OpenClaw 对接 钉钉机器人 全流程指南
机器人·钉钉·open claw安装
组合缺一18 天前
OpenClaw vs SolonCode:绑定飞书与钉钉,到底谁更简单?
ai·钉钉·飞书·ai编程·数字员工·openclaw·soloncode
带刺的坐椅19 天前
OpenClaw vs SolonCode:绑定飞书与钉钉,到底谁更简单?
钉钉·飞书·openclaw·soloncode
极客老王说Agent20 天前
实在Agent跨平台表格自动化实战:钉钉表格与飞书多维表数据无缝同步
自动化·钉钉·飞书