rnsap 0.4.7 → 0.4.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/helper/util_helper.rb +39 -0
  3. data/lib/rnsap.rb +69 -38
  4. metadata +2 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7a17557c7181bcd65a32fb58814b567f43744c17915ece180710bb3b4ebecfcb
4
- data.tar.gz: 185a5c0b02c274c44f47794345ac5b2509463c47a55a68249728568d12175d9d
3
+ metadata.gz: 5dd7ba84b18711bdaf64bc605af4003b21f41296896cba5ae13681b41244750f
4
+ data.tar.gz: 51728b725b3aaa900a517425aa0897b25f449fd44f962fa7ce3ab346917d4a53
5
5
  SHA512:
6
- metadata.gz: a45fa39484dae3cd8ae6a95215cd3de1b820285706df7b2cb7ba11f8537814b4c1e01e6a45d82d9e66511519c2da96f040f9061a2993bb6e5a9cc00f76043d45
7
- data.tar.gz: b4bf0e054498ad13c5de3e28efb0e4dd12046f4bec1c8dd6d08cde8baa8d3af0623f3c97c7d283e6f5361ea06bac396495f488bd6c59ad6d3abb3fef35267872
6
+ metadata.gz: a1de3138f78004c63c9174e5c97441babc5e83efb7e930ec8bdb4986a5768f6f3aca8fefdc762c1548350bb8116cbf532c76370b969ccfad7c963513ecf3b968
7
+ data.tar.gz: d6fcd634233711dccb18da6ba342c9bf9ddccef11ca50917c31bb39d53767fcfc2b7e41996d7fa41445e07740b371b84a6083cae24cfec5e4d956e37c98f1b92
@@ -0,0 +1,39 @@
1
+ module UtilHelper
2
+ require 'JSON'
3
+
4
+ def log(msg='no message')
5
+ puts obj_to_s(msg)
6
+ end
7
+
8
+ def obj_to_s(msg)
9
+ case msg.class
10
+ when Hash
11
+ JSON.pretty_generate(msg)
12
+ else
13
+ begin
14
+ JSON.pretty_generate(JSON.parse(msg.to_json))
15
+ rescue
16
+ msg
17
+ end
18
+ end
19
+ end
20
+
21
+ # def api_return(*options)
22
+ # puts 'options'
23
+ # log api_return2(options[1], options[0]) if options[0].class.to_s == 'Integer'
24
+ # log(options)
25
+ # end
26
+
27
+
28
+ def api_return(rc=0, message ='', obj=nil, exception=nil )
29
+ ret = {
30
+ rc: exception ? (rc > 0 ? rc : 8) : rc,
31
+ message: message
32
+ }
33
+ ret[:exception] = exception.to_s if exception
34
+ ret[:return] = obj if obj
35
+ ret
36
+ end
37
+
38
+
39
+ end
data/lib/rnsap.rb CHANGED
@@ -16,8 +16,10 @@ require 'preq_release_info/preq_release_posted'
16
16
  require 'preq_release_info/preq_release_final'
17
17
  require 'return'
18
18
  require 'helper/rfc_helper'
19
+ require 'helper/util_helper'
19
20
 
20
21
  include NWRFC
22
+ include UtilHelper
21
23
 
22
24
  # Module for SAP helper methods. RnSap allows for a simpler
23
25
  # manner to access SAP servers calling RFC BAPIs.
@@ -57,9 +59,7 @@ module RnSap
57
59
 
58
60
  fn_commit.invoke
59
61
 
60
- {
61
- tb_return: fn_commit[:RETURN],
62
- }
62
+ api_return_success({tb_return: fn_commit[:RETURN]})
63
63
  end
64
64
 
65
65
  def rollback(conn)
@@ -69,9 +69,7 @@ module RnSap
69
69
 
70
70
  fn_rollback.invoke
71
71
 
72
- {
73
- tb_return: fn_rollback[:RETURN],
74
- }
72
+ api_return_success({tb_return: fn_rollback[:RETURN]})
75
73
  end
76
74
 
77
75
  # Invokes SAP RFC_READ_TABLE function module remotely, passing
@@ -214,17 +212,24 @@ module RnSap
214
212
  preq_srv_accass_values = get_object_list(fc_preq_detail[:REQUISITION_SRV_ACCASS_VALUES], PreqServicesAccassValues.to_s)
215
213
  tb_return = get_object_list(fc_preq_detail[:RETURN], Return.to_s)
216
214
 
217
- {
218
- preq_items: preq_items,
219
- preq_acct_assignment: preq_acct_assignment,
220
- preq_text: preq_text,
221
- preq_limits: preq_limits,
222
- preq_contract_limits: preq_contract_limits,
223
- preq_services: preq_services,
224
- preq_services_texts: preq_services_texts,
225
- preq_srv_accass_values: preq_srv_accass_values,
226
- tb_return: tb_return,
227
- }
215
+ retcode = tb_return.detect{|r| r.type == 'E'}
216
+
217
+ if retcode
218
+ api_return_error(retcode)
219
+ else
220
+ api_return_success({
221
+ preq_items: preq_items,
222
+ preq_acct_assignment: preq_acct_assignment,
223
+ preq_text: preq_text,
224
+ preq_limits: preq_limits,
225
+ preq_contract_limits: preq_contract_limits,
226
+ preq_services: preq_services,
227
+ preq_services_texts: preq_services_texts,
228
+ preq_srv_accass_values: preq_srv_accass_values,
229
+ tb_return: tb_return,
230
+ })
231
+ end
232
+
228
233
  end
229
234
 
230
235
  def preq_release_strategy_info(preq = 0, item = "00000", rel_code = "")
@@ -245,14 +250,19 @@ module RnSap
245
250
  preq_release_final = get_object_list(fn_preq_rel_strat_info[:RELEASE_FINAL], PreqReleaseFinal.to_s)
246
251
  tb_return = get_object_list(fn_preq_rel_strat_info[:RETURN], Return.to_s)
247
252
 
248
- {
249
- preq_gen_release_info: preq_gen_release_info,
250
- preq_release_prerequisites: preq_release_prerequisites,
251
- preq_release_posted: preq_release_posted,
252
- preq_release_final: preq_release_final,
253
- tb_return: tb_return,
254
- }
253
+ retcode = tb_return.detect{|r| r.type == 'E'}
255
254
 
255
+ if retcode
256
+ api_return_error(retcode)
257
+ else
258
+ api_return_success({
259
+ preq_gen_release_info: preq_gen_release_info,
260
+ preq_release_prerequisites: preq_release_prerequisites,
261
+ preq_release_posted: preq_release_posted,
262
+ preq_release_final: preq_release_final,
263
+ tb_return: tb_return,
264
+ })
265
+ end
256
266
  end
257
267
 
258
268
  def preq_release(preq = 0, rel_code = "", no_commit="", item="00000", use_exceptions="")
@@ -276,11 +286,18 @@ module RnSap
276
286
  fn_preq_exec_release.invoke
277
287
 
278
288
  tb_return = get_object_list(fn_preq_exec_release[:RETURN], Return.to_s)
279
- {
280
- status_new: fn_preq_exec_release[:REL_STATUS_NEW],
281
- indicator_new: fn_preq_exec_release[:REL_INDICATOR_NEW],
282
- tb_return: tb_return,
283
- }
289
+
290
+ retcode = tb_return.detect{|r| r.type == 'E'}
291
+
292
+ if retcode
293
+ api_return_error(retcode)
294
+ else
295
+ api_return_success({
296
+ status_new: fn_preq_exec_release[:REL_STATUS_NEW],
297
+ indicator_new: fn_preq_exec_release[:REL_INDICATOR_NEW],
298
+ tb_return: tb_return,
299
+ })
300
+ end
284
301
  end
285
302
 
286
303
  def po_detail(po = 0)
@@ -291,6 +308,15 @@ module RnSap
291
308
  []
292
309
  end
293
310
 
311
+ # Performs SAP Authority check on a certain authorization
312
+ # object. For more details on SAP authorization,
313
+ # this link will provide good details:
314
+ # * https://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/a92195a9-0b01-0010-909c-f330ea4a585c&overridelayout=true
315
+ # * https://blogs.sap.com/2020/11/14/some-important-information-about-sap-authorization-objects/
316
+ # @param user [String] SAP userid for which authorization will be performed
317
+ # @param auth_object [String] Authorization object to be checked in SAP
318
+ # @param field [String] Authorization field checked within the authorization object
319
+ # @param value [String] Authorization value to be checked. (i.e. 01 for creation, 02 for change, XX for release code)
294
320
  def authority_check(user, auth_object, field, value)
295
321
  #-- Execute AUTHORITY_CHECK
296
322
  function = @conn.get_function('AUTHORITY_CHECK')
@@ -305,21 +331,26 @@ module RnSap
305
331
  fun_call.invoke
306
332
  rescue Exception => ex
307
333
  if ex.to_s.include?('USER_IS_AUTHORIZED')
308
- {
309
- rc: 0,
310
- message: 'Authorized.'
311
- }
334
+ api_return(0,'Authorized');
312
335
  else
313
- {
314
- rc: 10,
315
- message: 'User is not authorized.',
316
- exception: ex
317
- }
336
+ api_return(8,'User is not authorized.')
318
337
  end
319
338
  end
320
339
 
321
340
  end
322
341
 
342
+ def api_return_success(obj=nil )
343
+ UtilHelper.api_return(0, 'Success!', obj)
344
+ end
345
+
346
+ def api_return_error(obj={}, exception=nil)
347
+ UtilHelper.api_return(8, 'Error.', obj, exception)
348
+ end
349
+
350
+ def api_return(rc=0, message ='', obj=nil, exception=nil )
351
+ UtilHelper.api_return(rc, message, obj, exception)
352
+ end
353
+
323
354
  private
324
355
 
325
356
  attr_writer :conn
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rnsap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.7
4
+ version: 0.4.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rogerio Nascimento
@@ -46,6 +46,7 @@ extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
48
  - lib/helper/rfc_helper.rb
49
+ - lib/helper/util_helper.rb
49
50
  - lib/preq_detail/preq_acct_assignment.rb
50
51
  - lib/preq_detail/preq_contract_limits.rb
51
52
  - lib/preq_detail/preq_item.rb