Текущее время: Ср, авг 15 2018, 03:58

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 61 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Вт, дек 05 2017, 15:38 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 300
У меня есть 13 таблиц.
Одна таблица, обновляется каждый день и заполняется данными.
Каждый месяц мне нужно 1го числа автоматически обновить таблицу 01_tb, 02_tb, .. , 11_tb, 12_tb.
Code:
REPORT  zcopy_tb12.
data: gt_z_01_tb type table of z_01_tb,
      gl_z_01_tb type z_01_tb,
      lin type i.
select * into corresponding fields of table gt_z_01_tb from ztb .
describe table gt_z_01_tb lines lin.
if lin > 40000.
delete from z_01_tb.
loop at gt_ztb_tmp1 into gl_z_01_tb.
  gl_z_01_tb-data_create = sy-datum.
  insert into z_01_tb values gl_z_01_tb.
endloop.
endif.

таким образом мы копируем таблицу для 1го месяца в z_01_tb.
как я понимаю, мне нужно создать переменную в которой будет массив от z_01_tb до z_12_tb.
но реализовать как это пока что не пойму.
и оператор условия if для сравнения дат, если сегодня месяц отличается от вчерашнего месяца, запустить копирование таблицы в следующий элемент массив ( т.е. в след таблицу )
1. Первый вопрос - это как автоматизировать копирование таблицы на первое число каждого месяца?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Вт, дек 05 2017, 16:20 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 325
Написать программу копирования и запихнуть её в плановое задание ( нажать Ф9 , настроить спул, и далее настроить периоды запуска).

и задача как-то странно звучит.. я так понимаю вы хотите в каждой из таблиц хранить данные за конкретный месяц?
не проще месяц тогда в ключ вытащить?

так же можете посмотреть ФМ JOB_OPEN JOB_SUBMIT JOB_CLOSE


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Вт, дек 05 2017, 16:35 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 14:35
Сообщения: 4398
Откуда: Москва
А потом однажды время выполнения фонового задания по копированию таблиц попадет на даунтайм сервера и ничего не выйдет.
Лучше конечно иметь одну таблицу со всеми данными. Если скорость доступа критична и в селекте всегда известен месяц, к конце, концов, можно использовать партиционирование на уровне Oracle.

Если все же останетесь со своими табличками, то надо делать отказоустойчивую систему.
Например, фоновое задание по копированию работает каждый день и копирует все, что должно было быть скопировано, но этого ранее не произошло.

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Вт, дек 05 2017, 16:39 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 300
LKU написал(а):
А потом однажды время выполнения фонового задания по копированию таблиц попадет на даунтайм сервера и ничего не выйдет.
Лучше конечно иметь одну таблицу со всеми данными. Если скорость доступа критична и в селекте всегда известен месяц, к конце, концов, можно использовать партиционирование на уровне Oracle.

Если все же останетесь со своими табличками, то надо делать отказоустойчивую систему.
Например, фоновое задание по копированию работает каждый день и копирует все, что должно было быть скопировано, но этого ранее не произошло.


в самой плохой ситуации, у нас есть резервные таблицы на сегодня и вчера, которыми мы можем воспользоваться.
сейчас вопрос у меня стоит как сделать копирование автоматическим. Здесь мне просто не хватает знаний и информации.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Вт, дек 05 2017, 16:42 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 14:35
Сообщения: 4398
Откуда: Москва
sonics, вам уже Kuranov.Dmitry написал, что надо:
1. Написать программу копирования
2. Запланировать ее регулярное выполнение в фоновом режиме

У вас конкретно с каким шагом и что именно не получается сделать?

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Вт, дек 05 2017, 16:44 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 300
LKU написал(а):
sonics, вам уже Kuranov.Dmitry написал, что надо:
1. Написать программу копирования
2. Запланировать ее регулярное выполнение в фоновом режиме

У вас конкретно с каким шагом и что именно не получается сделать?

прошу прощения, я когда открывал, было 2 сообщения и я автоматом посмотрел на последнее... )

проблема в том, программу копирования я написал, для одной таблицы.
это ладно, но запланировать выполнение в фоновом режиме? я еще такого не делал, подскажите как такое делается ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Вт, дек 05 2017, 16:50 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 325
sonics написал(а):
LKU написал(а):
sonics, вам уже Kuranov.Dmitry написал, что надо:
1. Написать программу копирования
2. Запланировать ее регулярное выполнение в фоновом режиме

У вас конкретно с каким шагом и что именно не получается сделать?

прошу прощения, я когда открывал, было 2 сообщения и я автоматом посмотрел на последнее... )

проблема в том, программу копирования я написал, для одной таблицы.
это ладно, но запланировать выполнение в фоновом режиме? я еще такого не делал, подскажите как такое делается ?


Самое простое. запусти программу.
Заполни селекционник если надо.
нами F9.
Спросит про принтер, нажми зеленую кнопку
появится окошко, там кнопка Дата/Время. нажми её.
в поля
ЗапланирЗапуск Дата Время
укажи первое число следующего месяца
время, ну скажем 1 минута первого.
Внизу чекбокс выполнять задание периодически
снизу кнопка значения периодов
откроется окно там нажми нужный период.

далее проверка и дискетка

увы на работе инет ограничен,скриншоты не покажу.

для других таблиц:
из переменной sy-datum получаешь текущую дату.
далее два варианта:
1) IF /ELSE или CASE
2) динамический селект/инсерт


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Вт, дек 05 2017, 17:05 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 300
Так, понял, спасибо.
Попробую уже завтра.
Но вот логику немного не продумал я через case...
если сегодняшний месяц больше, чем прошлый?
как это можно сравнить именно по месяцам? Мы можем достать именно месяц из sy-datum?
тогда мы выбираем след таблицу.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Вт, дек 05 2017, 17:11 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 14:35
Сообщения: 4398
Откуда: Москва
Дата хранится в формате ГГГГММДД
Поэтому sy-datum+4(2) - это ММ, то есть номер месяца.

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Вт, дек 05 2017, 17:13 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 14:35
Сообщения: 4398
Откуда: Москва
Имя таблицы в операторе insert может быть динамическим, то есть нет нужды через case двенадцать веток кода писать.

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Ср, дек 06 2017, 13:51 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 19:21
Сообщения: 1117
LKU написал(а):
А потом однажды время выполнения фонового задания по копированию таблиц попадет на даунтайм сервера и ничего не выйдет.

Праведливости ради стоит сказать что все задания отработают после запуска сервера если были запланированны.

_________________
я твой сап эфай внедрял
BAdI-позитив


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Чт, дек 07 2017, 09:23 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 300
Kengur написал(а):
Праведливости ради стоит сказать что все задания отработают после запуска сервера если были запланированны.

Сервер работает круглосуточно :) производство не стоит ... даже в третью смену ...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Чт, дек 07 2017, 09:33 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 300
LKU написал(а):
Имя таблицы в операторе insert может быть динамическим, то есть нет нужды через case двенадцать веток кода писать.

не совсем понял как это сделать, если не через if и сравнивать месяц, название месяца - будет идентичная таблица...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Чт, дек 07 2017, 10:19 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 325
sonics написал(а):
LKU написал(а):
Имя таблицы в операторе insert может быть динамическим, то есть нет нужды через case двенадцать веток кода писать.

не совсем понял как это сделать, если не через if и сравнивать месяц, название месяца - будет идентичная таблица...

Ваша таблица имеет шаблон: Z_<MM>_tb?
Code:
DATA l_tabname(20).

CONCATENATE 'Z_' sy-datum+4(2) '_TB' INTO l_tabname.

INSERT INTO (l_tabname) FROM TABLE lt_data.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Автоматическое копирование таблицы каждый месяц в новую таблицу
СообщениеДобавлено: Пт, дек 08 2017, 13:57 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 300
а как мне сделать идентичных 12 таблиц ? чтобы не создавать все вручную?
только названия разные...


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

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


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

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


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

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