国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SAP ABAP 使用SICF發(fā)布HTTP API接口

這篇具有很好參考價值的文章主要介紹了SAP ABAP 使用SICF發(fā)布HTTP API接口。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、SE24創(chuàng)建類:Z_HCX_HTTP

1、創(chuàng)建類:

SAP ABAP 使用SICF發(fā)布HTTP API接口

SAP ABAP 使用SICF發(fā)布HTTP API接口

SAP ABAP 使用SICF發(fā)布HTTP API接口

2、切換到接口(interface)頁簽,輸入IF_HTTP_EXTENSION ,回車。切換到方法(method)頁簽,雙擊IF_HTTP_EXTENSION~HANDLE_REQUEST進入代碼編輯界面。

SAP ABAP 使用SICF發(fā)布HTTP API接口

SAP ABAP 使用SICF發(fā)布HTTP API接口

?文章來源地址http://www.zghlxwxcb.cn/news/detail-505725.html

3、在IF_HTTP_EXTENSION~HANDLE_REQUEST方法中編寫代碼:(注:文末附另一種寫法)

   METHOD if_http_extension~handle_request.
     DATA: BEGIN OF ls_data,
             matnr TYPE matnr,
             maktx TYPE maktx,
           END OF ls_data.
     DATA: lt_data LIKE TABLE OF ls_data.

     DATA: lt_fields TYPE tihttpnvp.
     FIELD-SYMBOLS: <fs_field> LIKE LINE OF lt_fields.

     DATA: lv_method TYPE string. "獲取GET/POST方式
     DATA: lv_json  TYPE string,  "返回參數(shù)
           lv_json1 TYPE string,  "獲取傳回值數(shù)據(jù)
           lv_json2 TYPE string.  "獲取傳回值數(shù)據(jù)


*    獲取JSON抬頭數(shù)據(jù)
     server->request->get_header_fields(
         CHANGING
           fields = lt_fields
       ).
     lv_method = server->request->get_header_field( name = '~request_method' )."獲取GET/POST方式
     CALL METHOD server->response->if_http_entity~set_content_type
       EXPORTING
         content_type = 'application/json'.

     CASE lv_method.
       WHEN 'GET'.
*        獲取數(shù)據(jù)
         SELECT matnr maktx INTO CORRESPONDING FIELDS OF TABLE lt_data
           FROM makt
           UP TO 20 ROWS.

*        內(nèi)表轉換JSON
         CALL METHOD /ui2/cl_json=>serialize
           EXPORTING
             data   = lt_data
           RECEIVING
             r_json = lv_json.

*        將行數(shù)據(jù)JSON返回給調用端
         server->response->set_cdata(
           EXPORTING
             data   = lv_json
         ).

         server->response->set_status( code = 200 reason = 'OK' ).
       WHEN 'POST'.
*        獲取JSON行數(shù)據(jù)
         lv_json1 = server->request->if_http_entity~get_cdata( ).
*        解析json至內(nèi)表方法1
         /ui2/cl_json=>deserialize( EXPORTING json = lv_json1
                                     CHANGING data = ls_data ).
         IF NOT lv_json1 IS INITIAL.
*          獲取數(shù)據(jù)
           SELECT matnr maktx INTO CORRESPONDING FIELDS OF TABLE lt_data
             FROM makt
             UP TO 20 ROWS
             where matnr = ls_data-matnr.
*         內(nèi)表轉換json
           CALL METHOD /ui2/cl_json=>serialize
             EXPORTING
               data   = lt_data
             RECEIVING
               r_json = lv_json.
*        將行數(shù)據(jù)JSON返回給調用端
           server->response->set_cdata(
             EXPORTING
               data   = lv_json
           ).
         ENDIF.

         LOOP AT lt_fields INTO DATA(ls_fields).
           CASE ls_fields-name.
             WHEN 'lt_data'.
               lv_json2 = ls_fields-value.
           ENDCASE.
         ENDLOOP.
*        解析json至內(nèi)表方法1
         /ui2/cl_json=>deserialize( EXPORTING json = lv_json2
                                     CHANGING data = lt_data ).

         IF NOT lv_json2 IS INITIAL.
*        將行數(shù)據(jù)JSON返回給調用端
           server->response->set_cdata(
             EXPORTING
               data   = 'SoapUi傳參已收到'
           ).
         ENDIF.
         server->response->set_status( code = 200 reason = 'OK' ).

     ENDCASE.
   ENDMETHOD.

二、使用事務碼?SICF?在?default_host/sap/bc?節(jié)點下面創(chuàng)建子節(jié)點,用?Z_HCX_HTTP?類并激活方法:?

1、創(chuàng)建子元素:

SAP ABAP 使用SICF發(fā)布HTTP API接口

SAP ABAP 使用SICF發(fā)布HTTP API接口

?

SAP ABAP 使用SICF發(fā)布HTTP API接口

SAP ABAP 使用SICF發(fā)布HTTP API接口

SAP ABAP 使用SICF發(fā)布HTTP API接口

?之后點擊保存。

2、在default_host/sap中找到剛剛創(chuàng)建的子元素:Z_HCX_HTTP激活服務:

SAP ABAP 使用SICF發(fā)布HTTP API接口

SAP ABAP 使用SICF發(fā)布HTTP API接口

?3、獲取URL調用地址:

SAP ABAP 使用SICF發(fā)布HTTP API接口

直接打開默認是GET請求:

SAP ABAP 使用SICF發(fā)布HTTP API接口

?在Postman 中測試post請求:

SAP ABAP 使用SICF發(fā)布HTTP API接口

在SoapUI 中測試post請求:

SAP ABAP 使用SICF發(fā)布HTTP API接口

?

文末附:上文步驟3提到的另一種寫法。

1、手動再依次添加GET和POST方法,再依次選中,點擊參數(shù),添加參數(shù)SERVER - 類型Importing - 鍵入方法Type Ref To - 關聯(lián)類型IF_HTTP_SERVER

SAP ABAP 使用SICF發(fā)布HTTP API接口

SAP ABAP 使用SICF發(fā)布HTTP API接口

?2、雙擊IF_HTTP_EXTENSION~HANDLE_REQUEST編寫代碼

  method IF_HTTP_EXTENSION~HANDLE_REQUEST.

    DATA(LV_METHOD) = SERVER->REQUEST->GET_METHOD( )."查看調用方法GET OR POST
    CASE LV_METHOD.

      WHEN 'GET'.
        ME->GET( SERVER ).

      WHEN 'POST'.
        ME->POST( SERVER ).

      WHEN OTHERS.
       "Sets current HTTP status code
        SERVER->RESPONSE->SET_STATUS( CODE = 405 REASON = '請求方法不支持,請聯(lián)系管理員!' ).

    ENDCASE.

  endmethod.

3、根據(jù)業(yè)務需求情況,選擇GET或POST編寫代碼,以GET為例:?

  method GET.

    TYPES:BEGIN OF TY_TAB,
      AUFNR TYPE AFPO-AUFNR, "生產(chǎn)訂單號
*      WERKS TYPE MARC-WERKS, "工廠
*      MATNR TYPE AFPO-MATNR, "物料號
    END OF TY_TAB.
    DATA:GT_TAB TYPE TABLE OF TY_TAB,
         GS_TAB TYPE TY_TAB.

    TYPES:BEGIN OF TY_OUT,
      MATNR TYPE AFPO-MATNR, "物料號
      LGORT TYPE AFPO-LGORT, "庫存地點
      PSMNG TYPE AFPO-PSMNG, "總數(shù)量
    END OF TY_OUT.
    DATA:GT_OUT TYPE TABLE OF TY_OUT,
         GS_OUT TYPE TY_OUT.

    DATA:
      BEGIN OF LS_REQUEST,
        ACTION TYPE STRING,           " 可以用來區(qū)分具體對應的處理類
        DATA   TYPE TABLE OF TY_TAB, " 表結構
      END OF LS_REQUEST,
      LV_JSON         TYPE STRING,
      LV_CONTENT_TYPE TYPE STRING,
      LV_JSON_OUT     TYPE STRING,
      LT_RETURN TYPE STANDARD TABLE OF BAPIRETURN,
      LS_RETURN TYPE BAPIRETURN.

    " DELIVERS THE HTTP BODY OF THIS ENTITY AS CHARACTER DATA
    LV_JSON  = SERVER->REQUEST->GET_CDATA( ).
    IF LV_JSON IS INITIAL.
      SERVER->RESPONSE->SET_STATUS( CODE = 404 REASON = '未解析到BODY參數(shù),請檢查' ).
      RETURN.
    ENDIF.

    " 將JSON轉換成內(nèi)表
    /UI2/CL_JSON=>DESERIALIZE( EXPORTING JSON = LV_JSON CHANGING DATA = LS_REQUEST ).

    CASE LS_REQUEST-ACTION.
      WHEN 'ZGETPRINT'.

      WHEN OTHERS.
        SERVER->RESPONSE->SET_STATUS( CODE = 404 REASON = '未解析到對應ACTION,請檢查' ).
        RETURN.
    ENDCASE.

    IF LS_REQUEST-DATA IS NOT INITIAL.
      GT_TAB = LS_REQUEST-DATA.
    ENDIF.

    LOOP AT GT_TAB INTO GS_TAB.
      "補全生產(chǎn)訂單號的前導0.
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          INPUT  = GS_TAB-AUFNR
        IMPORTING
          OUTPUT = GS_TAB-AUFNR.

      MODIFY GT_TAB FROM GS_TAB.
    ENDLOOP.

*   獲取打印數(shù)據(jù)
    SELECT MATNR LGORT PSMNG INTO CORRESPONDING FIELDS OF TABLE GT_OUT
      FROM AFPO FOR ALL ENTRIES IN GT_TAB
        WHERE AUFNR = GT_TAB-AUFNR.

    IF GT_OUT IS INITIAL.
      SERVER->RESPONSE->SET_CDATA( /UI2/CL_JSON=>SERIALIZE( DATA = 'CODE:500, SAP API SELECT ERROR' ) ).
       RETURN.
    ENDIF.

    LOOP AT GT_OUT INTO GS_OUT.
      "去除物料號的前導0.
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
        EXPORTING
          INPUT  = GS_OUT-MATNR
        IMPORTING
          OUTPUT = GS_OUT-MATNR.

      MODIFY GT_OUT FROM GS_OUT.
    ENDLOOP.

*    內(nèi)表轉換JSON
    CALL METHOD /UI2/CL_JSON=>SERIALIZE
      EXPORTING
        DATA   = GT_OUT
      RECEIVING
        R_JSON = LV_JSON_OUT.

*   將行數(shù)據(jù)JSON返回給調用端
    SERVER->RESPONSE->SET_CDATA(
      EXPORTING
        DATA   = LV_JSON_OUT ).

  endmethod.

4、請求示例

{

??"ACTION":?"ZGETPRINT",

??"DATA":?[

??????{

????????????"AUFNR":"1000003"

????????}

??]

}

5、響應示例???

A、[{"MATNR":"11000042","LGORT":"4071","PSMNG":1620.000}]

B"CODE:500,?SAP?API?SELECT?ERROR" ?注:未獲取到數(shù)據(jù)

?

到了這里,關于SAP ABAP 使用SICF發(fā)布HTTP API接口的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • ABAP:調用HTTP接口詳解

    ABAP:調用HTTP接口詳解

    DATA:pv_http_client TYPE REF TO if_http_client, pv_url TYPE string. 1.可以通過URL連接或者IP:端口連接,根據(jù)實際情況而定, 建議使用URL,省去地址服務器域名轉換 \\\"URL接連 CALL METHOD cl_http_client=create_by_url EXPORTING url = pv_url IMPORTING client = pv_http_client EXCEPTIONS argument_not_found = 1 plugin_not_active = 2

    2023年04月12日
    瀏覽(19)
  • ABAP - 調用HTTP/HTTPS接口上傳文件

    如果調用該外部接口是需要使用Oauth2.0的話,可參照該文章里的OAuth2.0的部分: ABAP代碼使用OAuth2.0 Client Credential調用外部API 首先,先將文件內(nèi)容轉成binary格式的內(nèi)表 , 可參照文章: 內(nèi)表文件的,可參照ABAP - 下載ALV內(nèi)表 - download ALV internal table SOST里的附件的,可參照ABAP獲取發(fā)

    2024年02月20日
    瀏覽(21)
  • ABAP調用阿里云接口-短信服務-HTTP協(xié)議及簽名(abap版本)<轉載>

    ABAP調用阿里云接口-短信服務-HTTP協(xié)議及簽名(abap版本)<轉載>

    原文鏈接:https://blog.csdn.net/xiefireworks/article/details/113037650 阿里云接口文檔請參考官網(wǎng)地址 https://help.aliyun.com/document_detail/59210.html?spm=5176.8195934.J_5834642020.5.11ba4378DLVi4O 此處僅介紹使用ABAP完成阿里云短信服務簽名請求的完成。 第一步:請求參數(shù) 1 abap 生成的uuid為32位不帶“-”

    2024年02月16日
    瀏覽(19)
  • SAP ABAP 使用GENIOS求解線性規(guī)劃問題的簡單例子

    主要內(nèi)容來自Operations Research ABAP ,結合我遇到的需求,做了一些修改。 需求:有BOX1和BOX2兩種箱子,分別能包裝不同數(shù)量的A物料和B物料,給出若干數(shù)量的A, B物料,怎樣包裝可以使箱子數(shù)最少? 線性規(guī)劃有助于解決類似問題。 以下是一個示例程序,包含必要的注釋, ? 運行

    2024年02月16日
    瀏覽(93)
  • API 接口主流協(xié)議有哪些?如何創(chuàng)建 HTTP/HTTP、WebSocket/WebSockets、TCP/UDP、gRPC、SOAP、Dubbo/HSF 等不同協(xié)議?

    API 接口主流協(xié)議有哪些?如何創(chuàng)建 HTTP/HTTP、WebSocket/WebSockets、TCP/UDP、gRPC、SOAP、Dubbo/HSF 等不同協(xié)議?

    API 接口協(xié)議繁多,不同的協(xié)議有著不同的使用場景。70% 互聯(lián)網(wǎng)應用開發(fā)者日常僅會接觸到最通用的 HTTP 協(xié)議,相信大家希望了解更多其他協(xié)議的信息。我們今天會給大家介紹各種 API 接口主流協(xié)議和他們之間的關系。 接口協(xié)議分成兩類: 傳輸層協(xié)議和應用層協(xié)議。 傳輸層協(xié)

    2023年04月21日
    瀏覽(45)
  • SAP ABAP中使用函數(shù)ALSM_EXCEL_TO_INTERNAL_TABLE讀取EXCEL中不同的SHEET數(shù)據(jù)

    SAP提供了標準的讀取EXCEL的函數(shù)(ALSM_EXCEL_TO_INTERNAL_TABLE),但是此標準函數(shù)無法滿足對同一EXCEL 進行不同SHEET的數(shù)據(jù)讀取,一下方法就是教你如何通過修改程序來實現(xiàn)ALSM_EXCEL_TO_INTERNAL_TABLE讀取多個SHEET; 一、拷貝ALSM_EXCEL_TO_INTERNAL_TABLE函數(shù),拷貝時函數(shù)組選擇自定義函數(shù)組 二

    2024年02月14日
    瀏覽(29)
  • SAP/ABAP(二)

    SAP/ABAP(二)

    一、循環(huán)結構 二、條件判斷 三、異常處理(cx-root) 四、結構體,工作區(qū) 五、內(nèi)表

    2024年02月17日
    瀏覽(22)
  • java創(chuàng)建上傳文件接口并使用HTTP測試

    備注: 使用jersey框架 2.1.1.上傳本地文件 參考鏈接: Jersey (JAX-RS) multiple files upload example

    2024年02月11日
    瀏覽(15)
  • SAP ABAP技術文章合集_微信公眾號:ABAP猿

    SAP ABAP技術文章合集_微信公眾號:ABAP猿

    序號 文章標題 01 ABAP OOALV-基本顯示 02 ABAP OOALV-排序、過濾 03 ABAP OOALV-合計、小計 04 ABAP OOALV-選擇模式、觸發(fā)事件 05 ABAP OOALV-隱藏列、修改列標題、添加圖標列、調整列位置 06 ABAP OOALV-固定列、鼠標懸停文本 07 ABAP OOALV-顏色(列、行、單元格) 08 ABAP OOALV-樣式(列、行、單元格

    2024年02月03日
    瀏覽(53)
  • SAP ABAP 用戶狀態(tài)鎖定案例

    SAP ABAP 用戶狀態(tài)鎖定案例

    一、前言 項目需求是根據(jù)當天及前兩天的離職員工信息(假設這是一個定時器任務每天下午5點執(zhí)行程序,計算前兩天的員工工號是為了將5點之后辦理離職的員工工號找出來),將這些員工在用戶表 USR02 中的鎖定狀態(tài)設置為 “64”,以保證離職員工無法繼續(xù)使用系統(tǒng)賬號。

    2024年02月15日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包