rnsap 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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: []