Текущее время: Сб, июл 26 2025, 11:36

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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