The return value (structure) of ars_GetField has changed. I don't know exact 
version when this was changed.

This sub takes the return value of ars_GetField and returns an array. This sub 
is also compatible to the old structure returned in earlier versions of ARSPerl.

sub enum_values ($) {

  my $limit = $_[0]->{'limit'};
  my @values;
  if (ref($limit) eq 'HASH') {
    my $h = $limit->{'enumLimits'};
    if (ref($h) eq 'HASH') {
      if (defined($h->{'regularList'} )){
        my $z = $h->{'regularList'};
        @values = @$z;
      } elsif (defined($h->{'customList'} )){
        foreach my $item (@{$h->{'customList'}}){
          $values[$item->{'itemNumber'}] = $item->{'itemName'};
        }
      }
    } else {
      @values = @$h;
    }
  } else {
    @values = @$limit;
  }

  return @values;

} 

-----Ursprüngliche Nachricht-----
Von: Action Request System discussion list(ARSList) 
[mailto:[email protected]] Im Auftrag von kishorkv
Gesendet: Freitag, 12. Dezember 2008 23:32
An: [email protected]
Betreff: Please Help - my enumvals ARS Perl 1.91 Remedy 7.1

I am new to Perl and ARSPerl. I have experience in Java Working on upgrade 
project ARS 6.3 to 7.1 Upgrade.
I have started learning Perl and ARSPerl but NOT that good so far.

With Remedy 7.1 Perl api (1.91) and latest Active perl I get following error 
for my existing (6.3 working) perl script.
CGI Error
The specified CGI application misbehaved by not returning a complete set of 
HTTP headers.


My Perl script functions looks like this, after using log4perl and debuggin I 
got the point where I have the issue, it is getting enum values.
Line: my @enumvals = @{$fieldinfo->{limit}};

sub ARS_getreportformat {
   # returns a ptr to an array of ptrs (to arrays) containing display data for 
this view
   # NOTE: the returned data is sorted by display_order!!
   my $c = $_[0];
   my $view = $_[1];
   my $ret_form;
   my %ret_report_format;
   # get grid defintions
   my $form_def = "rdpv_grid_def";
   my $qualification = qq,'View Name' = "$view",;
   unless ($qual = ars_LoadQualifier($c, "$form_def", "$qualification")) {
       print "$ars_errstr\n";
        die;
   }
      %entries = ars_GetListEntry($c, "$form_def", $qual, 0, 0) ;
   print "Grid definition not found : $view \n" if scalar(%entries) == 0 ;
   
   # should only be one!!
   foreach $entryid(keys %entries) {
      unless (%fidvals = ars_GetEntry($c, "$form_def", "$entryid")) {
        print "$ars_errstr\n";
        die ;
      }
      $ret_report_format{display}{title} = $fidvals{536870913};
      $ret_report_format{display}{excel} = $fidvals{536870914};
      $ret_report_format{sql}{order} = $fidvals{536870915};
      $ret_report_format{display}{denote_new_sorted_val} = $fidvals{536870916};
      $ret_report_format{display}{javascript} = $fidvals{536870918};
      $ret_report_format{display}{percmain1} = $fidvals{536870919};
      }
   # get grid-column defintions
   my $form_cols = "rdpv_grid_def_cols";
   my $display_order_fid = 536870916;
   $qualification = qq,'View Name' = "$view",;
   unless ($qual = ars_LoadQualifier($c, "$form_cols", "$qualification")) {
        print "$ars_errstr\n";
        die;
   }
      %entries = ars_GetListEntry($c, "$form_cols", $qual, 0, 0);
   foreach $entryid(keys %entries) {
      unless (%fidvals = ars_GetEntry($c, "$form_cols", "$entryid")) {
                print "$ars_errstr\n";
                die;
      }
      $order = $fidvals{$display_order_fid};
      $ret_report_format{display}{columns}{$order}->{form} = 
$fidvals{536870913};
      $ret_report_format{display}{columns}{$order}->{field} = 
&RAD_fid_til_semi($fidvals{536870914});
      $ret_report_format{display}{columns}{$order}->{display_type} = 
$fidvals{536870915};

      # if enum, pass form and fid for reference
      if ($fidvals{536870915} eq "enum") {
              $fidvals{536870913};
              my $frs_para = $c;
              my $sec_para = $fidvals{536870913};
              my $thrd_para =
$ret_report_format{display}{columns}{$order}->{field};
        $ret_report_format{display}{columns}{$order}->{enum} = 
&ARS_getEnumVals($c, $fidvals{536870913}, 
$ret_report_format{display}{columns}{$order}->{field});
        }
      $ret_report_format{display}{columns}{$order}->{alternate_label} = 
$fidvals{536870917}; 
      $ret_report_format{display}{columns}{$order}->{special_instructions} = 
$fidvals{536870918};
      $ret_report_format{display}{columns}{$order}->{max_width} = 
$fidvals{536870919};
      $ret_report_format{display}{columns}{$order}->{wrap_at} = 
$fidvals{536870920};
      $ret_report_format{display}{columns}{$order}->{convert_to} = 
$fidvals{536870921};
      $ret_report_format{display}{columns}{$order}->{url} = $fidvals{536870924};
      $ret_report_format{display}{columns}{$order}->{sortorder} = 
$fidvals{536870925};
      $ret_report_format{display}{columns}{$order}->{sortedby} = 
$fidvals{536870926};
      $ret_form = $fidvals{536870913};
      }

   return ($ret_form, \%ret_report_format);
   }
   
   
   
   sub ARS_getEnumVals {
   my $xc = $_[0];
   my $xform = $_[1];
   my $xfid = $_[2];
      (my $fieldinfo = ars_GetField($xc, $xform, $xfid)) ||
            die "GetField: $ars_errstr";
   my @enumvals = @{$fieldinfo->{limit}};
   return (\...@enumvals);
        }

I did try different options but NO luck, I really appreciate if you can help me 
fix this issue.

Thanks,
kishorkv
--
View this message in context: 
http://www.nabble.com/Please-Help---my-enumvals-ARS-Perl-1.91-Remedy-7.1-tp20984758p20984758.html
Sent from the ARS (Action Request System) mailing list archive at Nabble.com.

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor: 
www.rmsportal.com ARSlist: "Where the Answers Are"

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
Platinum Sponsor: www.rmsportal.com ARSlist: "Where the Answers Are"

Reply via email to