Class: SAPNW::RFC::FunctionCall

Inherits:
Object
  • Object
show all
Defined in:
lib/sapnwrfc/functions.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(fd = nil) ⇒ FunctionCall

These are automatically created as a result of SAPNW::RFC::FunctionDescriptor#new_function_call() - do not instantiate these yourself!

SAPNW::RFC::FunctionCall objects allow dynamic method calls of parameter, and table names for the setting and getting of interface values eg:

fd = conn.discover("RFC_READ_TABLE")
f = fd.new_function_call
f.QUERY_TABLE = "T000" # <- QUERY_TABLE is a dynamic method serviced by method_missing

def initialize(fd=nil)



130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/sapnwrfc/functions.rb', line 130

def initialize(fd=nil)
  @parameters = {}
  if fd == nil
    @function_descriptor.parameters.each_pair do |k, v|
      @parameters[k] = v.clone
    end
  else
    fd.parameters.each_pair do |k, v|
      @parameters[k] = v.clone
    end
  end
  @parameters_list = @parameters.values || []
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(methid, *rest) ⇒ Object

dynamic method calls for parameters and tables



160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# File 'lib/sapnwrfc/functions.rb', line 160

def method_missing(methid, *rest)
  meth = methid.id2name
  #$stderr.print "method_missing: #{meth}\n"
  #$stderr.print "parameters: #{@parameters.keys.inspect}\n"
  if @parameters.has_key?(meth)
    #$stderr.print "return parm obj\n"
    return @parameters[meth].value
  elsif mat = /^(.*?)\=$/.match(meth)
    #$stderr.print "return parm val\n"
    if  @parameters.has_key?(mat[1])
      return @parameters[mat[1]].value = rest[0]
    else
      raise NoMethError
    end
  else
    raise NoMethodError
  end
end

Instance Attribute Details

#function_descriptorObject (readonly)

Returns the value of attribute function_descriptor.



119
120
121
# File 'lib/sapnwrfc/functions.rb', line 119

def function_descriptor
  @function_descriptor
end

#nameObject (readonly)

Returns the value of attribute name.



119
120
121
# File 'lib/sapnwrfc/functions.rb', line 119

def name
  @name
end

#parametersObject (readonly)

Returns the value of attribute parameters.



119
120
121
# File 'lib/sapnwrfc/functions.rb', line 119

def parameters
  @parameters
end

Instance Method Details

#activate(parm = nil) ⇒ Object

activate a parameter - parameters are active by default so it is unlikely that this would ever need to be called.



146
147
148
149
# File 'lib/sapnwrfc/functions.rb', line 146

def activate(parm=nil)
  raise "Parameter not found: #{parm}\n" unless @parameters.has_key?(parm)
  return set_active(parm, 1)
end

#deactivate(parm = nil) ⇒ Object

deactivate a parameter - parameters can be deactivated for a function call, to reduce the amount of RFC traffic on the wire. This is especially important for unrequired tables, or parameters that are similar sources of large data transfer.



154
155
156
157
# File 'lib/sapnwrfc/functions.rb', line 154

def deactivate(parm=nil)
  raise "Parameter not found: #{parm}\n" unless @parameters.has_key?(parm)
  return set_active(parm, 0)
end