Inicio > ABAP/4 > ME52N – Validar modificación en SOLPED – ME_PROCESS_REQ_CUST

ME52N – Validar modificación en SOLPED – ME_PROCESS_REQ_CUST

Caso: Se desea controlar si al ingresar a modificar una SOLPED un dato fue modificado respecto al valor original.

Solución: En mi caso, en el método IF_EX_ME_PROCESS_REQ_CUST~OPEN obtendré los datos actuales y en IF_EX_ME_PROCESS_REQ_CUST~POST para enviar un mail de aviso cuando el dato fue modificado.

1. Creo un tipo tabla para utilizarlo en la definición luego:

2. Creo las variables para guardar los datos anteriores:

3. En IF_EX_ME_PROCESS_REQ_CUST~OPEN:

  DATA: l_item_list TYPE mmpur_requisition_items,
  l_item           TYPE mmpur_requisition_item,
  l_item_akt       TYPE mereq_item,
  l_item_ref       TYPE REF TO if_purchase_requisition_item,
  lw_eban_anterior TYPE LINE OF zttmm_eban.
 
  DATA:
    ld_attr         TYPE string,
    lo_obj          TYPE REF TO object.  " root object
 
  FIELD-SYMBOLS:
    <lo_lcl>        TYPE ANY,
    <ls_item>       TYPE mereq_item.
 
  REFRESH lt_eban_anterior[].
 
  " Get items of purchase requisition
  l_item_list = im_header->get_items( ).
 
  LOOP AT l_item_list INTO l_item.
    l_item_akt = l_item-item->get_data( ).
    l_item_ref = l_item-item.   " TYPE REF TO if_purchase_requisition_item
    lo_obj     ?= l_item-item.  " casting to root object !!!!!
 
    ld_attr = 'MY_STATE->ITEM'.
    ASSIGN lo_obj->(ld_attr) TO <ls_item>.
 
    MOVE-CORRESPONDING <ls_item> TO lw_eban_anterior.
    APPEND lw_eban_anterior TO lt_eban_anterior.
  ENDLOOP.

4. En IF_EX_ME_PROCESS_REQ_CUST~POST:

  DATA: lv_header TYPE mereq_header,
re_items type mmpur_requisition_items,
ls_item type mmpur_requisition_item,
lv_item type mereq_item,
lw_eban_anterior type line of zttmm_eban.
 
*Obtenemos los Valores de Cabecera
lv_header = im_header-&gt;get_data( ).
* Obtengo los ítems de la SOLPE
re_items = im_header-&gt;get_items( ).
loop at re_items into ls_item.
* Obtengo el ítem
lv_item = ls_item-item-&gt;get_data( ).
 
* Verifico si el tipo de rechazo tuvo un cambio
check lv_item-zztprech is not initial. " ya que si es vacío no debo enviar nada
read table lt_eban_anterior into lw_eban_anterior with key bnfpo = lv_item-bnfpo.
check sy-subrc eq 0.
if ( lv_item-zztprech ne lw_eban_anterior-zztprech ). " es distinto al original?
 
*****************************************
* Envío mail de aviso
*****************************************
endif.
endloop.

Fuente: http://wiki.scn.sap.com/wiki/display/ABAP/Accessing+the+Inacessible+-+Local+Classes+within+Global+Classes

  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: