作者:明光烁亮

出处: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. 【Android Studio】安卓开发初体验2——Activity

    Activity是什么 Activity用于提供可视化用户界面的组件,可以与用户进行交互来完成某项任务,一个应用程序中可以包含零个或多个活动 Activity的创建 首先将左侧的Active Tool ...

  2. 对比JAVA、Python、C、Go运行时间,我惊呆了!!!

    对比JAVA.Python.C.Go运行时间,我惊呆了!!! 周末在寝室刷完算法,想放松一下,于是做了一个实验:用现在主流的几种编程语言对0 - (10000000 - 1)求和,结果我惊呆了,话不多 ...

  3. 说说 C# 9 新特性的实际运用

    你一定会好奇:"老周,你去哪开飞机了?这么久没写博客了." 老周:"我买不起飞机,开了个铁矿,挖了一年半的石头.谁知铁矿垮了,压死了几条蜈蚣,什么也没挖着." ...

  4. learning to Estimate 3D Hand Pose from Single RGB Images论文理解

    持续更新...... 概括:以往很多论文借助深度信息将2D上升到3D,这篇论文则是想要用网络训练代替深度数据(设备成本比较高),提高他的泛性,诠释了只要合成数据集足够大和网络足够强,我就可以不用深度信 ...

  5. pip升级失败

    python -m pip install --upgrade pip失败 解决办法: easy_install pip

  6. linux 中断softirq tasklet

    硬中断为什么不能休眠--- 中断线程以及软中断解决了什么问题---- 软中断cb函数是否允许相应本地中断,什么时候开启中断关闭中断---- 什么是软中断上下文------- 什么是tasklet 和软 ...

  7. 腾讯云容器服务 TKE 推出新一代零损耗容器网络

    随着容器技术的发展成熟,越来越多的组件迁移到容器,在技术迁移过程中,数据库,游戏,AI 这些组件对容器网络性能(时延,吞吐,稳定性)提出了更高的要求.为了得到更优的时延和吞吐表现,各大云厂商都在致力于 ...

  8. ceph写osd的配置文件/etc/ceph/ceph.conf

    ceph在部署过程中是先进行部署,再去写配置文件的,而一些新手在部署完了后,并没有写配置文件,在重启服务器后,因为挂载点没有挂载,所以服务无法启动,所以需要写好配置文件 还有一种情况是集群有几百个os ...

  9. linux centos 6.x 装机后基本优化

    1.关闭SELinux /etc/selinux/config配置文件内替换 se -i 's/SELINUX=enforcing/SELINUX=disabled/g'需要重启grep SELINU ...

  10. kali 系列学习06 - 攻击之密码破解

    参考书 <kali linux渗透测试技术详解> 清华大学出版社  2015 杨波 一.medusa使用 原理:并行登陆破解 1.只输入单个命令,是查看帮助 root@kali:/tool ...