Текущее время: Ср, июл 23 2025, 18:23

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Не работает пакетник по PU00, запускаемый из метода класса, вызываемого в PI
СообщениеДобавлено: Вт, апр 21 2015, 11:47 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
Приветствую, коллеги.
Есть метод класса, в котором прописан такой пакетник (Полное удаление табельного номера в HR):
...
lcl_bdc->bdc_dynpro( iv_program = 'SAPMP50A' iv_dynnr = '3200' iv_okcode = '=DOIT' ).
lcl_bdc->bdc_field( : iv_fnam = 'RP50G-PERNR' iv_fval = is_data-pernr_s ).
lcl_bdc->bdc_dynpro( iv_program = 'SAPMP50D' iv_dynnr = '1000' iv_okcode = '=MARK' ).
lcl_bdc->bdc_dynpro( iv_program = 'SAPMP50D' iv_dynnr = '1000' iv_okcode = '=DEL' ).
lcl_bdc->bdc_dynpro( iv_program = 'SAPLSPO1' iv_dynnr = '0500' iv_okcode = '=OPT1' ).
...
lcl_bdc->bdc_transaction( iv_tcode = 'PU00' iv_dismode = 'N' ).
APPEND LINES OF lcl_bdc->get_bapiret( ) TO et_ret.
...
METHOD bdc_dynpro.
DATA ls_tab LIKE LINE OF mt_bdc.
IF iv_program IS SUPPLIED .
ls_tab-program = iv_program.
ELSE.
ls_tab-program = mv_program.
ENDIF.

ls_tab-dynpro = iv_dynnr.
ls_tab-dynbegin = abap_true.
APPEND ls_tab TO mt_bdc.


IF iv_cursor IS NOT INITIAL .
CALL METHOD bdc_field
EXPORTING
iv_fnam = 'BDC_CURSOR'
iv_fval = iv_cursor
iv_count = iv_count.
ENDIF.

IF iv_okcode IS NOT INITIAL.
CALL METHOD bdc_field
EXPORTING
iv_fnam = 'BDC_OKCODE'
iv_fval = iv_okcode.
ENDIF.
ENDMETHOD.

METHOD bdc_field.
DATA ls_tab LIKE LINE OF mt_bdc.
DATA l_index TYPE numc2.
IF iv_fval IS NOT INITIAL.
WRITE iv_fval TO ls_tab-fval.
CONDENSE ls_tab-fval.
ENDIF.
ls_tab-fnam = iv_fnam.
IF iv_count IS NOT INITIAL.
l_index = iv_count.
IF iv_fnam = 'BDC_CURSOR'.
ls_tab-fval = |{ ls_tab-fval }({ l_index })|.
ELSE.
ls_tab-fnam = |{ iv_fnam }({ l_index })|.
ENDIF.
ENDIF.

APPEND ls_tab TO mt_bdc.
ENDMETHOD.

METHOD bdc_transaction.
DATA ls_parms TYPE ctu_params.

ls_parms-dismode = iv_dismode.
ls_parms-updmode = iv_updmode.
ls_parms-cattmode = iv_cattmode.
ls_parms-defsize = iv_defsize.
ls_parms-racommit = iv_racommit.
ls_parms-nobinpt = iv_nobinpt.
ls_parms-nobiend = iv_nobiend.
CALL TRANSACTION iv_tcode WITHOUT AUTHORITY-CHECK
USING mt_bdc
OPTIONS FROM ls_parms
MESSAGES INTO mt_msg.
ENDMETHOD.

Суть проблемы в том, что пакетник не отрабатывает.
Выдаёт сообщение: "Данные пакетного ввода для экрана SAPLSPO1 0500 отсутствуют.".
Как же оно отсутствует, когда в коде чёрным по белому "... '=OPT1'".
Как отладить пакетник на этапе запуска метода в PI - без понятия.

Есть у кого сообрадения на сей счёт? В какую сторону копать и как решить беду с пакетником?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не работает пакетник по PU00, запускаемый из метода класса, вызываемого в PI
СообщениеДобавлено: Вт, апр 21 2015, 12:40 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Бывает что в некоторых транзакциях разное поведение для режима пакетного ввода и/или фонового режима.
А в видимом режиме (dismode = A) выполняется нормально?

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не работает пакетник по PU00, запускаемый из метода класса, вызываемого в PI
СообщениеДобавлено: Вт, апр 21 2015, 13:08 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Выполните PU00 в исходной системе на тех же данных в видимом режиме.
По коду процедуры DELETE в программе SAPMP50D вызов диалога происходит не всегда.
В нашей системе на первом попавшемся табельном пакетник отработал корректно.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не работает пакетник по PU00, запускаемый из метода класса, вызываемого в PI
СообщениеДобавлено: Вт, апр 21 2015, 13:11 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
Скажем так, если бы была возможность отработать с режимом A - вопросов бы не задавал.
Проблема в том, что пакетник формируется в методе. Метод приватный. Этот метод вызывается в другом методе, который тоже приватный.
Этот второй метод вызывается в интерфейсе, вызов которого привязан на PI-процесс.
Напрямую этот интерфейс не запустить.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не работает пакетник по PU00, запускаемый из метода класса, вызываемого в PI
СообщениеДобавлено: Вт, апр 21 2015, 13:24 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Acid_Firewood написал(а):
Скажем так, если бы была возможность отработать с режимом A - вопросов бы не задавал.
Проблема в том, что пакетник формируется в методе. Метод приватный. Этот метод вызывается в другом методе, который тоже приватный.
Этот второй метод вызывается в интерфейсе, вызов которого привязан на PI-процесс.
Напрямую этот интерфейс не запустить.

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

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не работает пакетник по PU00, запускаемый из метода класса, вызываемого в PI
СообщениеДобавлено: Вт, апр 21 2015, 15:53 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
Может, имеет смысл посмотреть в сторону стандартных программ RPUDELPN & RPUDELPP? :roll:
Если вам, конечно, полное удаление нужно...

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Не работает пакетник по PU00, запускаемый из метода класса, вызываемого в PI
СообщениеДобавлено: Вт, апр 21 2015, 16:51 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, окт 15 2010, 14:06
Сообщения: 292
Проблема была иная. Отловить её получилось только в проде.
Суть такова, что в программе SAPMP50A, из которой вызывается экран 3000, для транзакции PU00, есть подпрограмма UTILITY.
Она отрабатывает при выполнении транзакции, с введенным табельником.
В ней есть ветка, где проверяется, по таблице T000 - является ли текущая система продуктивной.
Если да, то выводится POPUP_TO_CONFIRM. Вот, на нём и выпадал пакетник.
Шикарная подстава от САПа.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не работает пакетник по PU00, запускаемый из метода класса, вызываемого в PI
СообщениеДобавлено: Вт, апр 21 2015, 21:58 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Acid_Firewood написал(а):
Напрямую этот интерфейс не запустить.

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

_________________
С уважением,
Удав.


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

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


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

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


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

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