Текущее время: Пн, июн 23 2025, 22:36

Часовой пояс: 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 часа


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

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


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

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