Buenas tardes.
Al crear o editar ordenes de compra (transacciones ME21N/ME22N), necesito verificar que si la Solicitud de pedido que se tomó como referencia para crear la orden es del tipo ZS06 (Clase de solped), entonces, el indicador de impuestos de la posicion en la orden de compra debe tener el valor 'VX'.
Por defecto al crear una orden de compra, el sistema trae el indicador de impuestos del dato maestro del material (Generalmente 'V3')
Para esto utilice la badi ME PROCESS PO CUST con el siguiente codigo:
el problema es que al actualizar el valor correcto ls_item-MWSKZ = 'VX', en el debugging funciona perfectamente, pero cuando se termina de ejecutar todas las validaciones, el sistema vuelve y lee el valor del dato maestro del material y me vuelve a cambiar el valor 'VX' por el 'V3' original y pareciera como sino hubiera hehco nada!.
Como puedo hacer para que el valor 'VX' se me conserve en la pantalla y que al grabar la orden de compra, quede en la base de datos con ese valor. Como modifico la estructura para que se quede con el valor que yo le pongo?
Gracias!
Al crear o editar ordenes de compra (transacciones ME21N/ME22N), necesito verificar que si la Solicitud de pedido que se tomó como referencia para crear la orden es del tipo ZS06 (Clase de solped), entonces, el indicador de impuestos de la posicion en la orden de compra debe tener el valor 'VX'.
Por defecto al crear una orden de compra, el sistema trae el indicador de impuestos del dato maestro del material (Generalmente 'V3')
Para esto utilice la badi ME PROCESS PO CUST con el siguiente codigo:
Código:
data: ls_header TYPE mepoheader,
ls_item TYPE mepoitem,
i_items TYPE purchase_order_items,
l_item TYPE purchase_order_item.
ls_header = im_header->get_data( ).
i_items = im_header->get_items( ).
LOOP AT i_items INTO l_item.
ls_item = l_item-item->get_data( ).
data: lv_tiposolped type eban-bsart, "Tipo de solped (ZS01, ZS02, ZS03, ......)
lv_regimen type lfb1-GRICD. "Regimen del proveedor
select BSART from eban into (lv_tiposolped) where banfn eq ls_item-banfn. ENDSELECT.
if lv_tiposolped eq 'ZS06' or lv_tiposolped eq 'ZS08'. "Si la solped que genero la orden de compra es de proyectos
select single QSREC from LFBW into (lv_regimen) where lifnr eq ls_header-lifnr.
if sy-subrc eq 0.
if lv_regimen eq '01'. "regimen comun
ls_item-MWSKZ = 'VZ'. "Indicador de Impuestos = VZ
ELSEIF lv_regimen eq '02'. "regimen simplificado
ls_item-MWSKZ = 'VX'. "Indicador de Impuestos = VX
else.
ls_item-MWSKZ = 'VM'. "Indicador de Impuestos = VM excluido
endif.
endif.
endif.
ENDIF.
ENDLOOP.
el problema es que al actualizar el valor correcto ls_item-MWSKZ = 'VX', en el debugging funciona perfectamente, pero cuando se termina de ejecutar todas las validaciones, el sistema vuelve y lee el valor del dato maestro del material y me vuelve a cambiar el valor 'VX' por el 'V3' original y pareciera como sino hubiera hehco nada!.
Como puedo hacer para que el valor 'VX' se me conserve en la pantalla y que al grabar la orden de compra, quede en la base de datos con ese valor. Como modifico la estructura para que se quede con el valor que yo le pongo?
Gracias!
Comentario