rnsap 0.4.7 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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