The following example project describes the use of the SAP JCo in a business scenario that offers customers the option to retrieve and display their invoices online from the SAP vendor system.
The data for customer deliveries is stored in the vendor SAP system, but the actual customer invoices are stored in a document management system. In the document management system, the documents are selected by the document ID, which is stored together with the invoice number in the SAP system. The scenario must therefore find the customer data in the SAP system, and then make a connection to the document management system to retrieve the requested invoice.
Figure 1 E-Business Scenario: Displaying Invoices Online Using SAP JCo
Standard BAPIs can generally be used in this scenario. In this scenario, however, a new object is developed: Z_BAPI_GET_DOCUMENT_ID .
Figure 2 Business Object und BAPIs
Business Object |
BAPI |
Description |
---|---|---|
Z_BAPI_GET_DOCUMENT_ID |
GETDOCUMENT |
Gets the document ID |
Input: Company code |
||
Invoice number |
||
Financial year |
||
Output: Document ID |
||
GETAPPENDIX |
Gets the document appendix ID |
|
Input: Company code |
||
Invoice number |
||
Financial year |
||
Output: Document appendix ID |
A SessionBean has been implemented for contacting this object. The bean contains the method getDocid(), which returns the IDs as described in figure 3.
Figure 3 Methods getDocid() in 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("companycode",""); // 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; } // ---------------------------------------------------------------------------------- |