rnsap 0.4.12 → 0.4.17
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/auth.rb +131 -0
- data/lib/currency.rb +35 -0
- data/lib/preq_release_items/all.rb +1 -0
- data/lib/preq_release_items/requisition_items.rb +174 -0
- data/lib/rnsap.rb +75 -2
- metadata +9 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 518529f9e547d8d03ddb437b6d47c252f4308cf041ba4433abdca14c5b996e4a
|
4
|
+
data.tar.gz: 9386f9252f74b52f5a8c428829903492001b75db909f072021833d2e21121851
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7227e483f630884901000f031f846b97f24b4d9697362c534a29707dcb80cd0a95881bd16ce99165959f70e45a4b5eb65feb959048928b5f3408126222fd5fec
|
7
|
+
data.tar.gz: 60b5d19b5f5a3b0cfb4e21a1daddfcda9ce8c048496dfe3566236fc0ef4e8bf14b5525e4b55a84d83a59acc46fc7e2d2fb049450f96793632b908532f90e9216
|
data/lib/auth.rb
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
# Class to handle authorization related SAP information
|
2
|
+
# @author Rogerio Nascimento (26/03/2021)
|
3
|
+
class Auth
|
4
|
+
|
5
|
+
# Return a list of users with authorization
|
6
|
+
# for an object
|
7
|
+
# @param json containing authorization object and optionaly
|
8
|
+
# the tuples with field and value to be checked
|
9
|
+
# @return [Array] an array of strings with the list of users
|
10
|
+
def self.for_object(*options)
|
11
|
+
users = []
|
12
|
+
conn, obj, field1, value1, field2, value2 = validate_options(options)
|
13
|
+
return users unless conn && obj
|
14
|
+
|
15
|
+
## Busca o AUTH na tabela UST12
|
16
|
+
ust12_list = Auth.auth_list(conn, obj, field1, value1, field2, value2)
|
17
|
+
return users unless ust12_list
|
18
|
+
|
19
|
+
## Busca o PROFN na tabela UST10S
|
20
|
+
ust10s_list = Auth.profile_list(conn, obj, ust12_list)
|
21
|
+
|
22
|
+
## Busca os Usuários na tabela UST04
|
23
|
+
Auth.user_list(conn, obj, ust10s_list)
|
24
|
+
end
|
25
|
+
|
26
|
+
#
|
27
|
+
# Select Authorization roles for the Profile
|
28
|
+
# @param list List of profiles to be searched
|
29
|
+
# @return Array<string> with list of authorizations
|
30
|
+
def self.profiles_for_composite(conn, list = [])
|
31
|
+
return [] if list.empty?
|
32
|
+
|
33
|
+
fname = conn.conn.get_function('SIAG_PROF_GET_AUTH')
|
34
|
+
fcall = fname.get_function_call
|
35
|
+
|
36
|
+
fcall[:IV_PROFILE_TYPE] = 'C'
|
37
|
+
list.each do |prof|
|
38
|
+
row = fcall[:IT_PROFILE_RANGE].new_row
|
39
|
+
row[:SIGN] = 'I'
|
40
|
+
row[:OPTION] = 'EQ'
|
41
|
+
row[:LOW] = prof
|
42
|
+
end
|
43
|
+
|
44
|
+
fcall.invoke
|
45
|
+
|
46
|
+
ret = []
|
47
|
+
fcall[:ET_COMPOSITE_PROFILE].each do |row|
|
48
|
+
ret.push(row[:SINGLE_PROFILE])
|
49
|
+
end
|
50
|
+
|
51
|
+
ret
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def self.validate_options(options)
|
58
|
+
return [] if options.empty?
|
59
|
+
params = options.first
|
60
|
+
|
61
|
+
conn = params[:conn]
|
62
|
+
obj = params[:obj]
|
63
|
+
|
64
|
+
return [] unless conn && obj
|
65
|
+
return [] unless conn.class.name == 'RnSap::Sap'
|
66
|
+
|
67
|
+
field1 = params[:field1]
|
68
|
+
value1 = params[:value1]
|
69
|
+
field2 = params[:field2]
|
70
|
+
value2 = params[:value2]
|
71
|
+
|
72
|
+
[conn, obj, field1, value1, field2, value2]
|
73
|
+
end
|
74
|
+
|
75
|
+
def self.auth_list( conn, obj, field1, value1, field2, value2)
|
76
|
+
|
77
|
+
fields = ['AUTH']
|
78
|
+
filter = ["OBJCT = '#{obj}' "]
|
79
|
+
if field1 && value1
|
80
|
+
filter.push(" AND ( FIELD = '#{field1}' AND ( VON = '*' OR VON = '#{value1}' ) ")
|
81
|
+
if field2 && value2
|
82
|
+
filter.push(" OR FIELD = '#{field2}' AND ( VON = '*' OR VON = '#{value2}' ) )")
|
83
|
+
else
|
84
|
+
filter.push( ')')
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
conn.read_table('UST12', fields, filter)
|
89
|
+
end
|
90
|
+
|
91
|
+
def self.profile_list( conn, obj, ust12_list)
|
92
|
+
sap_all = 'SAP_ALL'
|
93
|
+
profiles = Auth.profiles_for_composite(conn, [sap_all])
|
94
|
+
profiles.push(sap_all)
|
95
|
+
|
96
|
+
fields = ['PROFN']
|
97
|
+
filter = ["OBJCT = '#{obj}' AND AUTH IN ("]
|
98
|
+
profiles.each do |prof|
|
99
|
+
filter.push( "'#{prof}' , ")
|
100
|
+
end
|
101
|
+
ust12_list.each do |ust|
|
102
|
+
filter.push( "'#{ust.auth}' , ")
|
103
|
+
end
|
104
|
+
filter = filter.uniq
|
105
|
+
|
106
|
+
new_last = "#{filter.last[0..(filter.last.length - 4)]} )"
|
107
|
+
filter = filter[0..-1].push(new_last)
|
108
|
+
|
109
|
+
conn.read_table('UST10S', fields, filter)
|
110
|
+
end
|
111
|
+
|
112
|
+
def self.user_list(conn, obj, ust10s_list)
|
113
|
+
users = []
|
114
|
+
fields = ['BNAME']
|
115
|
+
filter = ['PROFILE IN (']
|
116
|
+
filter.push("'SAP_ALL' , ")
|
117
|
+
ust10s_list.each do |ust|
|
118
|
+
filter.push("'#{ust.profn}' , ")
|
119
|
+
end
|
120
|
+
new_last = "#{filter.last[0..(filter.last.length - 4)]} )"
|
121
|
+
filter = filter[0..-1].push(new_last)
|
122
|
+
|
123
|
+
ust04_list = conn.read_table('UST04', fields, filter)
|
124
|
+
|
125
|
+
ust04_list.each do |ust|
|
126
|
+
users.push( ust.bname )
|
127
|
+
end
|
128
|
+
|
129
|
+
users.uniq.sort
|
130
|
+
end
|
131
|
+
end
|
data/lib/currency.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
class Currency
|
2
|
+
|
3
|
+
def self.convert_amount_from_to(conn, amount, from_curr, to_curr, date)
|
4
|
+
convert_currency_amount({conn: conn, amount: amount, from_curr: from_curr, to_curr: to_curr, date: date})
|
5
|
+
end
|
6
|
+
def self.convert_currency_amount(*options)
|
7
|
+
|
8
|
+
return 0.0 unless options
|
9
|
+
return 0.0 unless options.class == Array
|
10
|
+
|
11
|
+
params = options.first
|
12
|
+
|
13
|
+
rate_type = params[:rate_type] ? params[:rate_type] : 'M'
|
14
|
+
date = params[:date] ? params[:date] : Date.today
|
15
|
+
conn = params[:conn]
|
16
|
+
from_curr = params[:from_curr]
|
17
|
+
to_curr = params[:to_curr]
|
18
|
+
amount = params[:amount]
|
19
|
+
|
20
|
+
return 0.0 unless (conn && from_curr && to_curr && amount)
|
21
|
+
|
22
|
+
fname = conn.conn.get_function('RPM_CONVERT_CURRENCY_AMOUNT')
|
23
|
+
fcall = fname.get_function_call
|
24
|
+
|
25
|
+
fcall[:IV_RATE_TYPE] = rate_type
|
26
|
+
fcall[:DATE] = date
|
27
|
+
fcall[:IV_FROM_CURR] = from_curr
|
28
|
+
fcall[:IV_TO_CURR] = to_curr
|
29
|
+
fcall[:IV_AMOUNT] = amount
|
30
|
+
|
31
|
+
fcall.invoke
|
32
|
+
|
33
|
+
fcall[:EV_AMOUNT].to_f
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'preq_release_items/requisition_items'
|
@@ -0,0 +1,174 @@
|
|
1
|
+
class RequisitionItems
|
2
|
+
# @return [String] Purchase Requisition Number
|
3
|
+
attr_accessor :preq_no
|
4
|
+
# @return [Integer] Item number of purchase requisition
|
5
|
+
attr_accessor :preq_item
|
6
|
+
# @return [String] Purchase Requisition Document Type
|
7
|
+
attr_accessor :doc_type
|
8
|
+
# @return [String] Purchasing Group
|
9
|
+
attr_accessor :pur_group
|
10
|
+
# @return [String] Name of Person Who Created the Object
|
11
|
+
attr_accessor :created_by
|
12
|
+
# @return [String] Name of requisitioner/requester
|
13
|
+
attr_accessor :preq_name
|
14
|
+
# @return [Date] Requisition (Request) Date
|
15
|
+
attr_accessor :preq_date
|
16
|
+
# @return [String] Short Text
|
17
|
+
attr_accessor :short_text
|
18
|
+
# @return [String] Material Number
|
19
|
+
attr_accessor :material
|
20
|
+
# @return [String] Material number corresponding to manufacturer part number
|
21
|
+
attr_accessor :pur_mat
|
22
|
+
# @return [String] Plant
|
23
|
+
attr_accessor :plant
|
24
|
+
# @return [String] Storage Location
|
25
|
+
attr_accessor :store_loc
|
26
|
+
# @return [String] Requirement Tracking Number
|
27
|
+
attr_accessor :trackingno
|
28
|
+
# @return [String] Material Group
|
29
|
+
attr_accessor :mat_grp
|
30
|
+
# @return [String] Supplying (issuing) plant in case of stock transport order
|
31
|
+
attr_accessor :suppl_plnt
|
32
|
+
# @return [Float] Purchase requisition quantity
|
33
|
+
attr_accessor :quantity
|
34
|
+
# @return [Integer] Purchase requisition unit of measure
|
35
|
+
attr_accessor :unit
|
36
|
+
# @return [String] Date type (day, week, month, interval)
|
37
|
+
attr_accessor :del_datcat
|
38
|
+
# @return [Date] Item delivery date
|
39
|
+
attr_accessor :deliv_date
|
40
|
+
# @return [Date] Purchase Requisition Release Date
|
41
|
+
attr_accessor :rel_date
|
42
|
+
# @return [Float] Goods receipt processing time in days
|
43
|
+
attr_accessor :gr_pr_time
|
44
|
+
# @return [Float] Price in purchase requisition
|
45
|
+
attr_accessor :c_amt_bapi
|
46
|
+
# @return [Float] Price unit
|
47
|
+
attr_accessor :price_unit
|
48
|
+
# @return [String] Item category in purchasing document
|
49
|
+
attr_accessor :item_cat
|
50
|
+
# @return [String] Account Assignment Category
|
51
|
+
attr_accessor :acctasscat
|
52
|
+
# @return [String] Distribution indicator for multiple account assignment
|
53
|
+
attr_accessor :distrib
|
54
|
+
# @return [String] Partial invoice indicator
|
55
|
+
attr_accessor :part_inv
|
56
|
+
# @return [String] Goods Receipt Indicator
|
57
|
+
attr_accessor :gr_ind
|
58
|
+
# @return [String] Goods Receipt, Non-Valuated
|
59
|
+
attr_accessor :gr_non_val
|
60
|
+
# @return [String] Invoice receipt indicator
|
61
|
+
attr_accessor :ir_ind
|
62
|
+
# @return [String] Required Vendor
|
63
|
+
attr_accessor :des_vendor
|
64
|
+
# @return [String] Fixed vendor
|
65
|
+
attr_accessor :fixed_vend
|
66
|
+
# @return [String] Purchasing Organization
|
67
|
+
attr_accessor :purch_org
|
68
|
+
# @return [String] Number of principal purchase agreement
|
69
|
+
attr_accessor :agreement
|
70
|
+
# @return [Integer] Item number of principal purchase agreement
|
71
|
+
attr_accessor :agmt_item
|
72
|
+
# @return [String] Number of purchasing info record
|
73
|
+
attr_accessor :info_rec
|
74
|
+
# @return [String] Number of quota arrangement
|
75
|
+
attr_accessor :quota_arr
|
76
|
+
# @return [Integer] Quota arrangement item
|
77
|
+
attr_accessor :quotarritm
|
78
|
+
# @return [String] MRP Controller
|
79
|
+
attr_accessor :mrp_contr
|
80
|
+
# @return [String] BOM explosion number
|
81
|
+
attr_accessor :bomexpl_no
|
82
|
+
# @return [Date] Date of last resubmission
|
83
|
+
attr_accessor :last_resub
|
84
|
+
# @return [Float] Resubmission interval of purchase requisition
|
85
|
+
attr_accessor :resubmis
|
86
|
+
# @return [Float] Number of resubmissions
|
87
|
+
attr_accessor :no_resub
|
88
|
+
# @return [String] Valuation Type
|
89
|
+
attr_accessor :val_type
|
90
|
+
# @return [String] Special Stock Indicator
|
91
|
+
attr_accessor :spec_stock
|
92
|
+
# @return [Integer] Purchase Order Unit of Measure
|
93
|
+
attr_accessor :po_unit
|
94
|
+
# @return [String] Revision level
|
95
|
+
attr_accessor :rev_lev
|
96
|
+
# @return [Integer] Package number
|
97
|
+
attr_accessor :pckg_no
|
98
|
+
# @return [String] Kanban indicator
|
99
|
+
attr_accessor :kanban_ind
|
100
|
+
# @return [String] Use Requisition Price in Purchase Order
|
101
|
+
attr_accessor :po_price
|
102
|
+
# @return [Integer] Configuration (internal object number)
|
103
|
+
attr_accessor :int_obj_no
|
104
|
+
# @return [String] Promotion
|
105
|
+
attr_accessor :promotion
|
106
|
+
# @return [String] Batch Number
|
107
|
+
attr_accessor :batch
|
108
|
+
# @return [String] Material number used by vendor
|
109
|
+
attr_accessor :vend_mat
|
110
|
+
# @return [Float] Quantity ordered against this purchase requisition
|
111
|
+
attr_accessor :ordered
|
112
|
+
# @return [String] Currency Key
|
113
|
+
attr_accessor :currency
|
114
|
+
# @return [String] Mfr part profile
|
115
|
+
attr_accessor :manuf_prof
|
116
|
+
# @return [String] Manufacturer Part Number
|
117
|
+
attr_accessor :manu_mat
|
118
|
+
# @return [String] Manufacturer number
|
119
|
+
attr_accessor :mfr_no
|
120
|
+
# @return [String] External manufacturer code name or number
|
121
|
+
attr_accessor :mfr_no_ext
|
122
|
+
# @return [String] Category of delivery date
|
123
|
+
attr_accessor :del_datcat_ext
|
124
|
+
# @return [String] ISO Currency Code
|
125
|
+
attr_accessor :currency_iso
|
126
|
+
# @return [String] Item Category in Purchasing Document
|
127
|
+
attr_accessor :item_cat_ext
|
128
|
+
# @return [String] ISO code for unit of measure in purchase requisition
|
129
|
+
attr_accessor :preq_unit_iso
|
130
|
+
# @return [String] Order unit in ISO code
|
131
|
+
attr_accessor :po_unit_iso
|
132
|
+
# @return [String] Overall release of purchase requisitions
|
133
|
+
attr_accessor :general_release
|
134
|
+
# @return [String] Long Material Number for MATERIAL Field
|
135
|
+
attr_accessor :material_external
|
136
|
+
# @return [String] External GUID for MATERIAL Field
|
137
|
+
attr_accessor :material_guid
|
138
|
+
# @return [String] Version Number for MATERIAL Field
|
139
|
+
attr_accessor :material_version
|
140
|
+
# @return [String] Long Material Number for PUR_MAT Field
|
141
|
+
attr_accessor :pur_mat_external
|
142
|
+
# @return [String] External GUID for PUR_MAT Field
|
143
|
+
attr_accessor :pur_mat_guid
|
144
|
+
# @return [String] Version Number for PUR_MAT Field
|
145
|
+
attr_accessor :pur_mat_version
|
146
|
+
# @return [String] Purchase Requisition Blocked
|
147
|
+
attr_accessor :req_blocked
|
148
|
+
# @return [String] Reason for Item Block
|
149
|
+
attr_accessor :reason_blocking
|
150
|
+
# @return [String] Procuring Plant
|
151
|
+
attr_accessor :procuring_plant
|
152
|
+
# @return [String] Commitment Item
|
153
|
+
attr_accessor :cmmt_item
|
154
|
+
# @return [String] Funds Center
|
155
|
+
attr_accessor :funds_ctr
|
156
|
+
# @return [String] Fund
|
157
|
+
attr_accessor :fund
|
158
|
+
# @return [String] Document number for earmarked funds
|
159
|
+
attr_accessor :res_doc
|
160
|
+
# @return [Integer] Earmarked Funds: Document Item
|
161
|
+
attr_accessor :res_item
|
162
|
+
# @return [String] Functional Area
|
163
|
+
attr_accessor :func_area
|
164
|
+
# @return [String] Grant
|
165
|
+
attr_accessor :grant_nbr
|
166
|
+
# @return [String] Obsolete
|
167
|
+
attr_accessor :fund_long
|
168
|
+
# @return [String] FM: Budget Period
|
169
|
+
attr_accessor :budget_period
|
170
|
+
# @return [String] Material Number (40 Characters, needed f. technical reasons)
|
171
|
+
attr_accessor :material_long
|
172
|
+
# @return [String] Material number corresponding to MPN (technically required)
|
173
|
+
attr_accessor :pur_mat_long
|
174
|
+
end
|
data/lib/rnsap.rb
CHANGED
@@ -2,11 +2,14 @@
|
|
2
2
|
|
3
3
|
require 'nwrfc'
|
4
4
|
require 'read_table/table_column'
|
5
|
+
require 'auth'
|
6
|
+
require 'currency'
|
5
7
|
|
6
8
|
require 'return'
|
7
9
|
|
8
10
|
require 'preq_detail/all'
|
9
11
|
require 'preq_release_info/all'
|
12
|
+
require 'preq_release_items/all'
|
10
13
|
|
11
14
|
require 'po_detail/all'
|
12
15
|
require 'po_release_info/all'
|
@@ -161,6 +164,7 @@ module RnSap
|
|
161
164
|
value = wa[pos].to_f
|
162
165
|
eval("obj.#{field} = #{value}")
|
163
166
|
elsif DATE_TYPES.include?(column.type)
|
167
|
+
value = wa[pos]
|
164
168
|
if value.nil? || value == '00000000'
|
165
169
|
eval("obj.#{field} = nil")
|
166
170
|
else
|
@@ -298,6 +302,29 @@ module RnSap
|
|
298
302
|
end
|
299
303
|
end
|
300
304
|
|
305
|
+
def preq_release_items(group = '', code = '')
|
306
|
+
fname = @conn.get_function('BAPI_REQUISITION_GETITEMSREL')
|
307
|
+
fcall = fname.get_function_call
|
308
|
+
|
309
|
+
fcall[:REL_GROUP] = group
|
310
|
+
fcall[:REL_CODE] = code
|
311
|
+
fcall[:ITEMS_FOR_RELEASE] = 'X'
|
312
|
+
|
313
|
+
fcall.invoke
|
314
|
+
|
315
|
+
tb_return = get_object_list(fcall[:RETURN], Return)
|
316
|
+
requisition_items = get_object_list(fcall[:REQUISITION_ITEMS], RequisitionItems)
|
317
|
+
|
318
|
+
retcode = tb_return.detect{|r| r.type == 'E'}
|
319
|
+
|
320
|
+
if retcode
|
321
|
+
api_return_error(retcode)
|
322
|
+
else
|
323
|
+
api_return_success(requisition_items)
|
324
|
+
end
|
325
|
+
|
326
|
+
end
|
327
|
+
|
301
328
|
def po_detail(po = 0, acc_assignment = "", item_text = "", header_text = "", delivery_address = "", version = "", services = "", serialnumbers = "", invoiceplan = "")
|
302
329
|
#-- Execute BAPI_PO_GETDETAIL1
|
303
330
|
fn_po_detail = @conn.get_function('BAPI_PO_GETDETAIL1')
|
@@ -440,6 +467,43 @@ module RnSap
|
|
440
467
|
|
441
468
|
end
|
442
469
|
|
470
|
+
##
|
471
|
+
# Gets a list of users with authorization for a given
|
472
|
+
# authorization object and content
|
473
|
+
# @params:
|
474
|
+
# - obj [String] SAP authorization Object
|
475
|
+
# Ex: for Purchase Requisitions M_EINK_FRG
|
476
|
+
# - field1 [String] Object authorization's field.
|
477
|
+
# Ex: for Release Group FRGGR
|
478
|
+
# - value1 [String] Field Value
|
479
|
+
# Ex: any valid Release Group in the instalation
|
480
|
+
# - field2 [String] Object authorization's field.
|
481
|
+
# Ex: for Release Code FRGCO
|
482
|
+
# - value2 [String] Field Value
|
483
|
+
# Ex: any valid Release Code in the instalation
|
484
|
+
# @return [Array] Array of strings with the SAP userids
|
485
|
+
def users_for_auth_object(obj, field1, value1, field2, value2)
|
486
|
+
Auth.for_object(
|
487
|
+
conn: self,
|
488
|
+
obj: obj,
|
489
|
+
field1: field1,
|
490
|
+
value1: value1,
|
491
|
+
field2: field2,
|
492
|
+
value2: value2,
|
493
|
+
)
|
494
|
+
end
|
495
|
+
|
496
|
+
def currency_conversion(amount = 0.0, from_curr = 'EUR', to_curr = 'USD', date = Date.today)
|
497
|
+
Currency.convert_currency_amount(
|
498
|
+
conn: self,
|
499
|
+
amount: amount,
|
500
|
+
from_curr: from_curr,
|
501
|
+
to_curr: to_curr,
|
502
|
+
date: date
|
503
|
+
)
|
504
|
+
end
|
505
|
+
|
506
|
+
|
443
507
|
def api_return_success(obj=nil )
|
444
508
|
UtilHelper.api_return(0, 'Success!', obj)
|
445
509
|
end
|
@@ -452,10 +516,11 @@ module RnSap
|
|
452
516
|
UtilHelper.api_return(rc, message, obj, exception)
|
453
517
|
end
|
454
518
|
|
455
|
-
private
|
456
519
|
|
520
|
+
private
|
457
521
|
attr_writer :conn
|
458
522
|
|
523
|
+
|
459
524
|
# Dumps to the output the content of an object
|
460
525
|
def dump_instance_variables(obj)
|
461
526
|
puts "Class: #{obj.class} -> #{obj}"
|
@@ -464,6 +529,8 @@ module RnSap
|
|
464
529
|
end
|
465
530
|
end
|
466
531
|
|
532
|
+
KLASS_LIST = {}
|
533
|
+
|
467
534
|
# Dynamically returns a class instance with the name 'name' and with each
|
468
535
|
# of its fields as an attribute
|
469
536
|
# @param name [String] name of the intended class instance
|
@@ -471,7 +538,13 @@ module RnSap
|
|
471
538
|
# @return [Object] instance of the object 'Name'
|
472
539
|
def get_class_instance(name, fields)
|
473
540
|
# puts "Class name: #{name}"
|
474
|
-
|
541
|
+
pre_created = KLASS_LIST[name]
|
542
|
+
if pre_created
|
543
|
+
klass = pre_created.new
|
544
|
+
else
|
545
|
+
KLASS_LIST[name] = Object.const_set(name, Class.new)
|
546
|
+
klass = KLASS_LIST[name].new # , Struct.new(*attributes)
|
547
|
+
end
|
475
548
|
fields.each do |field|
|
476
549
|
klass.class.module_eval { attr_accessor field.downcase }
|
477
550
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rogerio Nascimento
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nwrfc
|
@@ -38,13 +38,15 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
description: By encapsulating SAPs NW RFC library calls, Ruby routines
|
42
|
-
|
41
|
+
description: By encapsulating SAPs NW RFC library calls, Ruby routines achieve SAP
|
42
|
+
bunsiness functionalitys power in a simpler manner
|
43
43
|
email:
|
44
44
|
executables: []
|
45
45
|
extensions: []
|
46
46
|
extra_rdoc_files: []
|
47
47
|
files:
|
48
|
+
- lib/auth.rb
|
49
|
+
- lib/currency.rb
|
48
50
|
- lib/helper/rfc_helper.rb
|
49
51
|
- lib/helper/util_helper.rb
|
50
52
|
- lib/po_detail/all.rb
|
@@ -91,6 +93,8 @@ files:
|
|
91
93
|
- lib/preq_release_info/preq_release_final.rb
|
92
94
|
- lib/preq_release_info/preq_release_posted.rb
|
93
95
|
- lib/preq_release_info/preq_release_prerequisites.rb
|
96
|
+
- lib/preq_release_items/all.rb
|
97
|
+
- lib/preq_release_items/requisition_items.rb
|
94
98
|
- lib/read_table/table_column.rb
|
95
99
|
- lib/return.rb
|
96
100
|
- lib/rnsap.rb
|
@@ -118,5 +122,5 @@ requirements: []
|
|
118
122
|
rubygems_version: 3.2.3
|
119
123
|
signing_key:
|
120
124
|
specification_version: 4
|
121
|
-
summary:
|
125
|
+
summary: Encapsulates SAP RFC calls in Ruby
|
122
126
|
test_files: []
|