在系统 VL02N 交货过账后触发发送邮件、短信的功能,短信邮件接口是经过第三方系统封装,然后开发出的API接口。

请求地址: http://180.167.01.01/ns/sends
请求方式: POST
参数格式: JSON
请求参数:

  1. {
  2. "ncode": "sapOrderSend",
  3. "source": "订单号",
  4. "contacts": [
  5. {
  6. "code": "订货人邮箱地址",
  7. "type": "1"
  8. },
  9. {
  10. "code": "订货人手机号",
  11. "type": "2"
  12. }
  13. ],
  14. "params": {
  15. "contactName": "订货人姓名",
  16. "contactCode": "订货人编号",
  17. "code": "订单号",
  18. "createDate": "订单创建时间",
  19. "storageName": "发货仓库名称",
  20. "shipTypeName": "发货方式名称"
  21. }
  22. }

复制代码

RFC接口代码:

  1. FUNCTION zot_do_send_message.
  2. *"----------------------------------------------------------------------
  3. *"*"本地接口:
  4. *"  IMPORTING
  5. *"     VALUE(I_VBELN) TYPE  VBELN_VL OPTIONAL
  6. *"  EXCEPTIONS
  7. *"      URL_ERROR
  8. *"----------------------------------------------------------------------
  9. DATA: lr_http_client TYPE REF TO if_http_client .
  10. DATA: lv_url TYPE string,
  11. lv_result TYPE string,
  12. lv_post_string TYPE string,
  13. lv_len TYPE i.
  14. TYPES:BEGIN OF ty_contacts,
  15. code TYPE string,
  16. type TYPE char1,
  17. END OF ty_contacts.
  18. TYPES:BEGIN OF ty_params,
  19. contactname  TYPE string,
  20. contactcode  TYPE string,
  21. code         TYPE string,
  22. createdate   TYPE string,
  23. storagename  TYPE string,
  24. shiptypename TYPE string,
  25. END OF ty_params.
  26. DATA:lt_contacts TYPE TABLE OF ty_contacts.
  27. TYPES:BEGIN OF ty_message,
  28. ncode TYPE string,
  29. source TYPE string,
  30. contacts LIKE lt_contacts,
  31. params TYPE ty_params,
  32. END OF ty_message.
  33. DATA:ls_message  TYPE ty_message.
  34. DATA:ls_contacts TYPE ty_contacts.
  35. DATA:BEGIN OF lt_vbap OCCURS 0,
  36. vbeln TYPE vbap-vbeln,
  37. posnr TYPE vbap-posnr,
  38. ktgrm TYPE vbap-ktgrm,
  39. END OF lt_vbap.
  40. DATA:lv_vbeln_so   TYPE vbak-vbeln,
  41. lv_tel_number TYPE adr2-tel_number,
  42. lv_smtp_addr  TYPE adr6-smtp_addr,
  43. lv_kunnr      TYPE kna1-kunnr,
  44. lv_name       TYPE kna1-name1,
  45. lv_erdat TYPE vbak-erdat,
  46. lv_bname TYPE vbak-bname,
  47. lv_bezei TYPE t173t-bezei,
  48. lv_lgobe TYPE t001l-lgobe.
  49. IF i_vbeln IS INITIAL.
  50. EXIT.
  51. ENDIF.
  52. SELECT SINGLE url INTO lv_url FROM zot_message WHERE fm_name = 'ZOT_DO_SEND_MESSAGE' AND pm1 = 'URL'.
  53. IF sy-subrc NE 0.
  54. MESSAGE '请在表ZOT_MESSAGE配置URL参数' TYPE 'E' RAISING url_error.
  55. ENDIF.
  56. SELECT vbap~vbeln
  57. vbap~posnr
  58. vbap~ktgrm
  59. INTO TABLE lt_vbap
  60. FROM lips
  61. INNER JOIN vbap ON lips~vgbel = vbap~vbeln AND vbap~abgru = ''
  62. INNER JOIN vbak ON vbap~vbeln = vbak~vbeln AND vbak~vkorg = '3110'  "国内发短信
  63. WHERE lips~vbeln = i_vbeln.
  64. DELETE lt_vbap WHERE ktgrm = '02'.  "技术服务
  65. IF lt_vbap[] IS INITIAL.
  66. EXIT.
  67. ENDIF.
  68. SELECT SINGLE lips~vgbel adr2~tel_number adr6~smtp_addr kna1~kunnr kna1~name1
  69. INTO (lv_vbeln_so,lv_tel_number,lv_smtp_addr,lv_kunnr,lv_name)
  70. FROM lips
  71. INNER JOIN vbpa ON lips~vgbel = vbpa~vbeln AND vbpa~posnr = space AND vbpa~parvw = 'WE'
  72. INNER JOIN kna1 ON vbpa~kunnr = kna1~kunnr
  73. LEFT JOIN adr2 ON kna1~adrnr = adr2~addrnumber AND adr2~persnumber = space AND adr2~r3_user = '3'
  74. LEFT JOIN adr6 ON kna1~adrnr = adr6~addrnumber AND adr6~persnumber = space
  75. WHERE lips~vbeln = i_vbeln.
  76. IF lv_tel_number IS INITIAL AND lv_smtp_addr IS INITIAL.
  77. EXIT.
  78. ENDIF.
  79. SELECT SINGLE
  80. likp~erdat
  81. vbak~bname
  82. t173t~bezei
  83. t001l~lgobe
  84. INTO (lv_erdat,lv_bname,lv_bezei,lv_lgobe)
  85. FROM likp
  86. INNER JOIN lips ON likp~vbeln = lips~vbeln
  87. INNER JOIN vbak ON lips~vgbel = vbak~vbeln
  88. LEFT JOIN t173t ON t173t~spras = sy-langu AND t173t~vsart = likp~vsart
  89. LEFT JOIN t001l ON lips~werks = t001l~werks AND lips~lgort = t001l~lgort
  90. WHERE likp~vbeln = i_vbeln.
  91. *-->数据初始化成嵌套内表形式
  92. ls_message-ncode = 'sapOrderSend'.
  93. IF lv_bname IS NOT INITIAL.
  94. ls_message-source = lv_bname.
  95. ELSE.
  96. ls_message-source = i_vbeln.
  97. ENDIF.
  98. IF lv_smtp_addr IS NOT INITIAL.
  99. ls_contacts-code = lv_smtp_addr.
  100. ls_contacts-type = '1'.
  101. APPEND ls_contacts TO ls_message-contacts.
  102. ENDIF.
  103. IF lv_tel_number IS NOT INITIAL.
  104. ls_contacts-code = lv_tel_number.
  105. ls_contacts-type = '2'.
  106. APPEND ls_contacts TO ls_message-contacts.
  107. ENDIF.
  108. ls_message-params-contactname = lv_name.
  109. ls_message-params-contactcode = lv_kunnr.
  110. IF lv_bname IS NOT INITIAL.
  111. ls_message-params-code = lv_bname.
  112. ELSE.
  113. ls_message-params-code = lv_vbeln_so.
  114. ENDIF.
  115. IF lv_erdat IS NOT INITIAL.
  116. CONCATENATE lv_erdat+0(4) lv_erdat+4(2) lv_erdat+6(2) INTO ls_message-params-createdate SEPARATED BY '-'.
  117. ENDIF.
  118. ls_message-params-storagename = lv_lgobe.
  119. ls_message-params-shiptypename = lv_bezei.
  120. *-->内表数据转-->json格式
  121. lv_post_string = /ui2/cl_json=>serialize( data = ls_message compress = ABAP_true pretty_name = abap_true ).
  122. REPLACE ALL OCCURRENCES OF 'contactname'  IN lv_post_string WITH 'contactName'.
  123. REPLACE ALL OCCURRENCES OF 'contactcode'  IN lv_post_string WITH 'contactCode'.
  124. REPLACE ALL OCCURRENCES OF 'createdate'   IN lv_post_string WITH 'createDate'.
  125. REPLACE ALL OCCURRENCES OF 'storagename'  IN lv_post_string WITH 'storageName'.
  126. REPLACE ALL OCCURRENCES OF 'shiptypename' IN lv_post_string WITH 'shipTypeName'.
  127. *  lv_len = strlen( lv_post_string ) .
  128. lv_len = cl_abap_list_utilities=>dynamic_output_length( lv_post_string ).
  129. *send
  130. *  lv_url = 'http://192.168.01.01:8088/ns/sends'.
  131. CALL METHOD cl_http_client=>create_by_url
  132. EXPORTING
  133. url                = lv_url
  134. IMPORTING
  135. client             = lr_http_client
  136. EXCEPTIONS
  137. argument_not_found = 1
  138. plugin_not_active  = 2
  139. internal_error     = 3
  140. OTHERS             = 4.
  141. CALL METHOD lr_http_client->request->set_header_field
  142. EXPORTING
  143. name  = '~request_method'
  144. value = 'POST'.
  145. CALL METHOD lr_http_client->request->set_header_field
  146. EXPORTING
  147. name  = '~server_protocol'
  148. value = 'HTTP/1.1'.
  149. CALL METHOD lr_http_client->request->set_header_field
  150. EXPORTING
  151. name  = 'Content-Type'
  152. value = 'application/json; charset=utf-8'.
  153. CALL METHOD lr_http_client->request->set_header_field
  154. EXPORTING
  155. name  = 'Accept'
  156. value = 'application/json'.
  157. *  CALL METHOD lr_http_client->request->set_header_field
  158. *    EXPORTING
  159. *      name  = 'Content-Length'
  160. *      value = len_str.
  161. CALL METHOD lr_http_client->request->set_cdata
  162. EXPORTING
  163. data   = lv_post_string
  164. offset = 0
  165. length = lv_len.
  166. CALL METHOD lr_http_client->send
  167. EXCEPTIONS
  168. http_communication_failure = 1
  169. http_invalid_state         = 2.
  170. CALL METHOD lr_http_client->receive
  171. EXCEPTIONS
  172. http_communication_failure = 1
  173. http_invalid_state         = 2
  174. http_processing_failed     = 3.
  175. lv_result = lr_http_client->response->get_cdata( ).
  176. ENDFUNCTION.

SAP中用json数据格式调用http接口发送短信邮件案例相关推荐

  1. 短信发送:webservice调用第三方接口发送短信

    1 原博客地址:http://blog.csdn.net/sxdtzhaoxinguo/article/details/34437591 2 demo地址:http://download.csdn.n ...

  2. Python调用飞信接口发送短信

    主要参考了两篇文章:(对原作者表示感谢~) 发送飞信的Python脚本:http://www.cnblogs.com/fatway/archive/2009/08/07/1693813.html 中国 ...

  3. python飞信api_Python调用飞信接口发送短信

    # -*- coding:utf-8 -*- # file: SendFetion.py # by Lee 2013-9-18 """------------------ ...

  4. python飞信api_Python调用飞信接口发送短信 | 学步园

    主要参考了两篇文章:(对原作者表示感谢~) 2013年9月18日亲测可用. 下面是代码:[使用前将账号密码换为自己的] # -*- coding:utf-8 -*- # file: SendFetio ...

  5. java实现调用短信接口发送短信

    如何调用java接口,进行短信的发送呢?现在几乎每一个平台都需要进行验证码短信或者通知类短信的发送,下面提供java接口的DEMO供大家下载: Java短信接口JDK点击下载 或者直接进入官网测试页面 ...

  6. php 云片网对接,php调用云片网接口发送短信的实现方法

    php调用云片网接口发送短信的实现方法 云片网发送短信 /** * [SendSms description] * @param [string] $tpl_content [发送的短信内容] * @ ...

  7. php云片网api的运用,如何实现php调用云片网接口发送短信

    这篇文章主要介绍了php调用云片网接口发送短信的实现方法的相关资料,希望通过本文能帮助到大家,让大家实现这样的功能,需要的朋友可以参考下 php调用云片网接口发送短信的实现方法 云片网发送短信 /** ...

  8. 普歌-腾讯云短信+使用node发送短信(3种方法API、SDK)、封装工具、搭建web服务、写接口、调用接口发送短信、时效性判断、验证验证码的正确性(下)

    普歌-结合腾讯云短信服务+node搭建一个简单的发送短信web小项目 涉及技术: 腾讯云服务 后端服务:node+express 前端搭建:html+js 前言:本来这篇博客应该很早就发了,中间有一些 ...

  9. PHP云软件短信接口,php调用云片网接口发送短信的实现方法

    php调用云片网接口发送短信的实现方法 云片网发送短信 /** * [SendSms description] * @param [string] $tpl_content [发送的短信内容] * @ ...

最新文章

  1. 函数式编程(小练习)
  2. 未来网络发展的趋势——IPv6详细讲解与基本配置
  3. 解释型语言与编译型语言的区别
  4. .NET中判断国内IP和国外IP
  5. CodeForces - 1535C Unstable String(思维)
  6. 美团技术:交易平台建设实践(视频+胶片)
  7. 找不到php fpm.pid,找不到文件nginx php-fpm
  8. 数字信号处理的fpga实现_FPGA提高雷达性能,实现脉冲压缩
  9. 【树链剖分】树链剖分讲解
  10. 多线程m3u8下载器 v1.0
  11. 如何查看网页字体大小
  12. 【原生JavaWeb】网页前端页面如何调用后端Java程序
  13. 最简单的全球基站定位接口API
  14. 1.swift 常量和变量
  15. 机器学习如何提高GPU利用率
  16. java的reveserOder_reverse是什么意思_reverse的用法
  17. 764. 输出字符串
  18. 2020-11-23 PTA算法_贪心算法部分习题及代码
  19. IBM X3850 X5 安装 windows 2008 enterprise 32
  20. 计算机教师个人诊改总结,完整版)教师个人诊改报告

热门文章

  1. 想知道你在网上的发言,被怎么分析么?
  2. 百合网婚礼产品总监徐德生:电商类产品的转化率为何总是令人心碎?
  3. 一看就明白的爬虫入门讲解-基础理论篇(下篇)
  4. 点融产品 VP 赵征宇:增长是一个探索人性的过程
  5. 你知道这些产品设计灵感网站吗?
  6. leetCode数据查询笔记(困难)
  7. mysql的库和表相关操作
  8. 《树莓派实战秘籍》——2.7 技巧27尝试Occidentalis:为(高级)教育目的的树莓派发行版...
  9. qperf测量网络带宽和延迟
  10. CentOS6.5安装Subversion