Текущее время: Чт, июл 24 2025, 01:57

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


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Фоновое задание
СообщениеДобавлено: Пт, мар 30 2012, 00:47 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пн, сен 21 2009, 15:29
Сообщения: 43
Пол: Мужской
Добрый день уважаемые коллеги!!!!
В АВАР_е делаю первые шаги, а вообще я консультант в HR.
Возникла необходимость загрузки данных по инфотипам 1000, 1951, 1952 в эксель файл.
программа, которую я написал, работает безотказно, но появилась необходимость постоянного (непрерывного)
обновления этих данных каждые 15 секунд. Пробовал играться с циклами while, do - ничего не вышло.
У меня большая просьба - подскажите что необходимо сделать чтобы это реализовать.
Программа использует логическую базу данных PCH.
А вот собственно и она:

REPORT ZHR_TO_ARCGIS.

TYPE-POOLS ole2.

DATA: C80(80),
C70(70),
C60(60),
C40(40),
C30(30),
C20(20),
C10(10).

DATA: XLTEXT TYPE I.
DATA: XLWORKBOOKNORMAL TYPE I.
data: file_txt like rlgrap-filename. "C:\tmp\test.txt

DATA: EXCEL TYPE ole2_object.
DATA: BOOKS TYPE OLE2_OBJECT.
DATA: ACTIVWINDOW TYPE OLE2_OBJECT.
DATA: ACTIVSELEC TYPE OLE2_OBJECT.
DATA: ACTIVBOOKS TYPE OLE2_OBJECT.
DATA: CELL TYPE OLE2_OBJECT.
DATA: ACTIVSHEET TYPE OLE2_OBJECT.
DATA: SELECT1 TYPE OLE2_OBJECT.
DATA: COL TYPE I,
ROW TYPE I,
BEG_ROW TYPE I,
END_ROW TYPE I,
BEG_COL TYPE I,
END_COL TYPE I,
COL_POST TYPE I,
ROW_POST TYPE I,
NUM_ROW TYPE I.
DATA: COL_J10 TYPE I. " Позиция вывода столбца = col_j * 10
DATA: VALUE(40).

data: index(4).

FILE_TXT = 'C:\TEST1\locationtamplate.xls'.

INDEX = 1.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
TABLES: objec, hrp1000, hrp1951, hrp1952.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
infotypes: 1000, 1951, 1952 .



types: BEGIN OF HRP,
objid LIKE p1952-objid,
short LIKE p1000-short,
stext LIKE p1000-stext,
readiness LIKE p1951-readiness,
longitude like p1952-longitude,
latitude LIKE p1952-latitude,
END OF HRP.
DATA etab type standard table of HRP with header line .
data stab type HRP .
data gtab type etab .
data r type i.
DATA H TYPE I.


INITIALIZATION.
PCHPLVAR = '01'.
PCHOTYPE = 'O'.
pchobjid-low = '50000050'.
append pchobjid.

CLEAR etab.


start-of-selection.

get objec.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Loop at p1952 WHERE begda LE pc-endda AND endda GE pc-begda.

if p1952-longitude ne 0 and p1952-latitude ne 0 .
if p1952-subty = 0008.
stab-objid = p1952-objid.
stab-longitude = p1952-longitude.
stab-latitude = p1952-latitude.
"append stab to etab.
WRITE: /, stab-longitude, stab-latitude.
endif.
ENDIF.
ENDloop.

Loop at p1951 WHERE begda LE pc-endda AND endda GE pc-begda.
if p1000-objid = stab-objid.
stab-readiness = p1951-readiness.
"append stab to etab.
WRITE: stab-readiness.
endif.
ENDloop.

Loop at p1000 WHERE begda LE pc-endda AND endda GE pc-begda.
if p1000-objid = stab-objid.
stab-short = p1000-short.
stab-stext = p1000-stext.
append stab to etab.
write: stab-objid, stab-short, stab-stext.
endif.
ENDloop.

clear stab.
end-of-selection.
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
CREATE OBJECT EXCEL 'EXCEL.APPLICATION'.
CALL METHOD OF EXCEL 'workbooks' = BOOKS.
SET PROPERTY OF EXCEL 'DisplayAlerts' = 0.

CALL METHOD OF BOOKS 'open' EXPORTING #1 = FILE_TXT
#2 = 2
#3 = 1 .
SET PROPERTY OF EXCEL 'visible' = 0. " =1-видимо, =0-не видимо

CALL METHOD OF EXCEL 'ActiveWorkbook' = ACTIVBOOKS.
IF SY-SUBRC NE 0.
WRITE: / ' ERROR WHEN OPENING EXCEL.APPLICATION', sy-msgli.
ENDIF.

PERFORM SET_CELL USING 1 1 'latitude'.
PERFORM SET_CELL USING 1 2 'longitude'.
PERFORM SET_CELL USING 1 3 'ID number'.
PERFORM SET_CELL USING 1 4 'Short name'.
PERFORM SET_CELL USING 1 5 'Full name'.
PERFORM SET_CELL USING 1 6 'Readiness'.


INDEX = 2.


************************************************************************************

LOOP at etab.

Perform set_cell using index 1 etab-latitude.
Perform set_cell using index 2 etab-longitude.
Perform set_cell using index 3 etab-objid.
Perform set_cell using index 4 etab-short.
Perform set_cell using index 5 etab-stext.
Perform set_cell using index 6 etab-readiness.
num_row = num_row + 1.
index = index + 1.



ENDLOOP.
FILE_TXT = 'C:\TEST1\location.xls'.
XLTEXT = -4158.
XLTEXT = 36.
XLWORKBOOKNORMAL = -4143.
CALL METHOD OF ACTIVBOOKS 'SaveAs'
EXPORTING #1 = FILE_TXT
#2 = XLWORKBOOKNORMAL
#3 = ''
#4 = ''
#5 = 0
#6 = 0
#7 = 1
#8 = 2.



CALL METHOD OF BOOKS 'close'.
FREE OBJECT CELL.
FREE OBJECT ACTIVBOOKS.


CALL METHOD OF EXCEL 'Quit'.
FREE OBJECT CELL.
FREE OBJECT BOOKS.
FREE OBJECT EXCEL.

INCLUDE ZGEOLOCA_EXCEL_FORM.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

*&---------------------------------------------------------------------*
*& Include ZGEOLOCA_EXCEL_FORM
*&---------------------------------------------------------------------*
form GEt_cell using row col changing value.
CALL METHOD OF EXCEL 'activecell' = CELL
EXPORTING #1 = ROW #2 = COL.
GET PROPERTY OF CELL 'value' = VALUE.
endform.

FORM SET_CELL USING ROW COL VALUE.

CALL METHOD OF EXCEL 'cells' = CELL

EXPORTING #1 = ROW #2 = COL.
SET PROPERTY OF CELL 'value' = VALUE.
ENDFORM.

_________________
G O T T_M I T_U N S


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Фоновое задание
СообщениеДобавлено: Пт, мар 30 2012, 06:13 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июл 15 2009, 05:55
Сообщения: 174
Откуда: Мегион - > СПб
Пол: Мужской
SM36

фон

_________________
Ничто так не заразительно, как смех начальника...


Последний раз редактировалось LinevskiySV Пт, мар 30 2012, 06:53, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Фоновое задание
СообщениеДобавлено: Пт, мар 30 2012, 06:37 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
LinevskiySV написал:

Тут выгрузка в Excel идет на фронтэнд, в фоне не получится.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фоновое задание
СообщениеДобавлено: Пт, мар 30 2012, 06:40 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
to alexkay, объясните подробнее что это за данные, для каких целей выгружать каждые 15 сек и как это будет потом использоваться? Может быть стоит подход поменять, например, собирать данные каждые 15 сек записывать/дозаписывать уже обработанные агрегированные данные в Z табличку, а дальше уже с ней работать?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фоновое задание
СообщениеДобавлено: Пт, мар 30 2012, 11:01 
Ассистент
Ассистент

Зарегистрирован:
Чт, июл 22 2010, 19:53
Сообщения: 34
Besa написал:
LinevskiySV написал:

Тут выгрузка в Excel идет на фронтэнд, в фоне не получится.

А если сервер приложений виндовс сервер?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Фоновое задание
СообщениеДобавлено: Пт, мар 30 2012, 12:14 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 351
alexkay написал:
Возникла необходимость загрузки данных по инфотипам 1000, 1951, 1952 в эксель файл.
программа, которую я написал, работает безотказно, но появилась необходимость постоянного (непрерывного)
обновления этих данных каждые 15 секунд.
Погуглите по ключевым словам "timer", "abap" или "autorefresh", "abap" - в инете есть куча примеров. Но возникают вопросы. ГДЕ должны обновляться данные каждые 15 секунд? В Excel-файле? - если он будет открыт пользователем, насколько я сталкивался, записать что-то туда не удастся. Если он не будет открыть пользователем - зачем насиловать файл каждые 15 секунд? Если это лог для скармливания внешней программе - зачем Excel-файл, а не текстовый файл?
Имхо, Besa правильно советует: уточните задание, может оно решается гораздо проще, чем Вы пытаетесь сделать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фоновое задание
СообщениеДобавлено: Пт, мар 30 2012, 18:36 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пн, сен 21 2009, 15:29
Сообщения: 43
Пол: Мужской
Besa написал:
to alexkay, объясните подробнее что это за данные, для каких целей выгружать каждые 15 сек и как это будет потом использоваться? Может быть стоит подход поменять, например, собирать данные каждые 15 сек записывать/дозаписывать уже обработанные агрегированные данные в Z табличку, а дальше уже с ней работать?

Спасибо за совет коллега, возможно вы правы, но хотелось бы работать без Z таблиц.
Идея замысла такова:
Программа должна мониторить каждые 15сек таблицы, которые указаны в программе (р1000, р1951, р1952), соответственно выгружать их в Excel, дальше этот Excel файл подхватывает прога из ArcGIS и выводит координаты оргобъектов на карту.
Мониторинг необходим для того, чтобы полностью автоматизировать этот процесс. То есть в открытой транзакции /isdfps/toe1 инфотипе 1952 и подтипе 0008 изменяем координаты оргобъекта - видим изменение в аркгисе на карте.

_________________
G O T T_M I T_U N S


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Фоновое задание
СообщениеДобавлено: Пт, мар 30 2012, 18:41 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пн, сен 21 2009, 15:29
Сообщения: 43
Пол: Мужской
LAT написал(а):
alexkay написал:
Возникла необходимость загрузки данных по инфотипам 1000, 1951, 1952 в эксель файл.
программа, которую я написал, работает безотказно, но появилась необходимость постоянного (непрерывного)
обновления этих данных каждые 15 секунд.
Погуглите по ключевым словам "timer", "abap" или "autorefresh", "abap" - в инете есть куча примеров. Но возникают вопросы. ГДЕ должны обновляться данные каждые 15 секунд? В Excel-файле? - если он будет открыт пользователем, насколько я сталкивался, записать что-то туда не удастся. Если он не будет открыть пользователем - зачем насиловать файл каждые 15 секунд? Если это лог для скармливания внешней программе - зачем Excel-файл, а не текстовый файл?
Имхо, Besa правильно советует: уточните задание, может оно решается гораздо проще, чем Вы пытаетесь сделать.


Спасибо коллега!!! Уже уточнил и это единственный вариант. Пока на первых порах только Excel. Дело в том, что програмист в ArcGIS тоже новичок как и я, но с его стороны он больше продвинулся в этом вопросе, у него удалось сделать мониторинг этого эксель файла.

_________________
G O T T_M I T_U N S


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Фоновое задание
СообщениеДобавлено: Пт, мар 30 2012, 18:49 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
пишите в .csv без ole в общую папку, или в txt и excel+vba на клиенте, который периодически ест заданный файл


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Фоновое задание
СообщениеДобавлено: Пт, мар 30 2012, 20:55 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пн, сен 21 2009, 15:29
Сообщения: 43
Пол: Мужской
trop написал(а):
пишите в .csv без ole в общую папку, или в txt и excel+vba на клиенте, который периодически ест заданный файл


Спасибо коллега!
Подскажите пожалуйста каким образом сделать, может нужно использовать какой то функциональный модуль или ещё что....
Если Вам не тяжело, пришлите в личку Ваш вариант решения (если Вас не затруднит...)

_________________
G O T T_M I T_U N S


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Фоновое задание
СообщениеДобавлено: Пн, апр 02 2012, 06:31 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, авг 24 2007, 11:29
Сообщения: 350
Добрый день.
Попробуйте переделать выгрузку используя OPEN DATASET вместо OLE. Данная конструкция работает и при фоновом выполнении программы. В этом случае можно будет использовать возможности тр. SM36. В ниже приведенном коде выгружается текстовый файл с разделителями "Табуляция". Если этому файлу установить расширение *.xls то все должно работать.
Пример кода:
Code:
  CONCATENATE GV_FILEPATH GV_FILENAME INTO GV_FILE.
  GV_REP_1 = CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
  OPEN DATASET GV_FILE FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
  IF SY-SUBRC = 0.
    LOOP AT GT_STRING INTO GV_STRING.
      CONCATENATE GV_STRING GV_REP_1 INTO GV_STRING.
      TRANSLATE GV_STRING FROM CODE PAGE '1500' TO CODE PAGE '1504'.
      TRANSFER GV_STRING TO GV_FILE.
    ENDLOOP.
    CLOSE DATASET GV_FILE.
  ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

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


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

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


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

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