SAP 提供http post服務 實踐

明大叔 2021-09-18 12:22:14 阅读数:758

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/下新建並且激活服務,服務中選擇上面創建的類。

 

 

 END.

 

勵志美文、《抉擇》
人的一生常處於抉擇之中,如:念哪一間大學?選哪一種職業?娶哪一種女子?……等等傷腦筋的事情。一個人抉擇力的有無,可以顯示其人格成熟與否。
倒是哪些胸無主見的人,不受抉擇之苦。因為逢到需要决定的時候,他總是求詢別人說:"嘿,你看怎麼做?"
大凡能够成大功業的人,都是抉擇力甚强的人。他知道事之成敗,全在乎已沒有人可以代勞,更沒有人能代你决定。
在抉擇的哪一刻,成敗實已露出端倪。
版权声明:本文为[明大叔]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/09/20210918122214369c.html