Текущее время: Вс, июл 27 2025, 14:50

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пн, май 19 2008, 17:35 
Ассистент
Ассистент

Зарегистрирован:
Пн, фев 11 2008, 11:40
Сообщения: 31
FUNCTION ZKATESTFM1.
*"----------------------------------------------------------------------
*"*"Ëîêàëüíûé èíòåðôåéñ:
*" IMPORTING
*" VALUE(I_REQUNR) TYPE SRSC_S_IF_SIMPLE-REQUNR
*" VALUE(I_DSOURCE) TYPE SRSC_S_IF_SIMPLE-DSOURCE OPTIONAL
*" VALUE(I_MAXSIZE) TYPE SRSC_S_IF_SIMPLE-MAXSIZE OPTIONAL
*" VALUE(I_INITFLAG) TYPE SRSC_S_IF_SIMPLE-INITFLAG OPTIONAL
*" VALUE(I_READ_ONLY) TYPE SRSC_S_IF_SIMPLE-READONLY OPTIONAL
*" VALUE(I_REMOTE_CALL) TYPE SBIWA_FLAG DEFAULT SBIWA_C_FLAG_OFF
*" TABLES
*" I_T_SELECT TYPE SRSC_S_IF_SIMPLE-T_SELECT OPTIONAL
*" I_T_FIELDS TYPE SRSC_S_IF_SIMPLE-T_FIELDS OPTIONAL
*" E_T_DATA STRUCTURE /BIC/TZKATEST OPTIONAL
*" EXCEPTIONS
*" NO_MORE_DATA
*" ERROR_PASSED_TO_MESS_HANDLER
*"----------------------------------------------------------------------

INCLUDE ole2incl.

data:
connection type ole2_object,
rs type ole2_object,
connectionstring(500),
state type i,
sql(1500) ,
eof.

* Example: DataSource for table SFLIGHT
TABLES: /BIC/TZKATEST.

* Auxiliary Selection criteria structure
DATA: L_S_SELECT TYPE SRSC_S_SELECT.

* Maximum number of lines for DB table
STATICS: S_S_IF TYPE SRSC_S_IF_SIMPLE,

* counter
S_COUNTER_DATAPAKID LIKE SY-TABIX,

* cursor
S_CURSOR TYPE CURSOR.
* Select ranges
RANGES: L_R_CARRID FOR SFLIGHT-CARRID,
L_R_CONNID FOR SFLIGHT-CONNID.

* Initialization mode (first call by SAPI) or data transfer mode
* (following calls) ?
IF I_INITFLAG = SBIWA_C_FLAG_ON.

************************************************************************
* Initialization: check input parameters
* buffer input parameters
* prepare data selection
************************************************************************

* Check DataSource validity
CASE I_DSOURCE.
WHEN 'ZKATESTIO'.
WHEN OTHERS.
IF 1 = 2. MESSAGE E009(R3). ENDIF.
RAISE ERROR_PASSED_TO_MESS_HANDLER.
ENDCASE.

APPEND LINES OF I_T_SELECT TO S_S_IF-T_SELECT.

* Fill parameter buffer for data extraction calls
S_S_IF-REQUNR = I_REQUNR.
S_S_IF-DSOURCE = I_DSOURCE.
S_S_IF-MAXSIZE = I_MAXSIZE.

* Fill field list table for an optimized select statement
* (in case that there is no 1:1 relation between InfoSource fields
* and database table fields this may be far from beeing trivial)
APPEND LINES OF I_T_FIELDS TO S_S_IF-T_FIELDS.

ELSE.

CASE S_COUNTER_DATAPAKID.
WHEN 0.
* E_T_DATA-/BIC/ZKATEST = 'A01'.
* E_T_DATA-TXTMD = 'a01'.
* APPEND E_T_DATA.
* E_T_DATA-/BIC/ZKATEST = 'A02'.
* E_T_DATA-TXTMD = 'a02'.
* APPEND E_T_DATA.
* E_T_DATA-/BIC/ZKATEST = 'A03'.
* E_T_DATA-TXTMD = 'a03'.
* APPEND E_T_DATA.

connectionstring = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\sever\sapmnt\testdb.mdb'.
sql = 'select c1, c2 from offices'.
* c1 char(3), c2 char(10)

create object connection 'adodb.connection'.
if sy-subrc ne 0.
E_T_DATA-/BIC/ZKATEST = 'S1'.
E_T_DATA-TXTMD = 'NO : get adodb.connection'.
APPEND E_T_DATA.
Else.
E_T_DATA-/BIC/ZKATEST = 'S1'.
E_T_DATA-TXTMD = 'YES : get adodb.connection'.
APPEND E_T_DATA.
endif.

set property of connection 'ConnectionString' = ConnectionString.
if sy-subrc ne 0.
E_T_DATA-/BIC/ZKATEST = 'S2'.
E_T_DATA-TXTMD = 'NO : set ConnectionString'.
APPEND E_T_DATA.
Else.
E_T_DATA-/BIC/ZKATEST = 'S2'.
E_T_DATA-TXTMD = 'YES : set ConnectionString'.
APPEND E_T_DATA.
endif.

call method of connection 'Open'.
if sy-subrc ne 0.
E_T_DATA-/BIC/ZKATEST = 'S3'.
E_T_DATA-TXTMD = 'NO : open'.
APPEND E_T_DATA.
Else.
E_T_DATA-/BIC/ZKATEST = 'S3'.
E_T_DATA-TXTMD = 'YES : open'.
APPEND E_T_DATA.
endif.

create object rs 'adodb.recordset'.
if sy-subrc ne 0.
E_T_DATA-/BIC/ZKATEST = 'S4'.
E_T_DATA-TXTMD = 'NO : get adodb.recordset'.
APPEND E_T_DATA.
Else.
E_T_DATA-/BIC/ZKATEST = 'S4'.
E_T_DATA-TXTMD = 'YES : get adodb.recordset'.
APPEND E_T_DATA.
endif.

get property of rs 'State' = state.
if sy-subrc ne 0.
E_T_DATA-/BIC/ZKATEST = 'S5'.
E_T_DATA-TXTMD = 'NO'.
APPEND E_T_DATA.
else.
if state = 1.
call method of rs 'Close'.
if sy-subrc ne 0.
E_T_DATA-/BIC/ZKATEST = 'S6'.
E_T_DATA-TXTMD = 'NO'.
APPEND E_T_DATA.
Else .
E_T_DATA-/BIC/ZKATEST = 'S6'.
E_T_DATA-TXTMD = 'YES'.
APPEND E_T_DATA.
endif.
endif.
endif.

set property of rs 'ActiveConnection' = connection.
if sy-subrc ne 0.
E_T_DATA-/BIC/ZKATEST = 'S7'.
E_T_DATA-TXTMD = 'NO'.
APPEND E_T_DATA.
Else.
E_T_DATA-/BIC/ZKATEST = 'S7'.
E_T_DATA-TXTMD = 'YES'.
APPEND E_T_DATA.
endif.

call method of rs 'Open'
EXPORTING
#1 = sql.
if sy-subrc ne 0.
E_T_DATA-/BIC/ZKATEST = 'S8'.
E_T_DATA-TXTMD = 'NO'.
APPEND E_T_DATA.
Else.
E_T_DATA-/BIC/ZKATEST = 'S8'.
E_T_DATA-TXTMD = 'YES'.
APPEND E_T_DATA.
endif.

call method of rs 'MoveFirst' .
if sy-subrc ne 0.
E_T_DATA-/BIC/ZKATEST = 'S9'.
E_T_DATA-TXTMD = 'NO'.
APPEND E_T_DATA.
Else.
E_T_DATA-/BIC/ZKATEST = 'S9'.
E_T_DATA-TXTMD = 'YES'.
APPEND E_T_DATA.
endif.

DATA : c1 type ole2_object.
DATA : c1_v(10) type C.
DATA : c2 type ole2_object.
DATA : c2_v(10) type C.

get property of rs 'EOF' = eof.

WHILE eof = '0'.
E_T_DATA-/BIC/ZKATEST = 'S10'.
E_T_DATA-TXTMD = 'YES'.
APPEND E_T_DATA.

call method of rs 'Fields' = c1 EXPORTING #1 = 'c1'.
get property of c1 'Value' = c1_v.
call method of rs 'Fields' = c2 EXPORTING #1 = 'c2'.
get property of c2 'Value' = c2_v.
CONCATENATE 'T' c1_v INTO E_T_DATA-/BIC/ZKATEST.
CONCATENATE 'T' c2_v INTO E_T_DATA-TXTMD.
APPEND E_T_DATA.
call method of rs 'MoveNext'.
get property of rs 'EOF' = eof.
ENDWHILE.

E_T_DATA-/BIC/ZKATEST = 'S11'.
E_T_DATA-TXTMD = 'YES'.
APPEND E_T_DATA.

call method of rs 'Close'.
call method of connection 'Close'.

WHEN 1.
RAISE NO_MORE_DATA.
ENDCASE.

S_COUNTER_DATAPAKID = S_COUNTER_DATAPAKID + 1.

E_T_DATA-/BIC/ZKATEST = 'S12'.
E_T_DATA-TXTMD = 'YES'.
APPEND E_T_DATA.

ENDIF.

E_T_DATA-/BIC/ZKATEST = 'S13'.
E_T_DATA-TXTMD = 'YES'.
APPEND E_T_DATA.

ENDFUNCTION.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 20 2008, 11:18 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Чт, сен 01 2005, 15:54
Сообщения: 95
Интересный примерчик :D
Всё происходит так, как Вы описавали...
При запуске из RSA3 всё отрабатывает, при запуске из инфо-пакета 0 записей.
Но вот в чём самый прикол ))
Я попробовал изменить соответствующий блок следующим образом:

create object connection '1adodb.connection'.
if sy-subrc ne 0.
E_T_DATA-/BIC/ZKATEST = 'S1'.
E_T_DATA-TXTMD = 'NO : get 1adodb.connection'.
APPEND E_T_DATA.
Else.
E_T_DATA-/BIC/ZKATEST = 'S1'.
E_T_DATA-TXTMD = 'YES : get 1adodb.connection'.
APPEND E_T_DATA.
endif.

Подставил "1". Казалось бы, должен выдать ошибку. Но нет )) Пишет "YES : get 1adodb.connection". :shock:
Так что, как я и предполагал, запустить у Вас это в фоне не получится... :roll:
Предлагаю поступить следующим образом (сам так делал в своё время): перенесите этот код в обычный ФМ, читайте из Access и записывайте данные во внутреннюю табличку, а из неё уже сдалайте источник данных экспорта. Так же прямо от туда можно будет запускать инфо-пакет.
Такой способ будет без проблемм отрабатывать в диалоге.
Если же нужно выполнять это всё по расписанию, то стоит попробовать поискать на форуме что то типа "экстракция данных из Excel". Не знаю, удалось ли кому-нибудь или нет, но тема не раз поднималась. Методика извлечения данных там аналогичная.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, май 22 2008, 10:22 
Ассистент
Ассистент

Зарегистрирован:
Пн, фев 11 2008, 11:40
Сообщения: 31
2 ST.

Мне коллега посоветовал покопаться с полномочиями...
Скажи, когды ты тестил у себя и создавал источник данных для self-системы, то у тебя для регистрации RFC-соединения к self-системе прописан пользователь ALEREMOTE?
Вот у меня не приписан ни один пользователь и мне подсказывают что это не правильно. как у тебя?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, май 22 2008, 21:07 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пт, окт 21 2005, 09:24
Сообщения: 832
Откуда: от верблюда...тоже:)
Пол: Мужской
artemisin написал(а):
2 ST.

Мне коллега посоветовал покопаться с полномочиями...
Скажи, когды ты тестил у себя и создавал источник данных для self-системы, то у тебя для регистрации RFC-соединения к self-системе прописан пользователь ALEREMOTE?
Вот у меня не приписан ни один пользователь и мне подсказывают что это не правильно. как у тебя?

Я бы все же копнул в сторону поиска хотя бы по форуму по словам access
вот сие например нашел:
http://www.sapnet.ru/viewtopic.php?t=7
Может весь суксЪ именно в "открывашке" access'а

_________________
а подпись...а подписи не будет :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 23 2008, 15:59 
Ассистент
Ассистент

Зарегистрирован:
Пн, фев 11 2008, 11:40
Сообщения: 31
Спасибо за пример, попробую из него почерпнуть команды...

Но что-то мне подсказывает, что он принципиально от моего не отличается. Ведь вопрос в том, что мой пример в диалоговом режиме рабтает.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB