SAPфорум.RU https://sapboard.ru/forum/ |
|
Автоматическое копирование таблицы каждый месяц в новую таблицу https://sapboard.ru/forum/viewtopic.php?f=13&t=95832 |
Страница 1 из 5 |
Автор: | sonics [ Вт, дек 05 2017, 14:38 ] |
Заголовок сообщения: | Автоматическое копирование таблицы каждый месяц в новую таблицу |
У меня есть 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. Первый вопрос - это как автоматизировать копирование таблицы на первое число каждого месяца? |
Автор: | Kuranov.Dmitry [ Вт, дек 05 2017, 15:20 ] |
Заголовок сообщения: | Re: Автоматическое копирование таблицы каждый месяц в новую таблицу |
Написать программу копирования и запихнуть её в плановое задание ( нажать Ф9 , настроить спул, и далее настроить периоды запуска). и задача как-то странно звучит.. я так понимаю вы хотите в каждой из таблиц хранить данные за конкретный месяц? не проще месяц тогда в ключ вытащить? так же можете посмотреть ФМ JOB_OPEN JOB_SUBMIT JOB_CLOSE |
Автор: | LKU [ Вт, дек 05 2017, 15:35 ] |
Заголовок сообщения: | Re: Автоматическое копирование таблицы каждый месяц в новую таблицу |
А потом однажды время выполнения фонового задания по копированию таблиц попадет на даунтайм сервера и ничего не выйдет. Лучше конечно иметь одну таблицу со всеми данными. Если скорость доступа критична и в селекте всегда известен месяц, к конце, концов, можно использовать партиционирование на уровне Oracle. Если все же останетесь со своими табличками, то надо делать отказоустойчивую систему. Например, фоновое задание по копированию работает каждый день и копирует все, что должно было быть скопировано, но этого ранее не произошло. |
Автор: | sonics [ Вт, дек 05 2017, 15:39 ] |
Заголовок сообщения: | Re: Автоматическое копирование таблицы каждый месяц в новую таблицу |
LKU написал: А потом однажды время выполнения фонового задания по копированию таблиц попадет на даунтайм сервера и ничего не выйдет. Лучше конечно иметь одну таблицу со всеми данными. Если скорость доступа критична и в селекте всегда известен месяц, к конце, концов, можно использовать партиционирование на уровне Oracle. Если все же останетесь со своими табличками, то надо делать отказоустойчивую систему. Например, фоновое задание по копированию работает каждый день и копирует все, что должно было быть скопировано, но этого ранее не произошло. в самой плохой ситуации, у нас есть резервные таблицы на сегодня и вчера, которыми мы можем воспользоваться. сейчас вопрос у меня стоит как сделать копирование автоматическим. Здесь мне просто не хватает знаний и информации. |
Автор: | LKU [ Вт, дек 05 2017, 15:42 ] |
Заголовок сообщения: | Re: Автоматическое копирование таблицы каждый месяц в новую таблицу |
sonics, вам уже Kuranov.Dmitry написал, что надо: 1. Написать программу копирования 2. Запланировать ее регулярное выполнение в фоновом режиме У вас конкретно с каким шагом и что именно не получается сделать? |
Автор: | sonics [ Вт, дек 05 2017, 15:44 ] |
Заголовок сообщения: | Re: Автоматическое копирование таблицы каждый месяц в новую таблицу |
LKU написал: sonics, вам уже Kuranov.Dmitry написал, что надо: 1. Написать программу копирования 2. Запланировать ее регулярное выполнение в фоновом режиме У вас конкретно с каким шагом и что именно не получается сделать? прошу прощения, я когда открывал, было 2 сообщения и я автоматом посмотрел на последнее... ) проблема в том, программу копирования я написал, для одной таблицы. это ладно, но запланировать выполнение в фоновом режиме? я еще такого не делал, подскажите как такое делается ? |
Автор: | Kuranov.Dmitry [ Вт, дек 05 2017, 15:50 ] |
Заголовок сообщения: | Re: Автоматическое копирование таблицы каждый месяц в новую таблицу |
sonics написал(а): LKU написал: sonics, вам уже Kuranov.Dmitry написал, что надо: 1. Написать программу копирования 2. Запланировать ее регулярное выполнение в фоновом режиме У вас конкретно с каким шагом и что именно не получается сделать? прошу прощения, я когда открывал, было 2 сообщения и я автоматом посмотрел на последнее... ) проблема в том, программу копирования я написал, для одной таблицы. это ладно, но запланировать выполнение в фоновом режиме? я еще такого не делал, подскажите как такое делается ? Самое простое. запусти программу. Заполни селекционник если надо. нами F9. Спросит про принтер, нажми зеленую кнопку появится окошко, там кнопка Дата/Время. нажми её. в поля ЗапланирЗапуск Дата Время укажи первое число следующего месяца время, ну скажем 1 минута первого. Внизу чекбокс выполнять задание периодически снизу кнопка значения периодов откроется окно там нажми нужный период. далее проверка и дискетка увы на работе инет ограничен,скриншоты не покажу. для других таблиц: из переменной sy-datum получаешь текущую дату. далее два варианта: 1) IF /ELSE или CASE 2) динамический селект/инсерт |
Автор: | sonics [ Вт, дек 05 2017, 16:05 ] |
Заголовок сообщения: | Re: Автоматическое копирование таблицы каждый месяц в новую таблицу |
Так, понял, спасибо. Попробую уже завтра. Но вот логику немного не продумал я через case... если сегодняшний месяц больше, чем прошлый? как это можно сравнить именно по месяцам? Мы можем достать именно месяц из sy-datum? тогда мы выбираем след таблицу. |
Автор: | LKU [ Вт, дек 05 2017, 16:11 ] |
Заголовок сообщения: | Re: Автоматическое копирование таблицы каждый месяц в новую таблицу |
Дата хранится в формате ГГГГММДД Поэтому sy-datum+4(2) - это ММ, то есть номер месяца. |
Автор: | LKU [ Вт, дек 05 2017, 16:13 ] |
Заголовок сообщения: | Re: Автоматическое копирование таблицы каждый месяц в новую таблицу |
Имя таблицы в операторе insert может быть динамическим, то есть нет нужды через case двенадцать веток кода писать. |
Автор: | Kengur [ Ср, дек 06 2017, 12:51 ] |
Заголовок сообщения: | Re: Автоматическое копирование таблицы каждый месяц в новую таблицу |
LKU написал: А потом однажды время выполнения фонового задания по копированию таблиц попадет на даунтайм сервера и ничего не выйдет. Праведливости ради стоит сказать что все задания отработают после запуска сервера если были запланированны. |
Автор: | sonics [ Чт, дек 07 2017, 08:23 ] |
Заголовок сообщения: | Re: Автоматическое копирование таблицы каждый месяц в новую таблицу |
Kengur написал(а): Праведливости ради стоит сказать что все задания отработают после запуска сервера если были запланированны. Сервер работает круглосуточно производство не стоит ... даже в третью смену ... |
Автор: | sonics [ Чт, дек 07 2017, 08:33 ] |
Заголовок сообщения: | Re: Автоматическое копирование таблицы каждый месяц в новую таблицу |
LKU написал: Имя таблицы в операторе insert может быть динамическим, то есть нет нужды через case двенадцать веток кода писать. не совсем понял как это сделать, если не через if и сравнивать месяц, название месяца - будет идентичная таблица... |
Автор: | Kuranov.Dmitry [ Чт, дек 07 2017, 09:19 ] |
Заголовок сообщения: | Re: Автоматическое копирование таблицы каждый месяц в новую таблицу |
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. |
Автор: | sonics [ Пт, дек 08 2017, 12:57 ] |
Заголовок сообщения: | Re: Автоматическое копирование таблицы каждый месяц в новую таблицу |
а как мне сделать идентичных 12 таблиц ? чтобы не создавать все вручную? только названия разные... |
Страница 1 из 5 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |