SAP Http接口——通过RESTful实现

自己练习的RESTful接收方

IF_HTTP_EXTENSION

双击点进去

  "接收格式定义
    TYPES: BEGIN OF LS_REQUEST_I,
             ACTION TYPE STRING,
              DATA   TYPE ZFS_ZSMMF001_J,
*             DATA   TYPE ZSMMF001_TJ,
           END OF LS_REQUEST_I.
    DATA: LS_REQUEST TYPE LS_REQUEST_I.
    DATA: LT_REQUEST TYPE TABLE OF LS_REQUEST_I.



    "定义返回值
    TYPES: BEGIN OF TY_RETURN,
             STATE   TYPE CHAR1,
             MESSAGE TYPE CHAR255,
           END OF TY_RETURN.
    DATA: LT_RETUNR TYPE TABLE OF TY_RETURN,
          LS_RETUNR TYPE TY_RETURN.

    "定义内表
    DATA LT_ZTMMF001 TYPE TABLE OF ZTMMF001.
    DATA LS_ZTMMF001 TYPE ZTMMF001.

    "定义接收JSON串
    DATA: LV_JSON TYPE STRING.
    DATA: LV_JSON_RT TYPE STRING.
    DATA: LV_CONTENT_TYPE TYPE STRING.


    "获取接收数据
    LV_JSON = SERVER->REQUEST->GET_CDATA( ).
    IF LV_JSON IS  NOT INITIAL.
      CALL FUNCTION 'ZFM_DESERIALIZE_JSON'
        EXPORTING
          IV_INPUT  = LV_JSON
        IMPORTING
          ES_OUTPUT = LS_REQUEST.


    ELSE.
      SERVER->RESPONSE->SET_STATUS( CODE = '404' REASON = '接收失败,请检查数据是否异常!' ).
      RETURN.
*      LS_RETUNR-STATE   = 'E'.
*      LS_RETUNR-MESSAGE = '接口编号不存在,请检查接口!'.
*      APPEND LS_RETUNR TO LT_RETUNR.
*      CLEAR LS_RETUNR.

    ENDIF.

    LOOP AT LS_REQUEST-DATA INTO DATA(LS_DATA).
      MOVE-CORRESPONDING LS_DATA TO LS_ZTMMF001.
      LS_ZTMMF001-ZUNAME           = SY-UNAME.
      LS_ZTMMF001-ZERDAT           = SY-DATUM.
      LS_ZTMMF001-ZERZET = SY-UZEIT.
      APPEND LS_ZTMMF001 TO LT_ZTMMF001.
      CLEAR LS_DATA.
      CLEAR LS_ZTMMF001.
    ENDLOOP.

    IF LT_ZTMMF001 IS NOT INITIAL.
      LS_RETUNR-STATE   = '0'.
      LS_RETUNR-MESSAGE = '成功'.
      APPEND LS_RETUNR TO LT_RETUNR.
    ELSE.
      LS_RETUNR-STATE   = '1'.
      LS_RETUNR-MESSAGE = '接口接收失败,纯火'.
      APPEND LS_RETUNR TO LT_RETUNR.
    ENDIF.

    IF LT_RETUNR[] IS NOT INITIAL.
      CALL FUNCTION 'ZFM_SERIALIZE_JSON'
        EXPORTING
          IS_INPUT  = LT_RETUNR
        IMPORTING
          EV_OUTPUT = LV_JSON_RT.

      REPLACE 'FACTORY_CODE' WITH 'factory_code' INTO LV_JSON_RT.
      REPLACE 'PRODUCT_CODE' WITH 'product_code' INTO LV_JSON_RT.
      REPLACE 'SUPPLIER_CODE' WITH 'supplier_code' INTO LV_JSON_RT.
      "返回消息
      SERVER->RESPONSE->SET_CDATA( LV_JSON_RT ).
      "返回HTTP 状态
      SERVER->RESPONSE->SET_STATUS( CODE = 200 REASON = 'OK' ).
      LV_CONTENT_TYPE = 'application/json'.
      SERVER->RESPONSE->SET_CONTENT_TYPE( LV_CONTENT_TYPE ).
    ENDIF.

自己做的,有做的不好的地方,大佬们多多提出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值