The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

SAP::Iface - Perl extension for parsing and creating an Interface Object. The interface object would then be passed to the SAP::Rfc object to carry out the actual call, and return of values.

SYNOPSIS

  use SAP::Iface;
  $iface = new SAP::Iface( NAME =>"RFCNAME" );
  NAME is mandatory.

or more commonly:

  use SAP::Rfc;
  $rfc = new SAP::Rfc( ASHOST => ... );
  $iface = $rfc->discover('RFC_READ_REPORT');

DESCRIPTION

This class is used to construct a valid interface object ( SAP::Iface.pm ). The constructor requires the parameter value pairs to be passed as hash key values ( see SYNOPSIS ). Generally you would not create one of these manually as it is far easier to use the "discovery" functionality of the SAP::Rfc->discover("RFCNAME") method. This returns a fully formed interface object. This is achieved by using standard RFCs supplied by SAP to look up the definition of an RFC interface and any associated structures.

METHODS

new()

  use SAP::Iface;
  $iface = new SAP::Iface( NAME =>"RFC_READ_TABLE" );
  Create a new Interface object.

PARM_NAME()

  $iface->PARM_NAME(' new value ')
  Parameters and tables are autoloaded methods - than can be accessed 
  like this to set and get their values.

RFCTYPE_CHAR()

  Autoloaded methods are provided for all the constant definitions 
  relating to SAP parameter types.

name()

  Return the name of an interface.

addParm()

  $iface->addParm(
                 TYPE => SAP::Iface->RFCEXPORT,
                 INTYPE => SAP::Iface->RFCTYPE_CHAR,
                 NAME => 'A_NAME', 
                 STRUCTURE =>
                    $rfc->structure('NAME_OF_STRUCTURE'), 
                 DEFAULT => 'the default value',
                 VALUE => 'the current value',
                 DECIMALS => 0,
                 LEN => 20 );
  Add an RFC interface parameter to the SAP::Iface definition 
  - see SAP::Parm.

parm()

  $iface->parm('PARM_NAME');
  Return a reference to a named parameter object.

parms()

  Return a list of parameter objects for an interface.

addTab()

  $iface->addTab(
                INTYPE => SAP::Iface->RFCTYPE_BYTE, 
                 NAME => 'NAME_OF_TABLE',
                 STRUCTURE =>
                     $rfc->structure('NAME_OF_STRUCTURE'), 
                 LEN => 35 );
  Add an RFC interface table definition to the SAP::Iface object 
    - see SAP::Tab.

isTab()

  $iface->isTab('TAB_NAME');
  Returns true if the named parameter is a table.

tab()

  $iface->tab('TAB_NAME');
  Return a reference to the named table object - see SAP::Tab.

tabs()

  Return a list of table objects for the SAP::Iface object.

emptyTables()

  Empty the contents of all the tables on a SAP::Iface object.

addException()

  $iface->addException('EXCEPTION_NAME');
  Add an exception name to the interface.

exception()

  $iface->exception('EXCEPTION_NAME');
  Return the named exception name - basically I dont do anything with 
  exceptions yet except keep a list of names that could be checked
  against an RFC failure return code.

exceptions()

  Return a list of exception names associated with a SAP::Iface object.

reset()

  Empty all the tables and reset paramters to their default values - 
  useful when you are doing multiple calls.

iface()

  An internal method that generates the internal structure passed into 
  the C routines.

handler()

  return a reference to the callback handler for registered RFC 

sysinfo()

  return a hash ref containing the system info for the current 
  registered RFC callback

NAME

SAP::Tab - Perl extension for parsing and creating Tables to be added to an RFC Iface.

SYNOPSIS

  use SAP::Tab;
  $tab1 = new SAP::Tab( 
                INTYPE => SAP::Iface->RFCTYPE_BYTE, 
                 NAME => 'NAME_OF_TABLE',
                 STRUCTURE =>
                     $rfc->structure('NAME_OF_STRUCTURE'), 
                 LEN => 35 );

DESCRIPTION

This class is used to construct a valid Table object to be add to an interface object ( SAP::Iface.pm ). The constructor requires the parameter value pairs to be passed as hash key values ( see SYNOPSIS ).

METHODS

new()

  use SAP::Tab;
  $tab1 = new SAP::Tab(
                INTYPE => SAP::Iface->RFCTYPE_BYTE, 
                 NAME => 'NAME_OF_TABLE',
                 STRUCTURE =>
                     $rfc->structure('NAME_OF_STRUCTURE'), 
                 LEN => 35 );

rows()

  @r = $tab1->rows( [ row1, row2, row3 .... ] );
  optionally set and Give the current rows of a table.

  or:
  $tab1->rows( [ { TEXT => "NAME LIKE 'SAPL\%RFC\%'", .... } ] );
  pass in a list of hash refs where each hash ref is the key value pairs 
  of the table structures fields ( as per the DDIC ).

addRow()

  Add a row to the table contents.

hashRows()

  @r = $tab1->hashRows;
  This returns an array of hashes representing each row of a table.  
  The hashes are fieldname/value pairs of the row structure.

nextRow()

  shift the first row off the table contents, and return a hash ref of 
  the field values as per the table structure.

rowCount()

  $c = $tab1->rowCount();
  return the current number of rows in a table object.

empty()

  empty the row out of the table.

name()

  get the name of the table object.

intype()

  Set or get the internal table type.

leng()

  Set or get the table row length.

structure()

  Set or get the structure object of the table - see SAP::Struct.

NAME

SAP::Parms - Perl extension for parsing and creating an SAP parameter to be added to an RFC Interface.

SYNOPSIS

  use SAP::Parms;
  $imp1 = new SAP::Parms(
                 TYPE => SAP::Iface->RFCEXPORT,
                 INTYPE => SAP::Iface->RFCTYPE_CHAR,
                 NAME => 'A_NAME', 
                 STRUCTURE =>
                    $rfc->structure('NAME_OF_STRUCTURE'), 
                 DEFAULT => 'the default value',
                 VALUE => 'the current value',
                 DECIMALS => 0,
                 LEN => 20 );

DESCRIPTION

This class is used to construct a valid parameter to add to an interface object ( SAP::Iface.pm ). The constructor requires the parameter value pairs to be passed as hash key values ( see SYNOPSIS ).

METHODS

new()

  use SAP::Parms;
  $imp1 = new SAP::Parms(
                 TYPE => SAP::Iface->RFCEXPORT,
                 INTYPE => SAP::Iface->RFCTYPE_CHAR,
                 NAME => 'A_NAME', 
                 STRUCTURE =>
                    $rfc->structure('NAME_OF_STRUCTURE'), 
                 DEFAULT => 'the default value',
                 VALUE => 'the current value',
                 DECIMALS => 0,
                 LEN => 20 );

value()

  $v = $imp1->value( [ val ] );
  optionally set and Give the current value.

  or - pass in a hash ref where the hash ref contains  key/value pairs
  for the fields in the complex parameters structure ( as per the DDIC ).

type()

  $t = $imp1->type( [ type ] );
  optionally set and Give the current value of type - this denotes 
  whether this is an export or import parameter.

decimals()

  Set or get the decimals place of the parameter.

intype()

  Set or get the internal type ( as required by librfc ).

intvalue()

  An internal method for translating the value of a parameter into 
  the required native C format.

default()

    Set or get the place holder for the default value of a paramter 
    - in order to reset the value of a parameter to the default you 
    need to $p->value( $p->default );
    This is really an internal method that $iface->reset calls on 
    each parameter.

structure()

  Set or get the structure object for a parameter - not all 
  parameters will have an associated structures - only complex 
  ones.  See SAP::Struc.

leng()

  Set or get the length attribute of a parameter.

name()

  Get the name of a parameter object.

NAME

SAP::Struc - Perl extension for parsing and creating a Structure definition. The resulting structure object is then used for SAP::Parms, and SAP::Tab objects to manipulate complex data elements.

SYNOPSIS

  use SAP::Struc;
  $struct = new SAP::Struc( NAME => XYZ, FIELDS => [......] );

DESCRIPTION

This class is used to construct a valid structure object - a structure object that would be used in an Export(Parms), Import(Parms), and Table(Tab) object ( SAP::Iface.pm ). This is normally done through the SAP::Rfc->structure('STRUCT_NAME') method that does an auto look up of the data dictionary definition of a structure. The constructor requires the parameter value pairs to be passed as hash key values ( see SYNOPSIS ). The value of each field can either be accessed through $str->fieldValue(field1), or through the autoloaded method of the field name eg. $str->FIELD1().

METHODS

new()

  use SAP::Struc;
  $str = new SAP::Struc( NAME => XYZ );

addField()

  use SAP::Struc;
  $str = new SAP::Struc( NAME => XYZ );
  $str->addField( NAME => field1,
                  INTYPE => chars );
  add a new field into the structure object.  The field is given a 
  position counter of the number of the previous number of fields + 1.
  Name is mandatory, but type will be defaulted to chars if omitted.

deleteField()

  use SAP::Struc;
  $str = new SAP::Struc( NAME => XYZ );
  $str->addField( NAME => field1,
                  INTYPE => chars );
  $str->deleteField('field1');
  Allow fields to be deleted from a structure.

name()

  $name = $str->name();
  Get the name of the structure.

fieldName()

  Get the field name by position in the structure - $s->fieldName( 3 ).

fieldType()

  $ftype = $str->fieldType(field1, [ new field type ]);
  Set/Get the SAP BC field type of a component field of the structure.
  This will force the overall value of the structure to be recalculated.

value()

  $fvalue = $str->value('new value');
  Set/Get the value of the whole structure.

hash()

  $val = $str->hash();
  Get a hash of the values of the whole structure (current value).

fieldValue()

  $fvalue = $str->fieldValue(field1,
                          [new component value]);
  Set/Get the value of a component field of the structure.  This will 
  force the overall value of the structure to be recalculated.

fields()

  @f = $struct->fields();
  Return an array of the fields of a structure sorted in positional
  order.

Exported constants

  NONE

AUTHOR

Piers Harding, saprfc@ompa.net

But Credit must go to all those that have helped.

SEE ALSO

perl(1), SAP(3), SAP::Rfc(3), SAP::Iface(3)