Reemplazará solo al visualizar la OC, la información que se tiene en la Base de datos.
1. Debemos identificar la BAPI a modificar,
para el caso de la orden de compra es la siguiente:
TX: SE18
BAPI: ME_PROCESS_PO_CUST (sino esta implementada la BAPI deben hacerlo)
Vamos a ingresar el código correspondiente en el Método IF_EX_ME_PROCESS_PO_CUST~OPEN, el cual se ejecuta antes de mostrar la pantalla de la ME23N.
Código y explicación de cada paso.
Ejemplo del reemplazo.
Valores Reales:
Nuevos Valores reemplazados (Solo en tiempo de ejecución).
***************************************Código**********************
METHOD if_ex_me_process_po_cust~open.
******************************************************************************************************************************************
" Obtenemos los datos de la cabecera
DATA:
lw_mepoheader TYPE mepoheader, "Datos a Nivel cabecera
lc_po_header TYPE REF TO cl_po_header_handle_mm,"Clase Manejo OC a nivel cabecera
lt_items TYPE purchase_order_items, "Tabla de posiciones de la OC
lw_item TYPE purchase_order_item, "Posición de la OC
lw_detail TYPE mepoitem. "Posición de la OC (Valores)
IF sy-tcode = 'ME23N'.
*** Modificar cabecera Orden de compra.
lw_mepoheader = im_header->get_data( ).
lc_po_header ?= im_header.
lc_po_header->my_ibs_firewall_on = 'X'. " Variable para que permita modificar
lw_mepoheader-ekgrp = '201'. " Nuevo valor a mostrar a nivel Cab.
CALL METHOD im_header->set_data( im_data = lw_mepoheader ).
*** Obtener y modificar posición.
lt_items = im_header->get_items( ).
LOOP AT lt_items INTO lw_item.
lw_detail = lw_item-item->get_data( ).
lw_detail-idnlf = 'AA'. " Nuevo valor a mostrar a nivel Pos.
lw_item-item->set_data( im_data = lw_detail ).
ENDLOOP.
ENDIF.
*********************************************************************
ENDMETHOD.