при более детальном дебаге обнаружено что в нашем lineModify код ASSIGN <c_input> TO <work> вообще ничего не меняет в <fieldselection>.
т.е. для GOITEM-BWTAR как было work = 2 так и осталось хотя должно было стать 6(<C_INPUT> = 6).
После выхода из IF_EX_MB_MIGO_BADI~LINE_MODIFY в индуском коде идет как раз таки проверка на эту шестерку и только тогда изменения принимаются сапом. А оно натыкается на 2.
*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