JCO, Funktionsbaustein und tiefe Strukturen

Rund um Java und SAP®.

JCO, Funktionsbaustein und tiefe Strukturen

Postby gast » Wed Feb 23, 2005 3:33 pm

Hallo,

aus Java soll über den Jco auf einen Funktionsbaustein in SAP zugegriffen werden (4.6C).

Gibt es Einschränkungen, was die Definition von Schnittstellen-Tabellen des Funktionsbausteines angeht? Sind auch tiefe Stukturen erlaubt (Tabelle in einem Tabellenfeld).

In der Dokumentation konnte ich dazu nichts finden.

Danke und Gruss
gast
 

Postby Philippa2744 » Wed Feb 23, 2005 3:44 pm

Moin,

Ich kann Dir nur aus eigener Erfahrung aus Projekten sagen, daß tiefe Strukturen besser zu vermeiden sind. Das haben wir von Anfang an so gemacht, weil wir mit einer älteren JCo-Version diesbezüglich Schwierigkeiten hatten. Seither habe ich das nicht mehr ausprobiert. Es kann also durchaus sein, daß das mittlerweile völlig problemlos möglich ist.

Zu beachten ist allerdings, daß diese Aufrufe sicherlich nicht so performant sind, wie die übergabe von flachen Strukturen. Komplexe Strukturen werden intern von JCo in XML umgewandelt.

Wenn Du ganz sichergehen willst, würde ich empfehlen einen kleinen Testbaustein im ABAP zu schreiben mit einer geschachtelten Struktur. Dann einfach mal per JCo aufrufen und schauen wie die Daten zurückkommen.

Zur weiteren Info siehe auch die Hinweise 586415 sowie 550984.

Ciao, LoLo
Philippa2744
...
...
 
Posts: 303
Joined: Fri Mar 07, 2003 5:17 pm

Postby gast » Wed Feb 23, 2005 4:13 pm

Hallo,

danke für die schnelle Antwort.
Wir hatten auch schon überlegt ob wir das einfach mal antesten, aber nur wegen der grundsätzlichen Farge ob es geht.

Performance ist natürlich wieder ein anderer Faktor.
gast
 

Postby Erich410 » Thu Feb 24, 2005 1:40 pm

Hallo,

ich arbeite an einem ähnlichen Problem.

Die kommunikation zwischen Java und SAP geht über XML-Strukturen.
Tabelle in Tabelle geht auch, wird prima in XML umgewandelt.
Wenn in der Sub-Tabelle keine Einträge drin sind, wird auch kein Tag an Java übergeben


Jetzt die Frage:
Ich möchte in einer Tabellenzeile wieder eine Tabelle mit genau dem gleichen Aufbau wie die Tabellenzeile erstellen. Das soll als Baumstruktur in XML ankommen (so ist zumindest die Vorgabe).

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. <OBJDATA>
  2.   <INFO>eins</INFO>
  3.   <TABLE>
  4.   | <OBJDATA>
  5.   |   <INFO>zwei</INFO>
  6.   |   <TABLE>
  7.   |   | <OBJDATA>
  8.   |   < <INFO>drei</INFO>
  9.   |   | </OBJDATA>
  10.   |   | <OBJDATA>
  11.   |   |   <INFO>vier</INFO>
  12.   |   |   <TABLE>
  13.   |   |   | <OBJDATA>
  14.   |   |   |   <INFO>fuenf</INFO>
  15.   |   |   | </OBJDATA>
  16.   |   |   | <OBJDATA>
  17.   |   |   |   <INFO>sechs</INFO>
  18.   |   |   | </OBJDATA>
  19.   |   |   </TABLE>
  20.   |   | </OBJDATA>
  21.   |   | <OBJDATA>
  22.   |   |   <INFO>sieben</INFO>
  23.   |   | </OBJDATA>
  24.   |   </TABLE>
  25.   | </OBJDATA>
  26.   </TABLE>
  27. </OBJDATA>
GeSHi ©


In jedem OBJDATA kann also wieder eine Tabelle mit OBJDATA sein.

Wie muß ich die SAP-Struktur defineren, damit ich soetwas abbilden kann??

Im DDIC und im Programm habe ich es bis jetzt nicht geschafft diese rekursive Definition herzustellen.

Wenn das nicht über die Definition der Übergabestruktur machbar ist, wie gebe ich dann XML aus??

Wäre dankbar für Euren Rat.
Gruß
babap
Erich410
....
....
 
Posts: 680
Joined: Thu Feb 05, 2004 4:22 pm

Postby Erich410 » Fri Mar 04, 2005 7:16 pm

So, jetzt muß ich mir mal selber antworten.

Es gibt die Möglichkeit über die Service-Klasse IF_IXML einen DOM-Tree (Document-Object-Model) zu erzeugen. Jedes XML-Tag ist dabei ein Knoten und kann wieder "Kinder" und "Attribute" haben.

(Eine Anleitung dazu findet man wenn man bei help.sap.com nach "dom Xml" sucht...).

Dieses DOM-Dokument kann man dann mit einem
Funktionsbausten SDIXML_DOM_TO_SCREEN ansehen und somit kontrollieren.

Der Funktionsbaustein SDIXML_DOM_TO_XML wandelt das in einen String um. Das Ergebnis ist ein Feld vom Typ XSTRING.


Und jetzt doch noch eine Frage:

Wie bekomme ich dieses Feld an mein JAVA-System.
Ich habe dieses Feld als EXPORT-Parameter in einem RFC-Fähigen Funktionsbaustein, aber bis jetzt scheint beim Empfänger nur "Schrott" zu landen.

Danke und
Gruß
babap
Erich410
....
....
 
Posts: 680
Joined: Thu Feb 05, 2004 4:22 pm

Postby Erich410 » Fri Mar 11, 2005 12:56 pm

Und wieder die Antwort zum Problem

man nehme die Klasse 'cl_abap_conv_in_ce'.

Damit kann man einen XSTRING in einen STRING umwandeln.

Und ab die Post ...

Gruß
babap
Erich410
....
....
 
Posts: 680
Joined: Thu Feb 05, 2004 4:22 pm


Return to Java & SAP®

Who is online

Users browsing this forum: No registered users and 5 guests