Hola,
Despues de pelearme mucho, he conseguido leer datos de una BBDD ACCESS.
Dejo aquí el código para quien le pueda interesar
Un saludo
REPORT z_prueba_access.
* Selection Screen
INCLUDE ole2incl.
*data: TEST like TEST.
*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
'Driver={Driver do Microsoft Access (*.mdb)};' &
'DBQ=\\lhinf\C\bd1.mdb;'.
DATA: c2(250) VALUE 'select * from datosclientes'.
DATA: rs_eof TYPE i.
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.
* Crea el objeto recordset
CREATE OBJECT h_rs 'ADODB.Recordset'.
IF sy-subrc NE 0. WRITE sy-msgli. ENDIF.
SET PROPERTY OF h_rs 'ActiveConnection' = h_cn.
SET PROPERTY OF h_rs 'CursorType' = 1.
SET PROPERTY OF h_rs 'LockType' = 1.
* Abrimos la consulta a BBDD
CALL METHOD OF h_rs 'open' EXPORTING #2 = c2.
IF sy-subrc NE 0. WRITE sy-msgli. ENDIF.
GET PROPERTY OF h_rs 'RecordCount' = i1.
IF sy-subrc NE 0. WRITE sy-msgli. ENDIF.
GET PROPERTY OF h_rs 'EOF' = rs_eof.
WHILE rs_eof <> 1.
IF i1 > 0 .
i4 = i4 + 1.
ULINE.
WRITE: AT / 'REGISTRO:', i4.
* Inicia Impresión de Columnas
i3 = 0.
CALL METHOD OF h_rs 'Fields' = h_fi EXPORTING #1 = 0.
GET PROPERTY OF h_fi 'Value' = cfvalue.
WRITE: AT /(25) 'F1:', cfvalue.
i3 = i3 + 1.
CALL METHOD OF h_rs 'Fields' = h_fi EXPORTING #1 = i3.
GET PROPERTY OF h_fi 'VALUE' = cfvalue.
WRITE: AT /(25) 'F2:', cfvalue.
i3 = i3 + 1.
CALL METHOD OF h_rs 'Fields' = h_fi EXPORTING #1 = i3.
GET PROPERTY OF h_fi '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' = rs_eof.
ENDIF.
ENDWHILE.
* 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.
Despues de pelearme mucho, he conseguido leer datos de una BBDD ACCESS.
Dejo aquí el código para quien le pueda interesar
Un saludo
REPORT z_prueba_access.
* Selection Screen
INCLUDE ole2incl.
*data: TEST like TEST.
*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
'Driver={Driver do Microsoft Access (*.mdb)};' &
'DBQ=\\lhinf\C\bd1.mdb;'.
DATA: c2(250) VALUE 'select * from datosclientes'.
DATA: rs_eof TYPE i.
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.
* Crea el objeto recordset
CREATE OBJECT h_rs 'ADODB.Recordset'.
IF sy-subrc NE 0. WRITE sy-msgli. ENDIF.
SET PROPERTY OF h_rs 'ActiveConnection' = h_cn.
SET PROPERTY OF h_rs 'CursorType' = 1.
SET PROPERTY OF h_rs 'LockType' = 1.
* Abrimos la consulta a BBDD
CALL METHOD OF h_rs 'open' EXPORTING #2 = c2.
IF sy-subrc NE 0. WRITE sy-msgli. ENDIF.
GET PROPERTY OF h_rs 'RecordCount' = i1.
IF sy-subrc NE 0. WRITE sy-msgli. ENDIF.
GET PROPERTY OF h_rs 'EOF' = rs_eof.
WHILE rs_eof <> 1.
IF i1 > 0 .
i4 = i4 + 1.
ULINE.
WRITE: AT / 'REGISTRO:', i4.
* Inicia Impresión de Columnas
i3 = 0.
CALL METHOD OF h_rs 'Fields' = h_fi EXPORTING #1 = 0.
GET PROPERTY OF h_fi 'Value' = cfvalue.
WRITE: AT /(25) 'F1:', cfvalue.
i3 = i3 + 1.
CALL METHOD OF h_rs 'Fields' = h_fi EXPORTING #1 = i3.
GET PROPERTY OF h_fi 'VALUE' = cfvalue.
WRITE: AT /(25) 'F2:', cfvalue.
i3 = i3 + 1.
CALL METHOD OF h_rs 'Fields' = h_fi EXPORTING #1 = i3.
GET PROPERTY OF h_fi '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' = rs_eof.
ENDIF.
ENDWHILE.
* 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.
Comentario