* le hemos puesto el nombre 'INTRANET' a esta
conexión
EXEC SQL.
connect to
'INTRANET' as 'intranet'
ENDEXEC.
otro campo importante
es el de usuario (como te vas a conectar a la BD externa) y el campo.
Informacion de conexion, que es una cadena de caracteres para conectar con la
BD, en mi caso esta, es decir, el servidor SGBD y el nombre de la
BD
MSSQL_SERVER=tcp:IPSQL01
MSSQL_DBNAME=Intranet
Una vez
hecho esto, ya solo falta utilizarlo en ABAP.
Primero tenemos que establecer
la conexion
EXEC SQL.
connect to 'INTRANET' as 'intranet'
<= no hay punto final
ENDEXEC.
EXEC
SQL.
set connection
'INTRANET'
<= no hay punto final
ENDEXEC.
* para hacer una
lectura
EXEC SQL.
* abrimos un
cursor
OPEN cursor
FOR
* y nuestra consulta
select
campo1, campo2, campo3
from
[recurso de la base de datos, por ejemplo
Intranet.dbo.v_vista]
* se tiene
acceso a variables abap en estos trozos de codigo con los ":"
es
where campo4 =
:variable_abap "<= fijate que no hay
punto al final de la sentencia!!!
ENDEXEC.
*Recogemos los
datos
DO.
EXEC SQL.
* Recojo mi
cursor
FETCH NEXT cursor INTO
:mi_tabla_interna-campo1, :mi_tabla_interna-campo2,
:mi_tabla_interna-campo3 <= !!!NO HAY PUNTO
FINAL
ENDEXEC.
if sy-subrc <>
0.
* No hay datos en
el cursor, me salgo del
"do"
exit.
endif.
* trabajo con mis datos de mi_tabla_interna como
haría normalmente.
append mi_tabla_interna. "por
ejemplo
ENDDO.
* cierro el cursor
EXEC
SQL.
CLOSE cursor <= no
hay
punto
ENDEXEC.
De: abap4@yahoogroups.com [mailto:abap4@yahoogroups.com] En nombre de Becerra, Israel
Enviado el: jueves, 02 de noviembre de 2006 20:37
Para: abap4@yahoogroups.com
Asunto: RE: [ABAP4] Conexion desde programa ABAP a SQL...
Bueno amigo , hace años hice algo
parecedio con sql aqui te envio el
codigo q necesitas..
espero q
te sirva
REPORT ZGR_PR2.
INCLUDE OLE2INCL.
INCLUDE
DOCSINCL.
TYPES: OLE2_OBJECT LIKE
OBJ_RECORD.
DATA: H_CN TYPE OLE2_OBJECT.
DATA: H_RS TYPE OLE2_OBJECT.
DATA: H_FI TYPE OLE2_OBJECT.
DATA: H_IT TYPE OLE2_OBJECT.
DATA: H_ES TYPE OLE2_OBJECT.
DATA: H_ER TYPE OLE2_OBJECT.
*DATA: c1(250) value
*'PROVIDER=SQLOLEDB;SERVER=O09;DATABASE=shopping;UID=sa;PWD='.
*DATA: c2(250) value
* 'sp_SCVE_EstaCuen ''1888981110000391'''.
DATA: c1(250) value
'DRIVER={Microsoft Access Driver (*.MDB)};' &
'DBQ=\\O10a\GTE_DES\vael\dt_ve_1.MDB;'.
*DATA: c2(250) value 'select [Gráfico 5],
[Proceso], [Indice] from
*datosclientes'.
DATA: c2(250) value 'select * from
datosclientes'.
DATA: c3(250).
DATA: cFName(15).
DATA: cFValue(50).
DATA: cErr(100).
DATA: i1 TYPE I.
DATA: i2 TYPE I.
DATA: i3 TYPE I.
DATA: i4 TYPE I.
DATA: f1 TYPE F.
DATA: p1 TYPE P.
DATA: x1 TYPE X.
start-of-selection.
IF H_CN-HEADER = SPACE OR H_CN-HANDLE = -1.
* Crea la conexón a la base de datos
WRITE: AT / 'Cadena Conexión :', c1.
CREATE OBJECT H_CN 'ADODB.CONNECTION'.
IF SY-SUBRC NE 0. WRITE SY-MSGLI. ENDIF.
SET PROPERTY OF H_CN 'ConnectionTimeout' = 25.
SET PROPERTY OF H_CN 'CommandTimeout' = 600.
CALL METHOD OF H_CN 'open' EXPORTING #1 = c1.
IF SY-SUBRC NE 0. WRITE SY-MSGLI. ENDIF.
* Verifica si hay errores de conexión
GET PROPERTY OF H_CN 'ERRORS' = H_ES.
IF SY-SUBRC NE 0. WRITE SY-MSGLI. ENDIF.
GET PROPERTY OF H_ES 'COUNT' = i1.
IF SY-SUBRC NE 0. WRITE SY-MSGLI. ENDIF.
IF i1 > 0 .
CALL METHOD OF H_ES 'item' = H_ER EXPORTING #1 = 0.
IF SY-SUBRC NE 0. WRITE SY-MSGLI. ENDIF.
GET PROPERTY OF H_ER 'NUMBER' = i2.
IF SY-SUBRC NE 0. WRITE SY-MSGLI. ENDIF.
if i2 <0> 0.
i4 = i4 + 1.
ULINE.
WRITE: AT / 'REGISTRO:', i4.
* Inicia Impresión de Columnas
i3
= 0.
CALL METHOD OF H_FI 'item' = H_IT EXPORTING
#1 = i3.
GET PROPERTY OF H_IT 'VALUE' = cFValue.
WRITE: AT /(25) 'F1:', cFValue.
i3 = i3 + 1.
CALL METHOD OF H_FI
'item' = H_IT EXPORTING #1 = i3.
GET PROPERTY OF
H_IT 'VALUE' = cFValue.
WRITE: AT /(25) 'F2:',
cFValue.
i3 = i3 + 1.
CALL METHOD OF H_FI 'item' = H_IT EXPORTING #1 = i3.
GET PROPERTY OF H_IT 'VALUE' = cFValue.
WRITE: AT /(25) 'F3:', cFValue.
i3 = i3 + 1.
* Siguiente Registro
CALL METHOD OF H_RS 'movenext'.
IF SY-SUBRC NE 0. WRITE SY-MSGLI. ENDIF.
GET PROPERTY OF H_RS 'EOF' = i1.
ENDWHILE.
* Convierte a una
cadena
* CALL METHOD OF H_RS 'movefirst'.
* CALL METHOD OF H_RS 'getstring' = c3.
* IF SY-SUBRC NE 0. WRITE SY-MSGLI. ENDIF.
* ULINE.
*
WRITE: AT / 'Convertido a String'.
* WRITE: AT /
C3.
* Cierra la conexión
CALL METHOD OF H_RS 'close'.
FREE OBJECT H_RS.
H_RS-HANDLE =
-1.
CALL METHOD OF H_CN 'close'.
FREE OBJECT H_CN.
H_CN-HANDLE = -1.
FREE OBJECT
H_FI.
FREE OBJECT H_IT.
FREE OBJECT H_ES.
FREE OBJECT
H_ER.
ENDIF.
De:
Enviado el: Jueves, 02
de Noviembre de 2006 02:23 p.m.
Para:
Asunto: [ABAP4] Conexion desde programa
ABAP a SQL...
Hola foro, como
están?
Necesito ayuda, cómo realizar desde un programa ABAP la
lectura de datos a una tabla que está en una base de datos SQL
externa.
Cuales son los pasos para configurar la conexion???, con
la tabla "DBCON" alcanza?
Si tienen algun ejemplo, se los
agradezco.
Daniel
__________________________________________________
Correo
Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/
| ADVERTENCIA LEGAL Le informamos que el correo electrónico e Internet no aseguran ni garantizan la confidencialidad de los mensajes transmitidos, ni su integridad o correcta recepción, por lo que GRUPO ANTOLIN-IRAUSA, S.A. y/o sus sociedades filiales o participadas no asumen responsabilidad alguna por tales circunstancias. Si no consiente en la utilización del correo electrónico le rogamos nos lo indique de forma inmediata. Este mensaje va dirigido, en exclusiva, a su destinatario y contiene información confidencial y sujeta al secreto profesional, cuya divulgación no está permitida por la ley. Si hubiera recibido este mensaje por error, le rogamos lo comunique mediante correo electrónico remitido al emisor y proceda a su eliminación, así como a la de cualquier documento adjunto al mismo. Asimismo, le comunicamos que la distribución, copia o utilización de este mensaje, o de cualquier documento adjunto al mismo, con cualquier finalidad, están prohibidas por la ley |
| PRIVILEGED AND CONFIDENTIAL We hereby inform you, that e-mail and Internet do not guarantee the confidentiality, nor the completeness or proper reception of the messages sent and, thus, GRUPO ANTOLIN-IRAUSA, S.A. and/or its affiliated or participated companies does not assume any liability for those circumstances. Should you not agree to the use of e-mail, you are kindly requested to notify us immediately. This message is intended exclusively for the person to whom it is addressed and contains privileged and confidential information protected from disclosure by law. If you are not the addressee indicated in this message, you should immediately delete it as well as any attachments and to notify it to the sender by e-mail. Also, you are hereby notified that any dissemination, distribution, copying or use of this message or any attachments, for any purpose, is strictly prohibited by law. |