Fehlender Datentyp BD11_FLAG

Rund um Java und SAP®.
1 Beitrag Seite 1 von 1
1 Beitrag Seite 1 von 1

Fehlender Datentyp BD11_FLAG

Beitrag von ralff (ForumUser / 1 / 0 / 0 ) » 10. Jan 2019 10:44

Hallo Forum,

Ich versuche mittels JCO 3.x ( Standalone ) IDocs an ein SAP System zu Übermitteln, zu Empfangen sowie den Status empfangener IDocs zu Ändern.
Während die ersten beiden Teile problemlos funktionieren scheitere ich leider am letzten Teil, der Status-Änderung.

Ich möchte hierzu IDOC_STATUS_WRITE_TO_DATABASE nutzen, der Versuch vom Repository eine Function bzw. ein FunctionTemplate zu erhalten scheitert allerdings.
Laut Doku sollte für den Fall, dass eine Function nicht gefunden werden kann eigentlich ein NULL-Wert zurückgeliefert werden.
In diesem Fall erhalte ich allerdings eine AbapException. Grund dafür ist, dass JCo wohl rekursiv die Metadaten sämtlicher Parameter abzuruft und letztendlich bei BD11_FLAG scheitert - siehe Stacktrace weiter unten.

Der Abruf anderer Funktionen funktioniert problemlos. Tatsächlich sind die beiden BD11_FLAG definierten Felder optional und ich bin mit den Default-Werten zufrieden komme aber leider mit dem Aufruf nicht weiter.

Ganz unten findet ihr einen minimalen Sourcecode um den Fehler zu reproduzieren.
Um den Code mit beliebigen Funktionen zu Testen sollte als erster Parameter "direct" ( es sei den Ihr arbeitet über ein lokales oder entferntes SAP Gateway ) und als zweiter ein beliebiger Funktionsname angegeben werden.

Bin gespannt auf eure Kommentare.

Besten Dank vorab,

Ralf

-------------------------------------------
com.sap.conn.jco.AbapException: (126) NOT_FOUND: NOT_FOUND Message 300 of class DA type E, Par[1]: BD11_FLAG
at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcClient.execute(MiddlewareJavaRfc.java:2025)
at com.sap.conn.jco.rt.ClientConnection.execute(ClientConnection.java:1160)
at com.sap.conn.jco.rt.ClientConnection.execute(ClientConnection.java:989)
at com.sap.conn.jco.rt.ClientConnection.execute(ClientConnection.java:971)
at com.sap.conn.jco.rt.AbapRepository$DDICHelper.queryFunctionTemplate(AbapRepository.java:2026)
at com.sap.conn.jco.rt.AbapRepository.queryFunctionTemplate(AbapRepository.java:1054)
at com.sap.conn.jco.rt.AbapRepository.queryFunctionTemplate(AbapRepository.java:633)
at com.sap.conn.jco.rt.AbapRepository.getFunctionTemplate(AbapRepository.java:895)
at com.sap.conn.jco.rt.BasicRepository.getFunction(BasicRepository.java:167)
at ei.sap.jco.GetFunctionFailed.startUp(GetFunctionFailed.java:59)
at ei.sap.jco.GetFunctionFailed.main(GetFunctionFailed.java:48)
-------------------------------------------
package check.sap.jco;

import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;

import com.sap.conn.jco.JCoDestination;
import com.sap.conn.jco.JCoDestinationManager;
import com.sap.conn.jco.JCoException;
import com.sap.conn.jco.JCoFunction;
import com.sap.conn.jco.JCoRepository;

public class GetFunctionFailed {
private final String REMOTE_GATEWAY_GWHOST = "<REMOTE_SAP_HOST>";
private final String REMOTE_GATEWAY_PROGID = "<JCOREMOTE_PROGID>";
private final String REMOTE_GATEWAY_GWSERV= "sapgw00";
private final String REMOTE_GATEWAY_REPOSITORY= "does_not_matter";

private final String LOCAL_GATEWAY_GWHOST = "localhost";
private final String LOCAL_GATEWAY_PROGID = "<JCOLOCAL_PROGID>";
private final String LOCAL_GATEWAY_GWSERV= "sapgw33";
private final String LOCAL_GATEWAY_REPOSITORY= "does_not_matter";

private final String CLIENT_CLIENT = "800";
private final String CLIENT_SYSNR = "00";
private final String CLIENT_LANG = "en";
private final String CLIENT_USER = "<JCOUSER>";
private final String CLIENT_PASSWD = "<JCOPASSWORD>";
private final String CLIENT_ASHOST = "<REMOTE_SAP_HOST>";

public static void main(String[] args) throws JCoException {
GetFunctionFailed instance = new GetFunctionFailed();
instance.startUp(args);
}

private void startUp(String[] args) {
String connectionMode = args.length > 0 ? args[0] : "direct";
String functionModule = args.length > 1 ? args[1] : "IDOC_STATUS_WRITE_TO_DATABASE";
buildConnectionProperties(connectionMode);
try {
JCoDestination destination = JCoDestinationManager.getDestination(connectionMode);
destination.ping();
JCoRepository repository = destination.getRepository();
JCoFunction function = repository.getFunction(functionModule);
System.out.println(String.format("function %s retrieved", function.getName()));
} catch (Exception e) {
System.err.println(String.format("error occured:%n%s", e.getMessage()));
e.printStackTrace();
}

}

enum Type {
DestinationData, ServerData
};

private void buildConnectionProperties(String connectionMode) {
this.storeConnectionProperties("direct", buildConnectionProperties4Direct(Type.DestinationData));
this.storeConnectionProperties("local_gateway",
buildConnectionProperties4LocalGateway(Type.DestinationData));
this.storeConnectionProperties("remote_gateway",
buildConnectionProperties4RemoteGateway(Type.DestinationData));
}

private Properties buildConnectionProperties4RemoteGateway(Type type) {
Properties p = new Properties();
// SERVER
p.put("jco.server.connection_count", "1");
p.put("jco.server.gwhost", REMOTE_GATEWAY_GWHOST);
p.put("jco.server.progid", REMOTE_GATEWAY_PROGID);
p.put("jco.server.gwserv", REMOTE_GATEWAY_GWSERV);
p.put("jco.server.repository_destination", REMOTE_GATEWAY_REPOSITORY);
// CLIENT
p.put("jco.client.lang", CLIENT_LANG);
p.put("jco.destination.peak_limit", "10");
p.put("jco.client.client", CLIENT_CLIENT);
p.put("jco.client.sysnr", CLIENT_SYSNR);
p.put("jco.destination.pool_capacity", "3");
p.put("jco.client.ashost", CLIENT_ASHOST);
p.put("jco.client.user", CLIENT_USER);
p.put("jco.client.passwd", CLIENT_PASSWD);
// p.put("jco.client.type", "E");
//
return p;
}

private Properties buildConnectionProperties4LocalGateway(Type type) {
Properties p = new Properties();
// SERVER
p.put("jco.server.connection_count", "1");
p.put("jco.server.gwhost", LOCAL_GATEWAY_GWHOST);
p.put("jco.server.progid", LOCAL_GATEWAY_PROGID);
p.put("jco.server.gwserv", LOCAL_GATEWAY_GWSERV);
p.put("jco.server.repository_destination", LOCAL_GATEWAY_REPOSITORY);
// CLIENT
p.put("jco.client.lang", CLIENT_LANG);
p.put("jco.destination.peak_limit", "10");
p.put("jco.client.client", CLIENT_CLIENT);
p.put("jco.client.sysnr", CLIENT_SYSNR);
p.put("jco.destination.pool_capacity", "3");
p.put("jco.client.ashost", CLIENT_ASHOST);
p.put("jco.client.user", CLIENT_USER);
p.put("jco.client.passwd", CLIENT_PASSWD);
// p.put("jco.client.type", "E");
//
return p;
}


private Properties buildConnectionProperties4Direct(Type type) {
Properties p = new Properties();
p.put("jco.client.lang", "en");
p.put("jco.destination.peak_limit", "10");
p.put("jco.client.client", CLIENT_CLIENT);
p.put("jco.client.sysnr", CLIENT_SYSNR);
p.put("jco.destination.pool_capacity", "3");
p.put("jco.client.ashost", CLIENT_ASHOST);
p.put("jco.client.user", CLIENT_USER);
p.put("jco.client.passwd", CLIENT_PASSWD);
//
return p;
}

private void storeConnectionProperties(String connectionMode, Properties p) {
try {
p.store(new FileWriter(String.format("%s.jcoDestination", connectionMode)), "connection parameters");
} catch (IOException e) {
System.err.println(String.format("error occured:%n%s", e.getMessage()));
e.printStackTrace();
}
}
}


Seite 1 von 1

Aktuelle Forenbeiträge

Langtext zur Exception
vor 11 Stunden von ewx 12 / 135
Feld Symbol in Klasse
vor 15 Stunden von ewx 5 / 89
Eigener Knopf im Ausgabefenster
vor 18 Stunden von DeathAndPain 2 / 44
Welche Entwicklertools?
Gestern von LostDarkness 2 / 936

Unbeantwortete Forenbeiträge

DOCVARIABLE in Worddokument setzen (OLE?)
vor 2 Tagen von msfox 1 / 40
BAPI_PO_CREATE1 und Einkaufsinfosatz
vor 4 Tagen von SweetRuedi 1 / 84
WCOCO: Gruppe für Betragsfelder 0S01
vor 6 Tagen von SAP_ENTWICKLER 1 / 55
CAS-Nr.: Chemical Abstracs Service
vor einer Woche von SAP_ENTWICKLER 1 / 93
Interaktives Skript, Rolle IC-Manager
vor 3 Wochen von erubadhron86 1 / 129