Текущее время: Чт, июл 24 2025, 01:55

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Не обновляется таблица при обработки входящих IDoc (DOCMAS)
СообщениеДобавлено: Пт, июл 11 2008, 09:34 
Специалист
Специалист

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
Добрый день.

Написал обработчик входящих IDoc для DOCMAS05, который, после вызова стандартного IDOC_INPUT_DOCMAS, должен обновлять некоторые поля в созданной записи в таблице draw. Но обновление происходит только в тестовом вызове через WE19, а в онлайновом вызове (когда IDoc приходит), обновление не срабатывает. Поставил commit везде где только мог - все-равно не срабатывает. Кто может подсказать, в чем может быть дело? И правильно ли ставить коммиты в inbound idoc processing?
Код прилагаю:
Code:
FUNCTION ZIUS_IDOC_INPUT_DOCMAS .
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  IMPORTING
*"     VALUE(INPUT_METHOD) LIKE  BDWFAP_PAR-INPUTMETHD
*"     VALUE(MASS_PROCESSING) LIKE  BDWFAP_PAR-MASS_PROC
*"  EXPORTING
*"     VALUE(IN_UPDATE_TASK) LIKE  BDWFAP_PAR-UPDATETASK
*"     VALUE(CALL_TRANSACTION_DONE) LIKE  BDWFAP_PAR-CALLTRANS
*"     VALUE(WORKFLOW_RESULT) LIKE  BDWF_PARAM-RESULT
*"     VALUE(APPLICATION_VARIABLE) LIKE  BDWF_PARAM-APPL_VAR
*"  TABLES
*"      IDOC_CONTRL STRUCTURE  EDIDC
*"      IDOC_DATA STRUCTURE  EDIDD
*"      IDOC_STATUS STRUCTURE  BDIDOCSTAT
*"      RETURN_VARIABLES STRUCTURE  BDWFRETVAR
*"      SERIALIZATION_INFO STRUCTURE  BDI_SER
*"  EXCEPTIONS
*"      WRONG_FUNCTION_CALLED
*"----------------------------------------------------------------------
* ALE_MAINT: Defines whether maintanance for the object-links is
*            allowed.
*            ALE_MAINT = "" (Default) means maint. for the object-links
*            with ALE IS allowed
* ----------------------------------------------------------------------

  CALL FUNCTION 'IDOC_INPUT_DOCMAS'
    EXPORTING
      INPUT_METHOD          = INPUT_METHOD
      MASS_PROCESSING       = MASS_PROCESSING
    IMPORTING
      IN_UPDATE_TASK        = IN_UPDATE_TASK
      CALL_TRANSACTION_DONE = CALL_TRANSACTION_DONE
      WORKFLOW_RESULT       = WORKFLOW_RESULT
      APPLICATION_VARIABLE  = APPLICATION_VARIABLE
    TABLES
      IDOC_CONTRL           = IDOC_CONTRL
      IDOC_DATA             = IDOC_DATA
      IDOC_STATUS           = IDOC_STATUS
      RETURN_VARIABLES      = RETURN_VARIABLES
      SERIALIZATION_INFO    = SERIALIZATION_INFO
    EXCEPTIONS
      WRONG_FUNCTION_CALLED = 1
      OTHERS                = 2.

  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

* ALE distribution unity                                    "note0361739
  DATA:                                                    "note0361739
    it_dsp_edidd  LIKE edidd OCCURS 0 WITH HEADER LINE.    "note0361739

*   ALE distribution unity : check, if under unity control  "note0388002
  clear:                                                  "note0388002
      it_dsp_edidd,                                       "note0388002
      it_dsp_edidd[].                                     "note0388002
  loop at idoc_data where docnum = idoc_contrl-docnum.    "note0388002
    append idoc_data to it_dsp_edidd.                     "note0388002
  endloop.                                                "note0388002

  data: z1 type ZDRAW1.
  data: z2 type ZDRAW2.
  data: z3 type ZDRAW3.
  data: ls_e1drawm LIKE e1drawm.
  data: psx_draw like draw.
  clear: z1, z2, z3, psx_draw, ls_e1drawm.
  LOOP AT it_dsp_edidd INTO idoc_data.
    CASE idoc_data-segnam.
      when 'E1DRAWM'.
        MOVE idoc_data-sdata TO ls_e1drawm.
        MOVE-CORRESPONDING ls_e1drawm TO psx_draw.
      WHEN 'ZDRAW1'.
        z1 = idoc_data-sdata.
      WHEN 'ZDRAW2'.
        z2 = idoc_data-sdata.
      WHEN 'ZDRAW3'.
        z3 = idoc_data-sdata.
    endcase.
  endloop.

  if z1 is not initial or z2 is not initial or z3 is not initial.
    data: wa_draw like draw.

    commit work and wait. "!!!

    select single *
      from draw
      into wa_draw
      where
        DOKAR = psx_draw-dokar
        and DOKNR = psx_draw-doknr
        and DOKVR = psx_draw-dokvr
        and DOKTL = psx_draw-doktl.
    if sy-subrc is initial.
      move-corresponding z1 to wa_draw.
      move-corresponding z2 to wa_draw.
      move-corresponding z3 to wa_draw.

      commit work and wait. "!!!

      update draw from wa_draw.
      if sy-SUBRC is initial.

        commit work and wait. "!!!

      endif.
    endif.
  endif.

ENDFUNCTION.


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

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


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

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


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

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