Archiv des Intrexx Live! Forums

Hier sehen Sie die Foreneinträge aus dem Intrexx Live! Forum. Bis November 2016 war es das Forum für alle Fragen rund um die Software Intrexx von United Planet.
Seit November 2016 gibt es ein neues moderiertes Forum, das Intrexx Community Forum. Nutzen Sie bitte unbedingt dieses für aktuelle Fragen, Antworten und Informationen.

Wichtig: Dieses Forum dient als Archiv. Die Einträge beziehen sich oft auf ältere Versionen von Intrexx und entsprechen nicht mehr den aktuellen technischen Gegebenheiten.
Daher sollten alle Inhalte ausschließlich von Experten genutzt werden. Bei unsachgemäßer Anwendung kann es zu zeitaufwändigen Problemen oder Datenverlust kommen.
Übersicht > Intrexx Connectoren und Add-ons: SAPAdapter > How-to (SAP): SAP Datengruppen im Groovy verwenden

How-to (SAP): SAP Datengruppen im Groovy verwenden

Das demonstriert Coding zeigt, wie SAP Datengruppen im Groovy verwendet werden können.


/**********************************************************************
* Get access to the SAP Adapter Addon *
**********************************************************************/
import net.initall.ixapi.groovy.IxSapGroovyAPI;

def boolean trace = true;
def l_max_rows = 5;
def l_cur_offset = 0;
def l_count = 0;
def l_pcount = 0;


def g_sap = IxSapGroovyAPI.getInstance();
if(g_sap == null){
l_log = "No SAP Adapter access";
}else{
// syntax: getAddOn(<addonname>, <sap instance>, g_record);
def g_api = g_sap.getAddOn("sapdg", "saperp", g_record);
if(g_api == null){
l_log"No SAP Adapter Addon access";
}else{
// use addon api -- insert your code
// syntax: setHandlerInfo(<handler>,<variant>,<object>)
g_api.setHandlerInfo("GENERIC_VIEW","DEFAULT","KNA1");
// syntax: addOrderBy(<fieldname>,<sortorder>)
g_api.addOrderBy("KUNNR", g_api.ASCENDING);

// syntax: addFilter(<combine>, <left par>, <fieldname>, <operand>, <value_low>, <value_high>, <right_par>)
g_api.addFilter("AND", 0, "NAME1", "CP", "M*", "", 0);

// get data from SAP with package access
while(l_cur_offset == 0 || l_pcount == l_max_rows) {

// syntax: setOffset(<maxrows>,<startrow>)
g_api.setOffset(l_max_rows,l_cur_offset);

// execute
if(trace) g_log.info("Enter SAP with packagesize " + l_max_rows + " and offset " + l_cur_offset);
def l_rc = g_api.excecute();
if(l_rc){
l_count = g_api.getResultCount();
l_pcount = g_api.getPackageCount();
if(trace) g_log.info("Total Results: " + l_count + " / Package Count = " + l_pcount);

for(int i = 0; i < l_pcount; i++){

def l_record = g_api.getResultObjectIndex(i);
if(l_record == null){
g_log.error("No field access for index " + i);
}else{
def l_name1 = l_record.fields.get("NAME1");
def l_kunnr = l_record.fields.get("KUNNR");
if(trace) g_log.info("Record read: " + i + ": " + l_kunnr.getString() + " " + l_name1.getString());
}
}

// calculate offset
l_cur_offset += l_pcount;

}else{
if(trace) g_log.info("Error executing getList");
break;
}
}

// destroy addon api
g_api.destroy();
}
// destroy sap adapter api
g_sap.destroy();
}



Achtung:
In diesem Fall wird das Coding über eine eigene Datengruppe angetriggert
(Ereignis Datensatz NEU wird abgefangen). Damit steht auch die Variable
g_record zur Verfügung. Soll das Coding beispielsweise in einem Timerprozess verwendet werden, muss der Befehl:


// syntax: getAddOn(<addonname>, <sap instance>, g_record);
def g_api = g_sap.getAddOn("sapdg", "saperp", g_record);


ersetzt werden durch die Verbindung zu einer Intrexx Applikation:


// syntax: getAddOn(<addonname>, <sap instance>, <appguid>);
def g_api = g_sap.getAddOn("sapdg", "saperp", "12345....ABCDEF");


Weitere Hinweise:
Diese Funktion greift über eine API auf SAP zu, die auch für die Fremddatengruppenzugriffe zum Einsatz kommt. Da der Zugriff hier aber nicht im Kontext einer Datengruppe erfolgt, stehen auch bestimmte Funktionen (z.B. Expertenattribute) nicht zur Verfügung. Die Daten aus dem SAP kommen im Stringformat und müssen je nach Datentyp evtl. noch konvertiert werden.
02.03.2012 08:59 von Jörg Müller
Das Skript wird beim Einfügen eines Datensatzes in der Elterndatengruppe ausgeführt.
Darin werden alle Ansprechpartner eines Kunden (aus der KNVK) ausgelesen und das Ergebnis in eine Kind-Datengruppe geschrieben.


// UPPER CASE = INTREXX-VARIABLES ; lower case = sap-variables

// CUSTOMIZE
def KDNR = g_record["2ABF28FC18A8B7DB9A278ABA7966E111C824605F"].value /* datafield KUNNR PARENT-DATAGROUP*/
def PKEY = g_record["3A628486C2B3037273C173302091ACD371BF0A3F"].value /* datafield (PK) (S) ID PARENT-DATAGROUP*/

def STR_DATAGROUP = "XDATAGROUP6DF211E9"; // destination datagroup-name CHILD-DATAGROUP

/**********************************************************************
* Get access to the SAP Adapter Addon *
**********************************************************************/
import net.initall.ixapi.groovy.IxSapGroovyAPI;

def boolean trace = false;
def l_max_rows = 5;
def l_cur_offset = 0;
def l_count = 0;
def l_pcount = 0;
def PKEY_NEW = 1; // inital value for new record lid


def g_sap = IxSapGroovyAPI.getInstance();
if(g_sap == null)
l_log = "No SAP Adapter access";
else
{
// syntax: getAddOn(<addonname>, <sap instance>, g_record);
def g_api = g_sap.getAddOn("sapdg", "saperp", "C6F004594EEA424B2AACCD105181AD7F0660DF6D");
if(g_api == null)
l_log = "No SAP Adapter Addon access";
else
{
// use addon api -- insert your code
// syntax: setHandlerInfo(<handler>,<variant>,<object>)
g_api.setHandlerInfo("GENERIC_VIEW","DEFAULT","KNVK");

// syntax: addOrderBy(<fieldname>,<sortorder>)
//g_api.addOrderBy("NAME1", g_api.ASCENDING);

// syntax: addFilter(<combine>, <left par>, <fieldname>, <operand>, <value_low>, <value_high>, <right_par>)
g_api.addFilter("AND", 0, "KUNNR", "EQ", KDNR, "", 0);

/********************** example for date filter ********************************************
def date1 = new java.util.Date().minus(31).format('yyyy-MM-dd HHmmss'); // filter-date: 31 days ago
g_api.addFilter("AND", 0, "DATEFIELD", "GE", date1, "", 0);
******************************************************************************************/

// prepare for data insert
def CONN = g_dbConnections.systemConnection;
def STMT = null;

// get max-lid from destination datagroup (if possible)
def PKEY_SQL = g_dbQuery.executeAndGetScalarValue(CONN, "SELECT MAX (LID) FROM " + STR_DATAGROUP)
if(null != PKEY_SQL)
PKEY_NEW = PKEY_SQL + 1;
if(trace) g_log.info("First primary key for new Records: " + PKEY_NEW);


// get data from SAP with package access
while(l_cur_offset == 0 || l_pcount == l_max_rows)
{
// syntax: setOffset(<maxrows>,<startrow>)
g_api.setOffset(l_max_rows,l_cur_offset);

// execute
if(trace) g_log.info("Enter SAP with packagesize " + l_max_rows + " and offset " + l_cur_offset);
def l_rc = g_api.excecute();

if(l_rc)
{
l_count = g_api.getResultCount();
l_pcount = g_api.getPackageCount();
if(trace) g_log.info("Total Results: " + l_count + " / Package Count = " + l_pcount);

for(int i = 0; i < l_pcount; i++)
{
def l_record = g_api.getResultObjectIndex(i);
if(l_record == null)
g_log.error("No field access for index " + i);
else
{
// define Fields
def l_anred = l_record.fields.get("ANRED");
def l_parnr = l_record.fields.get("PARNR");
def l_kunnr = l_record.fields.get("KUNNR");
def l_name1 = l_record.fields.get("NAME1");
def l_ort01 = l_record.fields.get("ORT01");
def l_telf1 = l_record.fields.get("TELF1");
def l_namev = l_record.fields.get("NAMEV");

if(trace) g_log.info("Record read: " + i + ": " + l_kunnr.getString() + " " + l_name1.getString());

// write result in intrexx datagroup
STMT = g_dbQuery.prepare(CONN, "INSERT INTO " + STR_DATAGROUP + " (LID, FKLID, STR_ANRED, STR_PARNR, STR_KUNNR, STR_NAME1, STR_ORT01, STR_TELF1, STR_NAMEV) VALUES (?,?,?,?,?,?,?,?,?)");
STMT.setInt(1, PKEY_NEW);
STMT.setInt(2, PKEY);
STMT.setString(3, l_anred.getString());
STMT.setString(4, l_parnr.getString());
STMT.setString(5, l_kunnr.getString());
STMT.setString(6, l_name1.getString());
STMT.setString(7, l_ort01.getString());
STMT.setString(8, l_telf1.getString());
STMT.setString(9, l_namev.getString());

/********************** example for other types ********************************************
STMT.setFloat(10, VARIABLENAME.getString().toFloat());
STMT.setInt(11, VARIABLENAME.getString().toInteger());
STMT.setDate(12, new java.util.Date().parse("yyyy-MM-dd HHmmss", VARIABLENAME.getString()));
******************************************************************************************/

STMT.executeUpdate();
STMT.close();

// increment LID for next row
PKEY_NEW++;
}
}
// calculate offset
l_cur_offset += l_pcount;
}
else
{
if(trace) g_log.info("Error executing getList");
break;
}
}
// destroy addon api
g_api.destroy();
}
// destroy sap adapter api
g_sap.destroy();
}

02.03.2012 09:15 von SPÄH
Zurück | Alles über Intrexx | Impressum | Datenschutzerklärung

Über United Planet
© 2019 United Planet GmbH
Schnewlinstraße 2
79098 Freiburg