PDA

Ver la Versión Completa : Acceso desde SAP a procedimientos PL/SQL bajo Oracle


poli
09/05/06, 14:16:26
Buenas tardes,

Necesito hacer consultas desde SAP a un procedimiento PL/SQL que corre bajo Oracle.
Creo que en lo que respecta a la configuración de los destinos habrá que hacer la definicion en SAP de estos procedimientos.
Pero en lo que respecta al modo de llamar no tengo ni idea de como hacerlo (entiendomque tengo que hacer una RFC, pero dentro de ella no de que forma codificar).

Podeis darme alguna orientacion y/o algún ejemplo ??

tracer
09/05/06, 14:50:55
Hola Poli,

Lo que necesitas es usar código en SQL NATIVO, además de que el equipo de BASIS debe darte un db link a la base de datos.

Te pongo un ejemplo:


REPORT demo_native_sql.

DATA: BEGIN OF wa,
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
END OF wa.

DATA c1 TYPE spfli-carrid VALUE 'LH'.

EXEC SQL PERFORMING loop_output.
SELECT connid, cityfrom, cityto
INTO :wa
FROM spfli
WHERE carrid = :c1
ENDEXEC.

FORM loop_output.
WRITE: / wa-connid, wa-cityfrom, wa-cityto.
ENDFORM.


Tienes toda la información que necesitas sobre NATIVE sql en este enlace:

NATIVE SQL DE SAP

Un saludo, espero haberte sido de utilidad :)

poli
09/05/06, 15:49:53
Hola Poli,

Lo que necesitas es usar código en SQL NATIVO, además de que el equipo de BASIS debe darte un db link a la base de datos.

Te pongo un ejemplo:


REPORT demo_native_sql.

DATA: BEGIN OF wa,
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
END OF wa.

DATA c1 TYPE spfli-carrid VALUE 'LH'.

EXEC SQL PERFORMING loop_output.
SELECT connid, cityfrom, cityto
INTO :wa
FROM spfli
WHERE carrid = :c1
ENDEXEC.

FORM loop_output.
WRITE: / wa-connid, wa-cityfrom, wa-cityto.
ENDFORM.


Tienes toda la información que necesitas sobre NATIVE sql en este enlace:

NATIVE SQL DE SAP

Un saludo, espero haberte sido de utilidad :)
Gracias Tracer,

tengo algunas dudas:

que quieres decir con 'darte un db link a la base de datos' ?
que el equipo de tecnica de sistemas tiene que definir las vias RFC (SM59)?

En el ejemplo adjunto, cual es la parte del procedimiento del PL/SQL ?

Mil gracias.

tracer
09/05/06, 16:15:32
El SQL Nativo, es lo que pones entre los comandos EXEC SQL y ENDEXEC, varios ejemplos:

EXEC SQL.
CONNECT TO
ENDEXEC.

EXEC SQL.
SET CONNECTION
ENDEXEC.

EXEC SQL.
SELECT CUSTOMERID, COMPANYNAME into :CID, :CNAME
FROM CUSTOMERS
WHERE CUSTOMERID = :F3
ENDEXEC.

Creo que puedes utilizar este método si tienes sap instalado en plataforma Windows. Entonces el equipo de BASIS ( si no me equivoco ya que no es mi area) debe crearte una conexión al servidor SQL usando la transacción DBCO. De todas formas creo que si tienes instalado sap en una plataforma no windows tienes que instalar Busiines Connector o XI.

Un saludo :)

poli
09/05/06, 16:46:56
Ok, gracias por todo.

Tengo que asimilarlo.

Un saludo y muchas gracias.

josefon
09/05/06, 16:53:22
creo que lo que POLI quiere es llamar a un stored procedure como en java no??
algo asi pero en sap

String strStoredProcedure = "{call DB.PRC_CO_PROCESO_CONCESIONES (?,?,?,?,?,?,?,?)}";

no ???

poli
09/05/06, 17:38:04
hola josefon/tracer

desde SAP tengo que lanzar una llamada a un sistema externo (RFC) que funciona con procedimientos PL/SQL bajo Oracle, y es a estos a los que debo realizar la RFC. Esta RFC me devuelve unos datos que despues en SAP compruebo.
yo he hecho rfc's entre sistemas SAP pero no imagina como pueden hacerse entre SAP y un sistema de este otro tipo.
una premisa de proyecto es que no se implanta XI (por eso tenia que meditar sobre lo que tracer me comento en las respuestas). Por eso la solucion de las RFC's ( claro que el que la dio no es el que lo tiene que hacer....).

espero haber aclarado un poco el objetivo y planteamiento.

un saludo

josefon
09/05/06, 17:46:21
encontre estos ejemplos en google.. mira

FORM test_ora.
**Types
TYPES: BEGIN OF Y_OUT,
A(50),
B(50),
C(50),
END OF Y_OUT.
** work_area
DATA: WA_OUT TYPE Y_OUT.
** Tables
DATA: T_OUT TYPE TABLE OF Y_OUT.

EXEC sql.
EXECUTE PROCEDURE pkg_sap.p_info_fin
( IN :'99213894',
OUT :WA_OUT )
ENDEXEC.

ENDFORM.

tambien le puedes dar una hojeada a esta pagina ..
http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb3b8b358411d1829f0000e829fbfe/content.htm

ojala te ayude..

saludos

conrad10ar
15/11/07, 15:29:32
Hola,

podrían detallarme los datos que debería poner en la transacción DBCO ?

hago esta consulta porque no logro conectarme a la base y creo que pasa por ese lado el problema.

Muchas gracias a todos. :)

Sandra Milena
13/02/09, 15:02:46
Hola Poli,

Lo que necesitas es usar código en SQL NATIVO, además de que el equipo de BASIS debe darte un db link a la base de datos.

Te pongo un ejemplo:


REPORT demo_native_sql.

DATA: BEGIN OF wa,
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
END OF wa.

DATA c1 TYPE spfli-carrid VALUE 'LH'.

EXEC SQL PERFORMING loop_output.
SELECT connid, cityfrom, cityto
INTO :wa
FROM spfli
WHERE carrid = :c1
ENDEXEC.

FORM loop_output.
WRITE: / wa-connid, wa-cityfrom, wa-cityto.
ENDFORM.


Tienes toda la información que necesitas sobre NATIVE sql en este enlace:

NATIVE SQL DE SAP

Un saludo, espero haberte sido de utilidad :)



Hola como estas??

Una pregunta sera que tu de casualidad sabes como se hace la conexion SAP-ORACLE de la forma como la hace el basis.

te agradeceria mucha tu ayuda