Show TOC Anfang des Inhaltsbereichs

Diese Grafik wird im zugehörigen Text erklärt SAP JCo-Szenario: Online-Rechnung  Dokument im Navigationsbaum lokalisieren

Szenario: Online-Anzeige von Rechnungen über einen Web-Browser

Das folgende Beispielprojekt beschreibt den Einsatz des SAP JCo in einem Geschätsszenario, das den Kunden eines Unternehmens die Möglichkeit bietet, Ihre Rechnungen online aus dem SAP-Lieferantensystem abzurufen und anzuzeigen.

Die Daten der Kunden-Lieferungen sind im SAP-System des Lieferanten gespeichert, die Kundenrechnungen selbst hingegen in einem Dokumentenmanagement-System. Im Dokumentenmanagement-System werden die Belege über die Dokument-ID selektiert, die im SAP-System zusammen mit der Rechnungsnummer gespeichert ist. Das Szenario muß also einmal die Kundendaten im SAP-System finden und zum anderen eine Verbindung zum Dokumentenmanagement-System herstellen, um die angeforderte Rechnung zu erhalten.

Voraussetzungen

·       Die Entwicklungsplatform ist Java

·       es werden Enterprise JavaBeans (EJB) verwendet

·       jede weitere Installation auf SAP-Seite soll vermieden werden

·       die Transaktionssteuerung in SAP soll über BAPIs erfolgen

·       die Lösung soll platformunabhängig sein.

·       das Projekt soll in kurzer Zeit realisierbar sein

 

Abbildung 1     E-Business Szenario: Online-Rechnungsanzeige über SAP JCo

Diese Grafik wird im zugehörigen Text erklärt

Im Allgemeinen können Standard-BAPIs verwendet werden. In diesem Szenario wird jedoch ein neues Objekt entwickelt: Z_BAPI_GET_DOCUMENT_ID .

Abb.2   Business Object und BAPIs

Business Object

BAPI

Beschreibung

Z_BAPI_GET_DOCUMENT_ID

GETDOCUMENT

Holt die Dokument-ID

 

 

Input: Buchungskreis,

 

 

Rechnungsnummer,

 

 

Geschäftsjahr

 

 

Output: Dokument-ID

 

GETAPPENDIX

Holt die Dokument-Appendix-ID

 

 

Input: Buchungskreis,

 

 

Rechnungsnummer,

 

 

Geschäftsjahr

 

 

Output: Dokument-Appendix-ID

Um dieses Objekt anzusprechen wurde ein SessionBean implementiert. Das Bean beinhaltet die Methode getDocid(), die die IDs wie in Abb.3 bechrieben zurücksendet.

Abb. 3  Methode getDocid() im SessionBean

 

  /**

  * Getting Document-ID, Document-Appendix-ID from SAP/R3 by invoice number

  * @return Document-ID

  */

  public String getDocid()

  {

    String sDocid = "";

    JCO.Client jcoConnection = null;

    IRepository repository = null;

   

    // getting properties

    try

    {

      String sClient = vrb.getString("client","");                                  // client

      String sUserid = vrb.getString("userid","");                               // userid

      String sPassword = vrb.getString("password","");                    // password

      String sLanguage = vrb.getString("language","");                    // language

      String sHost = vrb.getString("host","");                                     // host

      String sSysnr = vrb.getString("sysnr","");                                 // system number

      String sBukrs = vrb.getString("buchungskreis","");                   // account number

      String rgID = "";

 

      // SAP-login

      jcoConnection = JCO.createClient(sClient,sUserid,sPassword,sLanguage,sHost,sSysnr);

      jcoConnection.connect();

 

      // building repository

      repository = new JCO.Repository("ASG", jcoConnection);

 

      // executing BAPI

      // Document

      JCO.Function bapiDocument =  repository.                      getFunctionTemplate("Z_BAPI_TOA02_GETDOCUMENT").getFunction();

      if (bapiDocument != null)

      {

        jcoConnection.execute(bapiDocument);

        JCO.ParameterList input = bapiDocument.getImportParameterList();

        input.setValue(sBukrs,"BUKRS");                                   // accounting area

        input.setValue(sBelnr,"BELNR");                                    // invoice number

        input.setValue(sGjahr,"GJAHR");                                   // financial year

 

        jcoConnection.execute(bapiDocument);

        JCO.ParameterList output = bapiDocument.getExportParameterList();

        if (output != null)

        {

          JCO.Structure structure = output.getStructure("DOCUMENT");

          sDocid = structure.getString("DOC_ID");

          sArchivid = structure.getString("ARCHIV_ID");

        }

      }

 

      // Appendix

      if (!sDocid.equals(""))

      {

        JCO.Function bapiAppendix = repository.                           getFunctionTemplate("Z_BAPI_TOA02_GETAPPENDIX").getFunction();

        if (bapiAppendix != null)

        {

          jcoConnection.execute(bapiAppendix);

 

          // Input Parameter

          JCO.ParameterList input = bapiAppendix.getImportParameterList();

          input.setValue(sBukrs,"BUKRS");                            // accounting area

          input.setValue(sBelnr,"BELNR");                             // invoice number

          input.setValue(sGjahr,"GJAHR");                            // financial year

 

          jcoConnection.execute(bapiAppendix);

          JCO.ParameterList output = bapiAppendix.getTableParameterList();

          JCO.Table table = output.getTable(0);

 

          if (table != null)

          {

             if (table.getNumRows() > 0)

            {

         do

               {

                  for (JCO.FieldIterator e = table.fields(); e.hasMoreElements(); )

                  {

                JCO.Field field = e.nextField();

                if (field.getName().equals("ARCHIV_ID"))

                        sAnlagearchivid = field.getString();

                      else if (field.getName().equals("DOC_ID"))

                        sAnlagedocid = field.getString();

             }

         }

              while(table.nextRow());

      }

          }

        }

      }

    }

    catch (Exception e)

    {

      e.printStackTrace();

    }

    finally

    {

      if (jcoConnection != null)

        jcoConnection.disconnect();

    }

 

    this.sDocid = sDocid;

 

    return sDocid;

  }

  // ----------------------------------------------------------------------------------

 

Ende des Inhaltsbereichs