Текущее время: Вс, июл 13 2025, 07:08

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Програмное создание запроса на перенос + включение объектов в него
СообщениеДобавлено: Вт, мар 16 2010, 10:13 
Начинающий
Начинающий

Зарегистрирован:
Вт, мар 16 2010, 09:50
Сообщения: 10
Добрый день!

Подскажите, как программно можно создать запрос и как (опять же программно) включить в него объекты?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Програмное создание запроса на перенос + включение объектов в него
СообщениеДобавлено: Вт, мар 16 2010, 10:27 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
cons написал(а):
Добрый день!

Подскажите, как программно можно создать запрос и как (опять же программно) включить в него объекты?

Зачем Вам это?

_________________
"После" - не значит "вследствие"


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Програмное создание запроса на перенос + включение объектов в него
СообщениеДобавлено: Вт, мар 16 2010, 10:36 
Начинающий
Начинающий

Зарегистрирован:
Вт, мар 16 2010, 09:50
Сообщения: 10
Поясню:
Поставлена задача - автоматизировать перенос объектов из одной системы в другую.
К примеру, z-отчет + другие занятые в нем z-объекты репозитария.
Список объектов программно я определил. Теперь задача - создать запрос и включить их в него.
Создание запроса второстепенная задача - можно запросить у пользователя уже созданый, главное программно включить в него объекты.
Задумка такая - ответственному пользователю показывается список объектов (он уже сформирован), галками отмечаются нужные объекты, жмется кнопка "включить в запрос". тут возможен диалог типа стандартного выбора запросов с возможностью интерактивного создания. затем, после указания запроса, в него включаются выбранные объекты.


Последний раз редактировалось cons Вт, мар 16 2010, 10:44, всего редактировалось 2 раз(а).

Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Програмное создание запроса на перенос + включение объектов в него
СообщениеДобавлено: Вт, мар 16 2010, 10:39 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, май 30 2006, 08:34
Сообщения: 1900
Мне тоже любопытно.

Прикладной пример:
Настройка графиков рабочего времени в HR. Там для каждого графика на каждый день хранится инфа.
Графики могут быть весьма запутанными, автоматическая генерация возможна не всегда, иногда вручную надо править каждый день в году. Графиков сотни. И это считается настройкой.

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

_________________
С уважением.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Програмное создание запроса на перенос + включение объектов в него
СообщениеДобавлено: Вт, мар 16 2010, 10:45 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
А автоматически включать данные из неправильно заполненного пользователем некого шаблона в запрос - это удобно и не опасно?

Добавил:
Все равно найдете решение...
Создание запроса -TR_REQUEST_MODIFY с операцией CREA.
Наполнение объектами - TRINT_MODIFY_COMM


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Програмное создание запроса на перенос + включение объектов в него
СообщениеДобавлено: Вт, мар 16 2010, 10:52 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Создать и заполнить можно с помощью бетча на SE01.
Согласен с John Doe давать выбирать объекты пользователю как-то не совсем правильно, опять же связанные объекты могут быть.

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

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Програмное создание запроса на перенос + включение объектов в него
СообщениеДобавлено: Вт, мар 16 2010, 11:01 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
cons написал(а):
Поясню:
Поставлена задача - автоматизировать перенос объектов из одной системы в другую.
К примеру, z-отчет + другие занятые в нем z-объекты репозитария.
Список объектов программно я определил. Теперь задача - создать запрос и включить их в него.
Создание запроса второстепенная задача - можно запросить у пользователя уже созданый, главное программно включить в него объекты.
Задумка такая - ответственному пользователю показывается список объектов (он уже сформирован), галками отмечаются нужные объекты, жмется кнопка "включить в запрос". тут возможен диалог типа стандартного выбора запросов с возможностью интерактивного создания. затем, после указания запроса, в него включаются выбранные объекты.

Совсем недавно в BASIS-ном разделе обсуждался вопрос автоматического деблокирования запросов и перенос между системами. Решение в рамках той задачи было найдено в стандарте. Думаю, что и Вашу задачу, при здравом размышлении, можно решить в рамках стандарта.
Вообще, непонятна необходимость генерить запросы для объектов, уже содержащихся в запросах?
Непонятно желание нести "z-отчет + другие занятые в нем z-объекты репозитария". В ряде случаев такой полный перенос оправдан, но как регулярная практика крайне сомнителен.
Да и сама процедура у Вас получается сложной и запутанной.
Кстати, объекты из других запросов прийдётся удалять, предварительно сняв блокировку этих объектов. Иначе проблемы при деблокировании Вашего комплексного запроса.

_________________
"После" - не значит "вследствие"


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Програмное создание запроса на перенос + включение объектов в него
СообщениеДобавлено: Вт, мар 16 2010, 11:02 
Начинающий
Начинающий

Зарегистрирован:
Вт, мар 16 2010, 09:50
Сообщения: 10
Согласен, что опасно формировать список объектов автоматом - можно что-то пропустить, но "партия сказала надо".
Подразумевается, что выгода от такого решения превысит возможные осложнения.
Спасибо John Doe за наводку.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Програмное создание запроса на перенос + включение объектов в него
СообщениеДобавлено: Вт, мар 16 2010, 11:08 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
cons написал(а):
Согласен, что опасно формировать список объектов автоматом - можно что-то пропустить, но "партия сказала надо".
Подразумевается, что выгода от такого решения превысит возможные осложнения.
Автоматизированный бардак всеравно останется бардаком.
Лучше потратить время на структурную реорганизацию, выделение и разделение ролей и функций, пересмотреть права и полномочия, а так же всякие регламенты: ведения разработок, тестирования, переноса между системами.

_________________
"После" - не значит "вследствие"


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Програмное создание запроса на перенос + включение объектов в него
СообщениеДобавлено: Вт, мар 16 2010, 11:19 
Начинающий
Начинающий

Зарегистрирован:
Вт, мар 16 2010, 09:50
Сообщения: 10
sy-uname написал(а):
Непонятно желание нести "z-отчет + другие занятые в нем z-объекты репозитария".

Все просто. В системе есть отчет. В другой системе хотят иметь такой-же. Переносим.
Если бы все изначально корректно лежало по разным запросам, то никакой проблемы бы не было. На практике имеем к примеру отчет + кучу задействованных в нем z-объектов, которые лежат по разным запросам, принадлежат разным классам разработок. Путем программного анализа исходного кода определяем список задействованных z-объектов. включаем в один запрос и несем в другую систему. в исходной системе этот запрос никуда не несется.
если бы это была разовая операция, то собрали бы "руками", но таких переносов прогнозируется >100.
sy-uname написал(а):
Кстати, объекты из других запросов прийдётся удалять, предварительно сняв блокировку этих объектов. Иначе проблемы при деблокировании Вашего комплексного запроса.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Програмное создание запроса на перенос + включение объектов в него
СообщениеДобавлено: Вт, мар 16 2010, 12:36 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, май 30 2006, 08:34
Сообщения: 1900
Цитата:
А автоматически включать данные из неправильно заполненного пользователем некого шаблона в запрос - это удобно и не опасно?


Очень удобно и опасно.
И мы тут совсем не это обсуждаем, а вполне конкретный вопрос автора топика.

_________________
С уважением.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Програмное создание запроса на перенос + включение объектов в него  Тема решена
СообщениеДобавлено: Вт, мар 16 2010, 13:58 
Специалист
Специалист

Зарегистрирован:
Ср, янв 26 2005, 05:11
Сообщения: 185
Пол: Мужской
Данные из таблиц я делал так. По образу и подобию можно присобачить че угодно

Code:
  DATA: lf_ev_order TYPE trkorr,
         lf_ev_task TYPE trkorr.
  DATA:
   lf_e071 TYPE  e071,
   lf_e071k TYPE  e071k,
   lt_e071 TYPE TABLE OF e071,
   lt_e071k TYPE TABLE OF e071k.

  CALL FUNCTION 'TR_ORDER_CHOICE_CORRECTION'
    EXPORTING
      iv_category            = 'SYST'
    IMPORTING
      ev_order               = lf_ev_order
      ev_task                = lf_ev_task
    EXCEPTIONS
      invalid_category       = 1
      no_correction_selected = 2
      OTHERS                 = 3.
  IF sy-subrc <> 0.
    EXIT.
  ENDIF.

  lf_e071-pgmid = 'R3TR'.
  lf_e071-object = 'TABU'.
  lf_e071-obj_name = 'ZTABLE'.
  lf_e071-objfunc = 'K'.
  APPEND lf_e071 TO lt_e071.

  lf_e071k-pgmid = 'R3TR'.
  lf_e071k-object = 'TABU'.
  lf_e071k-objname = 'ZTABLE'.
  lf_e071k-mastertype = 'TABU'.
  lf_e071k-mastername = 'ZTABLE'.



  lf_e071k-tabkey = '*'.
  APPEND lf_e071k TO lt_e071k..

  CALL FUNCTION 'TR_APPEND_TO_COMM_OBJS_KEYS'
    EXPORTING
      wi_trkorr                      = lf_ev_task
    TABLES
      wt_e071                        = lt_e071
      wt_e071k                       = lt_e071k
    EXCEPTIONS
      key_char_in_non_char_field     = 1
      key_check_keysyntax_error      = 2
      key_inttab_table               = 3
      key_longer_field_but_no_generc = 4
      key_missing_key_master_fields  = 5
      key_missing_key_tablekey       = 6
      key_non_char_but_no_generic    = 7
      key_no_key_fields              = 8
      key_string_longer_char_key     = 9
      key_table_has_no_fields        = 10
      key_table_not_activ            = 11
      key_unallowed_key_function     = 12
      key_unallowed_key_object       = 13
      key_unallowed_key_objname      = 14
      key_unallowed_key_pgmid        = 15
      key_without_header             = 16
      ob_check_obj_error             = 17
      ob_devclass_no_exist           = 18
      ob_empty_key                   = 19
      ob_generic_objectname          = 20
      ob_ill_delivery_transport      = 21
      ob_ill_lock                    = 22
      ob_ill_parts_transport         = 23
      ob_ill_source_system           = 24
      ob_ill_system_object           = 25
      ob_ill_target                  = 26
      ob_inttab_table                = 27
      ob_local_object                = 28
      ob_locked_by_other             = 29
      ob_modif_only_in_modif_order   = 30
      ob_name_too_long               = 31
      ob_no_append_of_corr_entry     = 32
      ob_no_append_of_c_member       = 33
      ob_no_consolidation_transport  = 34
      ob_no_original                 = 35
      ob_no_shared_repairs           = 36
      ob_no_systemname               = 37
      ob_no_systemtype               = 38
      ob_no_tadir                    = 39
      ob_no_tadir_not_lockable       = 40
      ob_privat_object               = 41
      ob_repair_only_in_repair_order = 42
      ob_reserved_name               = 43
      ob_syntax_error                = 44
      ob_table_has_no_fields         = 45
      ob_table_not_activ             = 46
      tr_enqueue_failed              = 47
      tr_errors_in_error_table       = 48
      tr_ill_korrnum                 = 49
      tr_lockmod_failed              = 50
      tr_lock_enqueue_failed         = 51
      tr_not_owner                   = 52
      tr_no_systemname               = 53
      tr_no_systemtype               = 54
      tr_order_not_exist             = 55
      tr_order_released              = 56
      tr_order_update_error          = 57
      tr_wrong_order_type            = 58
      ob_invalid_target_system       = 59
      tr_no_authorization            = 60
      ob_wrong_tabletyp              = 61
      ob_wrong_category              = 62
      ob_system_error                = 63
      ob_unlocal_objekt_in_local_ord = 64
      tr_wrong_client                = 65
      ob_wrong_client                = 66
      key_wrong_client               = 67
      OTHERS                         = 68.

  IF sy-subrc = 0.
    MESSAGE s002(sy) WITH 'Данные просоединен к запросу'.
  ELSE.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Програмное создание запроса на перенос + включение объектов в него
СообщениеДобавлено: Вт, мар 16 2010, 16:31 
Начинающий
Начинающий

Зарегистрирован:
Вт, мар 16 2010, 09:50
Сообщения: 10
Serge69, спасибо!
То что надо!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Програмное создание запроса на перенос + включение объектов в него
СообщениеДобавлено: Вт, мар 16 2010, 16:35 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, май 30 2006, 08:34
Сообщения: 1900
Спасибо, Serge69
:pivo:

_________________
С уважением.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Програмное создание запроса на перенос + включение объектов в него
СообщениеДобавлено: Вт, мар 16 2010, 16:49 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 03 2008, 17:20
Сообщения: 162
cons написал(а):
Все просто. В системе есть отчет. В другой системе хотят иметь такой-же. Переносим.
Если бы все изначально корректно лежало по разным запросам, то никакой проблемы бы не было. На практике имеем к примеру отчет + кучу задействованных в нем z-объектов, которые лежат по разным запросам, принадлежат разным классам разработок. Путем программного анализа исходного кода определяем список задействованных z-объектов. включаем в один запрос и несем в другую систему. в исходной системе этот запрос никуда не несется.
Так это еще более опаснее чем перенос отдельного очёта с ошибкой импорта. После переноса запроса отчёт допустим будет работать, но в результате этого другие программы/функции, в котором используется этот z-объект (из совсем другого класса разработок) могут попросту "отвалиться". И вместо того чтобы понять чего не хватает Вам необходимо будет искать что же лишнее.

_________________
В SAPе есть всё, просто вы чего-то не нашли.


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

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


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

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


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

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