├── .abapgit.xml
├── LICENSE
├── README.md
├── s3_demo_programs
├── zlnkeaws_s3_demo_bucket.prog.abap
├── zlnkeaws_s3_demo_bucket.prog.xml
├── zlnkeaws_s3_demo_file.prog.abap
├── zlnkeaws_s3_demo_file.prog.xml
├── zlnkeaws_s3_demo_folder.prog.abap
├── zlnkeaws_s3_demo_folder.prog.xml
├── zlnkeaws_s3_demo_iam.prog.abap
├── zlnkeaws_s3_demo_iam.prog.xml
├── zlnkeaws_s3_demo_s3.prog.abap
└── zlnkeaws_s3_demo_s3.prog.xml
└── s3_sdk
├── zlnkeacckey_de.dtel.xml
├── zlnkeacckey_do.doma.xml
├── zlnkeaws_account_id_de.dtel.xml
├── zlnkeaws_account_id_do.doma.xml
├── zlnkeaws_s3.msag.xml
├── zlnkebucket.tabl.xml
├── zlnkebucket_de.dtel.xml
├── zlnkebucket_do.doma.xml
├── zlnkebucket_lifecycle_de.dtel.xml
├── zlnkebucket_prefix_de.dtel.xml
├── zlnkebucket_prefix_do.doma.xml
├── zlnkechdat.dtel.xml
├── zlnkechtim.dtel.xml
├── zlnkechusr.dtel.xml
├── zlnkecl_aws_iam.clas.abap
├── zlnkecl_aws_iam.clas.xml
├── zlnkecl_aws_inherit_switch.clas.abap
├── zlnkecl_aws_inherit_switch.clas.xml
├── zlnkecl_aws_rest.clas.abap
├── zlnkecl_aws_rest.clas.xml
├── zlnkecl_aws_s3.clas.abap
├── zlnkecl_aws_s3.clas.xml
├── zlnkecl_aws_s3_bucket.clas.abap
├── zlnkecl_aws_s3_bucket.clas.xml
├── zlnkecl_aws_sign_v4_base.clas.abap
├── zlnkecl_aws_sign_v4_base.clas.xml
├── zlnkecl_aws_sign_v4_header.clas.abap
├── zlnkecl_aws_sign_v4_header.clas.xml
├── zlnkecl_aws_sqs.clas.abap
├── zlnkecl_aws_sqs.clas.xml
├── zlnkecl_hash.clas.abap
├── zlnkecl_hash.clas.xml
├── zlnkecl_http.clas.abap
├── zlnkecl_http.clas.xml
├── zlnkecl_log.clas.abap
├── zlnkecl_log.clas.xml
├── zlnkecl_rfc_connections.clas.abap
├── zlnkecl_rfc_connections.clas.xml
├── zlnkecl_ssf.clas.abap
├── zlnkecl_ssf.clas.xml
├── zlnkecl_string_conversions.clas.abap
├── zlnkecl_string_conversions.clas.xml
├── zlnkecl_xml_utils.clas.abap
├── zlnkecl_xml_utils.clas.xml
├── zlnkeclient_side_encryption_de.dtel.xml
├── zlnkecrdat.dtel.xml
├── zlnkecrtim.dtel.xml
├── zlnkecrusr.dtel.xml
├── zlnkecx_aws_s3.clas.abap
├── zlnkecx_aws_s3.clas.xml
├── zlnkeendpoint_de.dtel.xml
├── zlnkeendpoint_do.doma.xml
├── zlnkeguid.dtel.xml
├── zlnkeif_version.intf.abap
├── zlnkeif_version.intf.xml
├── zlnkekey_size_st.tabl.xml
├── zlnkekey_size_tt.ttyp.xml
├── zlnkelog.tabl.xml
├── zlnkelog_cfg.tabl.xml
├── zlnkelog_event_de.dtel.xml
├── zlnkelog_event_do.doma.xml
├── zlnkelog_keep_days_de.dtel.xml
├── zlnkelog_msgtyp_de.dtel.xml
├── zlnkelog_msgtyp_do.doma.xml
├── zlnkempart_upld.tabl.xml
├── zlnkempart_upld_state_de.dtel.xml
├── zlnkempart_upld_state_do.doma.xml
├── zlnkempart_upload_st.tabl.xml
├── zlnkempart_upload_tt.ttyp.xml
├── zlnkeno_prefix_flag_de.dtel.xml
├── zlnkeregion.tabl.xml
├── zlnkeregion_de.dtel.xml
├── zlnkeregion_do.doma.xml
├── zlnkers3_log_viewer.prog.abap
├── zlnkers3_log_viewer.prog.xml
├── zlnkers3_purge_mpart_upload.prog.abap
├── zlnkers3_purge_mpart_upload.prog.xml
├── zlnkers3_strust.prog.abap
├── zlnkers3_strust.prog.xml
├── zlnkers3_tables_initial_load.prog.abap
├── zlnkers3_tables_initial_load.prog.xml
├── zlnkesecacckey_de.dtel.xml
├── zlnkesecacckey_do.doma.xml
├── zlnkeserver_side_encryption_de.dtel.xml
├── zlnkessfbin_tt.ttyp.xml
├── zlnkeuser.tabl.xml
├── zlnkeusername_de.dtel.xml
├── zlnkeusername_do.doma.xml
└── zlnkezipflag_de.dtel.xml
/.abapgit.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | E
6 | /
7 | PREFIX
8 |
9 | - /.gitignore
10 | - /LICENSE
11 | - /README.md
12 | - /package.json
13 | - /.travis.yml
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | This is a fork, original code by https://github.com/linkeit, now deleted by LinkeIT, repo not maintained
2 |
3 | # AWS_S3_SDK_for_ABAP_Z
4 | AWS S3 for ABAP is an ABAP development wich enables native integration from ABAP to AWS S3. You will be able to manage buckets, folders and files on AWS S3. It has two editions: Community and Enterprise.
5 |
6 | The Community Edition is the ABAP SDK which you can use as a tool to write your own programs to read from AWS S3 and write to AWS S3. Demo programs are provided as a reference.
7 |
8 | The Enterprise Edition (complete solution) maps from ArchiveLink to AWS S3. In this way you can use S3 as a Content Server. As well you can make use of the ABAP SDK to develop your own programs.
9 |
10 | AWS S3 for SAP runs on any SAP Netweaver 7.0 or higher (SAP_BASIS 700 0028 SAPKB70028). It only depends on BASIS package, so you can use it in ERP, CRM, SRM, etc...
11 |
12 | # Installing
13 | Follow detailed instructions in this document
14 |
15 | # FAQ
16 | For questions/comments/bugs/feature requests/wishes please create an issue
17 |
--------------------------------------------------------------------------------
/s3_demo_programs/zlnkeaws_s3_demo_bucket.prog.abap:
--------------------------------------------------------------------------------
1 | *&---------------------------------------------------------------------*
2 | *& Report ZLNKEAWS_S3_DEMO_BUCKET
3 | *&
4 | *&---------------------------------------------------------------------*
5 | *& Company: RocketSteam
6 | *& Author: Jordi Escoda, 8th September 2017
7 | *& e-mail: jordi.escoda@rocket-steam.com or jordi.escoda@linkeit.com
8 | *& This demo program shows how use Bucket operations
9 | *&---------------------------------------------------------------------*
10 | REPORT zlnkeaws_s3_demo_bucket.
11 |
12 | *--------------------------------------------------------------------*
13 | * Types
14 | *--------------------------------------------------------------------*
15 | TYPE-POOLS: abap.
16 |
17 | *--------------------------------------------------------------------*
18 | * Selection screen
19 | *--------------------------------------------------------------------*
20 | SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
21 | PARAMETERS: p_creat RADIOBUTTON GROUP rb1 USER-COMMAND rb,
22 | p_delet RADIOBUTTON GROUP rb1,
23 | p_list RADIOBUTTON GROUP rb1,
24 | p_loc RADIOBUTTON GROUP rb1,
25 | p_head RADIOBUTTON GROUP rb1.
26 | PARAMETERS: p_dbg AS CHECKBOX.
27 | PARAMETERS: p_bucket TYPE zlnkebucket-bucket LOWER CASE,
28 | p_iam TYPE zlnkeuser-user_name LOWER CASE,
29 | p_region TYPE zlnkeregion-region LOWER CASE.
30 | PARAMETERS: p_exists AS CHECKBOX.
31 | SELECTION-SCREEN END OF BLOCK b1.
32 |
33 | *----------------------------------------------------------------------*
34 | * CLASS lcl_demo_bucket DEFINITION
35 | *----------------------------------------------------------------------*
36 | *
37 | *----------------------------------------------------------------------*
38 | CLASS lcl_demo_bucket DEFINITION.
39 | PUBLIC SECTION.
40 | CLASS-METHODS:
41 | execute,
42 | selection_screen_visibility.
43 |
44 | PRIVATE SECTION.
45 | CLASS-METHODS:
46 | create_bucket,
47 | create_bucket_only_db,
48 | delete_bucket,
49 | list_bucket,
50 | bucket_location,
51 | head_bucket.
52 |
53 | ENDCLASS. "lcl_demo_bucket DEFINITION
54 |
55 | *----------------------------------------------------------------------*
56 | * CLASS lcl_demo_bucket IMPLEMENTATION
57 | *----------------------------------------------------------------------*
58 | *
59 | *----------------------------------------------------------------------*
60 | CLASS lcl_demo_bucket IMPLEMENTATION.
61 |
62 | *--------------------------------------------------------------------*
63 | * Highest level of abstraction
64 | *--------------------------------------------------------------------*
65 | METHOD execute.
66 | CASE abap_true.
67 | WHEN p_creat.
68 | IF p_exists = abap_false.
69 | create_bucket( ).
70 | ELSE.
71 | create_bucket_only_db( ).
72 | ENDIF.
73 | WHEN p_delet.
74 | delete_bucket( ).
75 | WHEN p_list.
76 | list_bucket( ).
77 | WHEN p_loc.
78 | bucket_location( ).
79 | WHEN p_head.
80 | head_bucket( ).
81 | ENDCASE.
82 | ENDMETHOD. "execute
83 |
84 | *--------------------------------------------------------------------*
85 | * Creates a Bucket on AWS and DB
86 | *--------------------------------------------------------------------*
87 | METHOD create_bucket.
88 | DATA: lv_xml TYPE string.
89 | DATA: lv_msg TYPE string.
90 | DATA: lv_http_status TYPE i.
91 | DATA: ls_zlnkebucket TYPE zlnkebucket.
92 | DATA: lr_bucket TYPE REF TO zlnkecl_aws_s3_bucket. "#EC NEEDED
93 | DATA: lr_cx_aws_s3 TYPE REF TO zlnkecx_aws_s3.
94 |
95 | TRY.
96 | CALL METHOD zlnkecl_aws_s3_bucket=>create_bucket
97 | EXPORTING
98 | i_bucket_name = p_bucket
99 | i_user_name = p_iam
100 | i_region = p_region
101 | i_dbg = p_dbg
102 | IMPORTING
103 | e_http_status = lv_http_status
104 | e_response_content = lv_xml
105 | e_aws_s3_bucket = lr_bucket. "Reference to the bucket created
106 |
107 | IF lv_xml IS NOT INITIAL.
108 | zlnkecl_xml_utils=>show_xml_in_dialog( lv_xml ).
109 | ENDIF.
110 |
111 | IF lv_http_status = zlnkecl_http=>c_status_200_ok.
112 | ls_zlnkebucket-bucket = p_bucket.
113 | ls_zlnkebucket-user_name = p_iam.
114 | ls_zlnkebucket-region = p_region.
115 | ls_zlnkebucket-crusr = sy-uname.
116 | ls_zlnkebucket-crdat = sy-datum.
117 | ls_zlnkebucket-crtim = sy-uzeit.
118 | INSERT zlnkebucket FROM ls_zlnkebucket.
119 | CONCATENATE 'Bucket ' p_bucket ' created successfully'
120 | INTO lv_msg RESPECTING BLANKS.
121 | ELSE.
122 | CONCATENATE 'Bucket ' p_bucket ' could not be created'
123 | INTO lv_msg RESPECTING BLANKS.
124 | ENDIF.
125 | CONDENSE lv_msg.
126 | WRITE:/ lv_msg.
127 |
128 | CATCH zlnkecx_aws_s3 INTO lr_cx_aws_s3.
129 | lv_msg = lr_cx_aws_s3->get_text( ).
130 | WRITE:/ lv_msg.
131 | ENDTRY.
132 |
133 | ENDMETHOD. "create_bucket
134 |
135 | *--------------------------------------------------------------------*
136 | * Creates a Bucket only on DB. Makes sense when your bucket
137 | * is already existing on AWS.
138 | *--------------------------------------------------------------------*
139 | METHOD create_bucket_only_db.
140 | DATA: lv_msg TYPE string.
141 | DATA: lv_bucket TYPE zlnkebucket-bucket.
142 | DATA: ls_zlnkebucket TYPE zlnkebucket.
143 |
144 | SELECT SINGLE bucket
145 | INTO lv_bucket
146 | FROM zlnkebucket
147 | WHERE bucket = p_bucket.
148 | IF sy-subrc <> 0.
149 | ls_zlnkebucket-bucket = p_bucket.
150 | ls_zlnkebucket-user_name = p_iam.
151 | ls_zlnkebucket-region = p_region.
152 | ls_zlnkebucket-no_prefix = abap_true.
153 | ls_zlnkebucket-crusr = sy-uname.
154 | ls_zlnkebucket-crdat = sy-datum.
155 | ls_zlnkebucket-crtim = sy-uzeit.
156 | INSERT zlnkebucket FROM ls_zlnkebucket.
157 | CONCATENATE 'Bucket ' p_bucket ' created successfully'
158 | INTO lv_msg RESPECTING BLANKS.
159 | ELSE.
160 | CONCATENATE 'Bucket ' p_bucket ' already exists in DB'
161 | INTO lv_msg RESPECTING BLANKS.
162 | ENDIF.
163 | CONDENSE lv_msg.
164 | WRITE:/ lv_msg.
165 |
166 | ENDMETHOD. "create_bucket_only_db
167 |
168 | *--------------------------------------------------------------------*
169 | * Deletes a Bucket (must be empty)
170 | *--------------------------------------------------------------------*
171 | METHOD delete_bucket.
172 | DATA: lv_xml TYPE string.
173 | DATA: lv_msg TYPE string.
174 | DATA: lv_http_status TYPE i.
175 | DATA: lr_bucket TYPE REF TO zlnkecl_aws_s3_bucket.
176 | DATA: lr_cx_aws_s3 TYPE REF TO zlnkecx_aws_s3.
177 |
178 | TRY.
179 | CREATE OBJECT lr_bucket
180 | EXPORTING
181 | i_bucket_name = p_bucket
182 | i_dbg = p_dbg.
183 |
184 | CALL METHOD lr_bucket->delete_bucket
185 | IMPORTING
186 | e_http_status = lv_http_status
187 | e_response_content = lv_xml.
188 |
189 | IF lv_xml IS NOT INITIAL.
190 | zlnkecl_xml_utils=>show_xml_in_dialog( lv_xml ).
191 | ENDIF.
192 |
193 | IF lv_http_status = zlnkecl_http=>c_status_204_no_content.
194 | DELETE FROM zlnkebucket WHERE bucket = p_bucket.
195 | CONCATENATE 'Bucket ' p_bucket ' deleted successfully'
196 | INTO lv_msg RESPECTING BLANKS.
197 | ELSE.
198 | CONCATENATE 'Bucket ' p_bucket ' could not be deleted'
199 | INTO lv_msg RESPECTING BLANKS.
200 | ENDIF.
201 | CONDENSE lv_msg.
202 | WRITE:/ lv_msg.
203 |
204 | CATCH zlnkecx_aws_s3 INTO lr_cx_aws_s3.
205 | lv_msg = lr_cx_aws_s3->get_text( ).
206 | WRITE:/ lv_msg.
207 | ENDTRY.
208 |
209 | ENDMETHOD. "delete_bucket
210 |
211 | *--------------------------------------------------------------------*
212 | * Lists Bucket content
213 | *--------------------------------------------------------------------*
214 | METHOD list_bucket.
215 | DATA: lv_xml TYPE string.
216 | DATA: lv_msg TYPE string.
217 | DATA: lv_http_status TYPE i. "#EC NEEDED
218 | DATA: lr_bucket TYPE REF TO zlnkecl_aws_s3_bucket.
219 | DATA: lr_cx_aws_s3 TYPE REF TO zlnkecx_aws_s3.
220 |
221 | TRY.
222 | CREATE OBJECT lr_bucket
223 | EXPORTING
224 | i_bucket_name = p_bucket
225 | i_dbg = p_dbg.
226 |
227 | CALL METHOD lr_bucket->list_objects
228 | * EXPORTING
229 | * i_prefix =
230 | * i_marker =
231 | * i_max_keys =
232 | IMPORTING
233 | e_http_status = lv_http_status
234 | e_response_content = lv_xml.
235 |
236 | IF lv_xml IS NOT INITIAL.
237 | zlnkecl_xml_utils=>show_xml_in_dialog( lv_xml ).
238 | ENDIF.
239 |
240 | CATCH zlnkecx_aws_s3 INTO lr_cx_aws_s3.
241 | lv_msg = lr_cx_aws_s3->get_text( ).
242 | WRITE:/ lv_msg.
243 | ENDTRY.
244 | ENDMETHOD. "list_bucket
245 |
246 | *--------------------------------------------------------------------*
247 | * Shows Bucket location
248 | *--------------------------------------------------------------------*
249 | METHOD bucket_location.
250 | DATA: lv_xml TYPE string.
251 | DATA: lv_msg TYPE string.
252 | DATA: lv_http_status TYPE i. "#EC NEEDED
253 | DATA: lr_bucket TYPE REF TO zlnkecl_aws_s3_bucket.
254 | DATA: lr_cx_aws_s3 TYPE REF TO zlnkecx_aws_s3.
255 |
256 | TRY.
257 | CREATE OBJECT lr_bucket
258 | EXPORTING
259 | i_bucket_name = p_bucket
260 | i_dbg = p_dbg.
261 |
262 | CALL METHOD lr_bucket->get_bucket_location
263 | IMPORTING
264 | e_http_status = lv_http_status
265 | e_response_content = lv_xml.
266 |
267 | IF lv_xml IS NOT INITIAL.
268 | zlnkecl_xml_utils=>show_xml_in_dialog( lv_xml ).
269 | ENDIF.
270 |
271 | CATCH zlnkecx_aws_s3 INTO lr_cx_aws_s3.
272 | lv_msg = lr_cx_aws_s3->get_text( ).
273 | WRITE:/ lv_msg.
274 | ENDTRY.
275 |
276 | ENDMETHOD. "bucket_location
277 |
278 | *--------------------------------------------------------------------*
279 | * Head
280 | *--------------------------------------------------------------------*
281 | METHOD head_bucket.
282 | DATA: lv_msg TYPE string.
283 | DATA: lv_http_status TYPE i.
284 | DATA: lt_response_headers TYPE tihttpnvp. "#EC NEEDED
285 | DATA: lr_bucket TYPE REF TO zlnkecl_aws_s3_bucket.
286 | DATA: lr_cx_aws_s3 TYPE REF TO zlnkecx_aws_s3.
287 |
288 | TRY.
289 | CREATE OBJECT lr_bucket
290 | EXPORTING
291 | i_bucket_name = p_bucket
292 | i_dbg = p_dbg.
293 |
294 | CALL METHOD lr_bucket->head_bucket
295 | IMPORTING
296 | e_http_status = lv_http_status
297 | e_response_headers = lt_response_headers.
298 |
299 | lv_msg = zlnkecl_http=>get_reason_by_status( lv_http_status ).
300 | WRITE:/ lv_http_status, lv_msg.
301 |
302 | CATCH zlnkecx_aws_s3 INTO lr_cx_aws_s3.
303 | lv_msg = lr_cx_aws_s3->get_text( ).
304 | WRITE:/ lv_msg.
305 | ENDTRY.
306 | ENDMETHOD. "head_bucket
307 |
308 | *--------------------------------------------------------------------*
309 | * Handles selection screen elements
310 | *--------------------------------------------------------------------*
311 | METHOD selection_screen_visibility.
312 | LOOP AT SCREEN.
313 | IF screen-name CS 'P_IAM'
314 | OR screen-name CS 'P_REGION'
315 | OR screen-name CS 'P_EXISTS'.
316 | IF p_creat = abap_true.
317 | screen-active = 1.
318 | ELSE.
319 | screen-active = 0.
320 | ENDIF.
321 | ENDIF.
322 | MODIFY SCREEN.
323 | ENDLOOP.
324 | ENDMETHOD. "SELECTION_screen_visibility
325 | ENDCLASS. "lcl_demo_bucket IMPLEMENTATION
326 |
327 | *--------------------------------------------------------------------*
328 | * INITIALIZATION
329 | *--------------------------------------------------------------------*
330 | INITIALIZATION.
331 | p_creat = abap_true.
332 |
333 | *--------------------------------------------------------------------*
334 | * AT SELECTION-SCREEN OUTPUT
335 | *--------------------------------------------------------------------*
336 | AT SELECTION-SCREEN OUTPUT.
337 | lcl_demo_bucket=>selection_screen_visibility( ).
338 |
339 | *--------------------------------------------------------------------*
340 | * START-OF-SELECTION
341 | *--------------------------------------------------------------------*
342 | START-OF-SELECTION.
343 | lcl_demo_bucket=>execute( ).
344 |
--------------------------------------------------------------------------------
/s3_demo_programs/zlnkeaws_s3_demo_bucket.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEAWS_S3_DEMO_BUCKET
7 | A
8 | X
9 | 1
10 | E
11 | X
12 | X
13 |
14 |
15 | -
16 | I
17 | 001
18 | Parameters
19 | 10
20 |
21 | -
22 | R
23 | Demo Create / Delete Bucket
24 | 27
25 |
26 | -
27 | S
28 | P_BUCKET
29 | Bucket name
30 | 19
31 |
32 | -
33 | S
34 | P_CREAT
35 | Create Bucket
36 | 21
37 |
38 | -
39 | S
40 | P_DBG
41 | Write headers
42 | 21
43 |
44 | -
45 | S
46 | P_DELET
47 | Delete Bucket
48 | 21
49 |
50 | -
51 | S
52 | P_EXISTS
53 | Bucket already exists on AWS
54 | 36
55 |
56 | -
57 | S
58 | P_HEAD
59 | Head Bucket
60 | 19
61 |
62 | -
63 | S
64 | P_IAM
65 | IAM user
66 | 16
67 |
68 | -
69 | S
70 | P_LIST
71 | List Bucket
72 | 19
73 |
74 | -
75 | S
76 | P_LOC
77 | Bucket location
78 | 23
79 |
80 | -
81 | S
82 | P_REGION
83 | AWS Region
84 | 18
85 |
86 |
87 |
88 |
89 |
90 |
--------------------------------------------------------------------------------
/s3_demo_programs/zlnkeaws_s3_demo_file.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEAWS_S3_DEMO_FILE
7 | A
8 | X
9 | 1
10 | E
11 | X
12 | X
13 |
14 |
15 | -
16 | I
17 | 001
18 | Parameters
19 | 10
20 |
21 | -
22 | R
23 | Demo working with Files
24 | 28
25 |
26 | -
27 | S
28 | P_BUCKET
29 | Bucket name
30 | 19
31 |
32 | -
33 | S
34 | P_DBG
35 | Write headers
36 | 21
37 |
38 | -
39 | S
40 | P_DELET
41 | Delete file
42 | 19
43 |
44 | -
45 | S
46 | P_FNAME
47 | File name
48 | 17
49 |
50 | -
51 | S
52 | P_FOLDER
53 | Folder
54 | 14
55 |
56 | -
57 | S
58 | P_GET
59 | Get file
60 | 16
61 |
62 | -
63 | S
64 | P_HEAD
65 | Head file
66 | 17
67 |
68 | -
69 | S
70 | P_PUT
71 | Put file
72 | 16
73 |
74 |
75 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/s3_demo_programs/zlnkeaws_s3_demo_folder.prog.abap:
--------------------------------------------------------------------------------
1 | *&---------------------------------------------------------------------*
2 | *& Report ZLNKEAWS_S3_DEMO_FOLDER
3 | *&
4 | *&---------------------------------------------------------------------*
5 | *& Company: RocketSteam
6 | *& Author: Jordi Escoda, 8th September 2017
7 | *& e-mail: jordi.escoda@rocket-steam.com or jordi.escoda@linkeit.com
8 | *& This demo program shows how to use folders
9 | *--------------------------------------------------------------------*
10 | REPORT zlnkeaws_s3_demo_folder.
11 |
12 | *--------------------------------------------------------------------*
13 | * Types
14 | *--------------------------------------------------------------------*
15 | TYPE-POOLS: abap.
16 |
17 | *--------------------------------------------------------------------*
18 | * Selection screen
19 | *--------------------------------------------------------------------*
20 | SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
21 | PARAMETERS: p_put RADIOBUTTON GROUP rb1 USER-COMMAND rb,
22 | p_delet RADIOBUTTON GROUP rb1,
23 | p_head RADIOBUTTON GROUP rb1.
24 | PARAMETERS: p_dbg AS CHECKBOX.
25 | PARAMETERS: p_bucket TYPE zlnkebucket-bucket LOWER CASE,
26 | p_folder TYPE string LOWER CASE.
27 | SELECTION-SCREEN END OF BLOCK b1.
28 |
29 | *----------------------------------------------------------------------*
30 | * CLASS lcl_demo_folder DEFINITION
31 | *----------------------------------------------------------------------*
32 | *
33 | *----------------------------------------------------------------------*
34 | CLASS lcl_demo_folder DEFINITION.
35 | PUBLIC SECTION.
36 | CLASS-METHODS:
37 | execute.
38 |
39 | PRIVATE SECTION.
40 | CLASS-METHODS:
41 | put_folder,
42 | delete_folder,
43 | head_folder.
44 |
45 | ENDCLASS. "lcl_demo_FILE DEFINITION
46 |
47 | *----------------------------------------------------------------------*
48 | * CLASS lcl_ DEFINITION
49 | *----------------------------------------------------------------------*
50 | *
51 | *----------------------------------------------------------------------*
52 | CLASS lcl_demo_folder IMPLEMENTATION.
53 |
54 | *--------------------------------------------------------------------*
55 | * Highest level of abstraction
56 | *--------------------------------------------------------------------*
57 | METHOD execute.
58 | CASE abap_true.
59 | WHEN p_put.
60 | put_folder( ).
61 | WHEN p_delet.
62 | delete_folder( ).
63 | WHEN p_head.
64 | head_folder( ).
65 | ENDCASE.
66 | ENDMETHOD. "execute
67 |
68 | *--------------------------------------------------------------------*
69 | * Creates a Folder
70 | *--------------------------------------------------------------------*
71 | METHOD put_folder.
72 | DATA: lv_folder TYPE string.
73 | DATA: lv_msg TYPE string.
74 | DATA: lv_xml TYPE string.
75 | DATA: lv_http_status TYPE i.
76 | DATA: lr_bucket TYPE REF TO zlnkecl_aws_s3_bucket.
77 | DATA: lr_cx_aws_s3 TYPE REF TO zlnkecx_aws_s3.
78 |
79 | TRY.
80 | * Escape for considering special characters in folder name
81 | lv_folder = zlnkecl_http=>escape_url( p_folder ).
82 | CONCATENATE lv_folder '/' INTO lv_folder.
83 |
84 | CREATE OBJECT lr_bucket
85 | EXPORTING
86 | i_bucket_name = p_bucket
87 | i_dbg = p_dbg.
88 |
89 | CALL METHOD lr_bucket->put_object
90 | EXPORTING
91 | i_object_name = lv_folder
92 | i_escape_url = abap_false
93 | IMPORTING
94 | e_http_status = lv_http_status
95 | e_response_content = lv_xml.
96 |
97 | IF lv_xml IS NOT INITIAL.
98 | zlnkecl_xml_utils=>show_xml_in_dialog( lv_xml ).
99 | ENDIF.
100 |
101 | IF lv_http_status = zlnkecl_http=>c_status_200_ok.
102 | CONCATENATE 'Folder ' lv_folder ' created successfully'
103 | INTO lv_msg RESPECTING BLANKS.
104 | ELSE.
105 | CONCATENATE 'Folder ' lv_folder ' could not be created'
106 | INTO lv_msg RESPECTING BLANKS.
107 | ENDIF.
108 | CONDENSE lv_msg.
109 | WRITE:/ lv_msg.
110 |
111 | CATCH zlnkecx_aws_s3 INTO lr_cx_aws_s3.
112 | lv_msg = lr_cx_aws_s3->get_text( ).
113 | WRITE:/ lv_msg.
114 | ENDTRY.
115 |
116 | ENDMETHOD. "put_folder
117 |
118 | *--------------------------------------------------------------------*
119 | * Deletes a folder (must be empty)
120 | *--------------------------------------------------------------------*
121 | METHOD delete_folder.
122 | DATA: lv_folder TYPE string.
123 | DATA: lv_msg TYPE string.
124 | DATA: lv_xml TYPE string.
125 | DATA: lv_http_status TYPE i.
126 | DATA: lr_bucket TYPE REF TO zlnkecl_aws_s3_bucket.
127 | DATA: lr_cx_aws_s3 TYPE REF TO zlnkecx_aws_s3.
128 |
129 | TRY.
130 | * Escape for considering special characters in folder name
131 | lv_folder = zlnkecl_http=>escape_url( p_folder ).
132 | CONCATENATE lv_folder '/' INTO lv_folder.
133 |
134 | CREATE OBJECT lr_bucket
135 | EXPORTING
136 | i_bucket_name = p_bucket
137 | i_dbg = p_dbg.
138 |
139 | CALL METHOD lr_bucket->head_object
140 | EXPORTING
141 | i_object_name = lv_folder
142 | IMPORTING
143 | e_http_status = lv_http_status.
144 |
145 | IF lv_http_status = zlnkecl_http=>c_status_200_ok.
146 | CALL METHOD lr_bucket->delete_object
147 | EXPORTING
148 | i_object_name = lv_folder
149 | IMPORTING
150 | e_http_status = lv_http_status
151 | e_response_content = lv_xml.
152 |
153 | IF lv_xml IS NOT INITIAL.
154 | zlnkecl_xml_utils=>show_xml_in_dialog( lv_xml ).
155 | ENDIF.
156 |
157 | IF lv_http_status = zlnkecl_http=>c_status_204_no_content.
158 | CONCATENATE 'Folder ' lv_folder ' deleted successfully'
159 | INTO lv_msg RESPECTING BLANKS.
160 | ELSE.
161 | CONCATENATE 'Folder ' lv_folder ' could not be deleted'
162 | INTO lv_msg RESPECTING BLANKS.
163 | ENDIF.
164 | CONDENSE lv_msg.
165 | WRITE:/ lv_msg.
166 |
167 | ELSE.
168 | lv_msg = zlnkecl_http=>get_reason_by_status( lv_http_status ).
169 | WRITE:/ lv_http_status, lv_msg.
170 | ENDIF.
171 |
172 | CATCH zlnkecx_aws_s3 INTO lr_cx_aws_s3.
173 | lv_msg = lr_cx_aws_s3->get_text( ).
174 | WRITE:/ lv_msg.
175 | ENDTRY.
176 |
177 | ENDMETHOD. "delete_folder
178 |
179 | *--------------------------------------------------------------------*
180 | * Head, to check if folder exists
181 | *--------------------------------------------------------------------*
182 | METHOD head_folder.
183 | DATA: lv_folder TYPE string.
184 | DATA: lv_msg TYPE string.
185 | DATA: lv_xml TYPE string.
186 | DATA: lv_http_status TYPE i.
187 | DATA: lt_response_headers TYPE tihttpnvp. "#EC NEEDED
188 | DATA: lr_bucket TYPE REF TO zlnkecl_aws_s3_bucket.
189 | DATA: lr_cx_aws_s3 TYPE REF TO zlnkecx_aws_s3.
190 |
191 | TRY.
192 | * Escape for considering special characters in folder name
193 | lv_folder = zlnkecl_http=>escape_url( p_folder ).
194 | CONCATENATE lv_folder '/' INTO lv_folder.
195 |
196 | CREATE OBJECT lr_bucket
197 | EXPORTING
198 | i_bucket_name = p_bucket
199 | i_dbg = p_dbg.
200 |
201 | CALL METHOD lr_bucket->head_object
202 | EXPORTING
203 | i_object_name = lv_folder
204 | IMPORTING
205 | e_http_status = lv_http_status
206 | e_response_headers = lt_response_headers.
207 |
208 | lv_msg = zlnkecl_http=>get_reason_by_status( lv_http_status ).
209 | WRITE:/ lv_http_status, lv_msg.
210 |
211 | IF lv_xml IS NOT INITIAL.
212 | zlnkecl_xml_utils=>show_xml_in_dialog( lv_xml ).
213 | ENDIF.
214 |
215 | CATCH zlnkecx_aws_s3 INTO lr_cx_aws_s3.
216 | lv_msg = lr_cx_aws_s3->get_text( ).
217 | WRITE:/ lv_msg.
218 | ENDTRY.
219 | ENDMETHOD. "head_folder
220 |
221 | ENDCLASS. "lcl_demo_folder IMPLEMENTATION
222 |
223 | *--------------------------------------------------------------------*
224 | * START-OF-SELECTION
225 | *--------------------------------------------------------------------*
226 | START-OF-SELECTION.
227 | lcl_demo_folder=>execute( ).
228 |
--------------------------------------------------------------------------------
/s3_demo_programs/zlnkeaws_s3_demo_folder.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEAWS_S3_DEMO_FOLDER
7 | A
8 | X
9 | 1
10 | E
11 | X
12 | X
13 |
14 |
15 | -
16 | I
17 | 001
18 | Parameters
19 | 10
20 |
21 | -
22 | R
23 | Demo working with Folders
24 | 31
25 |
26 | -
27 | S
28 | P_BUCKET
29 | Bucket name
30 | 19
31 |
32 | -
33 | S
34 | P_DBG
35 | Write headers
36 | 21
37 |
38 | -
39 | S
40 | P_DELET
41 | Delete folder
42 | 21
43 |
44 | -
45 | S
46 | P_FOLDER
47 | Folder
48 | 14
49 |
50 | -
51 | S
52 | P_HEAD
53 | Head folder
54 | 19
55 |
56 | -
57 | S
58 | P_PUT
59 | Put folder
60 | 18
61 |
62 |
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/s3_demo_programs/zlnkeaws_s3_demo_iam.prog.abap:
--------------------------------------------------------------------------------
1 | *&---------------------------------------------------------------------*
2 | *& Report ZLNKEAWS_S3_DEMO_IAM
3 | *&
4 | *&---------------------------------------------------------------------*
5 | *& Company: RocketSteam
6 | *& Author: Jordi Escoda, 12th September 2017
7 | *& e-mail: jordi.escoda@rocket-steam.com or jordi.escoda@linkeit.com
8 | *& This demo program shows how to create an IAM user in S3 for SAP
9 | *&
10 | *& NOTE: The IAM user must exist in your AWS account, and must have
11 | *& proper permissions for bucket operations. Create User Policy for that.
12 | *& Permissions for Bucket:
13 | * {
14 | * "Version": "2012-10-17",
15 | * "Statement": [
16 | * {
17 | * "Effect": "Allow",
18 | * "Action": [
19 | * "s3:*"
20 | * ],
21 | * "Resource": [
22 | * "arn:aws:s3:::-*"
23 | * ]
24 | * }
25 | * ]
26 | * }
27 | *
28 | *& Permissions for IAM
29 | * {
30 | * "Version": "2012-10-17",
31 | * "Statement": [
32 | * {
33 | * "Effect": "Allow",
34 | * "Action": [
35 | * "iam:GetUser"
36 | * ],
37 | * "Resource": [
38 | * "arn:aws:iam:::user/"
39 | * ]
40 | * }
41 | * ]
42 | * }
43 | *
44 | *& Permissions for Listing all Buckets
45 | * {
46 | * "Version": "2012-10-17",
47 | * "Statement": [
48 | * {
49 | * "Effect": "Allow",
50 | * "Action": [
51 | * "s3:ListAllMyBuckets"
52 | * ],
53 | * "Resource": [
54 | * "arn:aws:s3:::*"
55 | * ]
56 | * }
57 | * ]
58 | * }
59 | *
60 | * Where is your sid and is your IAM user
61 | *
62 | * Examples for operating on buckets with name beginning : des-tests3
63 | * on AWS account 999643172801 with IAM user S3_user
64 | * {
65 | * "Version": "2012-10-17",
66 | * "Statement": [
67 | * {
68 | * "Sid": "PolicyGeneratedByLicenseServer",
69 | * "Effect": "Allow",
70 | * "Action": [
71 | * "s3:*"
72 | * ],
73 | * "Resource": [
74 | * "arn:aws:s3:::rck-*"
75 | * ]
76 | * }
77 | * ]
78 | * }
79 | *
80 | * {
81 | * "Version": "2012-10-17",
82 | * "Statement": [
83 | * {
84 | * "Sid": "Stmt1404903638000",
85 | * "Effect": "Allow",
86 | * "Action": [
87 | * "iam:GetUser"
88 | * ],
89 | * "Resource": [
90 | * "arn:aws:iam::999643172801:user/S3_user"
91 | * ]
92 | * }
93 | * ]
94 | * }
95 | *&---------------------------------------------------------------------*
96 | REPORT zlnkeaws_s3_demo_iam.
97 |
98 | *--------------------------------------------------------------------*
99 | * Types
100 | *--------------------------------------------------------------------*
101 | TYPE-POOLS: abap.
102 |
103 | *--------------------------------------------------------------------*
104 | * Selection screen
105 | *--------------------------------------------------------------------*
106 | SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
107 | PARAMETERS: p_aws TYPE char12.
108 | PARAMETERS: p_iam TYPE text128 LOWER CASE.
109 | PARAMETERS: p_key TYPE text128 LOWER CASE.
110 | PARAMETERS: p_seckey TYPE text128 LOWER CASE.
111 | SELECTION-SCREEN END OF BLOCK b1.
112 |
113 | *----------------------------------------------------------------------*
114 | * CLASS lcl_iam_demo DEFINITION
115 | *----------------------------------------------------------------------*
116 | *
117 | *----------------------------------------------------------------------*
118 | CLASS lcl_iam_demo DEFINITION.
119 | PUBLIC SECTION.
120 | CLASS-METHODS:
121 | execute.
122 |
123 | ENDCLASS. "lcl_iam_demo DEFINITION
124 |
125 | *----------------------------------------------------------------------*
126 | * CLASS lcl_iam_demo IMPLEMENTATION
127 | *----------------------------------------------------------------------*
128 | *
129 | *----------------------------------------------------------------------*
130 | CLASS lcl_iam_demo IMPLEMENTATION.
131 |
132 | METHOD execute.
133 | DATA: lv_msg TYPE string.
134 | DATA: lv_user_name TYPE zlnkeusername_de.
135 | DATA: lv_aws_account_id TYPE zlnkeaws_account_id_de.
136 | DATA: lv_access_key TYPE zlnkeacckey_de.
137 | DATA: lv_secret_access_key TYPE zlnkesecacckey_de.
138 | DATA: lv_user_id TYPE string. "#EC NEEDED
139 | DATA: ls_rs3_user TYPE zlnkeuser.
140 | DATA: lr_cx_aws_s3 TYPE REF TO zlnkecx_aws_s3.
141 |
142 | TRY.
143 | IF zlnkecl_rfc_connections=>http_dest_to_ext_exists_iam( ) = abap_false.
144 | zlnkecl_rfc_connections=>create_http_dest_to_ext_iam( ).
145 | WRITE:/ 'Created AWS destination for IAM endpoint'.
146 | ENDIF.
147 |
148 | lv_user_name = p_iam.
149 | lv_aws_account_id = p_aws.
150 | lv_access_key = p_key.
151 | lv_secret_access_key = p_seckey.
152 | CALL METHOD zlnkecl_aws_iam=>check_aws_user
153 | EXPORTING
154 | i_user_name = lv_user_name
155 | i_aws_account_id = lv_aws_account_id
156 | i_access_key = lv_access_key
157 | i_secret_access_key = lv_secret_access_key
158 | RECEIVING
159 | e_user_id = lv_user_id.
160 |
161 | ls_rs3_user-user_name = lv_user_name.
162 | ls_rs3_user-access_key = lv_access_key.
163 | ls_rs3_user-secr_access_key = lv_secret_access_key.
164 | ls_rs3_user-aws_account_id = lv_aws_account_id.
165 | ls_rs3_user-crusr = sy-uname.
166 | ls_rs3_user-crdat = sy-datum.
167 | ls_rs3_user-crtim = sy-uzeit.
168 | INSERT zlnkeuser FROM ls_rs3_user.
169 | IF sy-subrc = 0.
170 | WRITE:/ 'IAM user insert success in table ZLNKEUSER'.
171 | ENDIF.
172 |
173 | CATCH zlnkecx_aws_s3 INTO lr_cx_aws_s3.
174 | lv_msg = lr_cx_aws_s3->get_text( ).
175 | WRITE:/ lv_msg.
176 | ENDTRY.
177 |
178 | ENDMETHOD. "execute
179 | ENDCLASS. "lcl_iam_demo IMPLEMENTATION
180 |
181 | START-OF-SELECTION.
182 | lcl_iam_demo=>execute( ).
183 |
--------------------------------------------------------------------------------
/s3_demo_programs/zlnkeaws_s3_demo_iam.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEAWS_S3_DEMO_IAM
7 | A
8 | X
9 | 1
10 | E
11 | X
12 | X
13 |
14 |
15 | -
16 | I
17 | 001
18 | Parameters
19 | 10
20 |
21 | -
22 | R
23 | Demo creation for a IAM user
24 | 28
25 |
26 | -
27 | S
28 | P_AWS
29 | AWS account ID
30 | 22
31 |
32 | -
33 | S
34 | P_IAM
35 | IAM user
36 | 16
37 |
38 | -
39 | S
40 | P_KEY
41 | Access Key
42 | 18
43 |
44 | -
45 | S
46 | P_SECKEY
47 | Secret Access Key
48 | 25
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/s3_demo_programs/zlnkeaws_s3_demo_s3.prog.abap:
--------------------------------------------------------------------------------
1 | *&---------------------------------------------------------------------*
2 | *& Report ZLNKEAWS_S3_DEMO_S3
3 | *&
4 | *&---------------------------------------------------------------------*
5 | *& Company: RocketSteam
6 | *& Author: Jordi Escoda, 15th September 2017
7 | *& e-mail: jordi.escoda@rocket-steam.com or jordi.escoda@linkeit.com
8 | *& This demo program shows how use list buckets
9 | *&---------------------------------------------------------------------*
10 | REPORT zlnkeaws_s3_demo_s3.
11 |
12 | *--------------------------------------------------------------------*
13 | * Selection screen
14 | *--------------------------------------------------------------------*
15 | SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
16 | PARAMETERS: p_dbg AS CHECKBOX.
17 | PARAMETERS: p_iam TYPE zlnkeuser-user_name LOWER CASE.
18 | SELECTION-SCREEN END OF BLOCK b1.
19 |
20 | *----------------------------------------------------------------------*
21 | * CLASS lcl_demo_bucket DEFINITION
22 | *----------------------------------------------------------------------*
23 | *
24 | *----------------------------------------------------------------------*
25 | CLASS lcl_demo_s3 DEFINITION.
26 | PUBLIC SECTION.
27 | CLASS-METHODS:
28 | list_buckets.
29 | ENDCLASS. "lcl_demo_bucket DEFINITION
30 |
31 | *----------------------------------------------------------------------*
32 | * CLASS lcl_demo_bucket IMPLEMENTATION
33 | *----------------------------------------------------------------------*
34 | *
35 | *----------------------------------------------------------------------*
36 | CLASS lcl_demo_s3 IMPLEMENTATION.
37 |
38 | METHOD list_buckets.
39 | DATA: lr_s3 TYPE REF TO zlnkecl_aws_s3.
40 | DATA: lv_response_content TYPE string.
41 | DATA: lr_cx_aws_s3 TYPE REF TO zlnkecx_aws_s3.
42 | DATA: lv_exception_text TYPE string.
43 | TRY.
44 | CREATE OBJECT lr_s3
45 | EXPORTING
46 | i_user_name = p_iam
47 | i_dbg = p_dbg.
48 |
49 | CALL METHOD lr_s3->get_service
50 | IMPORTING
51 | e_response_content = lv_response_content.
52 |
53 | CALL METHOD zlnkecl_xml_utils=>show_xml_in_dialog
54 | EXPORTING
55 | i_xml = lv_response_content.
56 |
57 | CATCH zlnkecx_aws_s3 INTO lr_cx_aws_s3.
58 | lv_exception_text = lr_cx_aws_s3->get_text( ).
59 | WRITE:/ lv_exception_text.
60 | ENDTRY.
61 |
62 | ENDMETHOD. "execute
63 |
64 | ENDCLASS. "lcl_demo_bucket IMPLEMENTATION
65 |
66 | *--------------------------------------------------------------------*
67 | * START-OF-SELECTION
68 | *--------------------------------------------------------------------*
69 | START-OF-SELECTION.
70 | lcl_demo_s3=>list_buckets( ).
71 |
--------------------------------------------------------------------------------
/s3_demo_programs/zlnkeaws_s3_demo_s3.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEAWS_S3_DEMO_S3
7 | A
8 | X
9 | 1
10 | E
11 | X
12 | X
13 |
14 |
15 | -
16 | I
17 | 001
18 | Parameters
19 | 10
20 |
21 | -
22 | R
23 | Demo S3 List Buckets
24 | 27
25 |
26 | -
27 | S
28 | P_DBG
29 | Write headers
30 | 21
31 |
32 | -
33 | S
34 | P_IAM
35 | IAM user
36 | 16
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkeacckey_de.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEACCKEY_DE
7 | E
8 | ZLNKEACCKEY_DO
9 | 10
10 | 07
11 | 10
12 | 10
13 | RocketSteam. Access Key
14 | Access Key
15 | Acc.Key
16 | Access Key
17 | Access Key
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkeacckey_do.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEACCKEY_DO
7 | E
8 | CHAR
9 | 000128
10 | 000128
11 | X
12 | Rocket Steam. Access Key
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkeaws_account_id_de.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEAWS_ACCOUNT_ID_DE
7 | E
8 | ZLNKEAWS_ACCOUNT_ID_DO
9 | 14
10 | 10
11 | 15
12 | 20
13 | RocketSteam. AWS Account ID
14 | AWS Accoint ID
15 | AWS AccID
16 | AWS Acc. ID
17 | AWS Account ID
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkeaws_account_id_do.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEAWS_ACCOUNT_ID_DO
7 | E
8 | CHAR
9 | 000012
10 | 000012
11 | X
12 | AWS Account ID
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkebucket.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEBUCKET
7 | E
8 | TRANSP
9 | Rocket Steam. AWS S3 Buckets
10 | C
11 | 1
12 |
13 |
14 | ZLNKEBUCKET
15 | A
16 | 0
17 | APPL0
18 | N
19 | C
20 |
21 |
22 |
23 | ZLNKEBUCKET
24 | BUCKET
25 | 0001
26 | X
27 | ZLNKEBUCKET_DE
28 | 0
29 | X
30 | E
31 |
32 |
33 | ZLNKEBUCKET
34 | USER_NAME
35 | 0002
36 | ZLNKEUSERNAME_DE
37 | ZLNKEUSER
38 | 0
39 | P
40 | E
41 |
42 |
43 | ZLNKEBUCKET
44 | REGION
45 | 0003
46 | ZLNKEREGION_DE
47 | ZLNKEREGION
48 | 0
49 | P
50 | E
51 |
52 |
53 | ZLNKEBUCKET
54 | CONTENT_REP
55 | 0004
56 | SCMS_CREP
57 | CREP_HTTP
58 | 0
59 | P
60 | E
61 |
62 |
63 | ZLNKEBUCKET
64 | LIFECYCLE
65 | 0005
66 | ZLNKEBUCKET_LIFECYCLE_DE
67 | 0
68 | E
69 |
70 |
71 | ZLNKEBUCKET
72 | CLIENT_ENCRYPT
73 | 0006
74 | ZLNKESERVER_SIDE_ENCRYPTION_DE
75 | 0
76 | X
77 | F
78 | E
79 |
80 |
81 | ZLNKEBUCKET
82 | SERVER_ENCRYPT
83 | 0007
84 | ZLNKESERVER_SIDE_ENCRYPTION_DE
85 | 0
86 | X
87 | F
88 | E
89 |
90 |
91 | ZLNKEBUCKET
92 | ZIP
93 | 0008
94 | ZLNKEZIPFLAG_DE
95 | 0
96 | X
97 | F
98 | E
99 |
100 |
101 | ZLNKEBUCKET
102 | NO_PREFIX
103 | 0009
104 | ZLNKENO_PREFIX_FLAG_DE
105 | 0
106 | E
107 |
108 |
109 | ZLNKEBUCKET
110 | CRUSR
111 | 0010
112 | ZLNKECRUSR
113 | 0
114 | E
115 |
116 |
117 | ZLNKEBUCKET
118 | CRDAT
119 | 0011
120 | ZLNKECRDAT
121 | 0
122 | T
123 | E
124 |
125 |
126 | ZLNKEBUCKET
127 | CRTIM
128 | 0012
129 | ZLNKECRTIM
130 | 0
131 | T
132 | E
133 |
134 |
135 | ZLNKEBUCKET
136 | CHUSR
137 | 0013
138 | ZLNKECHUSR
139 | 0
140 | E
141 |
142 |
143 | ZLNKEBUCKET
144 | CHDAT
145 | 0014
146 | ZLNKECHDAT
147 | 0
148 | T
149 | E
150 |
151 |
152 | ZLNKEBUCKET
153 | CHTIM
154 | 0015
155 | ZLNKECHTIM
156 | 0
157 | T
158 | E
159 |
160 |
161 |
162 |
163 | ZLNKEBUCKET
164 | CONTENT_REP
165 | ZLNKEBUCKET
166 | CONTENT_REP
167 | CREP_HTTP
168 | CREP_ID
169 | 0001
170 | SCMS_CREP
171 | CHAR
172 | 000030
173 |
174 |
175 | ZLNKEBUCKET
176 | REGION
177 | ZLNKEBUCKET
178 | REGION
179 | ZLNKEREGION
180 | REGION
181 | 0001
182 | ZLNKEREGION_DO
183 | CHAR
184 | 000050
185 |
186 |
187 | ZLNKEBUCKET
188 | USER_NAME
189 | ZLNKEBUCKET
190 | USER_NAME
191 | ZLNKEUSER
192 | USER_NAME
193 | 0001
194 | ZLNKEUSERNAME_DO
195 | CHAR
196 | 000064
197 |
198 |
199 |
200 |
201 | ZLNKEBUCKET
202 | CONTENT_REP
203 | E
204 | CREP_HTTP
205 |
206 |
207 | ZLNKEBUCKET
208 | REGION
209 | E
210 | ZLNKEREGION
211 |
212 |
213 | ZLNKEBUCKET
214 | USER_NAME
215 | E
216 | ZLNKEUSER
217 |
218 |
219 |
220 |
221 |
222 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkebucket_de.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEBUCKET_DE
7 | E
8 | ZLNKEBUCKET_DO
9 | 06
10 | 06
11 | 06
12 | 06
13 | RocketSteam. Bucket Name
14 | Bucket
15 | Bucket
16 | Bucket
17 | Bucket
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkebucket_do.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEBUCKET_DO
7 | E
8 | CHAR
9 | 000050
10 | 000050
11 | X
12 | ZLNKEBUCKET
13 | Rocket Steam. Bucket
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkebucket_lifecycle_de.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEBUCKET_LIFECYCLE_DE
7 | E
8 | INT4
9 | 16
10 | 10
11 | 16
12 | 20
13 | RocketSteam. Bucket Lifecycle
14 | Bucket Lifecycle
15 | BucktLife
16 | Buckt Lifecycle
17 | Bucket Lifecycle
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkebucket_prefix_de.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEBUCKET_PREFIX_DE
7 | E
8 | ZLNKEBUCKET_PREFIX_DO
9 | 13
10 | 10
11 | 11
12 | 13
13 | RocketSteam. Bucket Prefix.
14 | Bucket prefix
15 | Bckt.prfx.
16 | Bckt.prefix
17 | Bucket prefix
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkebucket_prefix_do.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEBUCKET_PREFIX_DO
7 | E
8 | CHAR
9 | 000032
10 | 000032
11 | X
12 | RocketSteam. BucketPrefix
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkechdat.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECHDAT
7 | E
8 | DATUM
9 | 10
10 | 08
11 | 10
12 | 10
13 | RocketSteam. Date on which the object was last changed
14 | Changed on
15 | Chngd on
16 | Changed on
17 | Changed on
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkechtim.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECHTIM
7 | E
8 | UZEIT
9 | 10
10 | 10
11 | 10
12 | 10
13 | RocketSteam. Time at which object was last changed
14 | Changed at
15 | Changed at
16 | Changed at
17 | Changed at
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkechusr.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECHUSR
7 | E
8 | UNAME
9 | 10
10 | 10
11 | 10
12 | 10
13 | RocketSteam. Last user to change object
14 | Changed by
15 | Changed by
16 | Changed by
17 | Changed by
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_aws_iam.clas.abap:
--------------------------------------------------------------------------------
1 | class ZLNKECL_AWS_IAM definition
2 | public
3 | inheriting from ZLNKECL_AWS_INHERIT_SWITCH
4 | final
5 | create public .
6 |
7 | *"* public components of class ZLNKECL_AWS_IAM
8 | *"* do not include other source files here!!!
9 | public section.
10 |
11 | constants C_SERVICE_NAME type STRING value 'iam'. "#EC NOTEXT
12 | constants C_API_VERSION type STRING value '2010-05-08'. "#EC NOTEXT
13 |
14 | methods CONSTRUCTOR
15 | importing
16 | !I_USER_NAME type ZLNKEUSERNAME_DE optional
17 | !I_ACCESS_KEY type STRING optional
18 | !I_SECRET_ACCESS_KEY type STRING optional
19 | !I_DBG type ABAP_BOOL default ABAP_FALSE .
20 | methods GET_USER
21 | exporting
22 | !E_HTTP_STATUS type I
23 | !E_RESPONSE_HEADERS type TIHTTPNVP
24 | !E_RESPONSE_CONTENT type STRING
25 | raising
26 | ZLNKECX_AWS_S3 .
27 | class-methods GET_HOST_NAME
28 | returning
29 | value(E_HOST_NAME) type STRING .
30 | class-methods CHECK_AWS_USER
31 | importing
32 | !I_USER_NAME type ZLNKEUSERNAME_DE
33 | !I_AWS_ACCOUNT_ID type ZLNKEAWS_ACCOUNT_ID_DE optional
34 | !I_ACCESS_KEY type ZLNKEACCKEY_DE
35 | !I_SECRET_ACCESS_KEY type ZLNKESECACCKEY_DE
36 | returning
37 | value(E_USER_ID) type STRING
38 | raising
39 | ZLNKECX_AWS_S3 .
40 | protected section.
41 | *"* protected components of class ZLNKECL_AWS_IAM
42 | *"* do not include other source files here!!!
43 | private section.
44 | *"* private components of class ZLNKECL_AWS_IAM
45 | *"* do not include other source files here!!!
46 | ENDCLASS.
47 |
48 |
49 |
50 | CLASS ZLNKECL_AWS_IAM IMPLEMENTATION.
51 |
52 |
53 | METHOD check_aws_user.
54 | *--------------------------------------------------------------------*
55 | * Company: RocketSteam
56 | * Author: Jordi Escoda, 30th April 2014
57 | * Test AWS user
58 | *--------------------------------------------------------------------*
59 | DATA: lr_ZLNKEcl_aws_iam TYPE REF TO ZLNKEcl_aws_iam.
60 | DATA: l_msg TYPE string. "#EC NEEDED
61 | DATA: l_access_key_s TYPE string.
62 | DATA: l_secret_access_key_s TYPE string.
63 | DATA: l_http_status TYPE i.
64 | DATA: l_response_content TYPE string.
65 | DATA: l_err_msg TYPE string.
66 | DATA: l_arn TYPE string.
67 | DATA: l_aws_account_id TYPE string.
68 | DATA: lt_arn TYPE STANDARD TABLE OF string.
69 |
70 | l_access_key_s = i_access_key.
71 | l_secret_access_key_s = i_secret_access_key.
72 |
73 | CREATE OBJECT lr_ZLNKEcl_aws_iam
74 | EXPORTING
75 | i_user_name = i_user_name
76 | i_access_key = l_access_key_s
77 | i_secret_access_key = l_secret_access_key_s.
78 |
79 | CALL METHOD lr_ZLNKEcl_aws_iam->get_user
80 | IMPORTING
81 | e_http_status = l_http_status
82 | e_response_content = l_response_content.
83 |
84 | IF l_http_status = ZLNKEcl_http=>c_status_200_ok.
85 | IF i_aws_account_id IS NOT INITIAL.
86 | l_arn = ZLNKEcl_xml_utils=>get_node_value_from_xmlstring( "#EC NOTEXT
87 | i_xml_string = l_response_content
88 | i_node_name = 'Arn' ).
89 | * ARN example: arn:aws:iam::111122223333:user/theuser
90 | SPLIT l_arn AT ':' INTO TABLE lt_arn.
91 | READ TABLE lt_arn INDEX 5 INTO l_aws_account_id.
92 | IF l_aws_account_id <> i_aws_account_id.
93 | * 065 AWS Account ID does not match
94 | MESSAGE i065 INTO l_msg.
95 | ZLNKEcx_aws_s3=>raise_from_sy_msg( ).
96 | ENDIF.
97 | ENDIF.
98 |
99 | e_user_id = ZLNKEcl_xml_utils=>get_node_value_from_xmlstring( "#EC NOTEXT
100 | i_xml_string = l_response_content
101 | i_node_name = 'UserId' ).
102 | ELSE.
103 | l_err_msg = ZLNKEcl_xml_utils=>get_node_value_from_xmlstring( "#EC NOTEXT
104 | i_xml_string = l_response_content
105 | i_node_name = 'Message' ).
106 | * 048 User validation failed: &
107 | MESSAGE i048 WITH space INTO l_msg.
108 | CONCATENATE l_msg l_err_msg INTO l_err_msg.
109 | ZLNKEcx_aws_s3=>raise_giving_string( l_err_msg ).
110 | ENDIF.
111 |
112 | ENDMETHOD.
113 |
114 |
115 | METHOD constructor.
116 | *--------------------------------------------------------------------*
117 | * Company: RocketSteam
118 | * Author: Jordi Escoda, 28th April 2014
119 | * Object constructor
120 | *--------------------------------------------------------------------*
121 | CALL METHOD super->constructor.
122 |
123 | attr_service_name = c_service_name.
124 | attr_user = i_user_name.
125 | attr_access_key = i_access_key.
126 | attr_secret_access_key = i_secret_access_key.
127 | attr_dbg = i_dbg.
128 |
129 | ENDMETHOD.
130 |
131 |
132 | METHOD get_host_name.
133 | *--------------------------------------------------------------------*
134 | * Company: RocketSteam
135 | * Author: Jordi Escoda, 17th July 2014
136 | * Returns the hostname for IAM
137 | *--------------------------------------------------------------------*
138 | CONCATENATE c_service_name
139 | '.'
140 | c_host_name
141 | INTO e_host_name.
142 |
143 | ENDMETHOD.
144 |
145 |
146 | METHOD get_user.
147 | *--------------------------------------------------------------------*
148 | * Company: RocketSteam
149 | * Author: Jordi Escoda, 28th April 2014
150 | * Executes request to AWS get user
151 | *--------------------------------------------------------------------*
152 | DATA: l_rfcddest TYPE rfcdest.
153 | DATA: l_request TYPE string.
154 | DATA: l_region_s TYPE string.
155 | DATA: l_response_xcontent TYPE xstring.
156 |
157 | l_region_s = c_default_region.
158 | l_rfcddest = ZLNKEcl_rfc_connections=>get_httpsdest_iam( ).
159 |
160 | CONCATENATE '/?Action=GetUser'
161 | '&UserName=' attr_user
162 | '&Version=' c_api_version
163 | INTO l_request.
164 |
165 | CALL METHOD rest
166 | EXPORTING
167 | i_rfcdest = l_rfcddest
168 | i_region = l_region_s
169 | i_http_method = ZLNKEcl_http=>c_method_get
170 | i_request = l_request
171 | i_body_hash = ZLNKEcl_hash=>c_empty_body_sha256
172 | IMPORTING
173 | e_http_status = e_http_status
174 | e_response_headers = e_response_headers
175 | e_response_xcontent = l_response_xcontent.
176 |
177 | CALL METHOD ZLNKEcl_string_conversions=>xstring_to_string
178 | EXPORTING
179 | input = l_response_xcontent
180 | IMPORTING
181 | output = e_response_content.
182 |
183 | ENDMETHOD.
184 | ENDCLASS.
185 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_aws_iam.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECL_AWS_IAM
7 | 1
8 | E
9 | RocketSteam. Identity & Access Management
10 | 2
11 | 1
12 | X
13 | X
14 | X
15 | X
16 | S
17 | ZLNKEAWS_S3
18 |
19 |
20 |
21 | ZLNKECL_AWS_IAM
22 | CHECK_AWS_USER
23 | E
24 | Test AWS user
25 |
26 |
27 | ZLNKECL_AWS_IAM
28 | CONSTRUCTOR
29 | E
30 | CONSTRUCTOR
31 |
32 |
33 | ZLNKECL_AWS_IAM
34 | GET_HOST_NAME
35 | E
36 | Returns Hostname for IAM Service
37 |
38 |
39 | ZLNKECL_AWS_IAM
40 | GET_USER
41 | E
42 | Executes request to AWS get user
43 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_aws_inherit_switch.clas.abap:
--------------------------------------------------------------------------------
1 | class ZLNKECL_AWS_INHERIT_SWITCH definition
2 | public
3 | inheriting from ZLNKECL_AWS_REST
4 | create public .
5 |
6 | *"* public components of class ZLNKECL_AWS_INHERIT_SWITCH
7 | *"* do not include other source files here!!!
8 | public section.
9 |
10 | constants C_DEFAULT_REGION type STRING value 'us-east-1'. "#EC NOTEXT
11 | constants C_HOST_NAME type STRING value 'amazonaws.com'. "#EC NOTEXT
12 |
13 | methods CONSTRUCTOR .
14 | type-pools ABAP .
15 | methods RUNNING_AS_SAAS
16 | returning
17 | value(E_RUNNING_AS_SAAS) type ABAP_BOOL .
18 | protected section.
19 | *"* protected components of class ZLNKECL_AWS_INHERIT_SWITCH
20 | *"* do not include other source files here!!!
21 | private section.
22 | *"* private components of class ZLNKECL_AWS_INHERIT_SWITCH
23 | *"* do not include other source files here!!!
24 | ENDCLASS.
25 |
26 |
27 |
28 | CLASS ZLNKECL_AWS_INHERIT_SWITCH IMPLEMENTATION.
29 |
30 |
31 | METHOD constructor.
32 | *--------------------------------------------------------------------*
33 | * Company: RocketSteam
34 | * Author: Jordi Escoda, 13th May 2014
35 | * Object constructor
36 | *--------------------------------------------------------------------*
37 | CALL METHOD super->constructor.
38 |
39 | ENDMETHOD.
40 |
41 |
42 | METHOD running_as_saas.
43 | *--------------------------------------------------------------------*
44 | * Company: RocketSteam
45 | * Author: Jordi Escoda, 14th May 2014
46 | * Returns true if it is running as Software as a Service
47 | *--------------------------------------------------------------------*
48 | IF class_get_name( ) = 'ZLNKECL_AWS_REST_SAAS'.
49 | e_running_as_saas = abap_true.
50 | ENDIF.
51 |
52 | ENDMETHOD.
53 | ENDCLASS.
54 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_aws_inherit_switch.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECL_AWS_INHERIT_SWITCH
7 | 1
8 | E
9 | RocketSteam. Inheritance Switch
10 | 2
11 | 1
12 | X
13 | X
14 | X
15 | S
16 |
17 |
18 |
19 | ZLNKECL_AWS_INHERIT_SWITCH
20 | CONSTRUCTOR
21 | E
22 | CONSTRUCTOR
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_aws_rest.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECL_AWS_REST
7 | 1
8 | E
9 | RocketSteam. AWS Rest
10 | 2
11 | 1
12 | X
13 | X
14 | X
15 | X
16 | S
17 | ZLNKEAWS_S3
18 |
19 |
20 |
21 | ZLNKECL_AWS_REST
22 | ATTR_R_HTTP_CLIENT
23 | E
24 | HTTP Client Abstraction
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_aws_s3.clas.abap:
--------------------------------------------------------------------------------
1 | class ZLNKECL_AWS_S3 definition
2 | public
3 | inheriting from ZLNKECL_AWS_INHERIT_SWITCH
4 | create public .
5 |
6 | *"* public components of class ZLNKECL_AWS_S3
7 | *"* do not include other source files here!!!
8 | public section.
9 |
10 | constants C_SERVICE_NAME type STRING value 's3'. "#EC NOTEXT
11 |
12 | type-pools ABAP .
13 | methods CONSTRUCTOR
14 | importing
15 | !I_USER_NAME type ZLNKEUSERNAME_DE optional
16 | !I_CREATE type ABAP_BOOL default ABAP_FALSE
17 | !I_DBG type ABAP_BOOL default ABAP_FALSE
18 | raising
19 | ZLNKECX_AWS_S3 .
20 | methods GET_SERVICE
21 | exporting
22 | !E_HTTP_STATUS type I
23 | !E_RESPONSE_HEADERS type TIHTTPNVP
24 | !E_RESPONSE_CONTENT type STRING
25 | raising
26 | ZLNKECX_AWS_S3 .
27 | class-methods GET_HOST_NAME
28 | returning
29 | value(E_HOST_NAME) type STRING .
30 | protected section.
31 | *"* protected components of class ZLNKECL_AWS_S3
32 | *"* do not include other source files here!!!
33 | private section.
34 | *"* private components of class ZLNKECL_AWS_S3
35 | *"* do not include other source files here!!!
36 | ENDCLASS.
37 |
38 |
39 |
40 | CLASS ZLNKECL_AWS_S3 IMPLEMENTATION.
41 |
42 |
43 | METHOD constructor.
44 | *--------------------------------------------------------------------*
45 | * Company: RocketSteam
46 | * Author: Jordi Escoda, 9th April 2014
47 | * Object constructor
48 | *--------------------------------------------------------------------*
49 | DATA: l_destination_exists TYPE abap_bool.
50 | DATA: l_region TYPE ZLNKEregion_de.
51 | DATA: l_msg TYPE string. "#EC NEEDED
52 | DATA: l_tabname TYPE tabname.
53 |
54 | CALL METHOD super->constructor.
55 |
56 | attr_service_name = c_service_name.
57 |
58 | * Parameter i_create is true when bucket creation
59 | CHECK i_create = abap_false.
60 |
61 | attr_user = i_user_name.
62 | attr_dbg = i_dbg.
63 |
64 | * For SaaS credentials are not coming from ZLNKEuser
65 | IF running_as_saas( ) = abap_false.
66 | * Get keys from user
67 | SELECT SINGLE access_key secr_access_key aws_account_id
68 | INTO (attr_access_key, attr_secret_access_key, attr_aws_account_id)
69 | FROM ZLNKEuser
70 | WHERE user_name = i_user_name.
71 |
72 | IF sy-subrc <> 0.
73 | * 020 AWS S3 User & not found
74 | MESSAGE i020 WITH i_user_name INTO l_msg.
75 | ZLNKEcx_aws_s3=>raise_from_sy_msg( ).
76 | ENDIF.
77 | ELSE.
78 | * Is SaaS.
79 | * Avoid syntax error in case Stand-alone (table ZLNKEACTIV_CODE is not delivered)
80 | l_tabname = 'ZLNKEACTIV_CODE'.
81 | TRY.
82 | * Get the aws account ID
83 | SELECT SINGLE aws_account_id "#EC *
84 | INTO attr_aws_account_id
85 | FROM (l_tabname).
86 | CATCH cx_sy_dynamic_osql_semantics.
87 | * Should not happen!
88 | * 078 Table & not found
89 | MESSAGE i078 WITH l_tabname INTO l_msg.
90 | ZLNKEcx_aws_s3=>raise_from_sy_msg( ).
91 | ENDTRY.
92 | ENDIF.
93 |
94 | * Checks if HTTP to ext destination exists
95 | l_region = c_default_region.
96 | CALL METHOD ZLNKEcl_rfc_connections=>http_dest_to_ext_exists_region
97 | EXPORTING
98 | i_region = l_region
99 | RECEIVING
100 | e_destination_exists = l_destination_exists.
101 |
102 | IF l_destination_exists = abap_false.
103 | * HTTP to ext destination does not exist. Create it.
104 | CALL METHOD ZLNKEcl_rfc_connections=>create_http_dest_to_ext_region
105 | EXPORTING
106 | i_region = l_region.
107 | ENDIF.
108 |
109 | ENDMETHOD.
110 |
111 |
112 | METHOD get_host_name.
113 | *--------------------------------------------------------------------*
114 | * Company: RocketSteam
115 | * Author: Jordi Escoda, 17th July 2014
116 | * Returns the hostname for S3
117 | *--------------------------------------------------------------------*
118 | CONCATENATE c_service_name
119 | '.'
120 | c_host_name
121 | INTO e_host_name.
122 | ENDMETHOD.
123 |
124 |
125 | METHOD get_service.
126 | *--------------------------------------------------------------------*
127 | * Company: RocketSteam
128 | * Author: Jordi Escoda, 15th April 2014
129 | * Executes request to AWS S3 to get service
130 | *--------------------------------------------------------------------*
131 | DATA: l_rfcddest TYPE rfcdest.
132 | DATA: l_request TYPE string.
133 | DATA: l_region TYPE ZLNKEregion_de.
134 | DATA: l_response_xcontent TYPE xstring.
135 |
136 | l_region = c_default_region.
137 | l_rfcddest = ZLNKEcl_rfc_connections=>get_httpdest_by_region(
138 | l_region ).
139 |
140 | l_request = '/'.
141 |
142 | CALL METHOD rest
143 | EXPORTING
144 | i_rfcdest = l_rfcddest
145 | i_region = c_default_region
146 | i_http_method = ZLNKEcl_http=>c_method_get
147 | i_request = l_request
148 | i_body_hash = ZLNKEcl_hash=>c_empty_body_sha256
149 | IMPORTING
150 | e_http_status = e_http_status
151 | e_response_headers = e_response_headers
152 | e_response_xcontent = l_response_xcontent.
153 |
154 | CALL METHOD ZLNKEcl_string_conversions=>xstring_to_string
155 | EXPORTING
156 | input = l_response_xcontent
157 | IMPORTING
158 | output = e_response_content.
159 |
160 | ENDMETHOD.
161 | ENDCLASS.
162 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_aws_s3.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECL_AWS_S3
7 | 1
8 | E
9 | RocketSteam. S3 Service
10 | 2
11 | 1
12 | X
13 | X
14 | X
15 | S
16 | ZLNKEAWS_S3
17 |
18 |
19 |
20 | ZLNKECL_AWS_S3
21 | CONSTRUCTOR
22 | E
23 | CONSTRUCTOR
24 |
25 |
26 | ZLNKECL_AWS_S3
27 | GET_HOST_NAME
28 | E
29 | Returns the Hostname for S3 Service
30 |
31 |
32 | ZLNKECL_AWS_S3
33 | GET_SERVICE
34 | E
35 | List buckets
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_aws_s3_bucket.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECL_AWS_S3_BUCKET
7 | 1
8 | E
9 | RocketSteam. Bucket
10 | 2
11 | 1
12 | X
13 | X
14 | X
15 | X
16 | S
17 | ZLNKEAWS_S3
18 |
19 |
20 |
21 | ZLNKECL_AWS_S3_BUCKET
22 | ATTR_BUCKET_NAME
23 | E
24 | Bucket name
25 |
26 |
27 | ZLNKECL_AWS_S3_BUCKET
28 | ATTR_CLIENT_ENCRYPT
29 | E
30 | General Flag
31 |
32 |
33 | ZLNKECL_AWS_S3_BUCKET
34 | ATTR_REGION
35 | E
36 | Rocket Steam. Region.
37 |
38 |
39 | ZLNKECL_AWS_S3_BUCKET
40 | ATTR_RFCDEST
41 | E
42 | Logical Destination (Specified in Function Call)
43 |
44 |
45 | ZLNKECL_AWS_S3_BUCKET
46 | ATTR_SERVER_ENCRYPT
47 | E
48 | General Flag
49 |
50 |
51 | ZLNKECL_AWS_S3_BUCKET
52 | ATTR_ZIP
53 | E
54 | General Flag
55 |
56 |
57 | ZLNKECL_AWS_S3_BUCKET
58 | CONSTRUCTOR
59 | E
60 | CONSTRUCTOR
61 |
62 |
63 | ZLNKECL_AWS_S3_BUCKET
64 | CREATE_BUCKET
65 | E
66 | Creates a Bucket
67 |
68 |
69 | ZLNKECL_AWS_S3_BUCKET
70 | C_BUCKET_PREFIX_SEPARATOR
71 | E
72 | Bucket prefix separator
73 |
74 |
75 | ZLNKECL_AWS_S3_BUCKET
76 | C_MPART_SIZE
77 | E
78 | Part size for multipart upload
79 |
80 |
81 | ZLNKECL_AWS_S3_BUCKET
82 | C_MPART_UPLD_RETRIES
83 | E
84 | Multipart upload retries
85 |
86 |
87 | ZLNKECL_AWS_S3_BUCKET
88 | C_MPART_UPLD_STATE_ABORTED
89 | E
90 | Multipart state aborted
91 |
92 |
93 | ZLNKECL_AWS_S3_BUCKET
94 | C_MPART_UPLD_STATE_COMPL_ERR
95 | E
96 | Multipart state errors
97 |
98 |
99 | ZLNKECL_AWS_S3_BUCKET
100 | C_MPART_UPLD_STATE_COMPL_OK
101 | E
102 | Multipart state completed OK
103 |
104 |
105 | ZLNKECL_AWS_S3_BUCKET
106 | C_MPART_UPLD_STATE_INPROGRESS
107 | E
108 | Multipart state in progress
109 |
110 |
111 | ZLNKECL_AWS_S3_BUCKET
112 | C_THRESHOLD_MPART
113 | E
114 | Threshold to switch to multipart upload
115 |
116 |
117 | ZLNKECL_AWS_S3_BUCKET
118 | DELETE_BUCKET
119 | E
120 | Deletes a Bucket if is empty
121 |
122 |
123 | ZLNKECL_AWS_S3_BUCKET
124 | DELETE_BUCKET_LIFECYCLE
125 | E
126 | Deletes Bucket Lifecycle
127 |
128 |
129 | ZLNKECL_AWS_S3_BUCKET
130 | DELETE_OBJECT
131 | E
132 | Given an object name deletes it
133 |
134 |
135 | ZLNKECL_AWS_S3_BUCKET
136 | GET_BUCKET_LIFECYCLE
137 | E
138 | Returns Bucket Lifecycle
139 |
140 |
141 | ZLNKECL_AWS_S3_BUCKET
142 | GET_BUCKET_LOCATION
143 | E
144 | Returns Bucket Location
145 |
146 |
147 | ZLNKECL_AWS_S3_BUCKET
148 | GET_BUCKET_NAME_EXTERNAL
149 | E
150 | Returns Bucket name external
151 |
152 |
153 | ZLNKECL_AWS_S3_BUCKET
154 | GET_BUCKET_NAME_INTERNAL
155 | E
156 | Returns Bucket name internal
157 |
158 |
159 | ZLNKECL_AWS_S3_BUCKET
160 | GET_BUCKET_SIZE
161 | E
162 | Returns bucket size (may take long time!)
163 |
164 |
165 | ZLNKECL_AWS_S3_BUCKET
166 | GET_KEY_SIZE_FROM_XML
167 | E
168 | XML from List to table containing key & size pairs
169 |
170 |
171 | ZLNKECL_AWS_S3_BUCKET
172 | GET_OBJECT
173 | E
174 | Given an object name returns it
175 |
176 |
177 | ZLNKECL_AWS_S3_BUCKET
178 | HEAD_BUCKET
179 | E
180 | Executes a HEAD request for the Bucket
181 |
182 |
183 | ZLNKECL_AWS_S3_BUCKET
184 | HEAD_OBJECT
185 | E
186 | Executes a HEAD request for an object
187 |
188 |
189 | ZLNKECL_AWS_S3_BUCKET
190 | LIST_OBJECTS
191 | E
192 | Returns an XML with the Bucket List (max 1000 items)
193 |
194 |
195 | ZLNKECL_AWS_S3_BUCKET
196 | LIST_OBJECTS_V2
197 | E
198 | Returns an XML with the Bucket List (max 1000 items) V2
199 |
200 |
201 | ZLNKECL_AWS_S3_BUCKET
202 | LIST_PARTS_MULTIPART_UPLOAD
203 | E
204 | List parts of a multipart upload
205 |
206 |
207 | ZLNKECL_AWS_S3_BUCKET
208 | PUT_BUCKET_LIFECYCLE
209 | E
210 | Sets Bucket Lifecycle
211 |
212 |
213 | ZLNKECL_AWS_S3_BUCKET
214 | PUT_OBJECT
215 | E
216 | Given an object and optionally MIME type puts it
217 |
218 |
219 | ZLNKECL_AWS_S3_BUCKET
220 | PUT_OBJECT_MULTIPART_UPLOAD
221 | E
222 | Given an object and optionally MIME type puts it (Multipart)
223 |
224 |
225 |
226 |
227 |
228 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_aws_sign_v4_base.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECL_AWS_SIGN_V4_BASE
7 | 1
8 | E
9 | RocketSteam. Common methods and properties for AWS V4 signer
10 | 2
11 | 1
12 | X
13 | X
14 | X
15 | X
16 | S
17 |
18 |
19 |
20 | ZLNKECL_AWS_SIGN_V4_BASE
21 | CONSTRUCTOR
22 | E
23 | CONSTRUCTOR
24 |
25 |
26 | ZLNKECL_AWS_SIGN_V4_BASE
27 | LR_ATTR_HTTP_REQUEST
28 | E
29 | HTTP Framework (iHTTP) HTTP Request
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_aws_sign_v4_header.clas.abap:
--------------------------------------------------------------------------------
1 | class ZLNKECL_AWS_SIGN_V4_HEADER definition
2 | public
3 | inheriting from ZLNKECL_AWS_SIGN_V4_BASE
4 | final
5 | create public .
6 |
7 | *"* public components of class ZLNKECL_AWS_SIGN_V4_HEADER
8 | *"* do not include other source files here!!!
9 | public section.
10 |
11 | methods CONSTRUCTOR
12 | importing
13 | !I_HTTP_REQUEST type ref to IF_HTTP_REQUEST
14 | !I_ENDPOINT_URL type STRING
15 | !I_HTTP_METHOD type STRING
16 | !I_SERVICE_NAME type STRING default 's3'
17 | !I_REGION type STRING .
18 | methods COMPUTESIGNATURE
19 | importing
20 | !I_BODY_HASH type STRING
21 | !I_AWS_ACCESS_KEY type STRING
22 | !I_AWS_SECRET_KEY type STRING
23 | raising
24 | CX_ABAP_MESSAGE_DIGEST .
25 | protected section.
26 | *"* protected components of class ZLNKECL_AWS_SIGN_V4_HEADER
27 | *"* do not include other source files here!!!
28 | private section.
29 | *"* private components of class ZLNKECL_AWS_SIGN_V4_HEADER
30 | *"* do not include other source files here!!!
31 | ENDCLASS.
32 |
33 |
34 |
35 | CLASS ZLNKECL_AWS_SIGN_V4_HEADER IMPLEMENTATION.
36 |
37 |
38 | METHOD computesignature.
39 | *--------------------------------------------------------------------*
40 | * Company: RocketSteam
41 | * Author: Jordi Escoda, 26th March 2014
42 | * Signs the http_request adding to the header the required data
43 | *--------------------------------------------------------------------*
44 | DATA: l_date TYPE datum,
45 | l_time TYPE uzeit.
46 | DATA: l_x_amz_date TYPE string,
47 | l_datestmp TYPE string.
48 | DATA: l_host TYPE string.
49 | DATA: l_canonicalizedheadernames TYPE string.
50 | DATA: l_canonicalizedheaders TYPE string.
51 | DATA: l_canonicalizedqueryparameters TYPE string.
52 | DATA: l_canonicalrequest TYPE string.
53 | DATA: l_scope TYPE string.
54 | DATA: l_stringtosign TYPE string.
55 | DATA: l_ksecret TYPE string,
56 | l_signature TYPE string.
57 | DATA: l_xkdate TYPE xstring,
58 | l_xkregion TYPE xstring,
59 | l_xkservice TYPE xstring,
60 | l_xksigning TYPE xstring,
61 | l_xsignature TYPE xstring.
62 | DATA: l_authorizationheader TYPE string.
63 |
64 | lr_attr_http_request->set_header_field( name = 'x-amz-content-sha256' "#EC NOTEXT
65 | value = i_body_hash ).
66 |
67 | get_date_time_utc( IMPORTING e_date_utc = l_date
68 | e_time_utc = l_time ).
69 |
70 | l_x_amz_date = get_tstmp_iso8601basicformat(
71 | i_date = l_date
72 | i_time = l_time ).
73 |
74 | lr_attr_http_request->set_header_field( name = 'x-amz-date' "#EC NOTEXT
75 | value = l_x_amz_date ).
76 |
77 | l_host = get_host( ).
78 | lr_attr_http_request->set_header_field( name = 'Host' "#EC NOTEXT
79 | value = l_host ).
80 |
81 | l_canonicalizedheadernames = get_canonicalizeheadernames( ).
82 |
83 | l_canonicalizedheaders = get_canonicalizedheaderstring( ).
84 |
85 | l_canonicalizedqueryparameters = get_canonicalizedquerystring( ).
86 |
87 | * WRITE:/ 'Canonicalized Query Parameters:'.
88 | * WRITE:/ l_canonicalizedqueryparameters.
89 |
90 | l_canonicalrequest = get_canonicalrequest(
91 | i_canonicalizedqueryparameters = l_canonicalizedqueryparameters
92 | i_canonicalizedheadernames = l_canonicalizedheadernames
93 | i_canonicalizedheaders = l_canonicalizedheaders
94 | i_bodyhash = i_body_hash ).
95 |
96 | * Builds the scope
97 | CONCATENATE l_date
98 | attr_region
99 | attr_service_name
100 | c_terminator
101 | INTO l_scope SEPARATED BY '/'.
102 |
103 | l_stringtosign = get_stringtosign(
104 | i_scheme = c_scheme
105 | i_algorithm = c_algorithm
106 | i_datetime = l_x_amz_date
107 | i_scope = l_scope
108 | i_canonicalrequest = l_canonicalrequest ).
109 |
110 | * WRITE:/ 'Canonical Request:'.
111 | * WRITE:/ l_canonicalrequest.
112 | * WRITE:/ 'String to sign:'.
113 | * WRITE:/ l_stringtosign.
114 | * WRITE:/.
115 |
116 | CONCATENATE c_scheme i_aws_secret_key INTO l_ksecret.
117 | l_datestmp = l_date.
118 | l_xkdate = hmac_sign_kstring( i_string = l_datestmp
119 | i_key = l_ksecret ).
120 | l_xkregion = hmac_sign_kxstring( i_string = attr_region
121 | i_xkey = l_xkdate ).
122 | l_xkservice = hmac_sign_kxstring( i_string = attr_service_name
123 | i_xkey = l_xkregion ).
124 | l_xksigning = hmac_sign_kxstring( i_string = c_terminator
125 | i_xkey = l_xkservice ).
126 | l_xsignature = hmac_sign_kxstring( i_string = l_stringtosign
127 | i_xkey = l_xksigning ).
128 | l_signature = l_xsignature.
129 | TRANSLATE l_signature TO LOWER CASE.
130 |
131 | CONCATENATE c_scheme '-' c_algorithm ' ' "#EC NOTEXT
132 | 'Credential='
133 | i_aws_access_key
134 | '/'
135 | l_scope
136 | ', '
137 | 'SignedHeaders='
138 | l_canonicalizedheadernames
139 | ', '
140 | 'Signature='
141 | l_signature
142 | INTO l_authorizationheader RESPECTING BLANKS.
143 |
144 | lr_attr_http_request->set_header_field( name = 'Authorization' "#EC NOTEXT
145 | value = l_authorizationheader ).
146 |
147 | ENDMETHOD.
148 |
149 |
150 | METHOD CONSTRUCTOR.
151 | *--------------------------------------------------------------------*
152 | * Company: RocketSteam
153 | * Author: Jordi Escoda, 26th March 2014
154 | * Object constructor
155 | *--------------------------------------------------------------------*
156 | CALL METHOD super->constructor
157 | EXPORTING
158 | i_http_request = i_http_request
159 | i_endpoint_url = i_endpoint_url
160 | i_http_method = i_http_method
161 | i_service_name = i_service_name
162 | i_region = i_region.
163 |
164 | ENDMETHOD.
165 | ENDCLASS.
166 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_aws_sign_v4_header.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECL_AWS_SIGN_V4_HEADER
7 | 1
8 | E
9 | RocketSteam. AWS V4 Signer, requests with Authoriz. header
10 | 2
11 | 1
12 | X
13 | X
14 | X
15 | X
16 | S
17 |
18 |
19 |
20 | ZLNKECL_AWS_SIGN_V4_HEADER
21 | COMPUTESIGNATURE
22 | E
23 | Computes authentication signature
24 |
25 |
26 | ZLNKECL_AWS_SIGN_V4_HEADER
27 | CONSTRUCTOR
28 | E
29 | CONSTRUCTOR
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_aws_sqs.clas.abap:
--------------------------------------------------------------------------------
1 | class ZLNKECL_AWS_SQS definition
2 | public
3 | inheriting from ZLNKECL_AWS_INHERIT_SWITCH
4 | final
5 | create public .
6 |
7 | *"* public components of class ZLNKECL_AWS_SQS
8 | *"* do not include other source files here!!!
9 | public section.
10 |
11 | constants C_SERVICE_NAME type STRING value 'sqs'. "#EC NOTEXT
12 |
13 | type-pools ABAP .
14 | methods CONSTRUCTOR
15 | importing
16 | !I_ACCESS_KEY type STRING optional
17 | !I_SECRET_ACCESS_KEY type STRING optional
18 | !I_REGION type STRING optional
19 | !I_AWS_ACCOUNT_ID type STRING
20 | !I_DBG type ABAP_BOOL default ABAP_FALSE
21 | preferred parameter I_REGION .
22 | methods SEND_MESSAGE
23 | exporting
24 | !E_HTTP_STATUS type I
25 | !E_RESPONSE_HEADERS type TIHTTPNVP
26 | !E_RESPONSE_CONTENT type STRING
27 | raising
28 | ZLNKECX_AWS_S3 .
29 | protected section.
30 | *"* protected components of class ZLNKECL_AWS_SQS
31 | *"* do not include other source files here!!!
32 | private section.
33 | *"* private components of class ZLNKECL_AWS_SQS
34 | *"* do not include other source files here!!!
35 |
36 | constants C_QUEUE_NAME type STRING value 'RocketSteamS4LicenseServer_In'. "#EC NOTEXT
37 | data ATTR_REGION type STRING .
38 | ENDCLASS.
39 |
40 |
41 |
42 | CLASS ZLNKECL_AWS_SQS IMPLEMENTATION.
43 |
44 |
45 | METHOD constructor.
46 |
47 | super->constructor( ).
48 |
49 | attr_access_key = i_access_key.
50 | attr_secret_access_key = i_secret_access_key.
51 |
52 | attr_service_name = c_service_name.
53 |
54 | IF i_region IS INITIAL.
55 | attr_region = c_default_region.
56 | ELSE.
57 | attr_region = i_region.
58 | ENDIF.
59 |
60 | attr_aws_account_id = i_aws_account_id.
61 | attr_dbg = i_dbg.
62 |
63 | ENDMETHOD.
64 |
65 |
66 | METHOD send_message.
67 | *--------------------------------------------------------------------*
68 | * Company: RocketSteam
69 | * Author: Jordi Escoda, 18th July 2014
70 | * Test for a public SQS
71 | *--------------------------------------------------------------------*
72 | DATA: l_rfcddest TYPE rfcdest.
73 | DATA: l_request TYPE string.
74 | DATA: l_response_xcontent TYPE xstring.
75 |
76 | l_rfcddest = 'RS3_SQS_IN'.
77 |
78 | CONCATENATE '/'
79 | attr_aws_account_id
80 | '/'
81 | c_queue_name
82 | '/?Action=SendMessage'
83 | '&MessageBody=HelloWorld'
84 | INTO l_request.
85 |
86 | CALL METHOD rest_no_sign
87 | EXPORTING
88 | i_rfcdest = l_rfcddest
89 | i_region = attr_region
90 | i_http_method = ZLNKEcl_http=>c_method_get
91 | i_request = l_request
92 | i_body_hash = ZLNKEcl_hash=>c_empty_body_sha256
93 | IMPORTING
94 | e_http_status = e_http_status
95 | e_response_headers = e_response_headers
96 | e_response_xcontent = l_response_xcontent.
97 |
98 | CALL METHOD ZLNKEcl_string_conversions=>xstring_to_string
99 | EXPORTING
100 | input = l_response_xcontent
101 | IMPORTING
102 | output = e_response_content.
103 |
104 | ENDMETHOD.
105 | ENDCLASS.
106 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_aws_sqs.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECL_AWS_SQS
7 | 1
8 | E
9 | RocketSteam. AWS SQS class
10 | 2
11 | 1
12 | X
13 | X
14 | X
15 | X
16 | S
17 |
18 |
19 |
20 | ZLNKECL_AWS_SQS
21 | CONSTRUCTOR
22 | E
23 | CONSTRUCTOR
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_hash.clas.abap:
--------------------------------------------------------------------------------
1 | class ZLNKECL_HASH definition
2 | public
3 | final
4 | create private .
5 |
6 | *"* public components of class ZLNKECL_HASH
7 | *"* do not include other source files here!!!
8 | public section.
9 |
10 | constants C_EMPTY_BODY_SHA256 type STRING value 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'. "#EC NOTEXT
11 |
12 | class-methods HASH_SHA256_FOR_CHAR
13 | importing
14 | !I_STRING type STRING
15 | returning
16 | value(E_HASH) type STRING
17 | raising
18 | CX_ABAP_MESSAGE_DIGEST .
19 | class-methods HASH_SHA256_FOR_HEX
20 | importing
21 | !I_XSTRING type XSTRING
22 | returning
23 | value(E_HASH) type STRING
24 | raising
25 | CX_ABAP_MESSAGE_DIGEST .
26 | class-methods HASH_MD5_FOR_CHAR
27 | importing
28 | !I_STRING type STRING
29 | returning
30 | value(E_HASH) type STRING
31 | raising
32 | CX_ABAP_MESSAGE_DIGEST .
33 | class-methods HASH_MD5_FOR_HEX_BASE64
34 | importing
35 | !I_XSTRING type XSTRING
36 | returning
37 | value(E_HASH) type STRING
38 | raising
39 | CX_ABAP_MESSAGE_DIGEST .
40 | protected section.
41 | *"* protected components of class ZLNKECL_HASH
42 | *"* do not include other source files here!!!
43 | private section.
44 | *"* private components of class ZLNKECL_HASH
45 | *"* do not include other source files here!!!
46 | ENDCLASS.
47 |
48 |
49 |
50 | CLASS ZLNKECL_HASH IMPLEMENTATION.
51 |
52 |
53 | METHOD hash_md5_for_char.
54 | *--------------------------------------------------------------------*
55 | * Company: RocketSteam
56 | * Author: Jordi Escoda, 28th March 2014
57 | * Calculates MD5 hash for the given string, Output Base64
58 | *--------------------------------------------------------------------*
59 | CALL METHOD cl_abap_message_digest=>calculate_hash_for_char
60 | EXPORTING
61 | if_algorithm = 'MD5'
62 | if_data = i_string
63 | IMPORTING
64 | ef_hashstring = e_hash.
65 |
66 | ENDMETHOD.
67 |
68 |
69 | METHOD HASH_MD5_FOR_HEX_BASE64.
70 | *--------------------------------------------------------------------*
71 | * Company: RocketSteam
72 | * Author: Jordi Escoda, 28th March 2014
73 | * Calculates MD5 hash for the given xstring, Output Base64
74 | *--------------------------------------------------------------------*
75 | CALL METHOD cl_abap_message_digest=>calculate_hash_for_raw
76 | EXPORTING
77 | if_algorithm = 'MD5'
78 | if_data = i_xstring
79 | IMPORTING
80 | ef_hashb64string = e_hash.
81 |
82 | ENDMETHOD.
83 |
84 |
85 | METHOD hash_sha256_for_char.
86 | *--------------------------------------------------------------------*
87 | * Company: RocketSteam
88 | * Author: Jordi Escoda, 25th March 2014
89 | * Calculates SHA-256 hash for the given text
90 | *--------------------------------------------------------------------*
91 | CALL METHOD cl_abap_message_digest=>calculate_hash_for_char
92 | EXPORTING
93 | if_algorithm = 'SHA-256'
94 | if_data = i_string
95 | IMPORTING
96 | ef_hashstring = e_hash.
97 |
98 | TRANSLATE e_hash TO LOWER CASE.
99 |
100 | ENDMETHOD.
101 |
102 |
103 | METHOD hash_sha256_for_hex.
104 | *--------------------------------------------------------------------*
105 | * Company: RocketSteam
106 | * Author: Jordi Escoda, 28th March 2014
107 | * Calculates SHA-256 hash for the given xstring
108 | *--------------------------------------------------------------------*
109 | CALL METHOD cl_abap_message_digest=>calculate_hash_for_raw
110 | EXPORTING
111 | if_algorithm = 'SHA-256'
112 | if_data = i_xstring
113 | IMPORTING
114 | ef_hashstring = e_hash.
115 |
116 | TRANSLATE e_hash TO LOWER CASE.
117 | ENDMETHOD.
118 | ENDCLASS.
119 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_hash.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECL_HASH
7 | 1
8 | E
9 | RocketSteam. Hash class
10 | 1
11 | X
12 | X
13 | X
14 | X
15 | S
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_http.clas.abap:
--------------------------------------------------------------------------------
1 | class ZLNKECL_HTTP definition
2 | public
3 | final
4 | create private .
5 |
6 | *"* public components of class ZLNKECL_HTTP
7 | *"* do not include other source files here!!!
8 | public section.
9 |
10 | constants C_METHOD_GET type STRING value 'GET'. "#EC NOTEXT
11 | constants C_METHOD_POST type STRING value 'POST'. "#EC NOTEXT
12 | constants C_METHOD_HEAD type STRING value 'HEAD'. "#EC NOTEXT
13 | constants C_METHOD_PUT type STRING value 'PUT'. "#EC NOTEXT
14 | constants C_METHOD_DELETE type STRING value 'DELETE'. "#EC NOTEXT
15 | constants C_STATUS_200_OK type I value 200. "#EC NOTEXT
16 | constants C_STATUS_201_CREATED type I value 201. "#EC NOTEXT
17 | constants C_STATUS_204_NO_CONTENT type I value 204. "#EC NOTEXT
18 | constants C_STATUS_206_PARTIAL_CONTENT type I value 206. "#EC NOTEXT
19 | constants C_STATUS_250_MISSINGDOCCREATED type I value 250. "#EC NOTEXT
20 | constants C_STATUS_307_TEMP_REDIRECT type I value 307. "#EC NOTEXT
21 | constants C_STATUS_400_BAD_REQUEST type I value 400. "#EC NOTEXT
22 | constants C_STATUS_401_UNAUTHORIZED type I value 401. "#EC NOTEXT
23 | constants C_STATUS_403_FORBIDDEN type I value 403. "#EC NOTEXT
24 | constants C_STATUS_404_NOT_FOUND type I value 404. "#EC NOTEXT
25 | constants C_STATUS_405_METH_NOT_ALLOWED type I value 405. "#EC NOTEXT
26 | constants C_STATUS_406_NOT_ACCEPTABLE type I value 406. "#EC NOTEXT
27 | constants C_STATUS_409_CONFLICT type I value 409. "#EC NOTEXT
28 | constants C_STATUS_411_LENGTH_REQUIRED type I value 411. "#EC NOTEXT
29 | constants C_STATUS_412_PRECOND_FAILED type I value 412. "#EC NOTEXT
30 | constants C_STATUS_416_REQRANGENOTSATISF type I value 416. "#EC NOTEXT
31 | constants C_STATUS_500_INTNAL_SERVER_ERR type I value 500. "#EC NOTEXT
32 | constants C_STATUS_501_NOT_IMPLEMENTED type I value 501. "#EC NOTEXT
33 | constants C_STATUS_503_SERVICE_UNAVAILAB type I value 503. "#EC NOTEXT
34 |
35 | class-methods GET_REASON_BY_STATUS
36 | importing
37 | !I_HTTP_STATUS type I
38 | returning
39 | value(E_REASON) type STRING .
40 | class-methods ESCAPE_URL
41 | importing
42 | !I_UNESCAPED type STRING
43 | returning
44 | value(E_ESCAPED) type STRING .
45 | class-methods UNESCAPE_URL
46 | importing
47 | !I_ESCAPED type STRING
48 | returning
49 | value(E_UNESCAPED) type STRING .
50 | protected section.
51 | *"* protected components of class ZLNKECL_HTTP
52 | *"* do not include other source files here!!!
53 | private section.
54 | *"* private components of class ZLNKECL_HTTP
55 | *"* do not include other source files here!!!
56 | ENDCLASS.
57 |
58 |
59 |
60 | CLASS ZLNKECL_HTTP IMPLEMENTATION.
61 |
62 |
63 | METHOD escape_url.
64 | *--------------------------------------------------------------------*
65 | * Company: RocketSteam
66 | * Author: Jordi Escoda, 11th April 2016
67 | *--------------------------------------------------------------------*
68 | DATA: lv_text(512) TYPE c.
69 | DATA: lv_string TYPE string.
70 | DATA: lt_result TYPE match_result_tab.
71 | FIELD-SYMBOLS: TYPE match_result.
72 |
73 | * This escapes dots. Do not wish to escape dots!. And escape are lowercase
74 | * CALL METHOD cl_http_utility=>if_http_utility~escape_url
75 | * EXPORTING
76 | * unescaped = i_unescaped
77 | * OPTIONS = 0
78 | * RECEIVING
79 | * escaped = lv_string.
80 |
81 | * This does not escape dots, but returns escaped in lowercase
82 | CALL METHOD cl_abap_dyn_prg=>escape_xss_url
83 | EXPORTING
84 | val = i_unescaped
85 | RECEIVING
86 | out = lv_string.
87 |
88 | lv_text = lv_string.
89 |
90 | * Unescape %2f -> / (needed for path)
91 | REPLACE ALL OCCURRENCES OF '%2f' IN lv_text WITH '/'.
92 |
93 | * AWS does not accept escaped in lowercase. Convert to uppercase
94 | FIND ALL OCCURRENCES OF REGEX '%..' IN lv_text RESULTS lt_result.
95 | LOOP AT lt_result ASSIGNING .
96 | TRANSLATE lv_text+-offset(-length) TO UPPER CASE.
97 | ENDLOOP.
98 |
99 | e_escaped = lv_text.
100 |
101 | ENDMETHOD.
102 |
103 |
104 | METHOD get_reason_by_status.
105 | *--------------------------------------------------------------------*
106 | * Company: RocketSteam
107 | * Author: Jordi Escoda, 26th March 2014
108 | * Given an HTTP status code returns the reason
109 | *--------------------------------------------------------------------*
110 |
111 | DATA: l_status TYPE c.
112 |
113 | CASE i_http_status.
114 | WHEN c_status_200_ok.
115 | e_reason = 'OK'. "#EC NOTEXT
116 | WHEN c_status_201_created.
117 | e_reason = 'Created'. "#EC NOTEXT
118 | WHEN c_status_204_no_content.
119 | e_reason = 'No content'. "#EC NOTEXT
120 | WHEN c_status_206_partial_content.
121 | e_reason = 'Partial content'. "#EC NOTEXT
122 | WHEN c_status_250_missingdoccreated.
123 | e_reason = 'Missing document(s) created'. "#EC NOTEXT
124 | WHEN c_status_307_temp_redirect.
125 | e_reason = 'Temporary Redirect'. "#EC NOTEXT
126 | WHEN c_status_400_bad_request.
127 | e_reason = 'Bad Request'. "#EC NOTEXT
128 | WHEN c_status_401_unauthorized.
129 | e_reason = 'Unauthorized'. "#EC NOTEXT
130 | WHEN c_status_403_forbidden.
131 | e_reason = 'Forbidden'. "#EC NOTEXT
132 | WHEN c_status_404_not_found.
133 | e_reason = 'Not Found'. "#EC NOTEXT
134 | WHEN c_status_405_meth_not_allowed.
135 | e_reason = 'Method not allowed'. "#EC NOTEXT
136 | WHEN c_status_406_not_acceptable.
137 | e_reason = 'Not acceptable'. "#EC NOTEXT
138 | WHEN c_status_409_conflict.
139 | e_reason = 'Conflict'. "#EC NOTEXT
140 | WHEN c_status_411_length_required.
141 | e_reason = 'Length Required'. "#EC NOTEXT
142 | WHEN c_status_412_precond_failed.
143 | e_reason = 'Precondition Failed'. "#EC NOTEXT
144 | WHEN c_status_416_reqrangenotsatisf.
145 | e_reason = 'Requested Range Not Satisfiable'. "#EC NOTEXT
146 | WHEN c_status_500_intnal_server_err.
147 | e_reason = 'Internal Server Error'. "#EC NOTEXT
148 | WHEN c_status_501_not_implemented.
149 | e_reason = 'Not implemented'. "#EC NOTEXT
150 | WHEN c_status_503_service_unavailab.
151 | e_reason = 'Service unavailable'. "#EC NOTEXT
152 | WHEN OTHERS.
153 | l_status = i_http_status.
154 | CONCATENATE 'HTTP Status' l_status INTO e_reason. "#EC NOTEXT
155 | ENDCASE.
156 |
157 | ENDMETHOD.
158 |
159 |
160 | METHOD unescape_url.
161 | *--------------------------------------------------------------------*
162 | * Company: RocketSteam
163 | * Author: Jordi Escoda, 14th April 2016
164 | *--------------------------------------------------------------------*
165 |
166 | CALL METHOD cl_http_utility=>if_http_utility~unescape_url
167 | EXPORTING
168 | escaped = i_escaped
169 | RECEIVING
170 | unescaped = e_unescaped.
171 |
172 | ENDMETHOD.
173 | ENDCLASS.
174 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_http.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECL_HTTP
7 | 1
8 | E
9 | RocketSteam. HTTP protocol constants
10 | 1
11 | X
12 | X
13 | X
14 | X
15 | S
16 |
17 |
18 |
19 | ZLNKECL_HTTP
20 | ESCAPE_URL
21 | E
22 | Escape URL in uppercase and without dots.
23 |
24 |
25 | ZLNKECL_HTTP
26 | GET_REASON_BY_STATUS
27 | E
28 | Given a HTTP status returns the reason
29 |
30 |
31 | ZLNKECL_HTTP
32 | UNESCAPE_URL
33 | E
34 | Unescape URL
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_log.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECL_LOG
7 | 1
8 | E
9 | RocketSteam. Log class
10 | 1
11 | X
12 | X
13 | X
14 | X
15 | S
16 |
17 |
18 |
19 | ZLNKECL_LOG
20 | ATTR_KEEP_DAYS
21 | E
22 | RocketSteam. Days to keep log
23 |
24 |
25 | ZLNKECL_LOG
26 | ATTR_LOG_CONT_SERV_REQUEST
27 | E
28 | Log Content server requests
29 |
30 |
31 | ZLNKECL_LOG
32 | ATTR_LOG_REQ_RESP_FROM_AWS
33 | E
34 | Log request and responses from AWS
35 |
36 |
37 | ZLNKECL_LOG
38 | ATTR_LOG_RESPONSE_FROM_AWS
39 | E
40 | Log response from AWS
41 |
42 |
43 | ZLNKECL_LOG
44 | CLASS_CONSTRUCTOR
45 | E
46 | CLASS_CONSTRUCTOR
47 |
48 |
49 | ZLNKECL_LOG
50 | C_LOG_EVT_AOBJ_ADD_BUCKET
51 | E
52 | RocketSteam. Log event
53 |
54 |
55 | ZLNKECL_LOG
56 | C_LOG_EVT_AOBJ_EDITION
57 | E
58 | RocketSteam. Log event
59 |
60 |
61 | ZLNKECL_LOG
62 | C_LOG_EVT_AOBJ_REMOVE_BUCKET
63 | E
64 | RocketSteam. Log event
65 |
66 |
67 | ZLNKECL_LOG
68 | C_LOG_EVT_BUCKET_CREATE
69 | E
70 | RocketSteam. Log event
71 |
72 |
73 | ZLNKECL_LOG
74 | C_LOG_EVT_BUCKET_DELETE
75 | E
76 | RocketSteam. Log event
77 |
78 |
79 | ZLNKECL_LOG
80 | C_LOG_EVT_BUCKET_ENCRYPT
81 | E
82 | RocketSteam. Log event
83 |
84 |
85 | ZLNKECL_LOG
86 | C_LOG_EVT_BUCKET_LIFECYCLE
87 | E
88 | RocketSteam. Log event
89 |
90 |
91 | ZLNKECL_LOG
92 | C_LOG_EVT_CONT_SERVER_CX
93 | E
94 | RocketSteam. Log event
95 |
96 |
97 | ZLNKECL_LOG
98 | C_LOG_EVT_CONT_SERVER_REQ
99 | E
100 | RocketSteam. Log event
101 |
102 |
103 | ZLNKECL_LOG
104 | C_LOG_EVT_REQ_TO_AWS
105 | E
106 | RocketSteam. Log event
107 |
108 |
109 | ZLNKECL_LOG
110 | C_LOG_EVT_RESP_FROM_AWS
111 | E
112 | RocketSteam. Log event
113 |
114 |
115 | ZLNKECL_LOG
116 | C_LOG_EVT_USER_CREATED
117 | E
118 | RocketSteam. Log event
119 |
120 |
121 | ZLNKECL_LOG
122 | C_LOG_EVT_USER_DELETED
123 | E
124 | RocketSteam. Log event
125 |
126 |
127 | ZLNKECL_LOG
128 | C_LOG_EVT_USER_EDITION
129 | E
130 | RocketSteam. Log event
131 |
132 |
133 | ZLNKECL_LOG
134 | C_LOG_MSGTYP_ABORT
135 | E
136 | RocketSteam. Log Message Type
137 |
138 |
139 | ZLNKECL_LOG
140 | C_LOG_MSGTYP_ERROR
141 | E
142 | RocketSteam. Log Message Type
143 |
144 |
145 | ZLNKECL_LOG
146 | C_LOG_MSGTYP_INFO
147 | E
148 | RocketSteam. Log Message Type
149 |
150 |
151 | ZLNKECL_LOG
152 | C_LOG_MSGTYP_SUCCESS
153 | E
154 | RocketSteam. Log Message Type
155 |
156 |
157 | ZLNKECL_LOG
158 | C_LOG_MSGTYP_WARNING
159 | E
160 | RocketSteam. Log Message Type
161 |
162 |
163 |
164 |
165 |
166 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_rfc_connections.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECL_RFC_CONNECTIONS
7 | 1
8 | E
9 | RocketSteam. SM59 tools
10 | 1
11 | X
12 | X
13 | X
14 | X
15 | S
16 | ZLNKEAWS_S3
17 |
18 |
19 |
20 | ZLNKECL_RFC_CONNECTIONS
21 | C_HTTPDEST_PREFIX
22 | E
23 | Character field, 8 characters long
24 |
25 |
26 | ZLNKECL_RFC_CONNECTIONS
27 | C_HTTPS_PORT
28 | E
29 | System ID
30 |
31 |
32 | ZLNKECL_RFC_CONNECTIONS
33 | C_HTTP_PORT
34 | E
35 | System ID
36 |
37 |
38 | ZLNKECL_RFC_CONNECTIONS
39 | C_LIC_SERVER_ENDPOINT
40 | E
41 | Name of Target Host
42 |
43 |
44 | ZLNKECL_RFC_CONNECTIONS
45 | C_LIC_SERVER_RFCDEST_SUFFIX
46 | E
47 | Logical Destination (Specified in Function Call)
48 |
49 |
50 | ZLNKECL_RFC_CONNECTIONS
51 | C_RFC_TYPE_HTTP_TO_EXT
52 | E
53 | Type of Entry in RFCDES
54 |
55 |
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_ssf.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECL_SSF
7 | 1
8 | E
9 | RocketSteam. Secure Store & Forward
10 | 1
11 | X
12 | X
13 | X
14 | X
15 | S
16 | ZLNKEAWS_S3
17 |
18 |
19 |
20 | ZLNKECL_SSF
21 | C_S4_SSF_APPLICATION
22 | E
23 | SSF Application
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_string_conversions.clas.abap:
--------------------------------------------------------------------------------
1 | class ZLNKECL_STRING_CONVERSIONS definition
2 | public
3 | final
4 | create private .
5 |
6 | *"* public components of class ZLNKECL_STRING_CONVERSIONS
7 | *"* do not include other source files here!!!
8 | public section.
9 |
10 | class-methods STRING_TO_XSTRING
11 | importing
12 | !INPUT type STRING
13 | exporting
14 | !OUTPUT type XSTRING .
15 | class-methods XSTRING_TO_STRING
16 | importing
17 | !INPUT type XSTRING
18 | exporting
19 | !OUTPUT type STRING .
20 | class-methods XSTRING_TO_XSTRING_TAB
21 | importing
22 | !I_XSTRING type XSTRING
23 | !I_LINE_LENGTH type I
24 | returning
25 | value(E_XSTRING_TABLE) type XSTRING_TABLE .
26 | protected section.
27 | *"* protected components of class ZLNKECL_STRING_CONVERSIONS
28 | *"* do not include other source files here!!!
29 | private section.
30 | *"* private components of class ZLNKECL_STRING_CONVERSIONS
31 | *"* do not include other source files here!!!
32 | ENDCLASS.
33 |
34 |
35 |
36 | CLASS ZLNKECL_STRING_CONVERSIONS IMPLEMENTATION.
37 |
38 |
39 | METHOD string_to_xstring.
40 | *--------------------------------------------------------------------*
41 | * Company: RocketSteam
42 | * Author: Jordi Escoda, 28th July 2014
43 | * Converts from string to xstring
44 | *--------------------------------------------------------------------*
45 | DATA: lr_conv_ce TYPE REF TO cl_abap_conv_out_ce.
46 | DATA: size TYPE i. "#EC NEEDED
47 |
48 | lr_conv_ce = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' ).
49 |
50 | CALL METHOD lr_conv_ce->write
51 | EXPORTING
52 | data = input
53 | IMPORTING
54 | len = size.
55 |
56 | output = lr_conv_ce->get_buffer( ).
57 |
58 | ENDMETHOD.
59 |
60 |
61 | METHOD xstring_to_string.
62 | *--------------------------------------------------------------------*
63 | * Company: RocketSteam
64 | * Author: Jordi Escoda, 28th July 2014
65 | * Converts from xstring to string
66 | *--------------------------------------------------------------------*
67 | DATA: size TYPE i. "#EC NEEDED
68 | DATA: lr_conv_ci TYPE REF TO cl_abap_conv_in_ce.
69 |
70 | lr_conv_ci = cl_abap_conv_in_ce=>create( input = input ).
71 |
72 | CALL METHOD lr_conv_ci->read
73 | IMPORTING
74 | data = output
75 | len = size.
76 |
77 | ENDMETHOD.
78 |
79 |
80 | METHOD xstring_to_xstring_tab.
81 | *--------------------------------------------------------------------*
82 | * Company: RocketSteam
83 | * Author: Jordi Escoda, 28th Nov 2014
84 | * Converts from xstring to xstring table, with specified line length.
85 | *--------------------------------------------------------------------*
86 |
87 | DATA: l_length TYPE i.
88 | DATA: l_index_start TYPE i.
89 | DATA: l_xstr_tmp TYPE xstring.
90 | DATA: l_parts TYPE i.
91 | DATA: l_mod TYPE i.
92 |
93 | CHECK i_line_length > 0.
94 |
95 | l_length = XSTRLEN( i_xstring ).
96 | l_parts = l_length DIV i_line_length.
97 | l_mod = l_length MOD i_line_length.
98 |
99 | l_index_start = 0.
100 | DO l_parts TIMES.
101 | l_xstr_tmp = i_xstring+l_index_start(i_line_length).
102 | l_index_start = l_index_start + i_line_length.
103 | APPEND l_xstr_tmp TO e_xstring_table.
104 | ENDDO.
105 | IF l_mod > 0.
106 | l_xstr_tmp = i_xstring+l_index_start.
107 | APPEND l_xstr_tmp TO e_xstring_table.
108 | ENDIF.
109 |
110 | ENDMETHOD.
111 | ENDCLASS.
112 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_string_conversions.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECL_STRING_CONVERSIONS
7 | 1
8 | E
9 | RocketSteam. String conversions
10 | 1
11 | X
12 | X
13 | X
14 | X
15 | S
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_xml_utils.clas.abap:
--------------------------------------------------------------------------------
1 | class ZLNKECL_XML_UTILS definition
2 | public
3 | final
4 | create private .
5 |
6 | *"* public components of class ZLNKECL_XML_UTILS
7 | *"* do not include other source files here!!!
8 | public section.
9 |
10 | class-methods SHOW_XML_IN_DIALOG
11 | importing
12 | !I_XML type STRING .
13 | class-methods SHOW_XXML_IN_DIALOG
14 | importing
15 | !I_XXML type XSTRING .
16 | class-methods CONVERT_IXML_DOC_TO_XSTRING
17 | importing
18 | !I_IXML_DOCUMENT type ref to IF_IXML_DOCUMENT
19 | returning
20 | value(E_XML_XSTRING) type XSTRING .
21 | class-methods CONVERT_STRING_TO_IXMLDOC
22 | importing
23 | !I_XML_STRING type STRING
24 | returning
25 | value(E_IXMLDOC) type ref to IF_IXML_DOCUMENT .
26 | class-methods GET_NODE_VALUE
27 | importing
28 | !I_IXML_DOC type ref to IF_IXML_DOCUMENT
29 | !I_NODE_NAME type STRING
30 | returning
31 | value(E_NODE_VALUE) type STRING .
32 | class-methods GET_NODE_VALUES_FROM_XMLSTRING
33 | importing
34 | !I_XML_STRING type STRING
35 | !I_NODE_NAME type STRING
36 | returning
37 | value(E_NODE_VALUES) type STRING_TABLE .
38 | class-methods GET_NODE_VALUE_FROM_XMLSTRING
39 | importing
40 | !I_XML_STRING type STRING
41 | !I_NODE_NAME type STRING
42 | returning
43 | value(E_NODE_VALUE) type STRING .
44 | protected section.
45 | *"* protected components of class ZLNKECL_XML_UTILS
46 | *"* do not include other source files here!!!
47 | private section.
48 | *"* private components of class ZLNKECL_XML_UTILS
49 | *"* do not include other source files here!!!
50 | ENDCLASS.
51 |
52 |
53 |
54 | CLASS ZLNKECL_XML_UTILS IMPLEMENTATION.
55 |
56 |
57 | METHOD convert_ixml_doc_to_xstring.
58 | *-------------------------------------------------------------------*
59 | * Company: RocketSteam
60 | * Author: Jordi Escoda, 28th March 2014
61 | * Given an IXML document, converts it to xstring
62 | *--------------------------------------------------------------------*
63 | DATA: lr_ixml TYPE REF TO if_ixml,
64 | lr_ixml_stream_factory TYPE REF TO if_ixml_stream_factory,
65 | lr_ixml_ostream TYPE REF TO if_ixml_ostream,
66 | lr_ixml_renderer TYPE REF TO if_ixml_renderer.
67 |
68 | lr_ixml = cl_ixml=>create( ).
69 |
70 | lr_ixml_stream_factory = lr_ixml->create_stream_factory( ).
71 |
72 | lr_ixml_ostream = lr_ixml_stream_factory->create_ostream_xstring(
73 | e_xml_xstring ).
74 |
75 | lr_ixml_renderer = lr_ixml->create_renderer(
76 | document = i_ixml_document
77 | ostream = lr_ixml_ostream ).
78 |
79 | lr_ixml_renderer->set_normalizing( ).
80 |
81 | lr_ixml_renderer->render( ).
82 |
83 | ENDMETHOD.
84 |
85 |
86 | METHOD convert_string_to_ixmldoc.
87 | *-------------------------------------------------------------------*
88 | * Company: RocketSteam
89 | * Author: Jordi Escoda, 30th April 2014
90 | * Given an XML string, converts it to ixml document
91 | *--------------------------------------------------------------------*
92 | DATA lr_ixml TYPE REF TO if_ixml.
93 | DATA lr_streamfactory TYPE REF TO if_ixml_stream_factory.
94 | DATA lr_istream TYPE REF TO if_ixml_istream.
95 | DATA lr_ixmlparser TYPE REF TO if_ixml_parser.
96 |
97 | lr_ixml = cl_ixml=>create( ).
98 | e_ixmldoc = lr_ixml->create_document( ).
99 | lr_streamfactory = lr_ixml->create_stream_factory( ).
100 | lr_istream = lr_streamfactory->create_istream_string( i_xml_string ).
101 | lr_ixmlparser = lr_ixml->create_parser( stream_factory = lr_streamfactory
102 | istream = lr_istream
103 | document = e_ixmldoc ).
104 | lr_ixmlparser->parse( ).
105 |
106 | ENDMETHOD.
107 |
108 |
109 | METHOD get_node_value.
110 | *-------------------------------------------------------------------*
111 | * Company: RocketSteam
112 | * Author: Jordi Escoda, 30th April 2014
113 | * Given an IXML document and a node name, returns the node value
114 | *--------------------------------------------------------------------*
115 | DATA: lr_node_filter TYPE REF TO if_ixml_node_filter.
116 | DATA: lr_node_iterator TYPE REF TO if_ixml_node_iterator.
117 | DATA: lr_node TYPE REF TO if_ixml_node.
118 |
119 | lr_node_filter = i_ixml_doc->create_filter_name( i_node_name ).
120 |
121 | lr_node_iterator = i_ixml_doc->create_iterator_filtered( lr_node_filter ).
122 |
123 | lr_node ?= lr_node_iterator->get_next( ).
124 | IF lr_node IS NOT INITIAL.
125 | e_node_value = lr_node->get_value( ).
126 | ENDIF.
127 |
128 | ENDMETHOD.
129 |
130 |
131 | METHOD get_node_values_from_xmlstring.
132 | *-------------------------------------------------------------------*
133 | * Company: RocketSteam
134 | * Author: Jordi Escoda, 30th April 2014
135 | * Given an XML string and a node name, returns the node value
136 | *--------------------------------------------------------------------*
137 | DATA: lr_ixml_document TYPE REF TO if_ixml_document.
138 | DATA: lr_node_filter TYPE REF TO if_ixml_node_filter.
139 | DATA: lr_node_iterator TYPE REF TO if_ixml_node_iterator.
140 | DATA: lr_node TYPE REF TO if_ixml_node.
141 | DATA: l_node_value TYPE string.
142 |
143 | lr_ixml_document = convert_string_to_ixmldoc( i_xml_string ).
144 |
145 | lr_node_filter = lr_ixml_document->create_filter_name( i_node_name ).
146 |
147 | lr_node_iterator = lr_ixml_document->create_iterator_filtered( lr_node_filter ).
148 |
149 | lr_node ?= lr_node_iterator->get_next( ).
150 | WHILE lr_node IS NOT INITIAL.
151 | l_node_value = lr_node->get_value( ).
152 | APPEND l_node_value TO e_node_values.
153 | lr_node ?= lr_node_iterator->get_next( ).
154 | ENDWHILE.
155 |
156 | ENDMETHOD.
157 |
158 |
159 | METHOD GET_NODE_VALUE_FROM_XMLSTRING.
160 | *-------------------------------------------------------------------*
161 | * Company: RocketSteam
162 | * Author: Jordi Escoda, 30th April 2014
163 | * Given an XML string and a node name, returns the node value
164 | *--------------------------------------------------------------------*
165 | DATA: lr_ixml_document TYPE REF TO if_ixml_document.
166 |
167 | lr_ixml_document = convert_string_to_ixmldoc( i_xml_string ).
168 |
169 | e_node_value = get_node_value( i_ixml_doc = lr_ixml_document
170 | i_node_name = i_node_name ).
171 |
172 | ENDMETHOD.
173 |
174 |
175 | METHOD show_xml_in_dialog.
176 | *-------------------------------------------------------------------*
177 | * Company: RocketSteam
178 | * Author: Jordi Escoda, 28th March 2014
179 | * Given an XML, shows it in a dialog.
180 | *--------------------------------------------------------------------*
181 | DATA: lr_xml_document TYPE REF TO cl_xml_document.
182 |
183 | CREATE OBJECT lr_xml_document.
184 | CALL METHOD lr_xml_document->parse_string
185 | EXPORTING
186 | stream = i_xml.
187 |
188 | CALL METHOD lr_xml_document->display.
189 |
190 | ENDMETHOD.
191 |
192 |
193 | METHOD show_xxml_in_dialog.
194 | *-------------------------------------------------------------------*
195 | * Company: RocketSteam
196 | * Author: Jordi Escoda, 11th April 2014
197 | * Given an XXML, shows it in a dialog.
198 | *--------------------------------------------------------------------*
199 | DATA: lr_xml_document TYPE REF TO cl_xml_document.
200 |
201 | CREATE OBJECT lr_xml_document.
202 | CALL METHOD lr_xml_document->parse_xstring
203 | EXPORTING
204 | stream = i_xxml.
205 |
206 | CALL METHOD lr_xml_document->display( ).
207 |
208 | ENDMETHOD.
209 | ENDCLASS.
210 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecl_xml_utils.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECL_XML_UTILS
7 | 1
8 | E
9 | RocketSteam. XML Utilities
10 | 1
11 | X
12 | X
13 | X
14 | X
15 | S
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkeclient_side_encryption_de.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECLIENT_SIDE_ENCRYPTION_DE
7 | E
8 | FLAG
9 | 14
10 | 10
11 | 15
12 | 20
13 | RocketSteam. Client side encryption
14 | Client Encrypt
15 | Cl.Encrypt
16 | Clnt.Encrypt
17 | Client Encrypt
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecrdat.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECRDAT
7 | E
8 | DATUM
9 | 10
10 | 10
11 | 10
12 | 10
13 | RocketSteam. Date on which the object was created
14 | Created on
15 | Created on
16 | Created on
17 | Created on
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecrtim.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECRTIM
7 | E
8 | UZEIT
9 | 10
10 | 10
11 | 10
12 | 10
13 | RocketSteam. Time at which the object was created
14 | Created at
15 | Created at
16 | Created at
17 | Created at
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecrusr.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECRUSR
7 | E
8 | UNAME
9 | 12
10 | 10
11 | 15
12 | 20
13 | RocketSteam. User who created the object
14 | Created by
15 | Created by
16 | Created by
17 | Created by
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecx_aws_s3.clas.abap:
--------------------------------------------------------------------------------
1 | class ZLNKECX_AWS_S3 definition
2 | public
3 | inheriting from CX_STATIC_CHECK
4 | final
5 | create public .
6 |
7 | *"* public components of class ZLNKECX_AWS_S3
8 | *"* do not include other source files here!!!
9 | public section.
10 |
11 | interfaces IF_T100_MESSAGE .
12 |
13 | constants C_MSG_CLASS type MSGID value 'ZLNKEAWS_S3'. "#EC NOTEXT
14 | data STRING type STRING .
15 |
16 | methods CONSTRUCTOR
17 | importing
18 | !TEXTID like IF_T100_MESSAGE=>T100KEY optional
19 | !PREVIOUS like PREVIOUS optional
20 | !STRING type STRING optional .
21 | class-methods GET_INSTANCE_SYST_T100
22 | returning
23 | value(E_ZLNKECX_AWS_S3) type ref to ZLNKECX_AWS_S3 .
24 | methods GET_TEXT_AS_STRING
25 | returning
26 | value(E_TEXT) type STRING .
27 | class-methods RAISE_FROM_SY_MSG
28 | importing
29 | !PREVIOUS like PREVIOUS optional
30 | raising
31 | ZLNKECX_AWS_S3 .
32 | class-methods RAISE_FROM_FM_EXCEPTION
33 | importing
34 | !I_FUNCNAME type FUNCNAME
35 | !I_SY_SUBRC type SY-SUBRC optional
36 | raising
37 | ZLNKECX_AWS_S3 .
38 | class-methods RAISE_GIVING_STRING
39 | importing
40 | !I_STRING type STRING
41 | raising
42 | ZLNKECX_AWS_S3 .
43 |
44 | methods IF_MESSAGE~GET_TEXT
45 | redefinition .
46 | protected section.
47 | *"* protected components of class ZLNKECX_AWS_S3
48 | *"* do not include other source files here!!!
49 | private section.
50 | *"* private components of class ZLNKECX_AWS_S3
51 | *"* do not include other source files here!!!
52 | ENDCLASS.
53 |
54 |
55 |
56 | CLASS ZLNKECX_AWS_S3 IMPLEMENTATION.
57 |
58 |
59 | method CONSTRUCTOR ##ADT_SUPPRESS_GENERATION.
60 | CALL METHOD SUPER->CONSTRUCTOR
61 | EXPORTING
62 | PREVIOUS = PREVIOUS
63 | .
64 | me->STRING = STRING .
65 | clear me->textid.
66 | if textid is initial and ME->IF_T100_MESSAGE~T100KEY IS INITIAL.
67 | IF_T100_MESSAGE~T100KEY = IF_T100_MESSAGE=>DEFAULT_TEXTID.
68 | else.
69 | IF_T100_MESSAGE~T100KEY = TEXTID.
70 | endif.
71 | endmethod.
72 |
73 |
74 | METHOD GET_INSTANCE_SYST_T100.
75 | *--------------------------------------------------------------------*
76 | * Company: RocketSteam
77 | * Author: Jordi Escoda, 15th April 2014
78 | * Returns an instance of this class with populated data from sy
79 | *--------------------------------------------------------------------*
80 | CREATE OBJECT e_ZLNKEcx_aws_s3.
81 |
82 | e_ZLNKEcx_aws_s3->if_t100_message~t100key-msgid = sy-msgid.
83 | e_ZLNKEcx_aws_s3->if_t100_message~t100key-msgno = sy-msgno.
84 | e_ZLNKEcx_aws_s3->if_t100_message~t100key-attr1 = sy-msgv1.
85 | e_ZLNKEcx_aws_s3->if_t100_message~t100key-attr2 = sy-msgv2.
86 | e_ZLNKEcx_aws_s3->if_t100_message~t100key-attr3 = sy-msgv3.
87 | e_ZLNKEcx_aws_s3->if_t100_message~t100key-attr4 = sy-msgv4.
88 |
89 | ENDMETHOD.
90 |
91 |
92 | METHOD get_text_as_string.
93 | *--------------------------------------------------------------------*
94 | * Company: RocketSteam
95 | * Author: Jordi Escoda, 15th April 2014
96 | * Returns the text in long form (string)
97 | *--------------------------------------------------------------------*
98 | DATA: l_text TYPE t100-text.
99 |
100 | IF string IS NOT INITIAL.
101 | e_text = string.
102 | ELSE.
103 | SELECT SINGLE text
104 | INTO l_text
105 | FROM t100
106 | WHERE sprsl = sy-langu
107 | AND arbgb = if_t100_message~t100key-msgid
108 | AND msgnr = if_t100_message~t100key-msgno.
109 |
110 | IF sy-subrc = 0.
111 | e_text = l_text.
112 | REPLACE '&' WITH if_t100_message~t100key-attr1 INTO e_text.
113 | REPLACE '&' WITH if_t100_message~t100key-attr2 INTO e_text.
114 | REPLACE '&' WITH if_t100_message~t100key-attr3 INTO e_text.
115 | REPLACE '&' WITH if_t100_message~t100key-attr4 INTO e_text.
116 | ENDIF.
117 | ENDIF.
118 |
119 | ENDMETHOD.
120 |
121 |
122 | METHOD if_message~get_text.
123 | *--------------------------------------------------------------------*
124 | * Company: RocketSteam
125 | * Author: Jordi Escoda, 8th March 2016
126 | * Returns the text
127 | *--------------------------------------------------------------------*
128 | IF string IS INITIAL.
129 | CALL METHOD super->if_message~get_text
130 | RECEIVING
131 | result = result.
132 | REPLACE ALL OCCURRENCES OF '&' IN result WITH space.
133 | CONDENSE result.
134 | ELSE.
135 | result = string.
136 | ENDIF.
137 |
138 | ENDMETHOD.
139 |
140 |
141 | METHOD raise_from_fm_exception.
142 | *--------------------------------------------------------------------*
143 | * Company: RocketSteam
144 | * Author: Jordi Escoda, 7th March 2016
145 | * Raises exception from FM Exception
146 | *--------------------------------------------------------------------*
147 | DATA: lt_dokumentation TYPE STANDARD TABLE OF funct.
148 | DATA: lt_exception_list TYPE STANDARD TABLE OF rsexc.
149 | DATA: lt_export_parameter TYPE STANDARD TABLE OF rsexp.
150 | DATA: lt_import_parameter TYPE STANDARD TABLE OF rsimp.
151 | DATA: lt_tables_parameter TYPE STANDARD TABLE OF rstbl.
152 | DATA: lv_exception TYPE char30.
153 | DATA: lv_subrc TYPE i.
154 | DATA: lv_msg TYPE string. "#EC NEEDED
155 |
156 | IF i_sy_subrc IS INITIAL.
157 | lv_subrc = sy-subrc.
158 | ELSE.
159 | lv_subrc = i_sy_subrc.
160 | ENDIF.
161 |
162 | CALL FUNCTION 'FUNCTION_IMPORT_DOKU'
163 | EXPORTING
164 | funcname = i_funcname
165 | language = sy-langu
166 | TABLES
167 | dokumentation = lt_dokumentation
168 | exception_list = lt_exception_list
169 | export_parameter = lt_export_parameter
170 | import_parameter = lt_import_parameter
171 | tables_parameter = lt_tables_parameter
172 | EXCEPTIONS
173 | error_message = 1
174 | function_not_found = 2
175 | invalid_name = 3
176 | OTHERS = 4.
177 |
178 | IF sy-subrc = 0.
179 | READ TABLE lt_exception_list INTO lv_exception INDEX lv_subrc.
180 | IF sy-subrc = 0.
181 | MESSAGE e398(00) WITH 'Function Module'
182 | i_funcname
183 | 'raised exception'
184 | lv_exception INTO lv_msg.
185 | raise_from_sy_msg( ).
186 | ENDIF.
187 | ELSE.
188 | MESSAGE e398(00) WITH 'Function Module'
189 | 'FUNCTION_IMPORT_DOKU'
190 | 'raised exception'
191 | sy-subrc INTO lv_msg.
192 | raise_from_sy_msg( ).
193 | ENDIF.
194 |
195 | ENDMETHOD.
196 |
197 |
198 | METHOD raise_from_sy_msg.
199 | *--------------------------------------------------------------------*
200 | * Company: RocketSteam
201 | * Author: Jordi Escoda, 7th March 2016
202 | * Raises exception from SY-MSG
203 | *--------------------------------------------------------------------*
204 | DATA: ls_t100key LIKE if_t100_message=>t100key.
205 |
206 | ls_t100key-msgid = sy-msgid.
207 | ls_t100key-msgno = sy-msgno.
208 | ls_t100key-attr1 = sy-msgv1.
209 | ls_t100key-attr2 = sy-msgv2.
210 | ls_t100key-attr3 = sy-msgv3.
211 | ls_t100key-attr4 = sy-msgv4.
212 |
213 | RAISE EXCEPTION TYPE ZLNKECX_AWS_S3
214 | EXPORTING
215 | textid = ls_t100key
216 | previous = previous.
217 |
218 | ENDMETHOD.
219 |
220 |
221 | METHOD raise_giving_string.
222 |
223 | RAISE EXCEPTION TYPE ZLNKEcx_aws_s3
224 | EXPORTING
225 | string = i_string.
226 |
227 | ENDMETHOD.
228 | ENDCLASS.
229 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkecx_aws_s3.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKECX_AWS_S3
7 | 1
8 | E
9 | RocketSteam. Exception class
10 | 40
11 | 2
12 | 1
13 | X
14 | X
15 | X
16 | X
17 | S
18 | ZLNKEAWS_S3
19 |
20 |
21 |
22 | ZLNKECX_AWS_S3
23 | CONSTRUCTOR
24 | E
25 | CONSTRUCTOR
26 |
27 |
28 | ZLNKECX_AWS_S3
29 | C_MSG_CLASS
30 | E
31 | Message identification
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkeendpoint_de.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEENDPOINT_DE
7 | E
8 | ZLNKEENDPOINT_DO
9 | 08
10 | 08
11 | 08
12 | 08
13 | RocketSteam. Endpoint
14 | Endpoint
15 | Endpoint
16 | Endpoint
17 | Endpoint
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkeendpoint_do.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEENDPOINT_DO
7 | E
8 | CHAR
9 | 000064
10 | 000064
11 | X
12 | Rocket Steam. Endpoint
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkeguid.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEGUID
7 | E
8 | SYSUUID
9 | 04
10 | 04
11 | 04
12 | 04
13 | RocketSteam. GUID
14 | GUID
15 | GUID
16 | GUID
17 | GUID
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkeif_version.intf.abap:
--------------------------------------------------------------------------------
1 | *"* components of interface ZLNKEIF_VERSION
2 | interface ZLNKEIF_VERSION
3 | public .
4 |
5 |
6 | constants C_ADDON_VERSION type STRING value 'V1.3.1'. "#EC NOTEXT
7 | constants C_ADDON_BUILD type STRING value '20171007_1'. "#EC NOTEXT
8 | constants C_ADDON_VENDOR type STRING value 'http://www.rocket-steam.com'. "#EC NOTEXT
9 | endinterface.
10 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkeif_version.intf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEIF_VERSION
7 | 1
8 | E
9 | RocketSteam. Version
10 | 2
11 | 1
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkekey_size_st.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEKEY_SIZE_ST
7 | E
8 | INTTAB
9 | RocketSteam. Key / Size structure
10 | 1
11 |
12 |
13 |
14 | ZLNKEKEY_SIZE_ST
15 | XKEY
16 | 0001
17 | TEXT1024
18 | 0
19 | E
20 |
21 |
22 | ZLNKEKEY_SIZE_ST
23 | XSIZE
24 | 0002
25 | INT4
26 | 0
27 | E
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkekey_size_tt.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEKEY_SIZE_TT
7 | E
8 | ZLNKEKEY_SIZE_ST
9 | S
10 | STRU
11 | T
12 | D
13 | N
14 | RocketSteam. Table of key size
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkelog.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKELOG
7 | E
8 | TRANSP
9 | RocketSteam. Log table
10 | L
11 | 1
12 |
13 |
14 | ZLNKELOG
15 | A
16 | 2
17 | APPL1
18 | N
19 | C
20 |
21 |
22 |
23 | ZLNKELOG
24 | GUID
25 | 0001
26 | X
27 | ZLNKEGUID
28 | 0
29 | X
30 | E
31 |
32 |
33 | ZLNKELOG
34 | TIMESTAMP
35 | 0002
36 | TIMESTAMPL
37 | 0
38 | E
39 |
40 |
41 | ZLNKELOG
42 | LOG_EVENT
43 | 0003
44 | ZLNKELOG_EVENT_DE
45 | 0
46 | X
47 | F
48 | E
49 |
50 |
51 | ZLNKELOG
52 | LOG_MSGTYP
53 | 0004
54 | ZLNKELOG_MSGTYP_DE
55 | 0
56 | X
57 | F
58 | E
59 |
60 |
61 | ZLNKELOG
62 | EVENT_USER
63 | 0005
64 | UNAME
65 | 0
66 | E
67 |
68 |
69 | ZLNKELOG
70 | RAWDATA
71 | 0006
72 | RSRAWSTRING
73 | 0
74 | E
75 |
76 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkelog_cfg.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKELOG_CFG
7 | E
8 | TRANSP
9 | RocketSteam. Log configuration
10 | X
11 | C
12 | 1
13 |
14 |
15 | ZLNKELOG_CFG
16 | A
17 | 0
18 | APPL0
19 | X
20 | X
21 | C
22 |
23 |
24 |
25 | ZLNKELOG_CFG
26 | DUMMYID
27 | 0001
28 | X
29 | FLAG
30 | 0
31 | X
32 | X
33 | F
34 | E
35 |
36 |
37 | ZLNKELOG_CFG
38 | KEEP_DAYS
39 | 0002
40 | ZLNKELOG_KEEP_DAYS_DE
41 | 0
42 | E
43 |
44 |
45 | ZLNKELOG_CFG
46 | LOG_XML_RESP_AWS
47 | 0003
48 | FLAG
49 | 0
50 | X
51 | F
52 | E
53 |
54 |
55 | ZLNKELOG_CFG
56 | LOG_REQ_RESP_AWS
57 | 0004
58 | FLAG
59 | 0
60 | X
61 | F
62 | E
63 |
64 |
65 | ZLNKELOG_CFG
66 | LOG_CONTSERV_REQ
67 | 0005
68 | FLAG
69 | 0
70 | X
71 | F
72 | E
73 |
74 |
75 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkelog_event_de.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKELOG_EVENT_DE
7 | E
8 | ZLNKELOG_EVENT_DO
9 | 09
10 | 10
11 | 15
12 | 20
13 | RocketSteam. Log event
14 | Log Event
15 | LogEvt.
16 | Log Event
17 | Log Event
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkelog_event_do.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKELOG_EVENT_DO
7 | E
8 | CHAR
9 | 000001
10 | 000001
11 | X
12 | RocketSteam. Log Event
13 |
14 |
15 |
16 | ZLNKELOG_EVENT_DO
17 | 0001
18 | E
19 | A
20 | Content Server request
21 |
22 |
23 | ZLNKELOG_EVENT_DO
24 | 0002
25 | E
26 | B
27 | Request to AWS
28 |
29 |
30 | ZLNKELOG_EVENT_DO
31 | 0003
32 | E
33 | C
34 | Response from AWS
35 |
36 |
37 | ZLNKELOG_EVENT_DO
38 | 0004
39 | E
40 | D
41 | Bucket creation
42 |
43 |
44 | ZLNKELOG_EVENT_DO
45 | 0005
46 | E
47 | E
48 | Bucket deletion
49 |
50 |
51 | ZLNKELOG_EVENT_DO
52 | 0006
53 | E
54 | F
55 | Bucket Lifecycle
56 |
57 |
58 | ZLNKELOG_EVENT_DO
59 | 0007
60 | E
61 | G
62 | User created
63 |
64 |
65 | ZLNKELOG_EVENT_DO
66 | 0008
67 | E
68 | H
69 | User edition
70 |
71 |
72 | ZLNKELOG_EVENT_DO
73 | 0009
74 | E
75 | I
76 | User deleted
77 |
78 |
79 | ZLNKELOG_EVENT_DO
80 | 0010
81 | E
82 | J
83 | Bucket Encrypt edition
84 |
85 |
86 | ZLNKELOG_EVENT_DO
87 | 0011
88 | E
89 | K
90 | Archive Object add bucket
91 |
92 |
93 | ZLNKELOG_EVENT_DO
94 | 0012
95 | E
96 | L
97 | Archive Object remove bucket
98 |
99 |
100 | ZLNKELOG_EVENT_DO
101 | 0013
102 | E
103 | M
104 | Archive Object edition
105 |
106 |
107 | ZLNKELOG_EVENT_DO
108 | 0014
109 | E
110 | N
111 | Content Server exception
112 |
113 |
114 |
115 |
116 |
117 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkelog_keep_days_de.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKELOG_KEEP_DAYS_DE
7 | E
8 | INT4
9 | 13
10 | 10
11 | 15
12 | 20
13 | RocketSteam. Days to keep log
14 | Log Keep Days
15 | LogKeepD.
16 | Log Keep Days
17 | Log Keep Days
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkelog_msgtyp_de.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKELOG_MSGTYP_DE
7 | E
8 | ZLNKELOG_MSGTYP_DO
9 | 16
10 | 10
11 | 15
12 | 20
13 | RocketSteam. Log Message Type
14 | Log Message Type
15 | LogMsgTyp
16 | Log Msg Type
17 | Log Message Type
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkelog_msgtyp_do.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKELOG_MSGTYP_DO
7 | E
8 | CHAR
9 | 000001
10 | 000001
11 | X
12 | RocketSteam. Log Message Type
13 |
14 |
15 |
16 | ZLNKELOG_MSGTYP_DO
17 | 0001
18 | E
19 | A
20 | Abort
21 |
22 |
23 | ZLNKELOG_MSGTYP_DO
24 | 0002
25 | E
26 | E
27 | Error
28 |
29 |
30 | ZLNKELOG_MSGTYP_DO
31 | 0003
32 | E
33 | I
34 | Info
35 |
36 |
37 | ZLNKELOG_MSGTYP_DO
38 | 0004
39 | E
40 | S
41 | Success
42 |
43 |
44 | ZLNKELOG_MSGTYP_DO
45 | 0005
46 | E
47 | W
48 | Warning
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkempart_upld.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEMPART_UPLD
7 | E
8 | TRANSP
9 | RocketSteam. Multipart uploads
10 | L
11 | 1
12 |
13 |
14 | ZLNKEMPART_UPLD
15 | A
16 | 2
17 | APPL1
18 | N
19 | C
20 |
21 |
22 |
23 | ZLNKEMPART_UPLD
24 | GUID
25 | 0001
26 | X
27 | ZLNKEGUID
28 | 0
29 | X
30 | E
31 |
32 |
33 | ZLNKEMPART_UPLD
34 | BUCKET
35 | 0002
36 | ZLNKEBUCKET_DE
37 | 0
38 | E
39 |
40 |
41 | ZLNKEMPART_UPLD
42 | OBJECT_NAME
43 | 0003
44 | TEXT255
45 | 0
46 | E
47 |
48 |
49 | ZLNKEMPART_UPLD
50 | UPLOAD_ID
51 | 0004
52 | TEXT255
53 | 0
54 | E
55 |
56 |
57 | ZLNKEMPART_UPLD
58 | TIMESTAMP
59 | 0005
60 | TIMESTAMPL
61 | 0
62 | E
63 |
64 |
65 | ZLNKEMPART_UPLD
66 | STATE
67 | 0006
68 | ZLNKEMPART_UPLD_STATE_DE
69 | 0
70 | X
71 | F
72 | E
73 |
74 |
75 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkempart_upld_state_de.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEMPART_UPLD_STATE_DE
7 | E
8 | ZLNKEMPART_UPLD_STATE_DO
9 | 22
10 | 10
11 | 15
12 | 22
13 | RocketSteam. Multipart upload state
14 | Multipart Upload State
15 | MpartState
16 | Multipart State
17 | Multipart Upload State
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkempart_upld_state_do.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEMPART_UPLD_STATE_DO
7 | E
8 | CHAR
9 | 000001
10 | 000001
11 | X
12 | RocketSteam. Multipart upload state
13 |
14 |
15 |
16 | ZLNKEMPART_UPLD_STATE_DO
17 | 0001
18 | E
19 | P
20 | In progress
21 |
22 |
23 | ZLNKEMPART_UPLD_STATE_DO
24 | 0002
25 | E
26 | S
27 | Completed successfully
28 |
29 |
30 | ZLNKEMPART_UPLD_STATE_DO
31 | 0003
32 | E
33 | E
34 | Completed with errors
35 |
36 |
37 | ZLNKEMPART_UPLD_STATE_DO
38 | 0004
39 | E
40 | A
41 | Aborted
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkempart_upload_st.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEMPART_UPLOAD_ST
7 | E
8 | INTTAB
9 | RocketSteam. Multipart Upload Structure
10 | 1
11 |
12 |
13 |
14 | ZLNKEMPART_UPLOAD_ST
15 | PART_NUMBER
16 | 0001
17 | INT4
18 | 0
19 | E
20 |
21 |
22 | ZLNKEMPART_UPLOAD_ST
23 | ETAG
24 | 0002
25 | TEXT255
26 | 0
27 | E
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkempart_upload_tt.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEMPART_UPLOAD_TT
7 | E
8 | ZLNKEMPART_UPLOAD_ST
9 | S
10 | STRU
11 | T
12 | D
13 | N
14 | RocketSteam. Multipart upload table type
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkeno_prefix_flag_de.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKENO_PREFIX_FLAG_DE
7 | E
8 | CHAR1
9 | 09
10 | 10
11 | 15
12 | 20
13 | RocketSteam. No prefix flag
14 | No Prefix
15 | NoPrefix
16 | No Prefix
17 | No Prefix
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkeregion.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEREGION
7 | E
8 | TRANSP
9 | Rocket Steam. AWS S3 Regions
10 | X
11 | C
12 | 1
13 |
14 |
15 | ZLNKEREGION
16 | A
17 | 0
18 | APPL2
19 | N
20 | C
21 |
22 |
23 |
24 | ZLNKEREGION
25 | REGION
26 | 0001
27 | X
28 | ZLNKEREGION_DE
29 | 0
30 | X
31 | E
32 |
33 |
34 | ZLNKEREGION
35 | REGION_NAME
36 | 0002
37 | TEXT50
38 | 0
39 | E
40 |
41 |
42 | ZLNKEREGION
43 | ENDPOINT
44 | 0003
45 | ZLNKEENDPOINT_DE
46 | 0
47 | E
48 |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkeregion_de.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEREGION_DE
7 | E
8 | ZLNKEREGION_DO
9 | 06
10 | 06
11 | 06
12 | 06
13 | RocketSteam. Region.
14 | Region
15 | Region
16 | Region
17 | Region
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkeregion_do.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEREGION_DO
7 | E
8 | CHAR
9 | 000050
10 | 000050
11 | X
12 | ZLNKEREGION
13 | Rocket Steam. Region
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkers3_log_viewer.prog.abap:
--------------------------------------------------------------------------------
1 | *&---------------------------------------------------------------------*
2 | *& Report ZLNKERS3_LOG_VIEWER
3 | *&
4 | *&---------------------------------------------------------------------*
5 | *& Company: RocketSteam
6 | *& Author: Jordi Escoda, 14th April 2014
7 | *& Log viewer
8 | *&---------------------------------------------------------------------*
9 | REPORT zlnkers3_log_viewer.
10 |
11 | *--------------------------------------------------------------------*
12 | * Types.
13 | *--------------------------------------------------------------------*
14 | TYPE-POOLS: icon.
15 |
16 | *--------------------------------------------------------------------*
17 | * Global data
18 | *--------------------------------------------------------------------*
19 | DATA: g_date TYPE datum.
20 | DATA: g_time TYPE uzeit.
21 | DATA: g_log_event TYPE zlnkelog-log_event.
22 |
23 | *--------------------------------------------------------------------*
24 | * Selection screen
25 | *--------------------------------------------------------------------*
26 | SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
27 | SELECT-OPTIONS: so_date FOR g_date NO-EXTENSION.
28 | SELECT-OPTIONS: so_time FOR g_time NO-EXTENSION.
29 | SELECT-OPTIONS: so_evnt FOR g_log_event.
30 | SELECTION-SCREEN END OF BLOCK b1.
31 | *----------------------------------------------------------------------*
32 | * CLASS lcl_data_select DEFINITION
33 | *----------------------------------------------------------------------*
34 | *
35 | *----------------------------------------------------------------------*
36 | CLASS lcl_data_select DEFINITION FINAL.
37 | PUBLIC SECTION.
38 | TYPES: typ_range_log_event TYPE RANGE OF zlnkelog-log_event.
39 |
40 | DATA: attr_t_log TYPE STANDARD TABLE OF zlnkelog.
41 |
42 | METHODS:
43 | select_log IMPORTING i_date_from TYPE datum
44 | i_time_from TYPE uzeit
45 | i_date_to TYPE datum
46 | i_time_to TYPE uzeit
47 | i_log_event TYPE typ_range_log_event.
48 |
49 | ENDCLASS. "lcl_data_select DEFINITION
50 |
51 | *----------------------------------------------------------------------*
52 | * CLASS lcl_salv DEFINITION
53 | *----------------------------------------------------------------------*
54 | *
55 | *----------------------------------------------------------------------*
56 | CLASS lcl_salv DEFINITION FINAL.
57 | PUBLIC SECTION.
58 | TYPES: BEGIN OF typ_alv,
59 | icon TYPE iconname,
60 | log_msgtyp TYPE zlnkelog-log_msgtyp,
61 | log_event TYPE zlnkelog-log_event,
62 | log_event_txt TYPE dd07v-ddtext,
63 | timestamp TYPE zlnkelog-timestamp,
64 | guid TYPE zlnkelog-guid,
65 | event_user TYPE zlnkelog-event_user,
66 | END OF typ_alv.
67 |
68 | CLASS-DATA:
69 | lr_attr_salv_table TYPE REF TO cl_salv_table,
70 | lt_attr_alv TYPE STANDARD TABLE OF typ_alv.
71 | CLASS-METHODS:
72 | alv_build IMPORTING i_r_data_select
73 | TYPE REF TO lcl_data_select,
74 | show_xml IMPORTING i_row TYPE i.
75 |
76 | PRIVATE SECTION.
77 | CLASS-DATA:
78 | attr_r_data_select TYPE REF TO lcl_data_select.
79 | CLASS-METHODS:
80 | fill_table,
81 | alv_set_columns,
82 | alv_set_functions,
83 | alv_set_events.
84 |
85 | ENDCLASS. "lcl_alv DEFINITION
86 |
87 |
88 | *----------------------------------------------------------------------*
89 | * CLASS lcl_salv_table_handle_events DEFINITION
90 | *----------------------------------------------------------------------*
91 | *
92 | *----------------------------------------------------------------------*
93 | CLASS lcl_salv_table_handle_events DEFINITION FINAL.
94 |
95 | PUBLIC SECTION.
96 | METHODS:
97 | on_double_click FOR EVENT double_click OF cl_salv_events_table
98 | IMPORTING row.
99 | ENDCLASS. "lcl_salv_table_handle_events DEFINITION
100 |
101 |
102 | *----------------------------------------------------------------------*
103 | * CLASS lcl_data_select IMPLEMENTATION
104 | *----------------------------------------------------------------------*
105 | *
106 | *----------------------------------------------------------------------*
107 | CLASS lcl_data_select IMPLEMENTATION.
108 |
109 | *--------------------------------------------------------------------*
110 | * Data select to ZLNKELOG
111 | *--------------------------------------------------------------------*
112 | METHOD select_log.
113 | DATA: l_timestamp_c TYPE char21.
114 | DATA: l_timestamp_from TYPE timestamp,
115 | l_timestamp_to TYPE timestamp.
116 |
117 | l_timestamp_c(8) = i_date_from.
118 | l_timestamp_c+8(6) = i_time_from.
119 | l_timestamp_from = l_timestamp_c.
120 | l_timestamp_c(8) = i_date_to.
121 | l_timestamp_c+8(6) = i_time_to.
122 | l_timestamp_to = l_timestamp_c.
123 |
124 | SELECT * "#EC CI_NOFIELD
125 | INTO CORRESPONDING FIELDS OF TABLE attr_t_log
126 | FROM zlnkelog
127 | WHERE timestamp >= l_timestamp_from
128 | AND timestamp <= l_timestamp_to
129 | AND log_event IN i_log_event
130 | ORDER BY timestamp.
131 |
132 | ENDMETHOD. "select_log
133 |
134 | ENDCLASS. "lcl_data_select IMPLEMENTATION
135 |
136 | *----------------------------------------------------------------------*
137 | * CLASS lcl_salv IMPLEMENTATION
138 | *----------------------------------------------------------------------*
139 | *
140 | *----------------------------------------------------------------------*
141 | CLASS lcl_salv IMPLEMENTATION.
142 |
143 | *--------------------------------------------------------------------*
144 | * Builds ALV
145 | *--------------------------------------------------------------------*
146 | METHOD alv_build.
147 | DATA: lr_cx_root TYPE REF TO cx_root.
148 | DATA: l_text_error TYPE string.
149 |
150 | * Avoids building every PBO
151 | CHECK lr_attr_salv_table IS NOT BOUND.
152 |
153 | attr_r_data_select = i_r_data_select.
154 |
155 | fill_table( ).
156 |
157 | TRY.
158 | cl_salv_table=>factory(
159 | IMPORTING
160 | r_salv_table = lr_attr_salv_table
161 | CHANGING
162 | t_table = lt_attr_alv ).
163 | CATCH cx_salv_msg INTO lr_cx_root.
164 | l_text_error = lr_cx_root->get_text( ).
165 | MESSAGE e208(00) WITH l_text_error.
166 | ENDTRY.
167 |
168 | alv_set_columns( ).
169 | alv_set_functions( ).
170 | alv_set_events( ).
171 |
172 | lr_attr_salv_table->display( ).
173 |
174 | ENDMETHOD. "alv_build
175 |
176 |
177 | *--------------------------------------------------------------------*
178 | * ALV Columns
179 | *--------------------------------------------------------------------*
180 | METHOD alv_set_columns.
181 | DATA: lr_salv_columns TYPE REF TO cl_salv_columns.
182 | DATA: lr_salv_column_table TYPE REF TO cl_salv_column_table.
183 | DATA: l_edit_mask TYPE lvc_edtmsk.
184 |
185 | lr_salv_columns = lr_attr_salv_table->get_columns( ).
186 | lr_salv_columns->set_optimize( abap_true ).
187 |
188 | TRY.
189 | * Sets mask for timestamp
190 | lr_salv_column_table ?= lr_salv_columns->get_column(
191 | columnname = 'TIMESTAMP' ).
192 | l_edit_mask = '____-__-__ __:__:__ ms ___'.
193 | lr_salv_column_table->set_edit_mask( l_edit_mask ).
194 |
195 | CATCH cx_salv_not_found .
196 | "#EC NO_HANDLER)
197 | ENDTRY.
198 |
199 |
200 | ENDMETHOD. "alv_set_columns
201 |
202 | *--------------------------------------------------------------------*
203 | * ALV Buttons
204 | *--------------------------------------------------------------------*
205 | METHOD alv_set_functions.
206 | DATA: lr_functions TYPE REF TO cl_salv_functions_list.
207 |
208 | lr_functions = lr_attr_salv_table->get_functions( ).
209 | lr_functions->set_all( abap_true ).
210 |
211 | ENDMETHOD. "alv_set_functions
212 |
213 | *--------------------------------------------------------------------*
214 | * Sets event handler
215 | *--------------------------------------------------------------------*
216 | METHOD alv_set_events.
217 | DATA: lr_salv_events_table TYPE REF TO cl_salv_events_table.
218 | DATA: lr_event_handler TYPE REF TO lcl_salv_table_handle_events.
219 |
220 | lr_salv_events_table = lr_attr_salv_table->get_event( ).
221 |
222 | CREATE OBJECT lr_event_handler.
223 |
224 | SET HANDLER lr_event_handler->on_double_click FOR lr_salv_events_table.
225 |
226 | ENDMETHOD. "alv_set_events
227 |
228 | *--------------------------------------------------------------------*
229 | * Fills table to show in ALV
230 | *--------------------------------------------------------------------*
231 | METHOD fill_table.
232 | DATA: lt_dd07v TYPE STANDARD TABLE OF dd07v.
233 | FIELD-SYMBOLS: TYPE zlnkelog.
234 | FIELD-SYMBOLS: TYPE typ_alv.
235 | FIELD-SYMBOLS: TYPE dd07v.
236 |
237 | CALL FUNCTION 'DD_DOMVALUES_GET'
238 | EXPORTING
239 | domname = 'ZLNKELOG_EVENT_DO'
240 | text = abap_true
241 | langu = sy-langu
242 | TABLES
243 | dd07v_tab = lt_dd07v
244 | EXCEPTIONS
245 | wrong_textflag = 1
246 | OTHERS = 2.
247 | IF sy-subrc <> 0.
248 | CLEAR lt_dd07v[].
249 | ENDIF.
250 |
251 | * Completes information: Icon and event text
252 | LOOP AT attr_r_data_select->attr_t_log ASSIGNING .
253 | APPEND INITIAL LINE TO lt_attr_alv ASSIGNING .
254 | MOVE-CORRESPONDING TO .
255 | CASE -log_msgtyp.
256 | WHEN zlnkecl_log=>c_log_msgtyp_abort.
257 | -icon = icon_message_critical_small.
258 | WHEN zlnkecl_log=>c_log_msgtyp_error.
259 | -icon = icon_message_error_small.
260 | WHEN zlnkecl_log=>c_log_msgtyp_info.
261 | -icon = icon_message_information_small.
262 | WHEN zlnkecl_log=>c_log_msgtyp_success.
263 | -icon = icon_led_green.
264 | WHEN zlnkecl_log=>c_log_msgtyp_warning.
265 | -icon = icon_message_warning_small.
266 | ENDCASE.
267 |
268 | READ TABLE lt_dd07v WITH KEY domvalue_l = -log_event
269 | ASSIGNING .
270 | IF sy-subrc = 0.
271 | -log_event_txt = -ddtext.
272 | ENDIF.
273 | ENDLOOP.
274 |
275 | ENDMETHOD. "fill_table
276 |
277 | *--------------------------------------------------------------------*
278 | * Shows XML in a dialog.
279 | *--------------------------------------------------------------------*
280 | METHOD show_xml.
281 | DATA: ls_log TYPE zlnkelog.
282 |
283 | READ TABLE attr_r_data_select->attr_t_log INDEX i_row
284 | INTO ls_log.
285 | IF sy-subrc = 0.
286 | CALL METHOD zlnkecl_xml_utils=>show_xxml_in_dialog
287 | EXPORTING
288 | i_xxml = ls_log-rawdata.
289 | ENDIF.
290 | ENDMETHOD. "show_xml
291 | ENDCLASS. "lcl_salv IMPLEMENTATION
292 |
293 | *----------------------------------------------------------------------*
294 | * CLASS lcl_salv_table_handle_events IMPLEMENTATION
295 | *----------------------------------------------------------------------*
296 | *
297 | *----------------------------------------------------------------------*
298 | CLASS lcl_salv_table_handle_events IMPLEMENTATION.
299 | METHOD on_double_click.
300 | lcl_salv=>show_xml( row ).
301 | ENDMETHOD. "on_double_click
302 | ENDCLASS. "lcl_salv_table_handle_events IMPLEMENTATION
303 |
304 |
305 | *--------------------------------------------------------------------*
306 | * INITIALIZATION.
307 | *--------------------------------------------------------------------*
308 | INITIALIZATION.
309 | so_date-sign = 'I'.
310 | so_date-option = 'BT'.
311 | so_date-low = sy-datum.
312 | so_date-high = sy-datum.
313 | APPEND so_date.
314 |
315 | so_time-sign = 'I'.
316 | so_time-option = 'BT'.
317 | so_time-low = '000000'.
318 | so_time-high = '235959'.
319 | APPEND so_time.
320 |
321 | *--------------------------------------------------------------------*
322 | * START-OF-SELECTION.
323 | *--------------------------------------------------------------------*
324 | START-OF-SELECTION.
325 | DATA: lr_data_select TYPE REF TO lcl_data_select.
326 |
327 | CREATE OBJECT lr_data_select.
328 | lr_data_select->select_log( i_date_from = so_date-low
329 | i_time_from = so_time-low
330 | i_date_to = so_date-high
331 | i_time_to = so_time-high
332 | i_log_event = so_evnt[] ).
333 |
334 | lcl_salv=>alv_build( lr_data_select ).
335 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkers3_log_viewer.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKERS3_LOG_VIEWER
7 | A
8 | X
9 | 1
10 | E
11 | X
12 | X
13 |
14 |
15 | -
16 | I
17 | 001
18 | Parameters
19 | 10
20 |
21 | -
22 | R
23 | RocketSteam. RS3 Log Viewer
24 | 27
25 |
26 | -
27 | S
28 | SO_DATE
29 | Date
30 | 12
31 |
32 | -
33 | S
34 | SO_EVNT
35 | Event
36 | 13
37 |
38 | -
39 | S
40 | SO_TIME
41 | Time
42 | 12
43 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkers3_purge_mpart_upload.prog.abap:
--------------------------------------------------------------------------------
1 | *&---------------------------------------------------------------------*
2 | *& Report ZLNKERS3_PURGE_MPART_UPLOAD
3 | *&
4 | *&---------------------------------------------------------------------*
5 | *& Company: RocketSteam
6 | *& Author: Jordi Escoda, 21th March 2016
7 | *& Purges multipart upload
8 | *& It deletes records from table ZLNKEMPART_UPLD for transactions
9 | *& aborted or success
10 | *&---------------------------------------------------------------------*
11 | REPORT zlnkers3_purge_mpart_upload.
12 |
13 | *--------------------------------------------------------------------*
14 | * Tables
15 | *--------------------------------------------------------------------*
16 | TABLES: zlnkempart_upld.
17 |
18 | *--------------------------------------------------------------------*
19 | * Selection screen
20 | *--------------------------------------------------------------------*
21 | SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
22 | SELECT-OPTIONS: so_bckt FOR zlnkempart_upld-bucket.
23 | SELECT-OPTIONS: so_objnm FOR zlnkempart_upld-object_name.
24 | SELECTION-SCREEN END OF BLOCK b1.
25 |
26 | *----------------------------------------------------------------------*
27 | * CLASS lcl_main DEFINITION
28 | *----------------------------------------------------------------------*
29 | *
30 | *----------------------------------------------------------------------*
31 | CLASS lcl_main DEFINITION FINAL.
32 | PUBLIC SECTION.
33 | CLASS-METHODS:
34 | execute,
35 | f4_bucket.
36 | ENDCLASS. "lcl_main DEFINITION
37 |
38 |
39 | *----------------------------------------------------------------------*
40 | * CLASS lcl_main IMPLEMENTATION
41 | *----------------------------------------------------------------------*
42 | *
43 | *----------------------------------------------------------------------*
44 | CLASS lcl_main IMPLEMENTATION.
45 | METHOD f4_bucket.
46 | TYPES: BEGIN OF lty_bucket,
47 | bucket TYPE zlnkebucket-bucket,
48 | region TYPE zlnkebucket-region,
49 | content_rep TYPE zlnkebucket-content_rep,
50 | END OF lty_bucket.
51 | DATA: lt_bucket TYPE STANDARD TABLE OF lty_bucket.
52 |
53 | SELECT bucket region content_rep
54 | INTO TABLE lt_bucket
55 | FROM zlnkebucket.
56 |
57 | CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
58 | EXPORTING
59 | retfield = 'BUCKET'
60 | dynpprog = sy-repid
61 | dynpnr = sy-dynnr
62 | dynprofield = 'SO_BCKT'
63 | value_org = 'S'
64 | TABLES
65 | value_tab = lt_bucket
66 | EXCEPTIONS
67 | parameter_error = 1
68 | no_values_found = 2
69 | OTHERS = 3.
70 |
71 | IF sy-subrc <> 0.
72 | MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
73 | WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
74 | ENDIF.
75 |
76 | ENDMETHOD. "f4_bucket
77 |
78 | METHOD execute.
79 | CONSTANTS: lc_mpart_upld_state_compl_ok TYPE c
80 | VALUE zlnkecl_aws_s3_bucket=>c_mpart_upld_state_compl_ok.
81 | CONSTANTS: lc_mpart_upld_state_aborted TYPE c
82 | VALUE zlnkecl_aws_s3_bucket=>c_mpart_upld_state_aborted.
83 |
84 | DELETE
85 | FROM zlnkempart_upld
86 | WHERE bucket IN so_bckt
87 | AND object_name IN so_objnm
88 | AND state IN (lc_mpart_upld_state_compl_ok,
89 | lc_mpart_upld_state_aborted).
90 | IF sy-subrc <> 0.
91 | WRITE:/ 'Nothing deleted'.
92 | ELSE.
93 | WRITE:/ 'Deleted', sy-dbcnt, 'registers'.
94 | ENDIF.
95 | ENDMETHOD. "execute
96 | ENDCLASS. "lcl_main IMPLEMENTATION
97 |
98 | *--------------------------------------------------------------------*
99 | * Selection screen events
100 | *--------------------------------------------------------------------*
101 | AT SELECTION-SCREEN ON VALUE-REQUEST FOR so_bckt-low.
102 | lcl_main=>f4_bucket( ).
103 |
104 | AT SELECTION-SCREEN ON VALUE-REQUEST FOR so_bckt-high.
105 | lcl_main=>f4_bucket( ).
106 |
107 | *--------------------------------------------------------------------*
108 | * START-OF-SELECTION.
109 | *--------------------------------------------------------------------*
110 | START-OF-SELECTION.
111 | lcl_main=>execute( ).
112 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkers3_purge_mpart_upload.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKERS3_PURGE_MPART_UPLOAD
7 | A
8 | X
9 | 1
10 | E
11 | X
12 | X
13 |
14 |
15 | -
16 | I
17 | 001
18 | Parameters
19 | 10
20 |
21 | -
22 | R
23 | RocketSteam. Abort Multipart Upload
24 | 35
25 |
26 | -
27 | S
28 | SO_BCKT
29 | Bucket
30 | 14
31 |
32 | -
33 | S
34 | SO_OBJNM
35 | Object name
36 | 19
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkers3_strust.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKERS3_STRUST
7 | A
8 | X
9 | 1
10 | E
11 | X
12 | X
13 |
14 |
15 | -
16 | I
17 | 001
18 | Parameters
19 | 10
20 |
21 | -
22 | I
23 | 002
24 | For initial installation only! (if SSL Client (Standard) does not exist)
25 | 90
26 |
27 | -
28 | R
29 | RocketSteam. STRUST automatic maintenance for SSL certificates
30 | 62
31 |
32 | -
33 | S
34 | P_DAYS
35 | Remove certs, days before
36 | 33
37 |
38 | -
39 | S
40 | P_RMOLD
41 | Remove old SSL certificates
42 | 35
43 |
44 | -
45 | S
46 | P_SSLCR
47 | Create SSL Client (Standard)
48 | 36
49 |
50 | -
51 | S
52 | S_ENDPNT
53 | Endpoint
54 | 20
55 |
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkers3_tables_initial_load.prog.abap:
--------------------------------------------------------------------------------
1 | *&---------------------------------------------------------------------*
2 | *& Report ZLNKERS3_TABLES_INITIAL_LOAD
3 | *&---------------------------------------------------------------------*
4 | *& Company: RocketSteam
5 | *& Author: Jordi Escoda, 21th December 2016
6 | *& Initial load for tables (Run once at installation)
7 | *&---------------------------------------------------------------------*
8 | REPORT zlnkers3_tables_initial_load.
9 |
10 | PARAMETERS: p_test AS CHECKBOX DEFAULT abap_true.
11 |
12 | CLASS lcl_load DEFINITION FINAL.
13 | PUBLIC SECTION.
14 | CLASS-METHODS:
15 | execute.
16 |
17 | PRIVATE SECTION.
18 | CLASS-METHODS:
19 | load_zlnkeregion,
20 | load_zlnkelog_cfg.
21 | ENDCLASS.
22 |
23 | CLASS lcl_load IMPLEMENTATION.
24 | METHOD execute.
25 | load_zlnkeregion( ).
26 | load_zlnkelog_cfg( ).
27 | ENDMETHOD.
28 |
29 | METHOD load_zlnkeregion.
30 | DATA: ls_zlnkeregion TYPE zlnkeregion.
31 | DATA: lt_zlnkeregion TYPE STANDARD TABLE OF zlnkeregion.
32 |
33 | SELECT *
34 | INTO TABLE lt_zlnkeregion
35 | FROM zlnkeregion.
36 |
37 | IF sy-subrc <> 0.
38 | ls_zlnkeregion-region = 'ap-northeast-1'.
39 | ls_zlnkeregion-region_name = 'Asia Pacific (Tokyo)'.
40 | ls_zlnkeregion-endpoint = 's3-ap-northeast-1.amazonaws.com'.
41 | APPEND ls_zlnkeregion TO lt_zlnkeregion.
42 |
43 | ls_zlnkeregion-region = 'ap-northeast-2'.
44 | ls_zlnkeregion-region_name = 'Asia Pacific (Seoul)'.
45 | ls_zlnkeregion-endpoint = 's3-ap-northeast-2.amazonaws.com'.
46 | APPEND ls_zlnkeregion TO lt_zlnkeregion.
47 |
48 | ls_zlnkeregion-region = 'ap-south-1'.
49 | ls_zlnkeregion-region_name = 'Asia Pacific (Mumbai)'.
50 | ls_zlnkeregion-endpoint = 's3-ap-south-1.amazonaws.com'.
51 | APPEND ls_zlnkeregion TO lt_zlnkeregion.
52 |
53 | ls_zlnkeregion-region = 'ap-southeast-1'.
54 | ls_zlnkeregion-region_name = 'Asia Pacific (Singapore)'.
55 | ls_zlnkeregion-endpoint = 's3-ap-southeast-1.amazonaws.com'.
56 | APPEND ls_zlnkeregion TO lt_zlnkeregion.
57 |
58 | ls_zlnkeregion-region = 'ap-southeast-2'.
59 | ls_zlnkeregion-region_name = 'Asia Pacific (Sydney)'.
60 | ls_zlnkeregion-endpoint = 's3-ap-southeast-2.amazonaws.com'.
61 | APPEND ls_zlnkeregion TO lt_zlnkeregion.
62 |
63 | ls_zlnkeregion-region = 'ca-central-1'.
64 | ls_zlnkeregion-region_name = 'Canada (Central)'.
65 | ls_zlnkeregion-endpoint = 's3-ca-central-1.amazonaws.com'.
66 | APPEND ls_zlnkeregion TO lt_zlnkeregion.
67 |
68 | ls_zlnkeregion-region = 'eu-central-1'.
69 | ls_zlnkeregion-region_name = 'EU (Frankfurt)'.
70 | ls_zlnkeregion-endpoint = 's3.eu-central-1.amazonaws.com'.
71 | APPEND ls_zlnkeregion TO lt_zlnkeregion.
72 |
73 | ls_zlnkeregion-region = 'eu-west-1'.
74 | ls_zlnkeregion-region_name = 'EU (Ireland)'.
75 | ls_zlnkeregion-endpoint = 's3-eu-west-1.amazonaws.com'.
76 | APPEND ls_zlnkeregion TO lt_zlnkeregion.
77 |
78 | ls_zlnkeregion-region = 'eu-west-2'.
79 | ls_zlnkeregion-region_name = 'EU (London)'.
80 | ls_zlnkeregion-endpoint = 's3-eu-west-2.amazonaws.com'.
81 | APPEND ls_zlnkeregion TO lt_zlnkeregion.
82 |
83 | ls_zlnkeregion-region = 'sa-east-1'.
84 | ls_zlnkeregion-region_name = 'South America (Sao Paulo)'.
85 | ls_zlnkeregion-endpoint = 's3-sa-east-1.amazonaws.com'.
86 | APPEND ls_zlnkeregion TO lt_zlnkeregion.
87 |
88 | ls_zlnkeregion-region = 'us-east-1'.
89 | ls_zlnkeregion-region_name = 'US Standard *'.
90 | ls_zlnkeregion-endpoint = 's3.amazonaws.com'.
91 | APPEND ls_zlnkeregion TO lt_zlnkeregion.
92 |
93 | ls_zlnkeregion-region = 'us-east-2'.
94 | ls_zlnkeregion-region_name = 'US East (Ohio)'.
95 | ls_zlnkeregion-endpoint = 's3-us-east-2.amazonaws.com'.
96 | APPEND ls_zlnkeregion TO lt_zlnkeregion.
97 |
98 | ls_zlnkeregion-region = 'us-west-1'.
99 | ls_zlnkeregion-region_name = 'US West (Northern California)'.
100 | ls_zlnkeregion-endpoint = 's3-us-west-1.amazonaws.com'.
101 | APPEND ls_zlnkeregion TO lt_zlnkeregion.
102 |
103 | ls_zlnkeregion-region = 'us-west-2'.
104 | ls_zlnkeregion-region_name = 'US West (Oregon)'.
105 | ls_zlnkeregion-endpoint = 's3-us-west-2.amazonaws.com'.
106 | APPEND ls_zlnkeregion TO lt_zlnkeregion.
107 |
108 | IF p_test = abap_false.
109 | MODIFY zlnkeregion FROM TABLE lt_zlnkeregion.
110 | IF sy-subrc = 0.
111 | WRITE:/ 'Table LNKEREGION initial load success'.
112 | ELSE.
113 | WRITE:/ 'Table LNKEREGION initial load: Something went wrong'.
114 | ENDIF.
115 | ELSE.
116 | WRITE:/ 'Table LNKEREGION initial load success (Test mode)'.
117 | ENDIF.
118 | ELSE.
119 | WRITE:/ 'Table LNKEREGION already has data'.
120 | ENDIF.
121 | ENDMETHOD.
122 |
123 | METHOD load_zlnkelog_cfg.
124 | DATA: ls_zlnkelog_cfg TYPE zlnkelog_cfg.
125 |
126 | SELECT SINGLE *
127 | INTO ls_zlnkelog_cfg
128 | FROM zlnkelog_cfg
129 | WHERE dummyid = space.
130 |
131 | IF sy-subrc <> 0.
132 | ls_zlnkelog_cfg-keep_days = 3.
133 | IF p_test = abap_false.
134 | MODIFY zlnkelog_cfg FROM ls_zlnkelog_cfg.
135 | IF sy-subrc = 0.
136 | WRITE:/ 'Table ZLNKELOG_CFG initial load success'.
137 | ELSE.
138 | WRITE:/ 'Table ZLNKELOG_CFG initial load: Something went wrong'.
139 | ENDIF.
140 | ELSE.
141 | WRITE:/ 'Table ZLNKELOG_CFG initial load success (Test mode)'.
142 | ENDIF.
143 | ELSE.
144 | WRITE:/ 'Table ZLNKELOG_CFG already has data'.
145 | ENDIF.
146 |
147 | ENDMETHOD.
148 | ENDCLASS.
149 |
150 | START-OF-SELECTION.
151 | lcl_load=>execute( ).
152 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkers3_tables_initial_load.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKERS3_TABLES_INITIAL_LOAD
7 | A
8 | X
9 | 1
10 | E
11 | X
12 | X
13 |
14 |
15 | -
16 | R
17 | Initial load for AWS Regions and log configuration
18 | 50
19 |
20 | -
21 | S
22 | P_TEST
23 | Test run
24 | 16
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkesecacckey_de.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKESECACCKEY_DE
7 | E
8 | ZLNKESECACCKEY_DO
9 | 55
10 | 10
11 | 15
12 | 20
13 | RocketSteam. Secret access key
14 | Secret Access Key
15 | Sec.Acc.K
16 | Secr.Acc.Key
17 | Secret Access Key
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkesecacckey_do.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKESECACCKEY_DO
7 | E
8 | CHAR
9 | 000128
10 | 000128
11 | X
12 | Rocket Steam. Secret Access Key
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkeserver_side_encryption_de.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKESERVER_SIDE_ENCRYPTION_DE
7 | E
8 | FLAG
9 | 22
10 | 10
11 | 15
12 | 22
13 | RocketSteam. Server side encryption flag
14 | Server side Encryption
15 | S.Encrypt
16 | Serv.Encrypt
17 | Server side Encryption
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkessfbin_tt.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKESSFBIN_TT
7 | E
8 | SSFBIN
9 | S
10 | STRU
11 | T
12 | D
13 | N
14 | RocketSteam. Table of ssfbin
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkeuser.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEUSER
7 | E
8 | TRANSP
9 | Rocket Steam. Users and Access Keys
10 | X
11 | C
12 | 1
13 |
14 |
15 | ZLNKEUSER
16 | A
17 | 0
18 | APPL0
19 | N
20 | C
21 |
22 |
23 |
24 | ZLNKEUSER
25 | USER_NAME
26 | 0001
27 | X
28 | ZLNKEUSERNAME_DE
29 | 0
30 | X
31 | E
32 |
33 |
34 | ZLNKEUSER
35 | ACCESS_KEY
36 | 0002
37 | ZLNKEACCKEY_DE
38 | 0
39 | E
40 |
41 |
42 | ZLNKEUSER
43 | SECR_ACCESS_KEY
44 | 0003
45 | ZLNKESECACCKEY_DE
46 | 0
47 | E
48 |
49 |
50 | ZLNKEUSER
51 | AWS_ACCOUNT_ID
52 | 0004
53 | ZLNKEAWS_ACCOUNT_ID_DE
54 | 0
55 | E
56 |
57 |
58 | ZLNKEUSER
59 | CRUSR
60 | 0005
61 | ZLNKECRUSR
62 | 0
63 | E
64 |
65 |
66 | ZLNKEUSER
67 | CRDAT
68 | 0006
69 | ZLNKECRDAT
70 | 0
71 | T
72 | E
73 |
74 |
75 | ZLNKEUSER
76 | CRTIM
77 | 0007
78 | ZLNKECRTIM
79 | 0
80 | T
81 | E
82 |
83 |
84 | ZLNKEUSER
85 | CHUSR
86 | 0008
87 | ZLNKECHUSR
88 | 0
89 | E
90 |
91 |
92 | ZLNKEUSER
93 | CHDAT
94 | 0009
95 | ZLNKECHDAT
96 | 0
97 | T
98 | E
99 |
100 |
101 | ZLNKEUSER
102 | CHTIM
103 | 0010
104 | ZLNKECHTIM
105 | 0
106 | T
107 | E
108 |
109 |
110 |
111 |
112 |
113 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkeusername_de.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEUSERNAME_DE
7 | E
8 | ZLNKEUSERNAME_DO
9 | 55
10 | 10
11 | 15
12 | 20
13 | RocketSteam. User name
14 | User Name
15 | Us.Name
16 | User Name
17 | User Name
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkeusername_do.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEUSERNAME_DO
7 | E
8 | CHAR
9 | 000064
10 | 000064
11 | X
12 | ZLNKEUSER
13 | Rocket Steam. User name
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/s3_sdk/zlnkezipflag_de.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZLNKEZIPFLAG_DE
7 | E
8 | FLAG
9 | 03
10 | 03
11 | 03
12 | 03
13 | RocketSteam. Zip Flag
14 | Zip
15 | Zip
16 | Zip
17 | Zip
18 | E
19 | D
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------