Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7137706
  • 博文数量: 655
  • 博客积分: 10264
  • 博客等级: 上将
  • 技术积分: 8278
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-04 17:47
个人简介

ABAP顾问

文章分类

全部博文(655)

文章存档

2017年(2)

2014年(8)

2013年(3)

2012年(2)

2011年(18)

2010年(102)

2009年(137)

2008年(274)

2007年(134)

分类:

2008-07-29 20:11:04

文件: db1.rar(例程所用Access数据库)
大小: 6KB
下载: 下载

 

  REPORT  Z_BARRY_TEST_MDB2.

INCLUDE ole2incl.

CONSTANTS: provider(40)  VALUE 'Provider=Microsoft.Jet.OLEDB.4.0',
           security(40)  VALUE 'Persist Security Info=False',
           datasource(30VALUE 'Data Source=D:\db1.mdb'.
DATA: o_conn      TYPE ole2_object,
      o_recordset TYPE ole2_object,
      o_field     TYPE ole2_object.
DATA: con_str(128) ,sql_str(400).
DATABEGIN OF ty_itab OCCURS 0,
        mandt LIKE t001-mandt ,
        bukrs LIKE t001-bukrs ,
        butxt LIKE t001-butxt ,
      END OF ty_itab.
DATA: itab LIKE TABLE OF  ty_itab 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'.
ENDFORM.                    "OLEDB_open

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

  sql_str = 'select mandt, bukrs,butxt from TEST_ZTEST'.
  CALL METHOD OF o_conn 'Execute' = o_recordset
    EXPORTING
    #1 = sql_str.

  GET PROPERTY OF o_recordset 'EOF' = rs_eof.
  REFRESH itab.

  WHILE rs_eof NE 1.
    CALL METHOD OF o_recordset 'fields' = o_field
      EXPORTING
      #1 = 0.
    GET PROPERTY OF o_field 'Value' = itab-mandt.

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

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

    APPEND itab.

    CALL METHOD OF o_recordset 'MoveNext'.
    GET PROPERTY OF o_recordset 'EOF' = rs_eof.
  ENDWHILE.
  LOOP AT itab.
    WRITE: / itab-mandt,itab-bukrs,itab-butxt.
  ENDLOOP.
ENDFORM.                    "sql_select
*&---------------------------------------------------------------------*
*&      Form  sql_update
*&---------------------------------------------------------------------*
FORM sql_update .
  CONCATENATE 'update TEST_ZTEST set butxt=' '''' 'SAP AG' ''''
              ' where bukrs=' '''' '2005' '''' INTO sql_str.
  CALL METHOD OF o_conn 'Execute' = o_recordset
    EXPORTING
    #1 = sql_str.
ENDFORM.                    "sql_update

*&---------------------------------------------------------------------*
*&      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
阅读(7054) | 评论(20) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-09-23 20:08:47

晕,我说怎么VC、Delphi都用connectionstring而ABAP不是。 谢谢了!

qdbarry2008-09-23 19:38:15

另:OLE的东西都不能定义成Job的,因为是要连接本地对象

qdbarry2008-09-23 19:36:29

看来只有两个朋友认真测试了这个程序。 现在可以了。

chinaunix网友2008-09-23 18:58:50

为什么我也碰到一样的问题,CALL METHOD OF o_conn 'Open'时出错。 估计就是connection string的问题吧,能否把你的环境说下? 另外问下,这种程序没法定义成Batch job的吧?好像必须用SAPGUI才可以访问ACCESS?

qdbarry2008-09-18 11:04:38

汗。。。再次声明,本博客除非注明转载,一律为原创程序!! 不要再问试过没试过的问题了!! 遇到问题自己查找原因