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

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


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

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


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

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