作者:明光烁亮

出处:http://www.cnblogs.com/hezhongxun/


微信号:HEme922 欢迎加好友一起交流SAP! 视频资料共享。

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

之前只写了get外部接口的数据,今天刚好做了个post的接口就随便记录下。

详细的业务就不多讲了,直接上方法和代码吧。

外部已经提供了一个post地址,而且要求参数也添加到地址后面,地址如下:

'http://192.168.0.XX:XXX/XXX/fileAction.do?funid=erp_ws&eventcode=syncData&nousercheck=1&user_id=SAP&type=2&data='

数据是以json的方式写入地址的。

使用RESTFUL接口post数据的方法顺序是:

1.创建http服务

2.设置http request的参数

3.把数据转换成json

4.发送http请求

5.接收返回的数据。

代码如下:

FUNCTION z_wms_delete_dn.
*"----------------------------------------------------------------------
*"*"本地接口:
*" EXPORTING
*" VALUE(RETURN) TYPE ZSTRU_WMS_RETURN
*" TABLES
*" VLDATA STRUCTURE ZTSD002 OPTIONAL
*"---------------------------------------------------------------------- DATA: lc_http_client TYPE REF TO if_http_client,
l_url TYPE string,
l_json_data TYPE string,
l_result_string TYPE string,
l_result TYPE zstru_wms_return. DATA: BEGIN OF ls_vldata.
INCLUDE STRUCTURE ztsd002.
DATA: loekz TYPE char1,
END OF ls_vldata. DATA: lt_vldata LIKE TABLE OF ls_vldata. DATA lc_json TYPE REF TO cl_fdt_json_serializer. "json格式转换 DATA: lt_zwms_dn_delete TYPE TABLE OF zwms_dn_delete."记录数据 INCLUDE fbgenmac.
fbgenmac 'Z_WMS_DELETE_DN'. LOOP AT vldata.
ls_vldata-vbeln = vldata-vbeln.
ls_vldata-posnr = vldata-posnr.
ls_vldata-loekz = 'L'.
APPEND ls_vldata TO lt_vldata.
CLEAR: ls_vldata. APPEND INITIAL LINE TO lt_zwms_dn_delete ASSIGNING FIELD-SYMBOL(<fs_wms>).
<fs_wms>-vbeln = vldata-vbeln.
<fs_wms>-posnr = vldata-posnr.
<fs_wms>-erdat = sy-datum.
<fs_wms>-erzet = sy-uzeit.
ENDLOOP. CASE sy-mandt.
WHEN '100'.
l_url = 'http://xxx.xxx.xxx.xxx/xx/fileAction.do?funid=erp_ws' &&
'&eventcode=syncData&nousercheck=1&user_id=SAP&type=2&data='.
WHEN '800'.
l_url = 'http://xxx.xxx.xxx.xxx/xx/fileAction.do?funid=erp_ws' &&
'&eventcode=syncData&nousercheck=1&user_id=SAP&type=2&data='.
ENDCASE. *****转换json格式
CREATE OBJECT lc_json. CALL METHOD lc_json->serialize_int
EXPORTING
data = lt_vldata
RECEIVING
r_json = l_json_data. TRANSLATE l_json_data TO LOWER CASE.CONCATENATE l_url l_json_data INTO l_url. *****创建http服务
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = l_url
IMPORTING
client = lc_http_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4. IF sy-subrc <> 0.
EXIT.
ENDIF. CALL METHOD lc_http_client->request->set_header_field
EXPORTING
name = 'Content-Type'
value = 'application/JSON; charset=utf-8'. CALL METHOD lc_http_client->request->set_method( 'POST' ). *****发送http服务
CALL METHOD lc_http_client->send
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
http_invalid_timeout = 4
OTHERS = 5. IF sy-subrc <> 0.
EXIT.
ENDIF. *****接收返回数据
CALL METHOD lc_http_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
OTHERS = 4. l_result_string = lc_http_client->response->get_cdata( ).

*****解析JSON数据
CALL METHOD lc_json->deserialize_int
EXPORTING
json = l_result_string
CHANGING
data = l_result. return = l_result. LOOP AT lt_zwms_dn_delete ASSIGNING FIELD-SYMBOL(<fs_dn>).
<fs_dn>-success = l_result-success.
<fs_dn>-message = l_result-message.
ENDLOOP. MODIFY zwms_dn_delete FROM TABLE lt_zwms_dn_delete.
IF sy-subrc = 0.
COMMIT WORK.
ELSE.
ROLLBACK WORK.
ENDIF. ENDFUNCTION.

其实HTTP还是挺复杂的,只是sap都封装了很多方法,以后有时间可以研究下http方面的知识。

作者:明光烁亮

出处:http://www.cnblogs.com/hezhongxun/


微信号:HEme922 欢迎加好友一起交流SAP! 视频资料共享。

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

SAP调用RestfulApi接口POST数据到外部系统的更多相关文章

  1. SAP调用RestfulApi接口接收数据

    因为准备要做一个关于调用外部接口的需求,所以自己先练习一下. 程序说明:我已经在.net开发的系统里提供一个api接口,现在在sap访问这个接口,来接收数据. 这里涉及Restful Api知识,以后 ...

  2. java接口对接——别人调用我们接口获取数据

    java接口对接——别人调用我们接口获取数据,我们需要在我们系统中开发几个接口,给对方接口规范文档,包括访问我们的接口地址,以及入参名称和格式,还有我们的返回的状态的情况, 接口代码: package ...

  3. 分享自研实现的多数据源(支持同DB不同表、跨DB表、内存数据、外部系统数据等)分页查询工具类实现原理及使用

    思考: 提起分页查询,想必任何一个开发人员(不论是新手还是老手)都能快速编码实现,实现原理再简单不过,无非就是写一条SELECT查询的SQL语句,ORDER BY分页排序的字段, 再结合limit ( ...

  4. 调用REST接口获取数据

    /// <summary> /// 根据机构代码本机构下报警用户列表: /// </summary> /// <param name="org_code&quo ...

  5. 通过Spark Streaming的foreachRDD把处理后的数据写入外部存储系统中

    转载自:http://blog.csdn.net/erfucun/article/details/52312682 本博文主要内容包括: 技术实现foreachRDD与foreachPartition ...

  6. 【翻译】Flink Table Api & SQL —— 连接到外部系统

    本文翻译自官网:Connect to External Systems  https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev ...

  7. 新闻网大数据实时分析可视化系统项目——19、Spark Streaming实时数据分析

    1.Spark Streaming功能介绍 1)定义 Spark Streaming is an extension of the core Spark API that enables scalab ...

  8. thinkjs学习-this.assign传递数据和ajax调用后台接口

    在页面加载时,就需要显示在页面上的数据,可以在后台使用this.assign赋值,在前台通过ejs等模板获取:用户点击按钮,或者触发某些事件和后台进行交互时,就需要用到ajax调用后台接口.本文通过一 ...

  9. ABAP 程序/接口调用其他程序的数据

    在ABAP遇到的业务场景中,可能会遇到一种情况,需要调用其他报表的数据来发送或者二次加工,这个时候又不想对源程序做大的改动.有以下几种思路解决. 1.修改源程序,将需要展示的数据存储到DB中,然后主程 ...

随机推荐

  1. Markdown tricks

    编辑排版 仅仅了解 Markdown 语法还不够,知道这些 排版技巧 增色您的文章内容. 空格和空行 留白,从艺术角度上说,留白就是以"空白"为载体进而渲染出美的意境的艺术.从应用 ...

  2. Docker学习—Machine

    前言 前面<Docker学习-Compose>文中介绍了Compose的使用方式:接下来继续了解docker三剑客之一的 Machine: 一.Docker Machine简介 1.什么是 ...

  3. 判断浏览器,还在用userAgent吗,你out了

    以下内容摘自http://www.cnblogs.com/rubylouvre/archive/2009/10/14/1583362.html //2010 4 16日更新 ie678 = !+&qu ...

  4. Socket 套接字的系统调用

    socket 结构 /** * struct socket - general BSD socket * @state: socket state (%SS_CONNECTED, etc) * @ty ...

  5. linux云服务搭建七日杀服务器

    目录 准备工作 1.设置swap 2.安装screen 3.安装SteamCmd运行所需环境 4.创建一个用户 steamCMD与七日杀服务器端 1.下载并安装SteamCMD 2.登录steam账号 ...

  6. 微服务下的持续集成-Jenkins自动化部署GitHub项目

    @ 目录 一.前言 二.DevOps概念 三.为什么要做持续集成 四.常见云服务 五.手动部署Jenkins 5.1 准备工作 5.2 下载 5.3 启动 5.4 配置 5.5 Jenkins 首页 ...

  7. Redis实现分布式缓存

    Redis 分布式缓存实现(一) 1. 什么是缓存(Cache) 定义:就是计算机内存中的一段数据: 2. 内存中数据特点 a. 读写快    b. 断电立即丢失 3. 缓存解决了什么问题? a. 提 ...

  8. jquery 的 change() 方法的使用

    w3c 中的定义:链接  <a>http://www.w3school.com.cn/jquery/event_change.asp<a> jQuery 事件 - change ...

  9. html图片拖放

    <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...

  10. Codeforces375D Tree and Queries

    dsu on tree 题目链接 点我跳转 题目大意 给定一棵 \(n\) 个节点的树,根节点为 \(1\).每个节点上有一个颜色 \(c_i\) \(m\) 次询问. 每次询问给出 \(u\) \( ...