BADI ME PROCESS PO CUST - Cambiar valor

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • andresf02
    Senior Member
    • nov
    • 190

    #1

    BADI ME PROCESS PO CUST - Cambiar valor

    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:

    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!
  • cmayka
    Junior Member
    • jul
    • 3

    #2
    Hola,

    Después de asignar los respectivos indicadores de impuestos a las variables correspondientes, debes asignar esos valores a la tabla de items. Te falta llamar al método set_data. Intenta lo siguiente.

    l_item-item->set_data( ls_item ).

    Espero que te sirva.

    Comentario

    Trabajando...