Автор Тема: Badi MB_MIGO_BADI  (Прочитано 58889 раз)

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

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 761
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Badi MB_MIGO_BADI
« : Ноябрь 14, 2008, 12:56:59 pm »
В общем сдела метод LINE_MODIFY и в нем соответсвенно изменяю значение одного из полей. При этом получаю ошибку типа:
Код: You are not allowed to view links. Register or Login
BAdI: поле GOITEM-UMLGO не готово для ввода (изменение не копируется)
№ сообщения MIGO050
В общем где можно ей/ему сказаь, что поле таки готово к вводу? По коду (LMIGOKL3):

Код: You are not allowed to view links. Register or Login
         IF <f1> <> <f2>.
           l_fieldname = <comp>-name.
           CONCATENATE 'GOITEM-' <comp>-name INTO l_fieldname.
           CALL METHOD lcl_migo_screenmodification=>get
             EXPORTING
               i_field          = l_fieldname
               i_global_counter = cs_goitem-global_counter
               i_badi           = x
             RECEIVING
               r_status         = l_status.
           CASE l_status.
     *       Field is 'visible + input' (-> change in BAdI allowed)
             WHEN 6.
               <f1> = <f2>.
               l_change = x.
     *       Field is not used on any screen in MIGO
             WHEN 8.
     ENHANCEMENT-SECTION     lmigokl3_01 SPOTS es_saplmigo.
               MESSAGE w049 WITH l_fieldname.
     END-ENHANCEMENT-SECTION.
     *       Field was not 'on input' (l_status = 0 or 2)
             WHEN OTHERS.
     ENHANCEMENT-SECTION     lmigokl3_02 SPOTS es_saplmigo.
               MESSAGE w050 WITH l_fieldname.
     END-ENHANCEMENT-SECTION.
           ENDCASE.
         ENDIF.
Короче, у этого поля, как и у кучи других статус 2, а надо чтобы был 6. Из кода пока не вкурил где это устанавливается, точнее откуда тянутся эти значения... Из настройки для MIGO, этих полей тоже нет.

Оффлайн №1

  • Administrator
  • Jr. Member
  • *****
  • Сообщений: 636
  • Репутация: +23/-0
  • Пол: Мужской
  • Судьбы я вызов принимаю прямым пожатием руки
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Badi MB_MIGO_BADI
« Ответ #1 : Ноябрь 14, 2008, 01:48:42 pm »
Есть ноты на эту тему:
Note 1020876 - BADI MB_MIGO_ITEM_BADI processed during display mode
Note 1029951 - BAdI MB_MIGO_BADI processed in display mode
Note 1136344 - MB_MIGO_BADI: Method LINE_MODIFY in display mode
Мой You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 761
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Badi MB_MIGO_BADI
« Ответ #2 : Ноябрь 14, 2008, 02:34:45 pm »
You are not allowed to view links. Register or Login
Есть ноты на эту тему:
Note 1020876 - BADI MB_MIGO_ITEM_BADI processed during display mode
Note 1029951 - BAdI MB_MIGO_BADI processed in display mode
Note 1136344 - MB_MIGO_BADI: Method LINE_MODIFY in display mode
Так там про программные ошибки... а к моему вопросу это отношения не имеет... у меня так сказать концептуально, если в программе статусы проверяют, то может сделали все таки что эти статусы где-то ведутся?
« Последнее редактирование: Ноябрь 14, 2008, 02:42:22 pm от Uukrul »

Оффлайн №1

  • Administrator
  • Jr. Member
  • *****
  • Сообщений: 636
  • Репутация: +23/-0
  • Пол: Мужской
  • Судьбы я вызов принимаю прямым пожатием руки
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Badi MB_MIGO_BADI
« Ответ #3 : Ноябрь 14, 2008, 02:51:04 pm »
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 761
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Badi MB_MIGO_BADI
« Ответ #4 : Ноябрь 14, 2008, 02:53:08 pm »
You are not allowed to view links. Register or Login
Я к тому, что может в них подсмотреть: что/почём...
Да смотрел... ничего там нет, там типа ошибку правят при вызове бади, если документ находится в режиме просмотра... в отладчике пока завис. Там зараза динамическая генерация кода используется местами (типа кусок кода создан автоматически другим кодом при изменении чего-то, а вот чего?), короче ничего не ясно пока...

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 761
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Badi MB_MIGO_BADI
« Ответ #5 : Ноябрь 14, 2008, 03:11:25 pm »
Ну судя по всему менять можно только поля представленные в настройке... Все остальное тянет за собой получение ключика разработчика на объект, ну если хочется добавить свои поля... ::)

Оффлайн printfalex

  • Newbie
  • *
  • Сообщений: 1
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Badi MB_MIGO_BADI
« Ответ #6 : Июль 13, 2010, 05:12:08 pm »
Если кого-то ещё интересует данный вопрос..
Я решил эту проблему следующим образом:
  
Код: You are not allowed to view links. Register or Login
    assign ('(SAPLMIGO)lcl_migo_screenmodification=>c_input') to <c_input>.
    assign ('(SAPLMIGO)lcl_migo_screenmodification=>t_fieldselection') to <fieldselection>.

  " Выбираем шаблон по i_line_id
    loop at <fieldselection> assigning <fs>.

      assign component 'GLC' of structure <fs> to <id>.
      if <id> = i_line_id.

      " Так как field-symbol не типизирован, для поиска строки по значению name извращаемся через цикл
        assign component 'TABLE' of structure <fs> to <table>.
        loop at <table> assigning <line>.

          assign component 'NAME' of structure <line> to <name>.

          if <name> = '<ИМЯ_ПОЛЯ>'.
            " Наконец-то добрались до нужного поля. Делаем его доступным для ввода.
            assign component 'WORK' of structure <line> to <work>.
            <work> = <c_input>.
            exit.
          endif.

        endloop.
        exit.
      endif.

    endloop.

 " Меняем значение в cs_goitem
    cs_goitem-<ИМЯ_ПОЛЯ> = <ЗНАЧЕНИЕ>.


Коряво, конечно, но работает..
« Последнее редактирование: Июль 13, 2010, 05:20:42 pm от printfalex »

Оффлайн Uukrul

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

Оффлайн Uukrul

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

Вопрос был в следующем, есть два завода на одно из них материал оцениваемый, на другом не оцениваемый, если делать проводку перемещения с завода где материал без стоимости, на завод где у него стоимость есть, то цена материала будет браться из ОЗМ ракурс БухУчет1 для оцениваемого завода. По условиям же стоимость должна была браться из плановой инфо-записи закупки. Вот для этого и используем BADI, в котором будем подменять цену движения. Из ограничений, цена по стандарту вводится в поле «Внешняя сумма во ВВ», которое было открыто для вида движения перемещения запаса, т.е. пользователь вводит документ а сумма должна быть заполнена правильным значением из инфо-записи, а ограничением является то, что если оценка ведется в нескольких валютах, то данная реализация будет работать не совсем корректно, так как поля для ввода второй валюты в документах ММ нет и вторая валюта будет формироваться из валюты один по курсу на дату проводки документа.

Используем транзакцию SE19 – Badi Builder, в нем у нас есть два вариант новый BADI Badi или классический, берем новый, так как даже если вы выберите классический, на следующем шаге придется пройти по пути миграции его в новый BADI. Причина в том, что все BADI с версии 6.0, кажется, сделаны уже через так называемые энхансменты (подробнее написано тут: You are not allowed to view links. Register or Login), а поэтому, чем делать лишние шаги, лучше сразу идем по правильной новой дороге. Нас интересует BADI для MIGO, ищем его само собой по маске *MIGO*, будет найдена одна запись MB_MIGO_BADI, которая нас и интересует. Рисунок SE19-0.png.

Выбираем режим создания, после чего появится диалог, где надо будет сказать, какое будет название у нашего расширения и описание, рисунок SE19-1.png.  Я рекомендую оставлять в названии, если это возможно имя внедрения, например как в этом случае, потом проще будет искать, какие уже сделаны расширения к интересующей BADI.

Затем нажимаем ОК и переходим к следующему экрану где спросят имя реализации, имя класса реализации и к какому определению BADI все это будем создавать. В нашем случае у нас одно определение BADI, поэтому имя реализации оставляем такое же как и на предыдущем шаге, класс реализации, ну я назвал как на рисунке  SE19-2.png, а определение BADI получено из выпадающего списка, оно там одно.

После чего жмем снова ОК и переходим к следующему шагу, где нам будет предложено то, как создавать наше определение, вариантов три, унаследовать из примере класса, скопировать пример класса и просто создать чистый класс. Чтобы не тянуть весь пример я выбрал режим «Пустой класс». А примеры, ну это когда изучаешь, то можно копировать пример класса реализации, рисунок SE19-3.png.

После копирования/создания попадаем в саму реализацию нашего расширения, должно быть похожее что-то на рисунке ниже. Собственно говоря, практически реализация класса с методами, рисунок SE19-4.png. Открываем дерево слева и делаем клик мышью на ветке «Реализующий класс», после чего откроются все методы класса которые мы можем начать реализовывать и которые определены нам в классе, рисунок SE19-5.png.

Оффлайн Uukrul

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

Соглашаемся на создание внедрения и попадаем в редактор где можем уже писать наш код, объявление будет такое:
Код: You are not allowed to view links. Register or Login
method if_ex_mb_migo_badi~line_modify.
endmethod.
Но перед тем как что-то писать, не плохо бы узнать что нам передают на вход и что хотя узнать на выходе. Для этого идем на закладку Technical Details и там находим наш класс и делаем двойной клик мышью на имени класса, рисунок SE19-7.png. Попадаем в привычную реализацию классов, находим наш метод, ставим на него курсор и нажимаем кнопку «Параметры», рисунок SE19-8.png. Как видим два параметра номер строки и изменяемый параметр сама строка позиции документа, рисунок SE19-9.png.

Саму структуру можно посмотреть сделав клик мышью на поле ссылочного типа… полей там много, в общем типа все что есть в MSEG и еще даже больше. Нас интересует поле EXBWR – Сумма проводки внешний ввод. Вот его то мы и будем заполнять из инфо-записи, рисунок SE19-10.png.

В коде будет что-то такое как на рисунке ниже, однако по правильному конечно надо бы проверить заводы, вид движения и там уже определять нужно или нет выполнять замещение поля суммы. Как минимум поставьте там точку останова и посмотрите что передается в структурах, рисунок SE19-11.png.

После ввода кода надо еще бы все это активировать. Количество объектов само собой будет большим, поэтому выбираем выделить все после чего жмем кнопку активации. Если ошибок нет, а я рекомендую, прежде чем что-то писать в коде, сделать общую активацию, то наше расширение будет рабочим и система начнет туда каждый раз заходить как только что-то будет изменяться в позиции документа при вводе через транзакцию MIGO, рисунок SE19-12.png.

PS: Собственно говоря все, и это о хорошем, а еще немного о плохом. Как видим, полей передается много, но вот изменять значения в них можно не во всех, если поле изменять нельзя, то будет выдаваться сообщение, что-то типа изменение поля запрещено, и ваши правки будут сбрасываться после выхода из метода. Какое есть решение этой проблемы, ну можно воспользоваться решением от такого человека как printfalex (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 761
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Ну и как обычно предыдущих два поста в виде одного файла Badi MB_MIGO_BADI MIGO.pdf

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 761
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Badi MB_MIGO_BADI
« Ответ #11 : Октябрь 03, 2010, 09:07:05 pm »
Кстати, если нужно в методе LINE_MODIFY получить данные из заголовка документа, кстати какого индусы не передают этих данных в этот метод, можно воспользоваться таким кодом:
Код: You are not allowed to view links. Register or Login
* Данные
  DATA: ls_gohead TYPE gohead.
  FIELD-SYMBOLS: <fs_gohead> TYPE ANY.

* Код
  ASSIGN ('(SAPLMIGO)GOHEAD') TO <fs_gohead>.

  ls_gohead = <fs_gohead>.

  UNASSIGN <fs_gohead>.
В переменной ls_gohead, будут данные заголовка документа.

Оффлайн SCORPION_Z

  • Newbie
  • *
  • Сообщений: 14
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Badi MB_MIGO_BADI
« Ответ #12 : Февраль 21, 2011, 11:59:54 am »
You are not allowed to view links. Register or Login
Если кого-то ещё интересует данный вопрос..
Я решил эту проблему следующим образом:
  
Код: You are not allowed to view links. Register or Login
    assign ('(SAPLMIGO)lcl_migo_screenmodification=>c_input') to <c_input>.
    assign ('(SAPLMIGO)lcl_migo_screenmodification=>t_fieldselection') to <fieldselection>.

  " Выбираем шаблон по i_line_id
    loop at <fieldselection> assigning <fs>.

      assign component 'GLC' of structure <fs> to <id>.
      if <id> = i_line_id.

      " Так как field-symbol не типизирован, для поиска строки по значению name извращаемся через цикл
        assign component 'TABLE' of structure <fs> to <table>.
        loop at <table> assigning <line>.

          assign component 'NAME' of structure <line> to <name>.

          if <name> = '<ИМЯ_ПОЛЯ>'.
            " Наконец-то добрались до нужного поля. Делаем его доступным для ввода.
            assign component 'WORK' of structure <line> to <work>.
            <work> = <c_input>.
            exit.
          endif.

        endloop.
        exit.
      endif.

    endloop.

 " Меняем значение в cs_goitem
    cs_goitem-<ИМЯ_ПОЛЯ> = <ЗНАЧЕНИЕ>.


Коряво, конечно, но работает..

А у меня дамп в том месте, где 
Код: You are not allowed to view links. Register or Login
<work> = <c_input>.
... из-за того, что в защищенное поле пытаюсь писать данные

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 761
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Badi MB_MIGO_BADI
« Ответ #13 : Февраль 21, 2011, 01:03:34 pm »
You are not allowed to view links. Register or Login
А у меня дамп в том месте, где 
Код: You are not allowed to view links. Register or Login
<work> = <c_input>.
... из-за того, что в защищенное поле пытаюсь писать данные
Ну похоже SAP прикрыл эту дырку в изоляции с какого-то обновления, кстати параметры системы и пакеты не подскажете какие у вас стоят?

Оффлайн SCORPION_Z

  • Newbie
  • *
  • Сообщений: 14
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Badi MB_MIGO_BADI
« Ответ #14 : Февраль 21, 2011, 01:35:21 pm »
SAP ECC 6.0 , но возможно и дело в поле, которое я обрабатываю .
Это 'GOITEM-EXBWR'  для 101 вдв, которое при 101 всегда блокируется/скрывается.
Уважаемый, Uukrul, можешь выслать в личку кусок кода, где описаны объявления
FIELD-SYMBOLS процедурки "открытия" доступа для поля.
Дело в том, что мы циклим
Код: You are not allowed to view links. Register or Login
loop at <fieldselection> assigning <fs>. ..., а
в локальном классе lcl_migo_screenmodification для неё такое объявление
Код: You are not allowed to view links. Register or Login
  CLASS-DATA:
*   Main fieldselection table with global counter. Public to be
*   visibe in the debugger every time.
    t_fieldselection TYPE ty_t_fst READ-ONLY
И у меня большие сомнения, что можно делать в ней изменения. Или я что-то путаю?!

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 761
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Badi MB_MIGO_BADI
« Ответ #15 : Февраль 21, 2011, 04:30:10 pm »
You are not allowed to view links. Register or Login
Это 'GOITEM-EXBWR'  для 101 вдв, которое при 101 всегда блокируется/скрывается.
Вечером гляну... что с этим полем не так...

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

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Badi MB_MIGO_BADI
« Ответ #16 : Февраль 21, 2011, 11:04:53 pm »
You are not allowed to view links. Register or Login
И у меня большие сомнения, что можно делать в ней изменения. Или я что-то путаю?!
Ссори, что встряю в Вашу дискуссию, но эксперименты с полем о котором Вы говорите, чреваты... помнится, Уукрул сильно уж ругалcя.. да и по опыту чревато, в 101 еще не сталкивался, а 301 – да, в копиях 261  и 101
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

Оффлайн SCORPION_Z

  • Newbie
  • *
  • Сообщений: 14
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Badi MB_MIGO_BADI
« Ответ #17 : Февраль 21, 2011, 11:23:54 pm »
You are not allowed to view links. Register or Login
Ссори, что встряю в Вашу дискуссию, но эксперименты с полем о котором Вы говорите, чреваты... помнится, Уукрул сильно уж ругалcя.. да и по опыту чревато, в 101 еще не сталкивался, а 301 – да, в копиях 261  и 101

Я многократно обращал на это внимание "постановщика задачи". Сошлись на том, что необходимо завести поле подобное тому, о котором мы говорим (чтоб и на 200м и на 305м экране). Поле денежное, в которое юзер вносит "Цену". Потом нужно сделать проверку этой цены с той , что в заказе (EKPO-NETPR). Если она будет больше "заказной", то блокируем такой ввод.
Полагаю, что для "своего" поля тоже будет такой же месседже
Код: You are not allowed to view links. Register or Login
BAdI: поле GOITEM-ZZXXXX не готово для ввода (изменение не копируется)
№ сообщения MIGO050

Как лучше это сделать? Как впихнуть своё поле? Достаточно ли сделать проверку условия в if_ex_mb_migo_badi~check_item ?

Оффлайн alexey11

  • Newbie
  • *
  • Сообщений: 16
  • Репутация: +2/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Badi MB_MIGO_BADI
« Ответ #18 : Июль 04, 2012, 03:52:06 pm »
You are not allowed to view links. Register or Login
А у меня дамп в том месте, где 
Код: You are not allowed to view links. Register or Login
<work> = <c_input>.
... из-за того, что в защищенное поле пытаюсь писать данные


You are not allowed to view links. Register or Login
А у меня дамп в том месте, где 
Код: You are not allowed to view links. Register or Login
<work> = <c_input>.
... из-за того, что в защищенное поле пытаюсь писать данные


Тоже выскакивает дамп на этом же месте

Краткий текст
    Error at assignment: Overwritten protected field.


Пытаюсь поменять поле ТипОценки

в связи с проблемой обязательности типа оценки в заказе перемещения
You are not allowed to view links. Register or Login

Код: You are not allowed to view links. Register or Login
  if sy-tcode = 'MIGO' and
    CS_GOITEM-BWART = '101' AND CS_GOITEM-BWTAR = '*'.
..................
""""""""""""""""""""""""""""""""""""""""""""""" ОТКРЫТИЕ ПОЛЯ ДЛЯ РЕДАКТИРОВАНИЯ,
" иначе будет сообщение  MIGO050

    FIELD-SYMBOLS: <C_INPUT> TYPE ANY, <ID> TYPE ANY, <FS2> TYPE ANY, <LINE> TYPE ANY, <NAME> TYPE ANY, <WORK> TYPE ANY,
                   <FIELDSELECTION> TYPE ANY TABLE, <TABLE> TYPE ANY TABLE.
    assign ('(SAPLMIGO)lcl_migo_screenmodification=>c_input') to <c_input>.
    assign ('(SAPLMIGO)lcl_migo_screenmodification=>t_fieldselection') to <fieldselection>.

  " Выбираем шаблон по i_line_id
    loop at <fieldselection> assigning <fs2>.

      assign component 'GLC' of structure <fs2> to <id>.
      if <id> = i_line_id.

      " Так как field-symbol не типизирован, для поиска строки по значению name извращаемся через цикл
        assign component 'TABLE' of structure <fs2> to <table>.
        loop at <table> assigning <line>.

          assign component 'NAME' of structure <line> to <name>.

          if <name> = 'GOITEM-BWTAR'.
            " Наконец-то добрались до нужного поля. Делаем его доступным для ввода.
            assign component 'WORK' of structure <line> to <work>.
            <work> = <c_input>.
            exit.
          endif.

        endloop.
        exit.
      endif.

    endloop.
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

 " Меняем значение в cs_goitem
    cs_goitem-BWTAR = CS_GOITEM-CHARG.
  endif.


версия SAP ECC 6.0


Есть какие-то идеи?

« Последнее редактирование: Июль 04, 2012, 03:59:25 pm от alexey11 »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 761
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Badi MB_MIGO_BADI
« Ответ #19 : Июль 09, 2012, 10:49:33 am »
You are not allowed to view links. Register or Login
Есть какие-то идеи?
Есть, изоляция классов построена более лучше чем изоляция модулей, поэтому шара с доступом через  FIELD-SYMBOLS похоже уже не работает, да и SAP никогда не обещал, что это будет работать таким образом, так что надо искать другие энхансмены, где можно сделать то что вы хотите. Вообще тип оценки вы меняете зачем?

Оффлайн Sed0Y

  • ECC 7.0 (ERP/CRM), EHP
  • Newbie
  • *
  • Сообщений: 121
  • Репутация: +7/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Badi MB_MIGO_BADI
« Ответ #20 : Июль 09, 2012, 04:04:12 pm »
You are not allowed to view links. Register or Login
.... шара с доступом через  FIELD-SYMBOLS похоже уже не работает...

система 6,0, и у нас все еще работает... (но если или когда перестанет работать, наступит армагидец в системе) :)

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 761
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Badi MB_MIGO_BADI
« Ответ #21 : Июль 09, 2012, 04:11:47 pm »
You are not allowed to view links. Register or Login
система 6,0, и у нас все еще работает... (но если или когда перестанет работать, наступит армагидец в системе) :)
Именно в этом месте и именно этот код? Может уровень патчей другой, может это какая-то настройка на уровне базиса есть?

Оффлайн Sed0Y

  • ECC 7.0 (ERP/CRM), EHP
  • Newbie
  • *
  • Сообщений: 121
  • Репутация: +7/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Badi MB_MIGO_BADI
« Ответ #22 : Июль 09, 2012, 05:21:08 pm »
You are not allowed to view links. Register or Login
Именно в этом месте и именно этот код? Может уровень патчей другой, может это какая-то настройка на уровне базиса есть?

Именно код "<work> = <c_input>." не работает - тоже валиться в дамп.

А если сделать ASSIGN <c_input> TO  <work>. - то все ок

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 761
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Badi MB_MIGO_BADI
« Ответ #23 : Июль 09, 2012, 05:26:26 pm »
You are not allowed to view links. Register or Login
А если сделать ASSIGN <c_input> TO  <work>. - то все ок
Нуууу вот и подождем автора вопроса, поможет ли ему это...

Оффлайн alexey11

  • Newbie
  • *
  • Сообщений: 16
  • Репутация: +2/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Badi MB_MIGO_BADI
« Ответ #24 : Июль 10, 2012, 06:07:47 pm »
You are not allowed to view links. Register or Login
Есть, изоляция классов построена более лучше чем изоляция модулей, поэтому шара с доступом через  FIELD-SYMBOLS похоже уже не работает, да и SAP никогда не обещал, что это будет работать таким образом, так что надо искать другие энхансмены, где можно сделать то что вы хотите. Вообще тип оценки вы меняете зачем?

связано это с перемещением между заводами по заказу.

При создании ММзаказа с типом UB (перемещение) SAP требует заполнения поля Тип оценки.

Потом по этому заказу делается отпуск  товара в MIGO (вд 351) и через какое-то время приход (вд 101)
Так вот вводимый в заказ тип оценки копируется в документ прихода (причем на экране в МИГО не редактируется)

Вариант указывать существующий тип оценки не подходит, нужен новый.


Поэтому в заказ записываем тип оценки = "*", а уже в документе прихода с помощью расширения после создания партии меняем звезду на конкретное значение (равное партии).
« Последнее редактирование: Июль 10, 2012, 06:11:04 pm от alexey11 »