rnsap 0.4.5 → 0.4.11
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.
- checksums.yaml +4 -4
- data/lib/helper/rfc_helper.rb +19 -15
- data/lib/helper/util_helper.rb +39 -0
- data/lib/po_detail/all.rb +27 -0
- data/lib/po_detail/po_account.rb +93 -0
- data/lib/po_detail/po_addrdelivery.rb +115 -0
- data/lib/po_detail/po_all_versions.rb +55 -0
- data/lib/po_detail/po_components.rb +53 -0
- data/lib/po_detail/po_cond.rb +91 -0
- data/lib/po_detail/po_cond_header.rb +91 -0
- data/lib/po_detail/po_confirmation.rb +39 -0
- data/lib/po_detail/po_contract_limits.rb +21 -0
- data/lib/po_detail/po_exp_imp_header.rb +7 -0
- data/lib/po_detail/po_exp_imp_item.rb +21 -0
- data/lib/po_detail/po_extension_out.rb +13 -0
- data/lib/po_detail/po_header.rb +131 -0
- data/lib/po_detail/po_history.rb +107 -0
- data/lib/po_detail/po_history_ma.rb +37 -0
- data/lib/po_detail/po_history_totals.rb +51 -0
- data/lib/po_detail/po_inv_plan_header.rb +49 -0
- data/lib/po_detail/po_inv_plan_item.rb +51 -0
- data/lib/po_detail/po_item.rb +359 -0
- data/lib/po_detail/po_limits.rb +47 -0
- data/lib/po_detail/po_partner.rb +11 -0
- data/lib/po_detail/po_schedule.rb +59 -0
- data/lib/po_detail/po_serial_number.rb +13 -0
- data/lib/po_detail/po_services.rb +137 -0
- data/lib/po_detail/po_shipping_exp.rb +53 -0
- data/lib/po_detail/po_srv_access_values.rb +17 -0
- data/lib/po_detail/po_text_header.rb +13 -0
- data/lib/po_detail/po_text_item.rb +13 -0
- data/lib/po_release_info/all.rb +1 -0
- data/lib/po_release_info/po_release_final.rb +53 -0
- data/lib/preq_detail/all.rb +8 -0
- data/lib/preq_release_info/all.rb +4 -0
- data/lib/rnsap.rb +226 -68
- data/lib/rnsap_spec.rb +93 -0
- metadata +35 -1
data/lib/rnsap.rb
CHANGED
@@ -2,22 +2,20 @@
|
|
2
2
|
|
3
3
|
require 'nwrfc'
|
4
4
|
require 'read_table/table_column'
|
5
|
-
|
6
|
-
require 'preq_detail/preq_acct_assignment'
|
7
|
-
require 'preq_detail/preq_text'
|
8
|
-
require 'preq_detail/preq_limits'
|
9
|
-
require 'preq_detail/preq_contract_limits'
|
10
|
-
require 'preq_detail/preq_services'
|
11
|
-
require 'preq_detail/preq_services_texts'
|
12
|
-
require 'preq_detail/preq_srv_accass_values'
|
13
|
-
require 'preq_release_info/preq_gen_release_info'
|
14
|
-
require 'preq_release_info/preq_release_prerequisites'
|
15
|
-
require 'preq_release_info/preq_release_posted'
|
16
|
-
require 'preq_release_info/preq_release_final'
|
5
|
+
|
17
6
|
require 'return'
|
7
|
+
|
8
|
+
require 'preq_detail/all'
|
9
|
+
require 'preq_release_info/all'
|
10
|
+
|
11
|
+
require 'po_detail/all'
|
12
|
+
require 'po_release_info/all'
|
13
|
+
|
18
14
|
require 'helper/rfc_helper'
|
15
|
+
require 'helper/util_helper'
|
19
16
|
|
20
17
|
include NWRFC
|
18
|
+
include UtilHelper
|
21
19
|
|
22
20
|
# Module for SAP helper methods. RnSap allows for a simpler
|
23
21
|
# manner to access SAP servers calling RFC BAPIs.
|
@@ -57,9 +55,7 @@ module RnSap
|
|
57
55
|
|
58
56
|
fn_commit.invoke
|
59
57
|
|
60
|
-
{
|
61
|
-
tb_return: fn_commit[:RETURN],
|
62
|
-
}
|
58
|
+
api_return_success({tb_return: fn_commit[:RETURN]})
|
63
59
|
end
|
64
60
|
|
65
61
|
def rollback(conn)
|
@@ -69,9 +65,7 @@ module RnSap
|
|
69
65
|
|
70
66
|
fn_rollback.invoke
|
71
67
|
|
72
|
-
{
|
73
|
-
tb_return: fn_rollback[:RETURN],
|
74
|
-
}
|
68
|
+
api_return_success({tb_return: fn_rollback[:RETURN]})
|
75
69
|
end
|
76
70
|
|
77
71
|
# Invokes SAP RFC_READ_TABLE function module remotely, passing
|
@@ -171,12 +165,11 @@ module RnSap
|
|
171
165
|
if value == '00000000'
|
172
166
|
eval("obj.#{field} = nil")
|
173
167
|
else
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
)
|
179
|
-
eval("obj.#{field} = #{value}")
|
168
|
+
year = value[0..3].to_i
|
169
|
+
month = value[4..5].to_i
|
170
|
+
day = value[6..7].to_i
|
171
|
+
# value = Date.new(year, month, day)
|
172
|
+
eval("obj.#{field} = Date.new(#{year}, #{month}, #{day}) ")
|
180
173
|
end
|
181
174
|
else
|
182
175
|
value = wa[pos].strip
|
@@ -204,27 +197,34 @@ module RnSap
|
|
204
197
|
fc_preq_detail.invoke
|
205
198
|
|
206
199
|
#-- Execute conversions for returned tables to a designated list (array)
|
207
|
-
preq_items = get_object_list(fc_preq_detail[:REQUISITION_ITEMS], PreqItem
|
208
|
-
preq_acct_assignment = get_object_list(fc_preq_detail[:REQUISITION_ACCOUNT_ASSIGNMENT], PreqAcctAssignment
|
209
|
-
preq_text = get_object_list(fc_preq_detail[:REQUISITION_TEXT], PreqText
|
210
|
-
preq_limits = get_object_list(fc_preq_detail[:REQUISITION_LIMITS], PreqLimits
|
211
|
-
preq_contract_limits = get_object_list(fc_preq_detail[:REQUISITION_CONTRACT_LIMITS], PreqContractLimits
|
212
|
-
preq_services = get_object_list(fc_preq_detail[:REQUISITION_SERVICES], PreqItem
|
213
|
-
preq_services_texts = get_object_list(fc_preq_detail[:REQUISITION_SERVICES_TEXTS], PreqServicesText
|
214
|
-
preq_srv_accass_values = get_object_list(fc_preq_detail[:REQUISITION_SRV_ACCASS_VALUES], PreqServicesAccassValues
|
215
|
-
tb_return = get_object_list(fc_preq_detail[:RETURN], Return
|
216
|
-
|
217
|
-
{
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
200
|
+
preq_items = get_object_list(fc_preq_detail[:REQUISITION_ITEMS], PreqItem)
|
201
|
+
preq_acct_assignment = get_object_list(fc_preq_detail[:REQUISITION_ACCOUNT_ASSIGNMENT], PreqAcctAssignment)
|
202
|
+
preq_text = get_object_list(fc_preq_detail[:REQUISITION_TEXT], PreqText)
|
203
|
+
preq_limits = get_object_list(fc_preq_detail[:REQUISITION_LIMITS], PreqLimits)
|
204
|
+
preq_contract_limits = get_object_list(fc_preq_detail[:REQUISITION_CONTRACT_LIMITS], PreqContractLimits)
|
205
|
+
preq_services = get_object_list(fc_preq_detail[:REQUISITION_SERVICES], PreqItem)
|
206
|
+
preq_services_texts = get_object_list(fc_preq_detail[:REQUISITION_SERVICES_TEXTS], PreqServicesText)
|
207
|
+
preq_srv_accass_values = get_object_list(fc_preq_detail[:REQUISITION_SRV_ACCASS_VALUES], PreqServicesAccassValues)
|
208
|
+
tb_return = get_object_list(fc_preq_detail[:RETURN], Return)
|
209
|
+
|
210
|
+
retcode = tb_return.detect{|r| r.type == 'E'}
|
211
|
+
|
212
|
+
if retcode
|
213
|
+
api_return_error(retcode)
|
214
|
+
else
|
215
|
+
api_return_success({
|
216
|
+
preq_items: preq_items,
|
217
|
+
preq_acct_assignment: preq_acct_assignment,
|
218
|
+
preq_text: preq_text,
|
219
|
+
preq_limits: preq_limits,
|
220
|
+
preq_contract_limits: preq_contract_limits,
|
221
|
+
preq_services: preq_services,
|
222
|
+
preq_services_texts: preq_services_texts,
|
223
|
+
preq_srv_accass_values: preq_srv_accass_values,
|
224
|
+
tb_return: tb_return,
|
225
|
+
})
|
226
|
+
end
|
227
|
+
|
228
228
|
end
|
229
229
|
|
230
230
|
def preq_release_strategy_info(preq = 0, item = "00000", rel_code = "")
|
@@ -239,20 +239,25 @@ module RnSap
|
|
239
239
|
fn_preq_rel_strat_info.invoke
|
240
240
|
|
241
241
|
#-- Execute conversions for returned tables to a designated list (array)
|
242
|
-
preq_gen_release_info = get_object_list(fn_preq_rel_strat_info[:GENERAL_RELEASE_INFO], PreqGenReleaseInfo
|
243
|
-
preq_release_prerequisites = get_object_list(fn_preq_rel_strat_info[:RELEASE_PREREQUISITES], PreqReleasePrerequisites
|
244
|
-
preq_release_posted = get_object_list(fn_preq_rel_strat_info[:RELEASE_ALREADY_POSTED], PreqReleasePosted
|
245
|
-
preq_release_final = get_object_list(fn_preq_rel_strat_info[:RELEASE_FINAL], PreqReleaseFinal
|
246
|
-
tb_return = get_object_list(fn_preq_rel_strat_info[:RETURN], Return
|
247
|
-
|
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
|
-
}
|
242
|
+
preq_gen_release_info = get_object_list(fn_preq_rel_strat_info[:GENERAL_RELEASE_INFO], PreqGenReleaseInfo)
|
243
|
+
preq_release_prerequisites = get_object_list(fn_preq_rel_strat_info[:RELEASE_PREREQUISITES], PreqReleasePrerequisites)
|
244
|
+
preq_release_posted = get_object_list(fn_preq_rel_strat_info[:RELEASE_ALREADY_POSTED], PreqReleasePosted)
|
245
|
+
preq_release_final = get_object_list(fn_preq_rel_strat_info[:RELEASE_FINAL], PreqReleaseFinal)
|
246
|
+
tb_return = get_object_list(fn_preq_rel_strat_info[:RETURN], Return)
|
247
|
+
|
248
|
+
retcode = tb_return.detect{|r| r.type == 'E'}
|
255
249
|
|
250
|
+
if retcode
|
251
|
+
api_return_error(retcode)
|
252
|
+
else
|
253
|
+
api_return_success({
|
254
|
+
preq_gen_release_info: preq_gen_release_info,
|
255
|
+
preq_release_prerequisites: preq_release_prerequisites,
|
256
|
+
preq_release_posted: preq_release_posted,
|
257
|
+
preq_release_final: preq_release_final,
|
258
|
+
tb_return: tb_return,
|
259
|
+
})
|
260
|
+
end
|
256
261
|
end
|
257
262
|
|
258
263
|
def preq_release(preq = 0, rel_code = "", no_commit="", item="00000", use_exceptions="")
|
@@ -275,20 +280,173 @@ module RnSap
|
|
275
280
|
|
276
281
|
fn_preq_exec_release.invoke
|
277
282
|
|
278
|
-
tb_return = get_object_list(fn_preq_exec_release[:RETURN], Return
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
283
|
+
tb_return = get_object_list(fn_preq_exec_release[:RETURN], Return)
|
284
|
+
|
285
|
+
retcode = tb_return.detect{|r| r.type == 'E'}
|
286
|
+
|
287
|
+
if retcode
|
288
|
+
api_return_error(retcode)
|
289
|
+
else
|
290
|
+
api_return_success({
|
291
|
+
status_new: fn_preq_exec_release[:REL_STATUS_NEW],
|
292
|
+
indicator_new: fn_preq_exec_release[:REL_INDICATOR_NEW],
|
293
|
+
tb_return: tb_return,
|
294
|
+
})
|
295
|
+
end
|
296
|
+
end
|
297
|
+
|
298
|
+
def po_detail(po = 0, acc_assignment = "", item_text = "", header_text = "", delivery_address = "", version = "", services = "", serialnumbers = "", invoiceplan = "")
|
299
|
+
#-- Execute BAPI_PO_GETDETAIL1
|
300
|
+
fn_po_detail = @conn.get_function('BAPI_PO_GETDETAIL1')
|
301
|
+
fc_po_detail = fn_po_detail.get_function_call
|
302
|
+
|
303
|
+
fc_po_detail[:PURCHASEORDER] = po
|
304
|
+
fc_po_detail[:ACCOUNT_ASSIGNMENT] = acc_assignment
|
305
|
+
fc_po_detail[:ITEM_TEXT] = item_text
|
306
|
+
fc_po_detail[:HEADER_TEXT] = header_text
|
307
|
+
fc_po_detail[:DELIVERY_ADDRESS] = delivery_address
|
308
|
+
fc_po_detail[:VERSION] = version
|
309
|
+
fc_po_detail[:SERVICES] = services
|
310
|
+
fc_po_detail[:SERIALNUMBERS] = serialnumbers
|
311
|
+
fc_po_detail[:INVOICEPLAN] = invoiceplan
|
312
|
+
|
313
|
+
fc_po_detail.invoke
|
314
|
+
|
315
|
+
#-- Execute conversions for returned tables to a designated list (array)
|
316
|
+
po_item = get_object_list(fc_po_detail[:POITEM], PoItem)
|
317
|
+
po_addrdelivery = get_object_list(fc_po_detail[:POADDRDELIVERY], PoAddrDelivery)
|
318
|
+
po_schedule = get_object_list(fc_po_detail[:POSCHEDULE], PoSchedule)
|
319
|
+
po_account = get_object_list(fc_po_detail[:POACCOUNT], PoAccount)
|
320
|
+
po_cond_header = get_object_list(fc_po_detail[:POCONDHEADER], PoCondHeader)
|
321
|
+
po_cond = get_object_list(fc_po_detail[:POCOND], PoCond)
|
322
|
+
po_limits = get_object_list(fc_po_detail[:POLIMITS], PoLimits)
|
323
|
+
po_contract_limits = get_object_list(fc_po_detail[:POCONTRACTLIMITS], PoContractLimits)
|
324
|
+
po_services = get_object_list(fc_po_detail[:POSERVICES], PoServices)
|
325
|
+
po_srv_access_values = get_object_list(fc_po_detail[:POSRVACCESSVALUES], PoSrvAccessValues)
|
326
|
+
po_text_header = get_object_list(fc_po_detail[:POTEXTHEADER], PoTextHeader)
|
327
|
+
po_text_item = get_object_list(fc_po_detail[:POTEXTITEM], PoTextItem)
|
328
|
+
po_exp_imp_item = get_object_list(fc_po_detail[:POEXPIMPITEM], PoExpImpItem)
|
329
|
+
po_components = get_object_list(fc_po_detail[:POCOMPONENTS], PoComponents)
|
330
|
+
po_shipping_exp = get_object_list(fc_po_detail[:POSHIPPINGEXP], PoShippingExp)
|
331
|
+
po_history = get_object_list(fc_po_detail[:POHISTORY], PoHistory)
|
332
|
+
po_history_totals = get_object_list(fc_po_detail[:POHISTORY_TOTALS], PoHistoryTotals)
|
333
|
+
po_confirmation = get_object_list(fc_po_detail[:POCONFIRMATION], PoConfirmation)
|
334
|
+
po_all_versions = get_object_list(fc_po_detail[:ALLVERSIONS], PoAllVersions)
|
335
|
+
po_partner = get_object_list(fc_po_detail[:POPARTNER], PoPartner)
|
336
|
+
po_extension_out = get_object_list(fc_po_detail[:EXTENSIONOUT], PoExtensionOut)
|
337
|
+
po_serial_number = get_object_list(fc_po_detail[:SERIALNUMBER], PoSerialNumber)
|
338
|
+
po_inv_plan_header = get_object_list(fc_po_detail[:INVPLANHEADER], PoInvPlanHeader)
|
339
|
+
po_inv_plan_item = get_object_list(fc_po_detail[:INVPLANITEM], PoInvPlanItem)
|
340
|
+
po_history_ma = get_object_list(fc_po_detail[:POHISTORY_MA], PoHistoryMa)
|
341
|
+
po_header = get_object(fc_po_detail[:POHEADER], PoHeader)
|
342
|
+
po_exp_imp_header = get_object(fc_po_detail[:POEXPIMPHEADER], PoExpImpHeader)
|
343
|
+
tb_return = get_object_list(fc_po_detail[:RETURN], Return)
|
344
|
+
|
345
|
+
retcode = tb_return.detect{|r| r.type == 'E'}
|
346
|
+
|
347
|
+
if retcode
|
348
|
+
api_return_error(retcode)
|
349
|
+
else
|
350
|
+
api_return_success({
|
351
|
+
po_item: po_item,
|
352
|
+
po_addrdelivery: po_addrdelivery,
|
353
|
+
po_schedule: po_schedule,
|
354
|
+
po_account: po_account,
|
355
|
+
po_cond_header: po_cond_header,
|
356
|
+
po_cond: po_cond,
|
357
|
+
po_limits: po_limits,
|
358
|
+
po_contract_limits: po_contract_limits,
|
359
|
+
po_services: po_services,
|
360
|
+
po_srv_access_values: po_srv_access_values,
|
361
|
+
po_text_header: po_text_header,
|
362
|
+
po_text_item: po_text_item,
|
363
|
+
po_exp_imp_item: po_exp_imp_item,
|
364
|
+
po_components: po_components,
|
365
|
+
po_shipping_exp: po_shipping_exp,
|
366
|
+
po_history: po_history,
|
367
|
+
po_history_totals: po_history_totals,
|
368
|
+
po_confirmation: po_confirmation,
|
369
|
+
po_all_versions: po_all_versions,
|
370
|
+
po_partner: po_partner,
|
371
|
+
po_extension_out: po_extension_out,
|
372
|
+
po_serial_number: po_serial_number,
|
373
|
+
po_inv_plan_header: po_inv_plan_header,
|
374
|
+
po_inv_plan_item: po_inv_plan_item,
|
375
|
+
po_history_ma: po_history_ma,
|
376
|
+
po_header: po_header,
|
377
|
+
po_exp_imp_header: po_exp_imp_header,
|
378
|
+
tb_return: tb_return,
|
379
|
+
})
|
380
|
+
end
|
381
|
+
end
|
382
|
+
|
383
|
+
def po_release_strategy_info(po = 0, po_rel_code = "")
|
384
|
+
#-- Execute BAPI_PO_GETRELINFO
|
385
|
+
fn_po_rel_strat_info = @conn.get_function('BAPI_PO_GETRELINFO')
|
386
|
+
fc_po_rel_strat_info = fn_po_rel_strat_info.get_function_call
|
387
|
+
|
388
|
+
fc_po_rel_strat_info[:PURCHASEORDER] = po
|
389
|
+
fc_po_rel_strat_info[:PO_REL_CODE] = po_rel_code
|
390
|
+
|
391
|
+
fc_po_rel_strat_info.invoke
|
392
|
+
|
393
|
+
#-- Execute conversions for returned tables to a designated list (array)
|
394
|
+
po_release_final = get_object_list(fc_po_rel_strat_info[:RELEASE_FINAL], PoReleaseFinal.to_s)
|
395
|
+
tb_return = get_object_list(fc_po_rel_strat_info[:RETURN], Return.to_s)
|
396
|
+
|
397
|
+
retcode = tb_return.detect{|r| r.type == 'E'}
|
398
|
+
|
399
|
+
if retcode
|
400
|
+
api_return_error(retcode)
|
401
|
+
else
|
402
|
+
api_return_success({
|
403
|
+
po_release_final: po_release_final,
|
404
|
+
tb_return: tb_return,
|
405
|
+
})
|
406
|
+
end
|
407
|
+
end
|
408
|
+
|
409
|
+
# Performs SAP Authority check on a certain authorization
|
410
|
+
# object. For more details on SAP authorization,
|
411
|
+
# this link will provide good details:
|
412
|
+
# * https://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/a92195a9-0b01-0010-909c-f330ea4a585c&overridelayout=true
|
413
|
+
# * https://blogs.sap.com/2020/11/14/some-important-information-about-sap-authorization-objects/
|
414
|
+
# @param user [String] SAP userid for which authorization will be performed
|
415
|
+
# @param auth_object [String] Authorization object to be checked in SAP
|
416
|
+
# @param field [String] Authorization field checked within the authorization object
|
417
|
+
# @param value [String] Authorization value to be checked. (i.e. 01 for creation, 02 for change, XX for release code)
|
418
|
+
def authority_check(user, auth_object, field, value)
|
419
|
+
#-- Execute AUTHORITY_CHECK
|
420
|
+
function = @conn.get_function('AUTHORITY_CHECK')
|
421
|
+
fun_call = function.get_function_call
|
422
|
+
|
423
|
+
fun_call[:USER] = user
|
424
|
+
fun_call[:OBJECT] = auth_object
|
425
|
+
fun_call[:FIELD1] = field
|
426
|
+
fun_call[:VALUE1] = value
|
427
|
+
|
428
|
+
begin
|
429
|
+
fun_call.invoke
|
430
|
+
rescue Exception => ex
|
431
|
+
if ex.to_s.include?('USER_IS_AUTHORIZED')
|
432
|
+
api_return(0,'Authorized');
|
433
|
+
else
|
434
|
+
api_return(8,'User is not authorized.')
|
435
|
+
end
|
436
|
+
end
|
437
|
+
|
438
|
+
end
|
439
|
+
|
440
|
+
def api_return_success(obj=nil )
|
441
|
+
UtilHelper.api_return(0, 'Success!', obj)
|
284
442
|
end
|
285
443
|
|
286
|
-
def
|
287
|
-
|
444
|
+
def api_return_error(obj={}, exception=nil)
|
445
|
+
UtilHelper.api_return(8, 'Error.', obj, exception)
|
288
446
|
end
|
289
447
|
|
290
|
-
def
|
291
|
-
|
448
|
+
def api_return(rc=0, message ='', obj=nil, exception=nil )
|
449
|
+
UtilHelper.api_return(rc, message, obj, exception)
|
292
450
|
end
|
293
451
|
|
294
452
|
private
|
data/lib/rnsap_spec.rb
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'yaml'
|
5
|
+
require_relative '../lib/rnsap'
|
6
|
+
require_relative '../lib/preq_detail/preq_item'
|
7
|
+
|
8
|
+
describe RnSap::Sap do
|
9
|
+
let(:params) do
|
10
|
+
file = File.expand_path(File.join(File.dirname(__FILE__), '..', 'secrets.yml'))
|
11
|
+
YAML.safe_load(File.read(file))
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:logon_info) do
|
15
|
+
{ 'user' => params['user'],
|
16
|
+
'passwd' => params['password'],
|
17
|
+
'trace' => params['trace'],
|
18
|
+
'client' => params['client'],
|
19
|
+
'ashost' => params['ashost'],
|
20
|
+
'sysnr' => params['sysnr'] }
|
21
|
+
end
|
22
|
+
|
23
|
+
let(:test_data) do
|
24
|
+
file = File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_data.yml'))
|
25
|
+
YAML.safe_load(File.read(file))
|
26
|
+
end
|
27
|
+
|
28
|
+
let(:conn) do
|
29
|
+
RnSap::Sap.new(logon_info)
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'Based on connection available parameters' do
|
33
|
+
it 'connects to SAP' do
|
34
|
+
expect(conn).not_to be_nil
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'Reads table information from SAP' do
|
39
|
+
it 'gets at least one vendor' do
|
40
|
+
list = conn.read_table('lfa1', %w[NAME1 LIFNR LAND1])
|
41
|
+
expect(list.count).to be > 0
|
42
|
+
end
|
43
|
+
it 'gets at least one Raw material' do
|
44
|
+
list = conn.read_table('mara', %w[matnr ernam], ["MTART = 'ROH'"])
|
45
|
+
expect(list.count).to be > 0
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'gets a two Raw materials skipping the first in the database' do
|
49
|
+
list = conn.read_table({ name: 'mara', fields: %w[matnr ernam], clauses: ["MTART = 'ROH'"], row_skip: 1, row_count: 2 })
|
50
|
+
expect(list.count).to eq(2)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'Gets information from a Purchase Requisition' do
|
55
|
+
it 'Obtains details from purchase requisition' do
|
56
|
+
pr = test_data['preqs']['number']
|
57
|
+
puts " -> Pesquisando P.Req: #{pr}"
|
58
|
+
details = conn.preq_detail(pr)
|
59
|
+
|
60
|
+
expect(details).not_to be_nil
|
61
|
+
expect(details.class).to be(Hash)
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'gets purchase requisition Release Strategy info' do
|
65
|
+
pr = test_data['preqs']['number']
|
66
|
+
details = conn.preq_release_strategy_info(pr)
|
67
|
+
|
68
|
+
expect(details).not_to be_nil
|
69
|
+
expect(details.class).to be(Hash)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
context 'Gets information from a Purchase Order' do
|
74
|
+
it 'Obtains details from purchase requisition' do
|
75
|
+
po = test_data['po']['number']
|
76
|
+
puts " -> Pesquisando P.Order: #{po}"
|
77
|
+
details = conn.po_detail(po)
|
78
|
+
|
79
|
+
expect(details).not_to be_nil
|
80
|
+
expect(details.class).to be(Array)
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'gets purchase requisition Release Strategy info' do
|
84
|
+
po = test_data['po']['number']
|
85
|
+
details = conn.po_release_strategy_info(po)
|
86
|
+
|
87
|
+
expect(details).not_to be_nil
|
88
|
+
expect(details.class).to be(Array)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
end
|
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.
|
4
|
+
version: 0.4.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rogerio Nascimento
|
@@ -46,6 +46,38 @@ extensions: []
|
|
46
46
|
extra_rdoc_files: []
|
47
47
|
files:
|
48
48
|
- lib/helper/rfc_helper.rb
|
49
|
+
- lib/helper/util_helper.rb
|
50
|
+
- lib/po_detail/all.rb
|
51
|
+
- lib/po_detail/po_account.rb
|
52
|
+
- lib/po_detail/po_addrdelivery.rb
|
53
|
+
- lib/po_detail/po_all_versions.rb
|
54
|
+
- lib/po_detail/po_components.rb
|
55
|
+
- lib/po_detail/po_cond.rb
|
56
|
+
- lib/po_detail/po_cond_header.rb
|
57
|
+
- lib/po_detail/po_confirmation.rb
|
58
|
+
- lib/po_detail/po_contract_limits.rb
|
59
|
+
- lib/po_detail/po_exp_imp_header.rb
|
60
|
+
- lib/po_detail/po_exp_imp_item.rb
|
61
|
+
- lib/po_detail/po_extension_out.rb
|
62
|
+
- lib/po_detail/po_header.rb
|
63
|
+
- lib/po_detail/po_history.rb
|
64
|
+
- lib/po_detail/po_history_ma.rb
|
65
|
+
- lib/po_detail/po_history_totals.rb
|
66
|
+
- lib/po_detail/po_inv_plan_header.rb
|
67
|
+
- lib/po_detail/po_inv_plan_item.rb
|
68
|
+
- lib/po_detail/po_item.rb
|
69
|
+
- lib/po_detail/po_limits.rb
|
70
|
+
- lib/po_detail/po_partner.rb
|
71
|
+
- lib/po_detail/po_schedule.rb
|
72
|
+
- lib/po_detail/po_serial_number.rb
|
73
|
+
- lib/po_detail/po_services.rb
|
74
|
+
- lib/po_detail/po_shipping_exp.rb
|
75
|
+
- lib/po_detail/po_srv_access_values.rb
|
76
|
+
- lib/po_detail/po_text_header.rb
|
77
|
+
- lib/po_detail/po_text_item.rb
|
78
|
+
- lib/po_release_info/all.rb
|
79
|
+
- lib/po_release_info/po_release_final.rb
|
80
|
+
- lib/preq_detail/all.rb
|
49
81
|
- lib/preq_detail/preq_acct_assignment.rb
|
50
82
|
- lib/preq_detail/preq_contract_limits.rb
|
51
83
|
- lib/preq_detail/preq_item.rb
|
@@ -54,6 +86,7 @@ files:
|
|
54
86
|
- lib/preq_detail/preq_services_texts.rb
|
55
87
|
- lib/preq_detail/preq_srv_accass_values.rb
|
56
88
|
- lib/preq_detail/preq_text.rb
|
89
|
+
- lib/preq_release_info/all.rb
|
57
90
|
- lib/preq_release_info/preq_gen_release_info.rb
|
58
91
|
- lib/preq_release_info/preq_release_final.rb
|
59
92
|
- lib/preq_release_info/preq_release_posted.rb
|
@@ -61,6 +94,7 @@ files:
|
|
61
94
|
- lib/read_table/table_column.rb
|
62
95
|
- lib/return.rb
|
63
96
|
- lib/rnsap.rb
|
97
|
+
- lib/rnsap_spec.rb
|
64
98
|
homepage: https://github.com/rnasc/rnsap
|
65
99
|
licenses:
|
66
100
|
- MIT
|