JCO - Funktionsaufrufe mit Datenübergabe

Rund um Java und SAP®.

JCO - Funktionsaufrufe mit Datenübergabe

Postby William4545 » Wed Sep 22, 2004 10:51 am

Moin,
ich habe mal wieder Probleme mit Java und SAP.
Aus SAP rufe ich die Java-Methode rfc_remote_file auf. Das klappt auch alles.
Nur übergebe ich über den SAP-Funktionsaufruf in file einen Namen (String) und in filedata eine interne Tabelle. Die Daten aus filedata sollen in einer Datei mit dem Namen file gespeichert werden.

Wie bekomme ich das in JAVA auseinander? In input stehts nicht drin.
Ideen?
Danke Steffi

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.  CALL FUNCTION 'RFC_REMOTE_FILE' DESTINATION rfcdest
  2.    EXPORTING
  3.      file           = file
  4.    TABLES
  5.      filedata       = filedata
  6.   EXCEPTIONS
  7.      system_failure = 1         MESSAGE mess
  8.      communication_failure = 2  MESSAGE mess
  9.      OTHERS = 3.
  10.   IF sy-subrc <> 0.
  11.     PERFORM log  USING 'E' 'X'
  12.                           'Transfer nicht möglich'&#40;011&#41; mess
  13.                           'Job  abgebrochen'&#40;003&#41; ''.
  14.   ENDIF.
  15.  
GeSHi ©


Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. ...
  2. JCO.ParameterList input  = function.getImportParameterList&#40;&#41;;
  3.       JCO.ParameterList output = function.getExportParameterList&#40;&#41;;
  4.       JCO.ParameterList tables = function.getTableParameterList&#40;&#41;;
  5. ...
  6. public static void rfc_remote_file&#40;JCO.ParameterList input&#41;
  7. &#123;
  8. ...
  9. &#125;
  10.  
GeSHi ©
William4545
..
..
 
Posts: 55
Joined: Tue Jul 13, 2004 11:40 am

Postby Christian4831 » Wed Sep 22, 2004 3:27 pm

Hi Steffi,

wenn input leer ist, übergibt dein Programm vielleicht nix an den Java Server? Schau dir auch vielleicht mal die export Parameter an, vielleicht verdreht JCO da irgendwas und schreibt dort alle von SAP Systemen kommenden Daten hinein...

ciao,

Tim
Christian4831
..
..
 
Posts: 91
Joined: Mon Dec 02, 2002 7:33 pm

Postby William4545 » Thu Sep 23, 2004 9:56 am

habs gelöst!
William4545
..
..
 
Posts: 55
Joined: Tue Jul 13, 2004 11:40 am

Postby Christian4831 » Thu Sep 23, 2004 2:14 pm

Ja, und was war der genaue Fehler?

viele Grüsse,
Tim
Christian4831
..
..
 
Posts: 91
Joined: Mon Dec 02, 2002 7:33 pm

Lösung

Postby William4545 » Thu Sep 23, 2004 2:24 pm

ich hatte beim repository Fehler gemacht.

Für alle, die mal auf der Suche nach funktionierendem Code sind:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. protected static IRepository repository;
  2. static &#123;
  3.  
  4. repository = new Repository&#40;"TestRepository"&#41;;
  5.    
  6. JCO.MetaData fmeta1 = new JCO.MetaData&#40;"RFC_WRITE_FILE"&#41;;  
  7. fmeta1.addInfo&#40;"FILE",     JCO.TYPE_CHAR,   24,   0,  0, JCO.IMPORT_PARAMETER, null&#41;;
  8. fmeta1.addInfo&#40;"FILEDATA", JCO.TYPE_TABLE, 255,   0,  0, 0, "ZJCO_STRUCT"&#41;;
  9. fmeta1.addInfo&#40;"ECHOTEXT", JCO.TYPE_CHAR,  255,   0,  0, JCO.EXPORT_PARAMETER, null&#41;;
  10. fmeta1.addInfo&#40;"RESPTEXT", JCO.TYPE_CHAR,  255,   0,  0, JCO.EXPORT_PARAMETER, null&#41;;
  11. repository.addFunctionInterfaceToCache&#40;fmeta1&#41;;
  12.    
  13. JCO.MetaData smeta = new JCO.MetaData&#40;"ZJCO_STRUCT"&#41;;  
  14. smeta.addInfo&#40;"LINE", JCO.TYPE_CHAR, 1024, 0, 0&#41;;
  15. repository.addStructureDefinitionToCache&#40;smeta&#41;;
  16.  
GeSHi ©

dann nur noch die jcoTab auslesen:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. JCO.Table jcoTab = tables.getTable&#40;"FILEDATA"&#41;;
  2. ...
  3. jcoTab.getString&#40;"LINE"&#41;;
  4.  
GeSHi ©

das wars. Hat lange gedauert, bis ich es hatte, aber ich habs rausgefunden :D

Steffi
William4545
..
..
 
Posts: 55
Joined: Tue Jul 13, 2004 11:40 am


Return to Java & SAP®

Who is online

Users browsing this forum: No registered users and 5 guests