sap 連接saccess,mssql

*&-------------------------------------------------------------------
--*
*& Report  ZTEST_90
*&
*&-------------------------------------------------------------------
--*
*& Author              : CHUNG NAM INTERNATIONAL CO.,LTD. DREEXU
*& Creation Date       : 12.10.2010
*& Program Type        : Executable Programs
*& Logical DB          : [Nil]
*& Text Elements
*&   (Titles&Headers)  : [Nil]
*&   (Selection Texts) : [Nil]
*&   (Text symbols)    : [Nil]
*& GUI Status          : [Nil] OR [Standard]
*& Variants            : [Nil] OR Variant
*& Message Class       : [Nil]
*& Description         :
*&
*&-------------------------------------------------------------------
--*
*& Modifications       :
*& ID   Date        Programmer   Description
*&
*&-------------------------------------------------------------------
--*

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=G:.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,
        IdentityCard type c length 40,
      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.
   message con_str type 'E'.
   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,Identi
tyCard 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.

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

    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,itab-IdentityCard.
    WRITE: / itab-EmployeeName,itab-IdentityCard.
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章