+ Sapforum.Biz » Инструменты » ABAP - Инструментальные средства » SE18/SE19 - BAdI-BuilderТема:
|- Badi MB_MIGO_BADI



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

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

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 684
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Badi MB_MIGO_BADI
« Ответ #25 : Июль 10, 2012, 07:36:21 pm »
You are not allowed to view links. Register or Login
Поэтому в заказ записываем тип оценки = "*", а уже в документе прихода с помощью расширения после создания партии меняем звезду на конкретное значение (равное партии).
Так ясно, а что предложенный вариант: You are not allowed to view links. Register or Login тоже не работает?

Оффлайн alexey11

  • Newbie
  • *
  • Сообщений: 16
  • Reputation Power: 0
  • alexey11 has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYears
Re: Badi MB_MIGO_BADI
« Ответ #26 : Июль 11, 2012, 10:50:14 am »
You are not allowed to view links. Register or Login
Именно код "<work> = <c_input>." не работает - тоже валиться в дамп.

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


Дамп в этом месте не вылазит. Значение поля типОценки в расширении меняется,
но на экране всеравно вылазит то же сообщение MIGO050 что поле не готово для ввода.
Т.е взлом не работает.


Информация по версии сапа

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 684
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Badi MB_MIGO_BADI
« Ответ #27 : Июль 11, 2012, 11:08:14 am »
You are not allowed to view links. Register or Login
но на экране всеравно вылазит то же сообщение MIGO050 что поле не готово для ввода.
Т.е взлом не работает.
Из этого делаем вывод, что операции доступа к атрибутам объектов через FIELD-SYMBOLS работают, что не может не радовать. Далее значит место замен вида оценки выбрано не правильно и надо искать другие точки включения.

Оффлайн alexey11

  • Newbie
  • *
  • Сообщений: 16
  • Reputation Power: 0
  • alexey11 has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYears
Re: Badi MB_MIGO_BADI
« Ответ #28 : Июль 23, 2012, 02:47:21 pm »
при более детальном дебаге обнаружено что в нашем lineModify код ASSIGN <c_input> TO  <work> вообще ничего не меняет в <fieldselection>.  :-\

т.е. для GOITEM-BWTAR как было work = 2 так и осталось хотя должно было стать 6(<C_INPUT> = 6).

После выхода из IF_EX_MB_MIGO_BADI~LINE_MODIFY в индуском коде  идет как раз таки проверка на эту шестерку и только тогда изменения принимаются сапом. А оно натыкается на 2.  :(

Код: You are not allowed to view links. Register or Login

*Note 1079123 ->Method item_modify to be used for country INDIA


* Call BAdI
  ls_goitem_badi = cs_goitem.
  CALL METHOD lcl_migo_globals=>if_badi->line_modify
    EXPORTING
      i_line_id = ls_goitem_badi-global_counter
    CHANGING
      cs_goitem = ls_goitem_badi.

* Are there any changes?
* - If NO:  Leave this method.
* - If YES: Check fieldselection, whether field is 'visible + input'.
  CHECK cs_goitem <> ls_goitem_badi.

  descr_ref ?= cl_abap_typedescr=>describe_by_data( ls_goitem_badi ).
  LOOP AT descr_ref->components ASSIGNING <comp>.
*   Following fields are checked in method line_badi_special_fields
    CHECK NOT <comp>-name = 'LGORT'.
    CHECK NOT <comp>-name = 'LGOBE'.
    CHECK NOT <comp>-name = 'WERKS'.
    CHECK NOT <comp>-name = 'NAME1'.
    CHECK NOT <comp>-name = 'MATNR'.
    CHECK NOT <comp>-name = 'MAKTX'.
    CHECK NOT <comp>-name = 'LIFNR'.
    CHECK NOT <comp>-name = 'VENDORNAME'.
    CHECK NOT <comp>-name = 'KUNNR'.
    CHECK NOT <comp>-name = 'CUSTNAME'.
    CONCATENATE 'CS_GOITEM-'      <comp>-name INTO l_name1.
    CONCATENATE 'LS_GOITEM_BADI-' <comp>-name INTO l_name2.
    ASSIGN (l_name1) TO <f1>.
    ASSIGN (l_name2) TO <f2>.
    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.
  ENDLOOP.


PS. можно конечно сделать дикий enchncement после отработки METHOD lcl_migo_screenmodification=>get  ;D