Zu welchem Zweck ? Archivierung oder Dateiablage oder anderes ?Dyrdek hat geschrieben:Wir müssen einen Server implementieren der über ArchiveLink mit dem R3/System kommuniziert
Mit der Transaktion OAC0 wird die Http Adresse und Pfad und Port gepflegt. (ne Dynamic Link Lib hab ich nie gebraucht).Dyrdek hat geschrieben:Haben jetzt gelesen das wir im Content Repository unter dem Punkt HTTP-Script eine DLL-Datei oder auch CGI-Script oder ASP angeben müssen.
Ja kann man !Dyrdek hat geschrieben:Wenn man es über ASP anstatt mit einer DLL-Datei bewerkstelligen könnte...
Man kann alles nehmen was sich als Http Service eignet(Socket Anwendung). Ich habe einen HTTP Handler für IIS 7 und vb dot net benutzt .Dyrdek hat geschrieben: Muss eine DLL-Datei in C++ geschrieben werden oder kann man das auch in Java machen ? (C++ müssten wir uns dann erst aneignen)
Also..Du brauchst einen Rechner plus Java / Eclipse / Tomcat .Dyrdek hat geschrieben:Wir sollen nun alles über ein Java Servlet machen (sprich kein DLL etc.), weiß jemand wie dieses dann aufgebaut sein muss in etwa ? :/
Schau mal mit der TA SMICM über Menu : Springen->Parameter->anzeigen.Dyrdek hat geschrieben:Was momentan das größte Problem ist, ist dass wir bei den Content Repository beim Verbindungstest einen Error bekommen -> 400 Illegal SSL Request
Code: Alles auswählen.
Services
icm/server_port_0 = PROT=HTTP,PORT=8001
icm/server_port_1 = PROT=SMTP, PORT=2501, PROCTIMEOUT=300, TIMEOUT=900
Code: Alles auswählen.
package testPackage; // Always use packages. Never use default package.
import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.*;
import javax.servlet.http.*;
/** Very simplistic servlet that generates plain text.
* Uses the @WebServlet annotation that is supported by
* Tomcat 7 and other servlet 3.0 containers.
*
* From <a href="http://courses.coreservlets.com/Course-Materials/">the
* coreservlets.com tutorials on servlets, JSP, Struts, JSF 2.x,
* Ajax, jQuery, GWT, Spring, Hibernate/JPA, Hadoop, and Java programming</a>.
*/
@WebServlet("/hello")
public class HelloWorld extends HttpServlet {
@Override
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("Hello World");
}
}
Code: Alles auswählen.
package testPackage;
import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.*;
import javax.servlet.http.*;
import coreservlets.*;
/** Simple servlet for testing. Makes use of a helper class. */
@WebServlet("/test-with-utils")
public class TestServlet2 extends HttpServlet {
@Override
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "Test Servlet with Utilities";
out.println
(ServletUtilities.headWithTitle(title) +
"<body bgcolor=\"#fdf5e6\">\n" +
"<h1>" + title + "</h1>\n" +
"<p>Simple servlet for testing.</p>\n" +
"</body></html>");
}
}
Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& Report ztest_http_request_get
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ztest_http_request_get.
CONSTANTS %lf(1) VALUE %_newline.
* data declarations
DATA: client TYPE REF TO if_http_client.
DATA:
host TYPE string VALUE 'http://localhost:8080/index.php',
errortext TYPE string.
DATA:
uri TYPE string,
subrc TYPE i,
version TYPE i,
request TYPE REF TO if_http_request.
DATA res_data TYPE xstring.
DATA res_cdata TYPE string.
DATA html_tab TYPE TABLE OF tab512.
DATA html_str TYPE tab512.
DATA:buffer TYPE xstring,
conv TYPE REF TO cl_abap_conv_in_ce,
bytes_read TYPE i.
DEFINE m_err_exit.
if sy-subrc <> 0.
call method client->get_last_error
importing
code = subrc
message = errortext.
exit.
endif.
END-OF-DEFINITION.
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = host
IMPORTING
client = client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4.
m_err_exit.
*client->request->set_header_field( name = '~request_method' value = 'POST' ).
client->request->set_header_field( name = '~request_method' value = 'GET' ).
CALL METHOD client->send
*exporting timeout = timeout
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
OTHERS = 4.
m_err_exit.
CALL METHOD client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
OTHERS = 4.
m_err_exit.
CALL METHOD client->response->get_data
RECEIVING
data = res_data.
m_err_exit.
conv = cl_abap_conv_in_ce=>create( encoding = 'UTF-8' input = res_data ).
conv->read( IMPORTING data = res_cdata ).
FREE conv.
SPLIT res_cdata AT %lf INTO TABLE html_tab.
LOOP AT html_tab INTO html_str.
WRITE :/ html_str-wa.
ENDLOOP.
CALL METHOD client->close
EXCEPTIONS
http_invalid_state = 1
OTHERS = 2.
m_err_exit.
Ja der "Response" String, der zurückgegeben wird, muß und wird später nicht HTML sein. In Wahrheit kann man Xbeliebiges (zum testen) zurückgeben.Das ist ja eine einfache Servlet Implementierung die etwas ausgibt und diese versuche ich dann in einem ABAP Programm das ich schreibe aufzurufen,
Diese Frage verstehe ich nicht, da das Servlet nicht Archivlink aufruft, sondern Archivelink IST und vom SAP aufgerufen wird.Weißt du zufällig wie ich es schaffe das der ArchiveLink die Response die ich von meinem Servlet schicke annimmt
Grund des "losgelösten" Versuchs ist das Sicherstellen des Kommunikationsweges. Leider "vergisst" SAP nicht so schnell fehlgeschlagene Verbindungen zu Archiv,Dyrdek hat geschrieben:Also Servlet und das ABAP Programm funktionieren. Nur bin ich mir nicht sicher wie das nun weiterhilft.
/r = return (0x0d)GET /nano/run?serverInfo&pVersion=0045&contRep=JG HTTP/1.0
user-agent: SAP Web Application Server (1.0;620)
host: 192.168.216.54:8081
Accept -encoding: gzip
HTTP/1.0 200 (OK)\r\n
Connection: Close\r\n
Date: Sun, 24 Mar 2013 18:26:13 GMT\r\n
Server: Nano HTTP-Connector\r\n
Content-Type: text/plain\r\n
Content-Length: 396\r\n\r\n
serverStatus="running";serverVendorId="Nano";serverTime="18:26:13";serverDate="2013-03-24";serverStatusDescription="SAP-Server is up and running";serverVersion="5.1";pVersion="0045";\r\n
contRep="JG";contRepVendorId="Nano";contRepDescription="Nano Content Repository";contRepStatus="running";contRepTime="18:26:13";contRepDate="2013-03-24";contRepStatusDescription="Repository is up and running.";\r\n
Code: Alles auswählen.
"HTTP/1.0 200 (OK)"
"HTTP/1.0 400 (bad request)"
"HTTP/1.0 500 (Internal Server Error)"