Текущее время: Вс, сен 23 2018, 04:52

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


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


ВНИМАНИЕ!

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



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

Зарегистрирован:
Пн, июл 17 2017, 15:11
Сообщения: 305
У меня есть 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
Сообщения: 337
Написать программу копирования и запихнуть её в плановое задание ( нажать Ф9 , настроить спул, и далее настроить периоды запуска).

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

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


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

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

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

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


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

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

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


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


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

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

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

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


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

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

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

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

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


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

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 337
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
Сообщения: 305
Так, понял, спасибо.
Попробую уже завтра.
Но вот логику немного не продумал я через case...
если сегодняшний месяц больше, чем прошлый?
как это можно сравнить именно по месяцам? Мы можем достать именно месяц из sy-datum?
тогда мы выбираем след таблицу.


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

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

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


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

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

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


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

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

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

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


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

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

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


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

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

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


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

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 337
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
Сообщения: 305
а как мне сделать идентичных 12 таблиц ? чтобы не создавать все вручную?
только названия разные...


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

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


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

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


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

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