Show TOC

Dokumentation zur VorgehensweiseSkalare Importparameter setzen Dieses Dokument in der Navigationsstruktur finden

 

In diesem Schritt soll das BAPI CompanyCode.GetDetail für jeden Buchungskreis (company code) gerufen werden. Das zugehörige RFM heißt BAPI_COMPANYCODE_GETDETAIL. Dazu ist es notwendig, den skalaren Importparameter COMPANYCODEID zu setzen.

Vorgehensweise

  1. Um auf die Importparameter-Liste zuzugreifen, verwenden Sie getImportParameterList().

  2. Der Wert des skalaren Parameters wird mit setValue() gesetzt, wobei der zuerst der Wert und dann der Name mitgegeben werden. Es existieren viele Versionen von setValue() im SAP JCo um alle vorhandenen Datentypen zu unterstützen.

  3. SAP JCo konvertiert die Werte und übergibt Sie an den Datentyp, der dem Feld zugeordnet ist. Tritt ein Fehler bei der Konvertierung auf, wird eine Exception ausgegeben. Die Methode setValue() ist auch in JCoStructure, JCoTable und JCoField verfügbar, so dass Sie Werte von Strukturfeldern und Feldern in einer Tabellenzeile setzen können.

    Skalare Importparameter setzen

    Syntax Syntax

    1. codes.firstRow();
              for (int i = 0; i < codes.getNumRows(); i++, codes.nextRow()) 
              {
                  function = destination.getRepository().getFunction("BAPI_COMPANYCODE_GETDETAIL");
                  if (function == null) 
                      throw new RuntimeException("BAPI_COMPANYCODE_GETDETAIL not found in SAP.");
                  function.getImportParameterList().setValue("COMPANYCODEID", codes.getString("COMP_CODE"));
                  function.getExportParameterList().setActive("COMPANYCODE_ADDRESS",false);
      
                  try
                  {
                      function.execute(destination);
                  }
                  catch (AbapException e)
                  {
                      System.out.println(e.toString());
                      return;
                  }
                  returnStructure = function.getExportParameterList().getStructure("RETURN");
                  if (! (returnStructure.getString("TYPE").equals("") ||
                         returnStructure.getString("TYPE").equals("S") ||
                         returnStructure.getString("TYPE").equals("W")) ) 
                  {
                      throw new RuntimeException(returnStructure.getString("MESSAGE"));
                  }
      
                  JCoStructure detail = function.getExportParameterList().getStructure("COMPANYCODE_DETAIL");
      
                  System.out.println(detail.getString("COMP_CODE") + '\t' +
                                     detail.getString("COUNTRY") + '\t' +
                                     detail.getString("CITY"));
              }//for
          }
      
    Ende des Codes
  4. Sie rufen firstRow() vor dem Loop, da sich der Zeilen-Pointer für die Tabelle nach dem vorherigen Loop auf der letzten Zeile befand.

    Hinweis Hinweis

    Beachten Sie, dass in der hier gezeigten BAPI-Fehlerbehandlung nicht nur empty string oder "S" (success), sondern auch "W" (warning) akzeptiert wird. Dies geschieht, da dieses spezielle BAPI gelegentlich die Warnung ausgibt, dass Adressdaten (im Strukturparameter COMPANYCODE_ADDRESS) nicht gepflegt wurden. Im aktuellen Beispielprogramm ist dieser Parameter nicht relevant, deshalb kann die Warnung ignoriert werden. In einem Produktivprogramm muss die Fehlerbehandlung genauer ausgearbeitet sein und auch die Nummer der Warnmeldung prüfen. Ende des Hinweises.

    Ende des Hinweises.