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 = 1
      PLUGIN_NOT_ACTIVE  = 2
      INTERNAL_ERROR     = 3
      OTHERS             = 4.
  IF SY-SUBRC <> 0.
    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 = 0
      LENGTH = LV_LEN.

  "发送请求
  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 = EV_MSGTX ).
    EV_MSGTY = ‘E‘.
    EXIT.
  ENDIF.

  "读取远程服务返回的处理过结果。
  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 = 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.

11:37:47

返回JASON 内容
[{functionname: "ZMLSCP1_FR0005", bcpcode: "20170313001", status: "S", msg: "写入自建表成功!", result: ""}]
11:40:14
现在返回内容到这个地址http://deiap.changhong.com:18082/PM/ScpFunction/DispatchNotice

时间: 2024-10-13 05:41:10

20170313 ABAP以jason 格式返回值到http(接口内容返回)的相关文章

获取存储过程返回值及代码中获取返回值

获取存储过程返回值及代码中获取返回值 1.OUPUT参数返回值例: 向Order表插入一条记录,返回其标识 CREATE PROCEDURE [dbo].[nb_order_insert](@o_buyerid int ,@o_id bigint OUTPUT)ASBEGINSET NOCOUNT ON;BEGININSERT INTO [Order](o_buyerid )VALUES (@o_buyerid )SET @o_id = @@IDENTITYENDEND 存储过程中获得方法: D

测试函数用Return 返回值和用函数名返回值的区别

'*************************************************************************'**模 块 名:工程1 - Form1'**说    明:蓝凤凰设计商城 浴火凤凰-郭卫 | 蓝凤凰-魔灵 | 郭卫-icecept'**创 建 人:浴火凤凰-郭卫'**日    期:2015年10月19日  21:53:17'**修 改 人:浴火凤凰-郭卫'**日    期:'**描    述:QQ:493405998 | 微信\旺旺:icece

怎样获取shell函数的返回值及shell命令的返回值?

1.获取shell函数调用的返回值: #!/bin/sh info() { cat jlb.sh } res=`info` echo "state: "$? echo "res: "${res} 说明:res=`info`这一行为调用函数info,里面的符号`不是单引號,而是Esc按键以下的那个.另外$?返回的为上一条命令的运行状态,不是返回值. 2.获取shell命令的返回值,原理同上,比如: #!/bin/sh info=`cat jlb.sh` echo &q

(转)函数中使用 ajax 异步 同步 返回值错误 主函数显示返回值总是undefined -- ajax使用总结

如图检测到函数返回值总是a jQuery ajax 得到返回值 方案1:通过js回调函数获取返回值 方案2: 添加代码: async: false, 1.ajax默认是异步调用的,所以得到的返回值是空值,要得到值必须改成同步:async: false,//同步. 2.必须定义一个全局变量 var result = ""来保存返回值.否则得到的是undefined function GetReturnValue(url, jsonText) { var result = "&q

如何获取shell函数的返回值及shell命令的返回值?

1.获取shell函数调用的返回值: #!/bin/sh info() { cat jlb.sh } res=`info` echo "state: "$? echo "res: "${res} 说明:res=`info`这一行为调用函数info,里面的符合`不是单引号,而是Esc按键下面的那个,另外$?返回的为上一条命令的执行状态,不是返回值: 2.获取shell命令的返回值,原理同上,例如: #!/bin/sh info=`cat jlb.sh` echo &q

mybatis insert、update 、delete默认返回值解释与如何设置返回表主键

在使用mybatis做持久层时,insert.update.delete,sql语句默认是不返回被操作记录主键的,而是返回被操作记录条数: 那么如果想要得到被操作记录的主键,可以通过下面的配置方式获取. 针对Sequence主键而言,在执行insert sql前必须指定一个主键值给要插入的记录,如Oracle.DB2,可以采用如下配置方式: <insert id="save" parameterType="user"> <selectKey res

js 写带有返回值的function遇到的返回值不正常的情况

背景:使用layui上传文件,在上传成功后的回调函数中调用另一个js函数(validateFormIndexExist(filePath)验证上传文件根目录下是否包含index.html文件),validateFormIndexExist(filePath)需要返回布尔值 编码实现: 1 <!DOCTYPE html> 2 <html> 3 <meta charset="utf-8"> 4 <link href="/layui-v2.

PHP,如何判断mysql语句是否有返回值、是否有内容

在网上找了很多,并没找到合适的 要么有警告,要么压根不好使. if(is_resource($result)),if(mysql_result($result))完全做不到. if(mysqli_fetch_row($result))是最好使的一个,但是,当没有内容时会出现警告. 正确方法是if(is_object($result))或if(!is_bool($result)). 事件描述: SQL语句分两类,一类是show databases.select * from mysql.db这样有

commons.net ftp 循环调用listFiles()返回值只有第一次正常,以后返回空的FTPFile数组

用retrieveFileStream(fileName)方法 读取一堆由特定规则生成的文件名的文件,根据文件名循环. 读取文件之前先用listFiles(fileName)方法 判断一下该文件是否存在. 结果循环中第一次判断文件存在,以后的每次循环都判断为不存在.. 上网查了一下说是  retrieveFileStream(fileName)方法返回一个inputStream 使用完inputStream后 需要关闭该is, 并且在关闭之后要调用一下completePendingCommand