Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Accessing MS Access files from ABAP program

Former Member
0 Kudos

I have some data in a table in MS Access .mdb file which I want to access from my ABAP program, please provide a code sample if possible. Will certainly give points for right answer.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Krishna,

Look at the sample program

*&---------------------------------------------------------------------*
*& Report ZYSH01 *
*& Developer : Hong young sun (sapkor@yahoo.co.kr *
*& Create Date : 2006.02.27 *
*& SAP R/3 Version : 4.6C *
*&---------------------------------------------------------------------*
REPORT ZYSH01.

INCLUDE ole2incl.

DATA: con TYPE ole2_object,
rec TYPE ole2_object.

DATA SQL(1023).

DATA: BEGIN OF SPL OCCURS 0,
VAL(1023),
END OF SPL.

DATA: BEGIN OF I1 OCCURS 0,
F1(10) ,
F2 TYPE I,
END OF I1.

IF con-header IS INITIAL OR con-handle = -1.
CREATE OBJECT con 'ADODB.Connection'.
IF NOT sy-subrc = 0.
EXIT.
ENDIF.

CREATE OBJECT REC 'ADODB.Recordset'.
IF NOT sy-subrc = 0.
EXIT.
ENDIF.

ENDIF.

* MDB connetion infomations ....
CONCATENATE 'Provider=' '''Microsoft.Jet.OLEDB.4.0''' ';'
INTO SQL.
CONCATENATE SQL 'Password=' '''''' ';'
INTO SQL.
CONCATENATE SQL 'User ID=' '''Admin''' ';'
INTO SQL.
CONCATENATE SQL 'Data Source=' '''C:db2.mdb''' ';'
INTO SQL.
CONCATENATE SQL 'Mode=' '''Share Deny None'''
INTO SQL.

* MDB connection ...
CALL METHOD OF CON 'Open'
EXPORTING #1 = SQL.
*

* Query (insert) statement ...
SQL = 'insert into [test] values('.
CONCATENATE SQL '''A''' ',' '''1''' ')' INTO SQL.

* Query run ...
CALL METHOD OF REC 'Open'
EXPORTING #1 = SQL
#2 = CON
#3 = '1'.

* Query (select) statement ...
SQL = 'select * from[test]'.

* Query run ...
CALL METHOD OF REC 'Open'
EXPORTING #1 = SQL
#2 = CON
#3 = '1'.

* Selecting MDB record into SAP internal table ...
DO.
CALL METHOD OF REC 'getstring' = SQL
EXPORTING #1 = '2' "Do not modify!
#2 = 1 "Do not modify!
#3 = '|' "Do not modify!
#4 = '|'. "Do not modify!

IF SUBRC EQ 0.
REFRESH SPL. CLEAR SPL.
SPLIT SQL AT '|' INTO TABLE SPL.
LOOP AT SPL.
CASE SY-TABIX.
WHEN 1.
I1-F1 = SPL-VAL.
WHEN OTHERS.
I1-F2 = SPL-VAL.
ENDCASE.
ENDLOOP.
APPEND I1. CLEAR I1.
ELSE.
EXIT.
ENDIF.

ENDDO.

* Result writing ...
LOOP AT I1.
WRITE: AT /1(10) I1-F1,
AT (10) I1-F2.
ENDLOOP.

* connetion close & destroy
FREE OBJECT con.
FREE OBJECT rec.

Thanks,

1 REPLY 1

Former Member
0 Kudos

Krishna,

Look at the sample program

*&---------------------------------------------------------------------*
*& Report ZYSH01 *
*& Developer : Hong young sun (sapkor@yahoo.co.kr *
*& Create Date : 2006.02.27 *
*& SAP R/3 Version : 4.6C *
*&---------------------------------------------------------------------*
REPORT ZYSH01.

INCLUDE ole2incl.

DATA: con TYPE ole2_object,
rec TYPE ole2_object.

DATA SQL(1023).

DATA: BEGIN OF SPL OCCURS 0,
VAL(1023),
END OF SPL.

DATA: BEGIN OF I1 OCCURS 0,
F1(10) ,
F2 TYPE I,
END OF I1.

IF con-header IS INITIAL OR con-handle = -1.
CREATE OBJECT con 'ADODB.Connection'.
IF NOT sy-subrc = 0.
EXIT.
ENDIF.

CREATE OBJECT REC 'ADODB.Recordset'.
IF NOT sy-subrc = 0.
EXIT.
ENDIF.

ENDIF.

* MDB connetion infomations ....
CONCATENATE 'Provider=' '''Microsoft.Jet.OLEDB.4.0''' ';'
INTO SQL.
CONCATENATE SQL 'Password=' '''''' ';'
INTO SQL.
CONCATENATE SQL 'User ID=' '''Admin''' ';'
INTO SQL.
CONCATENATE SQL 'Data Source=' '''C:db2.mdb''' ';'
INTO SQL.
CONCATENATE SQL 'Mode=' '''Share Deny None'''
INTO SQL.

* MDB connection ...
CALL METHOD OF CON 'Open'
EXPORTING #1 = SQL.
*

* Query (insert) statement ...
SQL = 'insert into [test] values('.
CONCATENATE SQL '''A''' ',' '''1''' ')' INTO SQL.

* Query run ...
CALL METHOD OF REC 'Open'
EXPORTING #1 = SQL
#2 = CON
#3 = '1'.

* Query (select) statement ...
SQL = 'select * from[test]'.

* Query run ...
CALL METHOD OF REC 'Open'
EXPORTING #1 = SQL
#2 = CON
#3 = '1'.

* Selecting MDB record into SAP internal table ...
DO.
CALL METHOD OF REC 'getstring' = SQL
EXPORTING #1 = '2' "Do not modify!
#2 = 1 "Do not modify!
#3 = '|' "Do not modify!
#4 = '|'. "Do not modify!

IF SUBRC EQ 0.
REFRESH SPL. CLEAR SPL.
SPLIT SQL AT '|' INTO TABLE SPL.
LOOP AT SPL.
CASE SY-TABIX.
WHEN 1.
I1-F1 = SPL-VAL.
WHEN OTHERS.
I1-F2 = SPL-VAL.
ENDCASE.
ENDLOOP.
APPEND I1. CLEAR I1.
ELSE.
EXIT.
ENDIF.

ENDDO.

* Result writing ...
LOOP AT I1.
WRITE: AT /1(10) I1-F1,
AT (10) I1-F2.
ENDLOOP.

* connetion close & destroy
FREE OBJECT con.
FREE OBJECT rec.

Thanks,