Page 1 of 1

JCO - Rückgabe an SAP Dateiinhalt

PostPosted: Wed Dec 22, 2004 3:40 pm
by William4545
Hallo,
ich möchte den Inhalt einer Datei und einen String an den SAP RFC Aufruf zurückgeben.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. CALL FUNCTION 'RFC_TEST' DESTINATION rfcdest
  2.      EXPORTING
  3.        filename      = filename
  4.      IMPORTING
  5.        outfile       = outfile
  6.        error         = error
  7.      TABLES
  8.        filedata      = filedata
  9. ...
  10. fmeta = new JCO.MetaData("RFC_TEST");  
  11. fmeta.addInfo("FILENAME", JCO.TYPE_CHAR,       34,   0,  0, JCO.IMPORT_PARAMETER, null);
  12. fmeta.addInfo("FILEDATA", JCO.TYPE_TABLE,     255,   0,  0, 0, "DATEI");
  13. fmeta.addInfo("OUTFILE",  JCO.TYPE_STRUCTURE, 255,   0,  0, JCO.EXPORT_PARAMETER, "DATEI");
  14. fmeta.addInfo("ERROR",    JCO.TYPE_CHAR,      255,   0,  0, JCO.EXPORT_PARAMETER, null);
  15.  
  16. Struktur DATEI besteht aus ZEILE CHAR 255.
  17.  
GeSHi ©

Bisher lese ich unter JAVA die Datei aus und packe sie in einen StringBuffer. Aber wie übertragen?? Der besteht ja gar nicht aus ZEILE 255. Hat da jemand einen Tipp?
Steffi

PostPosted: Wed Dec 22, 2004 5:55 pm
by Christian4831
Hi Steffi,

du müsstest einfach deinen String in 255 Character lange String Segmente aufteilen und jedes Segment in eine Tabellenzeile der Tabelle filedata schreiben.

Möchtest du einen SAP Standard Baustein rufen, oder einen eigenen? Wenn letzteres der Fall ist, könntest du einfach eine RAW Variable an deinen RFC Baustein übergeben. In diese schreibst du dann dein Java byte[] array.

frohes Fest,
Tim[/b]

noch immer nicht gelöst!

PostPosted: Thu Jan 13, 2005 2:55 pm
by William4545
Hallo,
leider habe ich das Problem noch nicht hinbekommen.

meinem Funktionsbaustein habe ich jetzt ein
TABLES returncontent = returncontent
eingesetzt.
In meiner Java-Datei habe ich folgende Angaben:
JCO.MetaData smeta = new JCO.MetaData("DATEI");
smeta.addInfo("ZEILE", JCO.TYPE_CHAR, 255, 0, 0);
repository.addStructureDefinitionToCache(smeta);
fmeta.addInfo("RETURNCONTENT", JCO.TYPE_TABLE, 0, 0, 0, JCO.EXPORT_PARAMETER, "DATEI");


Den Dateiinhalt habe ich in einem String[] mit je max 255 Zeichen.

Wenn ich das alles ausführe, wird aber keine Tabelle übergeben, sondern nur 255 Zeichen ohne Umbrüche.
Ich möchte aber eine Tabelle übergeben und in SAP auslesen.

String[] fileContent ist gefüllt!
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. JCO.Table table = new JCO.Table("tbl_test");
  2. table.addInfo("LINE", JCO.TYPE_STRING, 255);
  3. if (fileContent.length != 0)
  4. {
  5.   for&#40;int i = 0; i < fileContent.length; i++&#41;
  6.   &#123;
  7.     table.appendRow&#40;&#41;;
  8.     table.setValue&#40;fileContent[i], "LINE"&#41;;
  9.     i++;
  10.   &#125;
  11. &#125;
  12. System.out.println&#40;"table:\n"+table&#41;;
  13. --> gesamter Text wird angezeigt.
  14.    
  15. output.setValue&#40;table,"RETURNCONTENT"&#41;;
GeSHi ©

Hm, so richtig weiss ich noch nicht, wie ich das lösen kann.

Ideen??