SAP 提供http post服務 實踐


實踐感受一下:

 

SE24新建類

實現接口IF_HTTP_EXTENSION

 

 

 

 

雙擊,實例化這個方法。

 1   METHOD if_http_extension~handle_request.
 2     DATA: BEGIN OF ls_data,
 3             matnr TYPE matnr,
 4             maktx TYPE maktx,
 5           END OF ls_data.
 6 
 7     DATA: lt_data LIKE TABLE OF ls_data.
 8 
 9     DATA: lt_fields TYPE tihttpnvp.
10     FIELD-SYMBOLS: <fs_field> LIKE LINE OF lt_fields.
11 
12     DATA: lv_method TYPE string. "獲取GET/POST方式
13     DATA: lv_json  TYPE string,  "返回參數
14           lv_json1 TYPE string,  "獲取傳回值數據
15           lv_json2 TYPE string.  "獲取傳回值數據
16 
17 
18 *    獲取JSON抬頭數據
19     server->request->get_header_fields(
20         CHANGING
21           fields = lt_fields
22       ).
23     lv_method = server->request->get_header_field( name = '~request_method' )."獲取GET/POST方式
24     CALL METHOD server->response->if_http_entity~set_content_type
25       EXPORTING
26         content_type = 'application/json'.
27 
28     CASE lv_method.
29       WHEN 'GET'.
30 *        獲取數據
31         SELECT matnr maktx INTO CORRESPONDING FIELDS OF TABLE lt_data
32           FROM z_v_atps23
33           UP TO 5 ROWS.
34 
35 *        內表轉換JSON
36         CALL METHOD /ui2/cl_json=>serialize
37           EXPORTING
38             data   = lt_data
39           RECEIVING
40             r_json = lv_json.
41 
42 *        將行數據JSON返回給調用端
43         server->response->set_cdata(
44           EXPORTING
45             data   = lv_json
46         ).
47 
48         server->response->set_status( code = 200 reason = 'OK' ).
49       WHEN 'POST'.
50 
51 *        獲取JSON行數據
52         lv_json1 = server->request->if_http_entity~get_cdata( ).
53 *        解析json至內表方法1
54         /ui2/cl_json=>deserialize( EXPORTING json = lv_json1
55                                     CHANGING data = ls_data ).
56         IF NOT lv_json1 IS INITIAL.
57 *          獲取數據
58           SELECT matnr maktx INTO CORRESPONDING FIELDS OF TABLE lt_data
59             FROM z_v_atps23
60             UP TO 10 ROWS
61             WHERE matnr = ls_data-matnr.
62 *         內表轉換json
63           CALL METHOD /ui2/cl_json=>serialize
64             EXPORTING
65               data   = lt_data
66             RECEIVING
67               r_json = lv_json.
68 *        將行數據JSON返回給調用端
69           server->response->set_cdata(
70             EXPORTING
71               data   = lv_json
72           ).
73         ENDIF.
74 
75         LOOP AT lt_fields INTO DATA(ls_fields).
76           CASE ls_fields-name.
77             WHEN 'lt_data'.
78               lv_json2 = ls_fields-value.
79           ENDCASE.
80         ENDLOOP.
81 *        解析json至內表方法1
82         /ui2/cl_json=>deserialize( EXPORTING json = lv_json2
83                                     CHANGING data = lt_data ).
84 
85         IF NOT lv_json2 IS INITIAL.
86 *        將行數據JSON返回給調用端
87           server->response->set_cdata(
88             EXPORTING
89               data   = 'SoapUi傳參已收到'
90           ).
91         ENDIF.
92         server->response->set_status( code = 200 reason = 'OK' ).
93 
94     ENDCASE.
95 
96   ENDMETHOD.

 

 

TCODE:SICF 在路徑/default_host/sap/bc/下新建並且激活服務,服務中選擇上面創建的類。

 

 點擊測試服務,默認GET方式

 

 

 END.

 

勵志美文、《抉擇》
  
人的一生常處於抉擇之中,如:念哪一間大學?選哪一種職業?娶哪一種女子?……等等傷腦筋的事情。一個人抉擇力的有無,可以顯示其人格成熟與否。
  
倒是哪些胸無主見的人,不受抉擇之苦。因為逢到需要決定的時候,他總是求詢別人說:"嘿,你看怎么做?"
  
大凡能夠成大功業的人,都是抉擇力甚強的人。他知道事之成敗,全在乎已沒有人可以代勞,更沒有人能代你決定。
  
在抉擇的哪一刻,成敗實已露出端倪。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM