Автор Тема: массовое удаление входящих поставок  (Прочитано 8852 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Victor Ghost

  • Newbie
  • *
  • Сообщений: 24
  • Репутация: +0/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
массовое удаление входящих поставок
« : Август 21, 2017, 12:48:02 pm »
Доброго дня всем,
имеется транзакция VL32N, в которой возможно удаление входящей поставки. Пользователям захотелось удалять массово, указывая номера поставок списком. Возможно, плохо искал... но есть ли какой фм/класс для этого дела? Или может стандартная транзакция уже существует с таким функционалом?

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: массовое удаление входящих поставок
« Ответ #1 : Август 21, 2017, 05:30:53 pm »
You are not allowed to view links. Register or Login
Пользователям захотелось удалять массово, указывая номера поставок списком. Возможно, плохо искал... но есть ли какой фм/класс для этого дела? Или может стандартная транзакция уже существует с таким функционалом?
Небольшой специалист в SD, но написать свой отчетик с удалением поставок через CALL TRANSACTION, там работы на полдня если честно. Хотя может SD-шники подтянутся да подскажут что.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: массовое удаление входящих поставок
« Ответ #2 : Август 21, 2017, 09:11:35 pm »
Ну SD  говорит что нет такого... В общем ABAP в руки и за день будет всем счастье.

Оффлайн Victor Ghost

  • Newbie
  • *
  • Сообщений: 24
  • Репутация: +0/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: массовое удаление входящих поставок
« Ответ #3 : Август 22, 2017, 07:40:55 am »
блин.. как всегда забываю о самом простом способе...
спасибо! :))

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: массовое удаление входящих поставок
« Ответ #4 : Август 22, 2017, 10:34:00 pm »
You are not allowed to view links. Register or Login
блин.. как всегда забываю о самом простом способе...
Ну не факт, вдруг бы был стандартный метод?! Так что писать на абапе это всегда успеешь, сначала лучше все таки поискать стандартный метод.

Оффлайн Victor Ghost

  • Newbie
  • *
  • Сообщений: 24
  • Репутация: +0/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: массовое удаление входящих поставок
« Ответ #5 : Август 23, 2017, 02:46:54 pm »
в инете пишут тоже, что транзакций нет для массового удаления.
а я тут второй день не могу понять, почему не работает у меня переход в транзакцию..

в общем, записал через SHDB сценарий. в VL32N для удаления заказа действий почти не происходит: переход с 4104 экрана на 1000й (непонятно только, почему) и нажатие на кнопку "удалить"  (BDC_OKCODE = '/ELOES_T').
написал у себя в программе (это кусок небольшой):

Код: You are not allowed to view links. Register or Login
  LOOP AT lt_vbeln INTO ls_vbeln.

    PERFORM bdc_dynpro  USING  'SAPMV50A'    '1602'. "1202
    PERFORM bdc_field   USING  'LIKP-VBELN'  ls_vbeln-vbeln.
    PERFORM bdc_field   USING  'BDC_OKCODE'  '/ELOES_T'.

    opt-dismode = 'A'.
    opt-defsize = 'X'.

    TRY.
        CALL TRANSACTION 'VL32N' WITH AUTHORITY-CHECK
                                USING it_bdcdata OPTIONS FROM opt.
      CATCH cx_sy_authorization_error ##NO_HANDLER.
    ENDTRY.

    REFRESH it_bdcdata.
  ENDLOOP.

вот что ни ставь в качестве экрана, все-равно переходит на 4104й

Код: You are not allowed to view links. Register or Login
FORM bdc_field USING fnam fval.
  CLEAR it_bdcdata.
  it_bdcdata-fnam = fnam.
  it_bdcdata-fval  = fval.
  APPEND it_bdcdata.
ENDFORM.                    "BDC_FIELD

FORM bdc_dynpro USING prog scr.
  CLEAR it_bdcdata.
  it_bdcdata-program = prog.
  it_bdcdata-dynpro  = scr.
  it_bdcdata-dynbegin = 'X'.
  APPEND it_bdcdata.
ENDFORM.                    "BDC_DYNPRO


если сделать  it_bdcdata-dynbegin = ' ', то выдает ошибку "первый экран не содержится в данных пакетного ввода".


Оффлайн Victor Ghost

  • Newbie
  • *
  • Сообщений: 24
  • Репутация: +0/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: массовое удаление входящих поставок
« Ответ #6 : Август 23, 2017, 03:39:48 pm »
upd: не тот пример я все-таки взял за основу, блин.. разобрался вроде :))

Оффлайн Victor Ghost

  • Newbie
  • *
  • Сообщений: 24
  • Репутация: +0/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: массовое удаление входящих поставок
« Ответ #7 : Август 25, 2017, 12:33:07 pm »
забавная штука. если удаляю через вызов транзакции несколько поставок, то первая не удаляется сразу. если еще раз запускаю удаление, то и она удаляется (ее точно никто не блокирует во время удаления). это не напрягает - отрабатыает то быстро все и два раза на одну кнопку можно нажать, но странно как-то..

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: массовое удаление входящих поставок
« Ответ #8 : Август 25, 2017, 01:15:17 pm »
You are not allowed to view links. Register or Login
забавная штука. если удаляю через вызов транзакции несколько поставок, то первая не удаляется сразу. если еще раз запускаю удаление
Не это какая-то ошибка в программе. Такое не должно быть.

Оффлайн Victor Ghost

  • Newbie
  • *
  • Сообщений: 24
  • Репутация: +0/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: массовое удаление входящих поставок
« Ответ #9 : Сентябрь 13, 2017, 08:33:23 am »
в общем, снова к этой заявке вернулся.
короче, если запускать в отладке и делать все медленно по шагам, то удаляет прекрасно и сразу.
если запускать напрямую и удалять 3 и более заявок, то периодически затыкается в VL32N с сообщением "пользователь хххх уже обрабатывает заказ уууу" (где хххх - это я как раз).
подозреваю, что программа тупо не успевает отрабатывать шаг цикла (то, что в VL32N происходит) и переходит уже на следующий шаг, а заказ то еще занят...

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: массовое удаление входящих поставок
« Ответ #10 : Сентябрь 13, 2017, 03:52:09 pm »
You are not allowed to view links. Register or Login
подозреваю, что программа тупо не успевает отрабатывать шаг цикла (то, что в VL32N происходит) и переходит уже на следующий шаг, а заказ то еще занят...
Именно так и есть. Как вариант выполните проверку блокировки, вызов модуля блокировки с флагом V - Проверка и флажок _WAIT = Х, в среднем оно будет ждать секунд 5 (зависит от настройки системы), потом еще раз делаешь проверку если все ОК, тогда можно идти дальше, документ не блокирован.

Оффлайн Victor Ghost

  • Newbie
  • *
  • Сообщений: 24
  • Репутация: +0/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: массовое удаление входящих поставок
« Ответ #11 : Сентябрь 20, 2017, 01:49:26 pm »
спасибо! получилось :)

долго тупил и думал, почему не работает. оказалось, что VBAK-VBELN и LIKP-VBELN - это совершенно разные вещи (ну, описание посмотреть сложно, да...) и я пытался проверять не тот объект блокировки ~_~

а проверку такую запилил:

Код: You are not allowed to view links. Register or Login
*   проверка блокировки заявки
*   в таблице LIKP VBELN - это VBELN_VL
*   EVVBLKE - объект блокировки
      CALL FUNCTION 'ENQUEUE_EVVBLKE'
       EXPORTING
         MODE_LIKP            = 'V'
         MANDT                = sy-mandt
         VBELN                = ls_vbeln-vbeln
*         X_VBELN              = ' '
*         _SCOPE               = '2'
         _WAIT                = 'X'
*         _COLLECT             = ' '
       EXCEPTIONS
         FOREIGN_LOCK         = 1
         SYSTEM_FAILURE       = 2
         OTHERS               = 3
        .

      IF SY-SUBRC <> 0.
        "какая-то обработка
      ENDIF.

Sapforum.Biz

Re: массовое удаление входящих поставок
« Ответ #11 : Сентябрь 20, 2017, 01:49:26 pm »