rnsap 0.1.1

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 (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/rnsap.rb +110 -0
  3. metadata +58 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: c994f925948decacaeceb5a8aed06dc8c4de7316455e438f6dcfb5ce481a46aa
4
+ data.tar.gz: 77e7fdcae6a5d19ebcc8ec39067b5f78a8089bdaf55fa1bc9c78a9eb8fbb8cbe
5
+ SHA512:
6
+ metadata.gz: ee051496fccf066f70914a00d162ee7791a92beb1effb248651b22ebc2f43d63837b3619d3b3b6c7bd06fd4df5ff916c30b67f86dd0177c0e4d29a3cc07c5209
7
+ data.tar.gz: 438b966fd2628cadc850712f3e9877d9bcb12c11d7f30a2e97c6b16d490cfdcc923b9fe9910e37d24b9c919bc6345ac90f11695856f50b2fc4e561c25eab8598
data/lib/rnsap.rb ADDED
@@ -0,0 +1,110 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'nwrfc'
4
+ require 'json'
5
+ require 'yaml'
6
+
7
+ include NWRFC
8
+
9
+ module RnSap
10
+ class RnSap
11
+ attr_accessor conn
12
+
13
+ def initialize(_conn_parms)
14
+ conn = Connection.new(logon_info)
15
+ end
16
+
17
+ def read_table(name, fields, _clause)
18
+ klass_name = name.capitalize
19
+ fields_up = []
20
+ fields_down = []
21
+ fields.each do |field|
22
+ fields_up << field.upcase
23
+ fields_down << field.downcase
24
+ end
25
+ base_obj = get_class_instance(klass_name, fields_down)
26
+
27
+ #-- Read Table
28
+ # logon_info = { 'user' => 'user',
29
+ # 'passwd' => 'password',
30
+ # # 'trace' => 2,
31
+ # 'client' => '100',
32
+ # 'ashost' => 'server.com',
33
+ # 'sysnr' => '00' }
34
+ fn_read_table = conn.get_function('RFC_READ_TABLE')
35
+ fc_read_table = fn_read_table.get_function_call
36
+
37
+ fc_read_table[:QUERY_TABLE] = name.upcase
38
+ fields_up.each do |field|
39
+ row = fc_read_table[:FIELDS].new_row
40
+ row[:FIELDNAME] = field
41
+ end
42
+
43
+ fc_read_table.invoke
44
+
45
+ # columns = []
46
+ columns_hash = {}
47
+ fc_read_table[:FIELDS].each do |row|
48
+ column = TableColumn.new
49
+ column.field_name = row[:FIELDNAME]
50
+ column.offset = row[:OFFSET]
51
+ column.length = row[:LENGTH]
52
+ column.type = row[:TYPE]
53
+ column.description = row[:FIELDTEXT]
54
+ # dump_instance_variables(column)
55
+ # columns << column
56
+ columns_hash[column.field_name] = column
57
+ end
58
+
59
+ # dump_instance_variables(columns_hash)
60
+
61
+ list = []
62
+ fc_read_table[:DATA].each do |row|
63
+ obj = Object.const_set(klass_name, base_obj.class).new
64
+ wa = row[:WA]
65
+ fields_down.each do |field|
66
+ column = columns_hash[field.upcase]
67
+ value = wa[column.offset.to_i, column.length.to_i]
68
+ eval("obj.#{field} = '#{value}'")
69
+ end
70
+ list << obj
71
+ end
72
+
73
+ # dump_instance_variables(list)
74
+
75
+ # obj2 = Object.const_set(klass_name, obj.class).new
76
+ # eval "obj2.#{fields.first.downcase} = 'A'"
77
+ # eval "obj2.#{fields.second.downcase} = 'B'"
78
+ # dump_instance_variables(obj2)
79
+ # fields.each do |field|
80
+ # field = field.downcase
81
+ # eval("puts obj.#{field}")
82
+ # end
83
+
84
+ # obj2.instance_variables.map do |var|
85
+ # puts " ..#{[var, obj2.instance_variable_get(var)].join(':')}"
86
+ # end
87
+ list
88
+ end
89
+
90
+ def dump_instance_variables(obj)
91
+ puts "Class: #{obj.class} -> #{obj}"
92
+ obj.instance_variables.map do |var|
93
+ puts " ..#{[var, obj.instance_variable_get(var)].join(':')}"
94
+ end
95
+ end
96
+
97
+ def get_class_instance(name, fields)
98
+ # puts "Class name: #{name}"
99
+ klass = Object.const_set(name, Class.new).new # , Struct.new(*attributes)
100
+ fields.each do |field|
101
+ klass.class.module_eval { attr_accessor field.downcase }
102
+ end
103
+ klass
104
+ end
105
+ end
106
+
107
+ class TableColumn
108
+ attr_accessor :field_name, :offset, :length, :type, :description
109
+ end
110
+ end
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rnsap
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Rogerio Nascimento
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-04-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nwrfc
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.0.9
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.9
27
+ description: ''
28
+ email:
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/rnsap.rb
34
+ homepage: https://github.com/rnasc/rnsap
35
+ licenses:
36
+ - MIT
37
+ metadata:
38
+ source_code_uri: https://github.com/rnasc/rnsap
39
+ post_install_message:
40
+ rdoc_options: []
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ required_rubygems_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ requirements: []
54
+ rubygems_version: 3.0.1
55
+ signing_key:
56
+ specification_version: 4
57
+ summary: Facilitates SAP RFC calls in Ruby
58
+ test_files: []