abap oledb連access,sql

来源:互联网 发布:js中用radio做单选题 编辑:程序博客网 时间:2024/05/22 09:05

REPORT  ZTEST_90.
INCLUDE ole2incl.

*---access
CONSTANTS: provider(40) VALUE 'Provider=Microsoft.Jet.OLEDB.4.0',
           security(160) VALUE 'Password="726869519         ";User ID=chengli;Persist Security Info=True;Jet OLEDB:System database=D:2010_02_04.MDW',
           datasource(60) VALUE 'Data Source=D:2010_02_04.mdb'.
*--mssql
*CONSTANTS: provider(40) VALUE 'Provider=SQLOLEDB.1',
*           security(160) VALUE 'Password=123456;Persist Security Info=True;User ID=sa',
*           datasource(60) VALUE 'Initial Catalog=MYTESTDB;Data Source=CNBTITD017'.
DATA: o_conn      TYPE ole2_object,
      o_recordset TYPE ole2_object,
      o_field     TYPE ole2_object.
DATA: con_str(400) ,sql_str(400).
DATA: BEGIN OF ty_itab OCCURS 0,
        mandt LIKE t001-mandt ,
        bukrs LIKE t001-bukrs ,
        butxt LIKE t001-butxt ,
      END OF ty_itab.
data: begin of ty_itab1 occurs 0,
        employee type c length 30,
        BaseSalary type p decimals 2,
        Float_JT type p decimals 2,
        House_JT type p decimals 2,
        PostRank type c length 30,
        EmployeeName type c length 30,
      end of ty_itab1.
DATA: itab LIKE TABLE OF ty_itab1 WITH HEADER LINE.

START-OF-SELECTION.
PERFORM oledb_open.
PERFORM sql_select.
"PERFORM sql_update.
PERFORM sql_close.

*&-------------------------------------------------------------------
--*
*&      Form oledb_open
*&-------------------------------------------------------------------
--*
FORM oledb_open.
CONCATENATE provider ';' security ';' datasource INTO con_str.
CREATE OBJECT o_conn 'ADODB.Connection'.
SET PROPERTY OF o_conn 'Provider' = provider.
SET PROPERTY OF o_conn 'ConnectionString' = con_str.
CALL METHOD OF o_conn 'Open'.
if sy-subrc <> 0.
   stop.
endif.
ENDFORM.                    "OLEDB_open

*&-------------------------------------------------------------------
--*
*&      Form sql_select
*&-------------------------------------------------------------------
--*
FORM sql_select .
DATA: rs_eof TYPE i.

sql_str = 'select
EmployeeCode,BaseSalary,Float_JT,House_JT,PostRank,EmployeeName from
EmployeeBaseData where DepartmentCode="AD_0005"'.
CALL METHOD OF o_conn 'Execute' = o_recordset
    EXPORTING
    #1 = sql_str.

GET PROPERTY OF o_recordset 'EOF' = rs_eof.    "沒有記錄返回1
if sy-subrc <> 0.   "有時ACCESS表獨佔時,
    rs_eof = 1.
endif.
REFRESH itab.

WHILE rs_eof NE 1.
    CALL METHOD OF o_recordset 'fields' = o_field
      EXPORTING
      #1 = 0.   "seq(0.1.2.......)
    GET PROPERTY OF o_field 'Value' = itab-employee.
    CALL METHOD OF o_recordset 'fields' = o_field
      EXPORTING
      #1 = 1.   "seq(0.1.2.......)
    GET PROPERTY OF o_field 'Value' = itab-BaseSalary.

    CALL METHOD OF o_recordset 'fields' = o_field
      EXPORTING
      #1 = 2.   "seq(0.1.2.......)
    GET PROPERTY OF o_field 'Value' = itab-Float_JT.

    CALL METHOD OF o_recordset 'fields' = o_field
      EXPORTING
      #1 = 3.
    GET PROPERTY OF o_field 'Value' = itab-House_JT.

    CALL METHOD OF o_recordset 'fields' = o_field
      EXPORTING
      #1 = 4.
    GET PROPERTY OF o_field 'Value' = itab-PostRank.

    CALL METHOD OF o_recordset 'fields' = o_field
      EXPORTING
      #1 = 5.
    GET PROPERTY OF o_field 'Value' = itab-EmployeeName.

    APPEND itab.

    CALL METHOD OF o_recordset 'MoveNext'.
    GET PROPERTY OF o_recordset 'EOF' = rs_eof.
ENDWHILE.
LOOP AT itab.
    "WRITE: / itab-employee,itab-BaseSalary,itab-Float_JT,itab-
House_JT,itab-PostRank,itab-EmployeeName.
ENDLOOP.
ENDFORM.                    "sql_select


*&-------------------------------------------------------------------
--*
*&      Form sql_close
*&-------------------------------------------------------------------
--*
FORM sql_close.
CALL METHOD OF o_recordset 'Close'.
CALL METHOD OF o_conn 'Close'.
FREE OBJECT o_recordset.
FREE OBJECT o_conn.
ENDFORM.                    "sql_close

原创粉丝点击