Você está na página 1de 4

11/4/2019 ui5-file-upload-planning/zcl_zfileupload_dpc_ext.

aclass at master · consetto/ui5-file-upload-planning · GitHub

Dismiss
Join GitHub today
GitHub is home to over 40 million developers
working together to host and review code,
manage projects, and build software together.

Sign up

Branch: master Find file Copy path

ui5-file-upload-planning / gateway_classes / zcl_zfileupload_dpc_ext.aclass

waleediqbal SAP Gateway classes for file upload

9e1d07c on Dec 7, 2017

1 contributor

Raw Blame History

143 lines (118 sloc) 4.35 KB

1 *----------------------------------------------------------------------
2 * UI5 FILE UPLOAD PLANNING FUNCTION
3 * Author: Waleed Iqbal Date: 30/11/2017
4 * www.consetto.com
5 *----------------------------------------------------------------------
6 class ZCL_ZFILEUPLOAD_DPC_EXT definition
7 public
8 inheriting from ZCL_ZFILEUPLOAD_DPC
9 create public .
10
11 public section.
12
13 methods /IWBEP/IF_MGW_APPL_SRV_RUNTIME~CREATE_STREAM
14 redefinition .
15 protected section.
16
17 methods UPLOAD_MAPSET_GET_ENTITYSET
18 redefinition .
19 private section.
20 ENDCLASS.
21
22
23
https://github.com/consetto/ui5-file-upload-planning/blob/master/gateway_classes/zcl_zfileupload_dpc_ext.aclass 1/4
11/4/2019 ui5-file-upload-planning/zcl_zfileupload_dpc_ext.aclass at master · consetto/ui5-file-upload-planning · GitHub

24 CLASS ZCL_ZFILEUPLOAD_DPC_EXT IMPLEMENTATION.


25
26
27 method /IWBEP/IF_MGW_APPL_SRV_RUNTIME~CREATE_STREAM.
28 DATA: ls_hdr_param TYPE ihttpnvp,
29 lt_hdr_params TYPE tihttpnvp,
30 ls_file TYPE ZFILE_UPLOAD,
31 lv_xstring TYPE xstring,
32 base64_string TYPE string,
33 base64_xstring TYPE xstring,
34 i_msg_str TYPE string,
35 l_msg_str TYPE string,
36 l_sub_str TYPE string,
37 ls_bapiret TYPE bapiret2,
38 lt_bapiret TYPE TABLE OF bapiret2,
39 lo_convert TYPE REF TO cl_abap_conv_in_ce,
40 lo_facade TYPE REF TO /iwbep/if_mgw_dp_int_facade,
41 lr_application TYPE REF TO cl_rsbolap_application,
42 lr_data_area TYPE REF TO if_rsbolap_data_area,
43 lr_olap_area TYPE REF TO cl_rsr_olap_area,
44 lv_sequence TYPE RSPLS_SEQNM,
45 ls_header TYPE ihttpnvp.
46
47 FIELD-SYMBOLS:
48 <wa_return> TYPE any.
49
50 lo_facade ?= /iwbep/if_mgw_conv_srv_runtime~get_dp_facade( ).
51 lt_hdr_params = lo_facade->get_request_header( ).
52
53 * Read the header parameters
54 CASE iv_entity_name.
55 WHEN 'UPLOAD_MAP'.
56 READ TABLE lt_hdr_params into ls_hdr_param WITH KEY name = 'slug'.
57 IF sy-subrc = 0.
58 ls_file-filename = ls_hdr_param-value.
59 ENDIF.
60 READ TABLE lt_hdr_params into ls_hdr_param WITH KEY name = 'content-type'.
61 IF sy-subrc = 0.
62 ls_file-mimetype = ls_hdr_param-value.
63 ENDIF.
64 READ TABLE lt_hdr_params into ls_hdr_param WITH KEY name = 'ps-name'.
65 IF sy-subrc = 0.
66 lv_sequence = ls_hdr_param-value.
67 ENDIF.
68 ENDCASE.
69
70 * Read the base64 data from UI5 in xstring
71 lv_xstring = is_media_resource-value.

https://github.com/consetto/ui5-file-upload-planning/blob/master/gateway_classes/zcl_zfileupload_dpc_ext.aclass 2/4
11/4/2019 ui5-file-upload-planning/zcl_zfileupload_dpc_ext.aclass at master · consetto/ui5-file-upload-planning · GitHub

72 lo_convert = cl_abap_conv_in_ce=>create( ).
73
74 * convert the xstring value to base64 string
75 lo_convert->convert( EXPORTING input = lv_xstring
76 IMPORTING data = base64_string ).
77
78 * convert the base64 string to xstring
79 CALL FUNCTION 'SSFC_BASE64_DECODE'
80 EXPORTING
81 b64data = base64_string
82 IMPORTING
83 bindata = base64_xstring
84 EXCEPTIONS
85 OTHERS = 2.
86
87 * store the xstring value in memory for global access
88 export base64_xstring from base64_xstring to memory id 'z_upload_data'.
89
90 * Execute planning sequence
91 CALL FUNCTION 'RSPLSSE_PLSEQ_EXECUTE'
92 EXPORTING
93 i_seqnm = lv_sequence
94 i_fast_enqueue = rs_c_true
95 TABLES
96 e_tk_return = lt_bapiret.
97
98 * Format messages for returning to UI5
99 LOOP AT lt_bapiret INTO ls_bapiret.
100 CALL FUNCTION 'FORMAT_MESSAGE'
101 EXPORTING
102 id = ls_bapiret-id
103 lang = sy-langu
104 no = ls_bapiret-number
105 v1 = ls_bapiret-message_v1
106 v2 = ls_bapiret-message_v2
107 v3 = ls_bapiret-message_v3
108 v4 = ls_bapiret-message_v4
109 IMPORTING
110 msg = i_msg_str
111 EXCEPTIONS
112 not_found = 1
113 OTHERS = 2.
114 CONCATENATE i_msg_str '\n' INTO l_sub_str.
115 CONCATENATE l_msg_str l_sub_str INTO l_msg_str.
116 ENDLOOP.
117
118 * Initialize BI-IP application
119 lr_application = cl_rspls_plan_application=>get( ).

https://github.com/consetto/ui5-file-upload-planning/blob/master/gateway_classes/zcl_zfileupload_dpc_ext.aclass 3/4
11/4/2019 ui5-file-upload-planning/zcl_zfileupload_dpc_ext.aclass at master · consetto/ui5-file-upload-planning · GitHub

120 lr_data_area = lr_application->get_data_area( ).


121
122 * Save data
123 lr_data_area->save( ).
124
125 lr_olap_area = lr_data_area->get_olap_area( ).
126 IF lr_olap_area->n_save_error = rs_c_false.
127 * Data successfully saved
128 ELSE.
129 * Error while saving data.
130 ENDIF.
131
132 * Return the messages to UI5 in custom header value
133 ls_header-name = 'custom-message'.
134 ls_header-value = l_msg_str.
135 /iwbep/if_mgw_conv_srv_runtime~set_header( is_header = ls_header ).
136
137 endmethod.
138
139
140 method UPLOAD_MAPSET_GET_ENTITYSET.
141
142 endmethod.
143 ENDCLASS.

https://github.com/consetto/ui5-file-upload-planning/blob/master/gateway_classes/zcl_zfileupload_dpc_ext.aclass 4/4

Você também pode gostar