20170313 ABAP以jason 格式返回值到http(接口内容返回)
问题1:
返回jason 格式信息给你们这步不通,
这个可以怎么处理,
***得到SCP 系统开发回复,他们需要调整方法;
(1)调用函数做RETURN,
IT_ZSMLSCPNOTICE-FUNCTIONNAME = 'ZMLSCP1_FR0005'.
IT_ZSMLSCPNOTICE-BCPCODE = BCPCODE.
IT_ZSMLSCPNOTICE-STATUS = O_STATU.
IT_ZSMLSCPNOTICE-MSG = O_MSG.
IT_ZSMLSCPNOTICE-RESULT = ''.
APPEND IT_ZSMLSCPNOTICE.
CLEAR:IT_ZSMLSCPNOTICE. CALL FUNCTION 'ZMLSCP1_FR0018'
EXPORTING
L_FNAME = 'ZMLSCP1_FR0018'
IMPORTING
EV_MSGTY = L_MSGTY
EV_MSGTX = L_MSGTX
TABLES
IT_INPUT = IT_ZSMLSCPNOTICE.
* O_STATU = L_MSGTY.
O_MSG = '调用返回结果函数: ' && L_MSGTX.
FUNCTION ZMLSCP1_FR0018 .
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(L_FNAME) TYPE RS38L_FNAM OPTIONAL
*" EXPORTING
*" VALUE(EV_MSGTY) TYPE CHAR1
*" VALUE(EV_MSGTX) TYPE STRING
*" TABLES
*" IT_INPUT STRUCTURE ZSMLSCPNOTICE OPTIONAL
*"----------------------------------------------------------------------
DATA: JSON_SER TYPE REF TO CL_TREX_JSON_SERIALIZER,
JSON_DES TYPE REF TO CL_TREX_JSON_DESERIALIZER. DATA: LV_URL TYPE STRING."http 服务接口地址
DATA: LO_HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT. DATA: LV_LEN TYPE I."发送报文长度
DATA: LV_RESPON TYPE STRING.
DATA: LV_SUBRC TYPE SY-SUBRC.
DATA: LV_JSON_STR TYPE STRING. "发送报文 IF L_FNAME EQ SPACE.
L_FNAME = 'ZMLSCP1_FR0018'.
ENDIF. * 设置HTTP接口地址
SELECT SINGLE ZADDR INTO LV_URL
FROM ZMLSCP_URL_CFG
WHERE SYSID EQ SY-SYSID AND FUNCTIONNAME EQ L_FNAME.
IF LV_URL IS INITIAL.
EV_MSGTY = 'E'.
EV_MSGTX = SY-SYSID && '表ZMLSCP_URL_CFG未配置服务地址'.
EXIT.
ENDIF. * 内表->JSON 设置报文内容(json格式字符串)
CREATE OBJECT JSON_SER
EXPORTING
DATA = IT_INPUT[].
CALL METHOD JSON_SER->SERIALIZE.
CALL METHOD JSON_SER->GET_DATA
RECEIVING
RVAL = LV_JSON_STR. "创建客户端请求
CALL METHOD CL_HTTP_CLIENT=>CREATE_BY_URL
EXPORTING
URL = LV_URL
IMPORTING
CLIENT = LO_HTTP_CLIENT
EXCEPTIONS
ARGUMENT_NOT_FOUND =
PLUGIN_NOT_ACTIVE =
INTERNAL_ERROR =
OTHERS = .
IF SY-SUBRC <> .
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = SY-MSGID
MSGNR = SY-MSGNO
MSGV1 = SY-MSGV1
MSGV2 = SY-MSGV2
MSGV3 = SY-MSGV3
MSGV4 = SY-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = EV_MSGTX.
EV_MSGTY = 'E'.
EXIT.
ENDIF. "设定传输请求内容格式以及编码格式
LO_HTTP_CLIENT->REQUEST->SET_CONTENT_TYPE( CONTENT_TYPE = 'application/json; charset=utf-8' ). "设定调用服务
LO_HTTP_CLIENT->REQUEST->SET_METHOD( IF_HTTP_REQUEST=>CO_REQUEST_METHOD_POST ). "设置待传输内容
LV_LEN = STRLEN( LV_JSON_STR ).
CALL METHOD LO_HTTP_CLIENT->REQUEST->SET_CDATA
EXPORTING
DATA = LV_JSON_STR
OFFSET =
LENGTH = LV_LEN. "发送请求
LO_HTTP_CLIENT->SEND( EXCEPTIONS HTTP_COMMUNICATION_FAILURE =
HTTP_INVALID_STATE = ). IF SY-SUBRC <> .
"操作失败,获取失败原因
LO_HTTP_CLIENT->GET_LAST_ERROR( IMPORTING MESSAGE = EV_MSGTX ).
EV_MSGTY = 'E'.
EXIT.
ENDIF. "读取远程服务返回的处理过结果。
LO_HTTP_CLIENT->RECEIVE( EXCEPTIONS HTTP_COMMUNICATION_FAILURE =
HTTP_INVALID_STATE =
HTTP_PROCESSING_FAILED = ). IF SY-SUBRC <> .
LO_HTTP_CLIENT->GET_LAST_ERROR( IMPORTING MESSAGE = EV_MSGTX ).
EV_MSGTY = 'E'.
EXIT.
ELSE.
"读取返回返回内容
CLEAR LV_RESPON.
LV_RESPON = LO_HTTP_CLIENT->RESPONSE->GET_CDATA( ).
MOVE LV_RESPON TO EV_MSGTX.
EV_MSGTY = 'S'.
ENDIF. ENDFUNCTION.
[{functionname: "ZMLSCP1_FR0005", bcpcode: "20170313001", status: "S", msg: "写入自建表成功!", result: ""}]
11:40:14
现在返回内容到这个地址http://deiap.changhong.com:18082/PM/ScpFunction/DispatchNotice
20170313 测试问题:
LV_RESPON: {"isSuccessful":true,"Msg":"数据取得中..."}
SCP 那边反馈拿不到数据!!!
20170313 ABAP以jason 格式返回值到http(接口内容返回)的更多相关文章
- 写一方法用来计算1+2+3+...n,其中n作为参数输入,返回值可以由方法名返回,也可以由参数返回
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- C++ 需要返回值的函数却没有返回值的情况 单例模式
昨天在看前些天写的代码,发现一个错误. #include <iostream> using namespace std; class singleton { public: static ...
- Java多线程带返回值的Callable接口
Java多线程带返回值的Callable接口 在面试的时候,有时候是不是会遇到面试会问你,Java中实现多线程的方式有几种?你知道吗?你知道Java中有可以返回值的线程吗?在具体的用法你知道吗?如果两 ...
- 测试函数用Return 返回值和用函数名返回值的区别
'*************************************************************************'**模 块 名:工程1 - Form1'**说 ...
- (转)函数中使用 ajax 异步 同步 返回值错误 主函数显示返回值总是undefined -- ajax使用总结
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAloAAAE0CAIAAAB7LwoKAAAgAElEQVR4nO2dy6sc152A6+/R2mXwSn ...
- 怎样获取shell函数的返回值及shell命令的返回值?
1.获取shell函数调用的返回值: #!/bin/sh info() { cat jlb.sh } res=`info` echo "state: "$? echo " ...
- mysql更新返回值问题(更新内容跟之前内容一样,返回0)
mysql更新返回值问题 问: 有一界面要更新个人信息,有几十个text标签需要填写假设有一用户从用户列表点修改进入了修改页面,但又没有修改什么,马上点击保存这时,因为text标签非常多,不能够一一判 ...
- ForkJoin有参无返回值、有参有返回值实例
介绍: a . Fork/Join为JKD1.7引入,适用于对大量数据进行拆分成多个小任务进行计算的框架,最后把所有小任务的结果汇总合并得到最终的结果 b . 相关类 public abstract ...
- SpringMVC中使用@ResponseBody注解将任意POJO对象返回值转换成json进行返回
@ResponseBody 作用: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区. ...
随机推荐
- hdu 1728(搜索)
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 转---派遣例程与IRP结构
派遣例程与IRP结构 文章出处:http://www.cnblogs.com/zmlctt/p/3978124.html#commentform 提到派遣例程,必须理解IRP(I/O Requ ...
- 两种const函数
有两种const函数,声明如下:1.const T func();2.T func() const;第一种表示返回的是const的类型,也即返回的值不能作为左值,楼主懂的.第二种表示该成员函数不能修改 ...
- H264码率设置
转帖 http://blog.csdn.net/jefry_xdz/article/details/8299901 一.什么是视频码率? 视频码率是视频数据(视频色彩量.亮度量.像素量)每秒输出的位数 ...
- 邁向IT專家成功之路的三十則鐵律 鐵律十八:IT人求職之道-文化
IT人所從事的工作是一個求新求變速度最快的行業,因此您所待的企業IT部門或資訊公司,其組織文化將關係到您在這間公司服務期間,是否能夠快速成長的決定因素.遇到不良的組織文化建議您三個就可以走人了,千萬別 ...
- mysql 数据库查询优化
从上图可以看出,计算机系统硬件性能从高到代依次为: CPU——Cache(L1-L2-L3)——内存——SSD硬盘——网络——硬盘 由于SSD硬盘还处于快速发展阶段,所以本文的内容不涉及SSD相关应用 ...
- 编写Web Serviceclient訪问www.webxml.com.cn提供的服务
好久没更新博客了,近期各种忙. 之前做Web Service课程的作业,当中有一个实验.实验内容如题所看到的. 以下简单说下怎样编写Web Serviceclient訪问webxml.com.cn里的 ...
- Opencv 最小外接矩形合并拼接
前一篇画出了最小外接矩形,但是有时候画出来的矩形由于中间像素干扰或者是其他原因矩形框并不是真正想要的 如图1是一个信号的雨图,被矩形框分割成了多个小框: 需要合并矩形框达到的效果: 主要思想: 扫描两 ...
- LinearLayout具体解释三:LayoutInflater创建View过程分析
上次讲到以下这么一段代码,这段代码的作用就是解析xml文件成为view并显示到屏幕上的. @Override //设置contentview,也就是activity或fragment载入视图,即vie ...
- openCV—Python(1)——初始化环境
本系列博客主要參考自--Adrian Rosebrock:<Practical Python and OpenCV: An Introductory,Example Driven Guide t ...