ABAP推送企业微信机器人6-模版卡片类型<转载>

原文链接:https://blog.51cto.com/u_15291229/4905465
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
效果展示
在这里插入图片描述
Demo Code

*  PARAMETERS:P_FILE TYPE STRING.

  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,
       LV_BASE64                   TYPE STRING,        "BASE64
       LV_BASE64_MD5               TYPE STRING,        "BASE64
       LV_BASE64_MD5_DECODE        TYPE STRING,        "BASE64
       LS_RETURN                   TYPE BAPIRETURN.

*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. "弹出选择文件对话框
*  PERFORM FRM_GET_FILE.

START-OF-SELECTION.

  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.

*  PERFORM FRM_GET_BASE64 CHANGING LV_BASE64 LV_BASE64_MD5.
*  PERFORM FRM_GET_BASE64_MD5 USING LV_BASE64 CHANGING LV_BASE64_MD5 .


  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": "template_card",'                                                         &&
        '"template_card": {'                                                                  &&
        '"card_type":"text_notice",'                                                          &&
        '"source":{'                                                                          &&
            '"icon_url":"https://wework.qpic.cn/wwpic/252813_jOfDHtcISzuodLa_1629280209/0",'  &&
            '"desc":"企业微信"'                                                               &&
        '},'                                                                                  &&
        '"main_title":{'                                                                      &&
            '"title":"欢迎使用企业微信",'                                                     &&
            '"desc":"您的好友正在邀请您加入企业微信"'                                         &&
        '},'                                                                                  &&
        '"emphasis_content":{'                                                                &&
            '"title":"100",'                                                                  &&
            '"desc":"数据含义"'                                                               &&
        '},'                                                                                  &&
        '"sub_title_text":"下载企业微信还能抢红包!",'                                        &&
        '"horizontal_content_list":['                                                         &&
            '{'                                                                               &&
                '"keyname":"邀请人",'                                                         &&
                '"value":"张三"'                                                              &&
            '},'                                                                              &&
            '{'                                                                               &&
                '"keyname":"企微官网",'                                                       &&
                '"value":"点击访问",'                                                         &&
                '"type":1,'                                                                   &&
                '"url":"https://work.weixin.qq.com/?from=openApi"'                            &&
            '}'                                                                              &&
*            '{'                                                                               &&
*                '"keyname":"企微下载",'                                                       &&
*                '"value":"企业微信.apk",'                                                     &&
*                '"type":2,'                                                                   &&
*                '"media_id":"MEDIAID"'                                                        &&
*            '}'                                                                               &&
        '],'                                                                                  &&
        '"jump_list":['                                                                       &&
            '{'                                                                               &&
                '"type":1,'                                                                   &&
                '"url":"https://work.weixin.qq.com/?from=openApi",'                           &&
                '"title":"企业微信官网"'                                                      &&
            '}'                                                                              &&
*            '{'                                                                               &&
*                '"type":2,'                                                                   &&
*                '"appid":"APPID",'                                                            &&
*                '"pagepath":"PAGEPATH",'                                                      &&
*                '"title":"跳转小程序"'                                                        &&
*            '}'                                                                               &&
        '],'                                                                                  &&
        '"card_action":{'                                                                     &&
            '"type":1,'                                                                       &&
            '"url":"https://work.weixin.qq.com/?from=openApi"'                               &&
*            '"appid":"APPID",'                                                                &&
*            '"pagepath":"PAGEPATH"'                                                           &&
        '}'                                                                                   &&
        '}'                                                                                   &&
    '}'.

    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.

**&---------------------------------------------------------------------*
**& Form FRM_GET_FILE
**&---------------------------------------------------------------------*
**& text
**&---------------------------------------------------------------------*
**& -->  p1        text
**& <--  p2        text
**&---------------------------------------------------------------------*
*FORM FRM_GET_FILE .
*
*  DATA: IT_FILE TYPE FILETABLE WITH HEADER LINE,
*        l_obj TYPE REF TO cl_gui_frontend_services,
*        g_rc TYPE i.
*
*  CREATE OBJECT L_OBJ.
*  CALL METHOD L_OBJ->FILE_OPEN_DIALOG
*    EXPORTING
*      FILE_FILTER       = '*.bmp;*.jpg;*.jpeg'
*      INITIAL_DIRECTORY = 'C:\DATA'
*    CHANGING
*      FILE_TABLE        = IT_FILE[]
*      RC                = G_RC.
*  READ TABLE IT_FILE INDEX 1.
*  P_FILE = IT_FILE-FILENAME.
*
*ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_BASE64
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      <-- LV_BASE64
*&---------------------------------------------------------------------*
*FORM FRM_GET_BASE64  CHANGING P_LV_BASE64 P_LV_BASE64_MD5.
*  DATA: LT_BIN_DATA TYPE STANDARD TABLE OF CHAR1024.
*  DATA: LV_FILE_LENGTH TYPE I,
*        LV_XSTRING       TYPE XSTRING,
*        LV_HASH          TYPE MD5_FIELDS-HASH.
*
*  CALL FUNCTION 'GUI_UPLOAD'
*    EXPORTING
*      FILENAME                      = P_FILE
*     FILETYPE                      = 'BIN'
**     HAS_FIELD_SEPARATOR           = ' '
**     HEADER_LENGTH                 = 0
**     READ_BY_LINE                  = 'X'
**     DAT_MODE                      = ' '
**     CODEPAGE                      = ' '
**     IGNORE_CERR                   = ABAP_TRUE
**     REPLACEMENT                   = '#'
**     CHECK_BOM                     = ' '
**     VIRUS_SCAN_PROFILE            =
**     NO_AUTH_CHECK                 = ' '
*   IMPORTING
*     FILELENGTH                     = LV_FILE_LENGTH
**     HEADER                        =
*    TABLES
*      DATA_TAB                      = LT_BIN_DATA
*    EXCEPTIONS
*      FILE_OPEN_ERROR               = 1
*      FILE_READ_ERROR               = 2
*      NO_BATCH                      = 3
*      GUI_REFUSE_FILETRANSFER       = 4
*      INVALID_TYPE                  = 5
*      NO_AUTHORITY                  = 6
*      UNKNOWN_ERROR                 = 7
*      BAD_DATA_FORMAT               = 8
*      HEADER_NOT_ALLOWED            = 9
*      SEPARATOR_NOT_ALLOWED         = 10
*      HEADER_TOO_LONG               = 11
*      UNKNOWN_DP_ERROR              = 12
*      ACCESS_DENIED                 = 13
*      DP_OUT_OF_MEMORY              = 14
*      DISK_FULL                     = 15
*      DP_TIMEOUT                    = 16
*      OTHERS                        = 17
*            .
*  IF SY-SUBRC <> 0.
**   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
**           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*  ENDIF.
*
*  CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
*    EXPORTING
*      INPUT_LENGTH       = LV_FILE_LENGTH
*    IMPORTING
*      BUFFER             = LV_XSTRING
*    TABLES
*      BINARY_TAB         = LT_BIN_DATA
*    EXCEPTIONS
*      FAILED             = 1
*            .
*
*  DATA: LV_JS         TYPE REF TO CL_JAVA_SCRIPT,
*        LV_JAVASCRIPT TYPE STRING,
*        LV_RETURN     TYPE STRING.
*  LV_JS = cl_java_script=>create( ).
*
*
**  CONCATENATE
**  INTO LV_JAVASCRIPT.
**  LV_JAVASCRIPT =  'var oXstring = "' && LV_XSTRING && '";'.
**  CONCATENATE LV_JAVASCRIPT
**  'function xStringToBase64(xString) {'
**  ' var encode = encodeURI(xString);'
**  ' var base64 = btoa(encode);'
**  ' return base64;'
**  ' }'
**  'xStringToBase64(oXstring);'
**  INTO LV_JAVASCRIPT SEPARATED BY cl_abap_char_utilities=>cr_lf.
*
*
**GET THE RETURN VALUE
**  LV_RETURN = LV_JS->EVALUATE( LV_JAVASCRIPT ).
**  P_LV_BASE64_MD5 = LV_RETURN.
*
*
*
*  CALL FUNCTION 'SCMS_BASE64_ENCODE_STR'
*    EXPORTING
*      INPUT         = LV_XSTRING
**      INPUT_LENGTH  = LV_FILE_LENGTH
*    IMPORTING
*      OUTPUT = P_LV_BASE64.
**
**  DATA HASH TYPE MD5_FIELDS-HASH.
**
**  CALL FUNCTION 'CALCULATE_HASH_FOR_CHAR'
**    EXPORTING
**      ALG            = 'MD5'
**      DATA           = LV_XSTRING
**      LENGTH         = LV_FILE_LENGTH
**    IMPORTING
**      HASH           = HASH.
**
**  CALL FUNCTION 'MD5_CALCULATE_HASH_FOR_RAW'
***   EXPORTING
***     DATA                 = DATA
***     LENGTH               = 0
***     VERSION              = 1
**    IMPORTING
**      HASH                 = HASH
**    TABLES
**      DATA_TAB             = LT_BIN_DATA
**    EXCEPTIONS
**      INTERNAL_ERROR       = 1
**            .
*
*
*
*  CALL FUNCTION 'MD5_CALCULATE_HASH_FOR_CHAR'
*    EXPORTING
*      DATA                 = P_LV_BASE64
*      LENGTH               = 0
*      VERSION              = 1
*    IMPORTING
*      HASH                 = LV_HASH
**    TABLES
**      DATA_TAB             = LT_BIN_DATA
*    EXCEPTIONS
*      NO_DATA              = 1
*      INTERNAL_ERROR       = 2
*            .
*  P_LV_BASE64_MD5 = LV_HASH.
*
*
*ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_BASE64_MD5
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> LV_BASE64
*&      <-- LV_BASE64_MD5
*&---------------------------------------------------------------------*
FORM FRM_GET_BASE64_MD5  USING    P_LV_BASE64
                         CHANGING P_LV_BASE64_MD5.
  DATA HASH TYPE MD5_FIELDS-HASH.

  CALL FUNCTION 'MD5_CALCULATE_HASH_FOR_CHAR'
    EXPORTING
      DATA                 = P_LV_BASE64
      LENGTH               = 0
      VERSION              = 1
    IMPORTING
      HASH                 = HASH
    EXCEPTIONS
      NO_DATA              = 1
      INTERNAL_ERROR       = 2
            .
  P_LV_BASE64_MD5 = HASH.
ENDFORM.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值