Автор Тема: Меньшее количество при активации стратегий выбора партии  (Прочитано 7025 раз)

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

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Из разряда полезностей при настройке системы, ну и опять же чтобы при склерозе потом не искать мучительно и больно.

В общем виде, если использовать стратегию выбора партии, то при вводе документа, если количество в партиях меньше чем нужно, то по умолчанию система корректирует введенное количество до количества под которое был найден запас в партиях, т.е. заказали 1000 штук, если нашлось 600, то количество будет скорректировано до 600. Если документ большой и используется фоновый выбор партий для всех позиций, то как бы неудобно потом опять пробегать все введенные количества на предмет, а хватило ли запаса и не изменила ли система количество для каких-то позиций, по которым не хватило запаса. Чтобы не заниматься повторной сверкой, в системе есть сообщение в классе MIGO с номером 065. По умолчанию там стоит отключение какой-либо реакции на недостачу запаса, но это легко решается путем установки для данного сообщения в тип I или W (Сообщение вида E, задать для класса сообщений MIGO нельзя), при этом система ведет себя следующим образом:
I - Пользователь получает сообщение, что запас подобран не для всего количества и после нажатия ввода, система таки выполняет подбор партий на то количество, на которое есть запас, с корректировкой введенного пользователем общего значения, т.е. 1000 изменяется на 600 с разбивкой по партиям.
W - Система сообщает, что количества не хватает и после нажатия ввода, не выполняет распределения количества на доступное в партиях и не выполняет корректировку введенного значения пользователем, т.е. таки позиции будут помечены как ошибочные, но уже по причине типа не введена партия, и их легко будет выявить в документе, для ручного принятия решения.

На картинках дерево настройки и вид сообщения для корректировки...

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Спасибо,понравилось .....

Встречный вопрос: можно ли сделать так, чтобы при вводе отпуска скажем 100 штук, часть отпускалась из одной партии (все количество партии 60 шт) и часть с другой (40, хотя в партии есть 1000), т.е. происходило автоматичесские разделение позиций и выбор нужных партий (а не уменшение) ?
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Спасибо,понравилось .....

Встречный вопрос: можно ли сделать так, чтобы при вводе отпуска скажем 100 штук, часть отпускалась из одной партии (все количество партии 60 шт) и часть с другой (40, хотя в партии есть 1000), т.е. происходило автоматичесские разделение позиций и выбор нужных партий (а не уменшение) ?
Можно например используя сортировку партий в стратегии выбора, т.е. сначала будут выбираться остатки минимальным количеством в партии.

Цитировать
Ход выполнения

   1. Процесс выбора партии может быть запущен как вручную, так и автоматически.
   2. При этом выполняется такая последовательность шагов:

    * определяется схема поиска для данной хозяйственной операции;
    * выполняется поиск подходящей стратегии в рамках указанной схемы.
    * Первая найденная стратегия с соответствующими параметрами принимается, остальные – пропускаются; осуществляется выбор признаков из класса, определенного для стратегии поиска, которые будут применены для обнаружения партии с подходящими спецификациями;
    * выполняется проверка доступности партий;
    * найденные и доступные партии сортируются согласно правилу сортировки, заданному в стратегии поиска;
    * осуществляется выбор количества по умолчанию в соответствии тем количеством, которое определено в стратегии поиска;
    * если стратегия поиска содержит информацию, рекомендуется ее запуск в диалоговом режиме.
т.е. как видим можно определять разные критерии сортировки. В общем виде как я понимаю без экзитов и абапа не обойтись если захочется сделать, что-то типа, выбирать партии, но только те где запас больше 5 штук например, т.е. надо выбрать 100 штук а есть партии 3 27 50 40 и надо первую пропустить из второй взять 22 штуки, из третьей 45 и из четвертой 33 штуки. Вот это похоже без абапа не обойтись  ::)

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Спасибо за ответ, в свое время немного покопался, ответа не нашел, ......
жаль конечно, но так как интерес пока чисто академичесский, ничего страшного, а понадобится - сделаю, не проблема
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн madcat

  • Newbie
  • *
  • Сообщений: 10
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Меньшее количество при активации страте&#
« Ответ #4 : Декабрь 26, 2008, 05:39:38 pm »
Система не дает провести - это хорошо. Но оповещение "корявенькое", как сказал пользователи

как пример -  на складе этого материала есть 2 штуки. Захотела списать 10 шт. Система внизу написала, что из запрошенного количества 10 шт есть только 0 шт (хотя есть 2 штуки).
И еще. Ед. измерения в оповещении, по какой то причине латиницей, простому народу будут непонятны.

« Последнее редактирование: Декабрь 26, 2008, 05:50:54 pm от madcat »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Меньшее количество при активации страте&#
« Ответ #5 : Декабрь 26, 2008, 10:00:15 pm »
You are not allowed to view links. Register or Login
И еще. Ед. измерения в оповещении, по какой то причине латиницей, простому народу будут непонятны.
Ну это вы уже балованные  ;) ну и ST = ШТУКИ оно и в Африке штуки, привыкнут. а выдается все правильно. При сообщении типа:

I - выдается текст типа: "З потрібної кількості 1.000,000 ST матеріалу 21120-3724010-10 можливо перенести лише 583,000 ST", что как бы правильно, т.е. система сообщает какое количество есть в запасе из затребованного.

W - выдается текст "З потрібної кількості 1.000,000 ST матеріалу 21120-3724010-10 можливо перенести лише 0,000 ST", что является правильным, так как это сообщение не о присутствующем на складе остатке, а о количестве которое можно скопировать при выборе партий. В данном случае количество для переноса = 0, т.е. ничего не переносится, а для того чтобы посмотреть запас, ну так у вас в позиции подробно есть кнопка "Обзор запаса", так что думаю пользователю будет не сложно ее ткнуть, чтобы для таких позиций просмотреть количество запаса и затем откорректировать количество в позиции документа, т.е. это и есть уже ручное разруливание ситуации. Ну правда если вы ну очень хотите изменить текст сообщения, то...  ну я правда вам это очень сильно не советую делать, есть такой код в инклуде: LMIGODS6:
Код: You are not allowed to view links. Register or Login
*   Requested stock cannot be satisfied                          "554870
    IF l_quantity_det > 0.                                       "554870
      CALL FUNCTION 'MB_CHECK_T160M'                             "554870
        EXPORTING                                                "554870
          i_arbgb          = 'MIGO'                              "554870
          i_msgnr          = '065'                               "554870
          i_nolog          = abap_true                           "554870
          i_output         = abap_false                          "554870
        IMPORTING                                                "554870
          rc               = l_rc_t160m_check.                   "554870
      CASE l_rc_t160m_check.                                     "554870
*       Warning                                                  "554870
        WHEN 1.                                                  "554870
*         Do not update model and send W-message                 "554870
          WRITE ls_cdcom-erfmg TO l_text1.                       "554870
          CONCATENATE l_text1 ls_cdcom-erfme INTO l_string1      "554870
             SEPARATED BY space.                                 "554870
          CONDENSE l_string1.                                    "554870
          l_quantity_det = 0.                                    "554870
          WRITE l_quantity_det TO l_text2.                       "554870
          CONCATENATE l_text2 ls_cdcom-erfme INTO l_string2      "554870
             SEPARATED BY space.                                 "554870
          CONDENSE l_string2.                                    "554870
          MESSAGE w065(migo) WITH l_string1 ls_cdcom-matnr l_string2.
          EXIT.                                                  "554870
*       Information                                              "554870
        WHEN 5.                                                  "554870
*         Update model and send W-message                        "554870
          CALL METHOD update_model_det                           "554870
            EXPORTING i_line             = i_line                "554870
                      i_massproc         = i_massproc            "554870
                      it_cdstock         = lt_cdstock            "554870
                      is_goitem_original = ls_goitem_original    "554870
                      is_cdcom           = ls_cdcom.             "554870
          WRITE ls_cdcom-erfmg TO l_text1.                       "554870
          CONCATENATE l_text1 ls_cdcom-erfme INTO l_string1      "554870
             SEPARATED BY space.                                 "554870
          CONDENSE l_string1.                                    "554870
          l_quantity_sum = ls_cdcom-erfmg - l_quantity_det.      "554870
          WRITE l_quantity_sum TO l_text2.                       "554870
          CONCATENATE l_text2 ls_cdcom-erfme INTO l_string2      "554870
             SEPARATED BY space.                                 "554870
          CONDENSE l_string2.                                    "554870
          MESSAGE w065(migo) WITH l_string1 ls_cdcom-matnr l_string2.
*       Not maintained                                           "554870
        WHEN space.                                              "554870
*         Update model                                           "554870
          CALL METHOD update_model_det                           "554870
            EXPORTING i_line             = i_line                "554870
                      i_massproc         = i_massproc            "554870
                      it_cdstock         = lt_cdstock            "554870
                      is_goitem_original = ls_goitem_original    "554870
                      is_cdcom           = ls_cdcom.             "554870
        WHEN OTHERS.                                             "554870
          EXIT.                                                  "554870
      ENDCASE.                                                   "554870
*   Requested stock can be satisfied                             "554870
    ELSE.                                                        "554870
       CALL METHOD update_model_det                              "554870
         EXPORTING i_line             = i_line                   "554870
                   i_massproc         = i_massproc               "554870
                   it_cdstock         = lt_cdstock               "554870
                   is_goitem_original = ls_goitem_original       "554870
                   is_cdcom           = ls_cdcom.                "554870
    ENDIF.                                                       "554870
Вот в нем можно заменить текст сообщения, общий запас который надо находится в переменой ls_cdcom-erfmg, код материала в ls_cdcom-matnr, а доступное количество можно посчитать в цикле:
Код: You are not allowed to view links. Register or Login
DATA: l_quantity_dost TYPE erfmg.

    LOOP AT lt_cdstock ASSIGNING <ls_cdstock>.                   
      l_quantity_dost = l_quantity_dost + <ls_cdstock>-erfmg.     
    ENDLOOP.
После чего все это дело вывести заменив в тексте сообщение:
Код: You are not allowed to view links. Register or Login
MESSAGE w065(migo) WITH l_string1 ls_cdcom-matnr l_string2на свое, типа что всего есть столько, а надо было столько, но не судьба... однако это называется изменение стандарта и гнездо,. как и лучшие собак-о(sap-о)-воды, это дело ну очень не рекомендуют делать!

Надеюсь ответ исчерпывающий  ;)