Posted: Wed Aug 06, 2008 3:55 pm Post subject: Проблема с переключением экранов при работе пакетника.
Доброго дня коллеги.
Небольшая проблема, при записи макроса переключение между экранами происходит нормально, когда же запускаешь его, то он останавливается на первом экране и переключается на другой только с помощью нажатия кнопки "Enter". Может это известные грабли? В чем может быть проблема?
На всякий случай кусок кода
Code:
perform bdc_dynpro using 'SAPLCLMO' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RMCLM-KLART'.
perform bdc_field using 'BDC_OKCODE'
'=BASD'.
perform bdc_field using 'RMCLM-CLASS'
ztab-class.
perform bdc_field using 'RMCLM-KLART'
'002'.
perform bdc_dynpro using 'SAPLCLMO' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RMCLM-CLASS'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RMCLM-CLASS'
ztab-class.
perform bdc_field using 'RMCLM-KLART'
'002'.
perform bdc_dynpro using 'SAPLCLMO' '7777'.
perform bdc_field using 'BDC_OKCODE'
'=MERK'.
perform bdc_field using 'BDC_CURSOR'
'RMCLM-KLBEZ'.
perform bdc_field using 'RMCLM-KLBEZ'
ztab-class.
perform bdc_field using 'RMCLM-STATU'
'1'.
Age: 40 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Thu Aug 07, 2008 8:41 am Post subject:
прочитайте хелп к CALL TRANSACTION, вы по-видимому используете стандартную программу FORM BDC_TRANSACTION из инклуда BDCRECX1. В ней не указан параметер MODE, а по умолчанию, если не ошибаюсь он установлен в режим "А", вам нужен режим "N". Вам Armann совершенно правельно сказал, где нужно посмотреть. _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Как говорят на западе "Упсссс".. Работать работает, выдает отчет что записи введены с указанием колчества (так сделано специально), но вот данные туда не заносит.
Дальнейший разбор показал:
1) изначально режим мод был "Е" ,т.е. показывать экраны когда ошибка.
2) При переходе на "N" все пошло без экранов, никаких сообщений не выдается (те что в хелпе) , но данные в нужных транзакциях не вводяться.
3) При переходе опять к "Е" начинает выдавать каждый раз первый экран ,но зато данные вводяться.
Как можно еще вычислить проблему?
Вроде задача то простая - что бы не выскакивали экраны и все вводилось .
Age: 40 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Tue Sep 02, 2008 1:39 pm Post subject:
vad-anatolij wrote:
Как говорят на западе "Упсссс".. Работать работает, выдает отчет что записи введены с указанием колчества (так сделано специально), но вот данные туда не заносит.
Дальнейший разбор показал:
1) изначально режим мод был "Е" ,т.е. показывать экраны когда ошибка.
3) При переходе опять к "Е" начинает выдавать каждый раз первый экран ,но зато данные вводяться.
Я правильно понял, что у вас на первом экране ошибка? Тогда выход очевиден, исправьте ошибку и поставьте MODE N, если ваша ошибка понятно кто виноват, если пользователь ввел некоректные данные, то это его проблема, тогда используете MESSAGES INTO itab, там находятся все сообщения которые выдавались во время работы пакетника. После транзакции можете сделать журнал, в котором видно что за ошибки были во время отработки. Соответственно пользователь увидит почему программа не сработала и скорректирует данные, которые ввел. _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Я правильно понял, что у вас на первом экране ошибка? .
Ошибку не выдает. Просто показывает первый экран. По режиму "Е" я предполагаю что есть ошибка. Если есть, то ошибка однозначно моя, а не пользователя, т.к. данные беруться пакетником из таблицы вне САПА.
XXX_:) wrote:
После транзакции можете сделать журнал, в котором видно что за ошибки были во время отработки. .
Это можно как то прописать в конце программы? К сожалению я пришел недавно в SAP. Если не трудно код подскажите, или ссылку.
*вытаскиваем сообщения которые были в вызванной транзакции
PERFORM get_prot USING it_bdcm.
___________________________________________________
FORM call_transaction TABLES lit_bdcd TYPE t_bdcd
lit_bdcm TYPE t_bdcm
USING value(l_tcode) TYPE c
value(l_mode) TYPE c
CHANGING h_rc TYPE sy-subrc.
DATA: lit_bdc TYPE TABLE OF bdcdata WITH HEADER LINE,
lit_msg TYPE TABLE OF bdcmsgcoll WITH HEADER LINE.
lit_bdc[] = lit_bdcd[].
CALL TRANSACTION l_tcode USING lit_bdc MODE l_mode UPDATE 'S'
MESSAGES INTO lit_msg.
h_rc = sy-subrc.
APPEND LINES OF lit_msg TO lit_bdcm.
ENDFORM. "call_transaction
*---------------------------------------------------------------------*
*Обработка сообщений
*---------------------------------------------------------------------*
FORM get_prot USING it_bdcm TYPE t_bdcm.
*&---------------------------------------------------------------------*
*& Include Z_LOG
*&---------------------------------------------------------------------*
DATA: gv_log_handle TYPE balloghndl.
DATA gv_dummy.
*&---------------------------------------------------------------------*
*& Form LOG_CREATE
*&---------------------------------------------------------------------*
FORM log_create.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " LOG_CREATE
*&---------------------------------------------------------------------*
*& Form MSG_ADD
*&---------------------------------------------------------------------*
********************* Message type ***************************
* A (Abend) Termination
* E (Error) Error
* I (Info) icon_information Information
* S (Status) Status message
* W (Warning) Warning
* X (Exit) Termination with short dump
*************************************************************
FORM msg_add.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " MSG_ADD
*&---------------------------------------------------------------------*
*& Form LOG_DISPLAY
*&---------------------------------------------------------------------*
*вывод журнала сообщений
*----------------------------------------------------------------------*
FORM log_display .
DATA: lt_log_handle TYPE bal_t_logh.
APPEND gv_log_handle TO lt_log_handle.
CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
EXPORTING
i_t_log_handle = lt_log_handle
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
REFRESH lt_log_handle.
ENDFORM. " LOG_DISPLAY
_________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.