Fehlender Datentyp BD11_FLAG


Rund um Java und SAP®.

Moderatoren: Jan, Steff

Fehlender Datentyp BD11_FLAG

Beitragvon ralff » 10.01.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();
}
}
}
ralff
ForumUser
 
Beiträge: 1
Registriert: 10.01.2019, 08:34
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Zurück zu Java & SAP®

  Aktuelle Beiträge   
Preisfindung bei Änderung anstoßen
vor einer Stunde von ewx 3 Antw.
gelöst Textaufbereitung TDLINE
vor 2 Stunden von DeathAndPain 3 Antw.
FUBA oder BAPI für VK11
vor 20 Stunden von cuncon 2 Antw.
Nach Datum sortieren
vor 57 Minuten von DeathAndPain 7 Antw.
gelöst ALE Verteilung Kundenaufträge
Gestern von SAP_ENTWICKLER 0 Antw.

  Ähnliche Beiträge beta
JCO Server, fehlender Typ com.sap.jdsr...
08.02.2008, 11:02 von codierknecht 1 Antw.
Datentyp Date
13.03.2003, 15:08 von Nina 3 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder