Archivo

Posts Tagged ‘EXIT’

IW31 – Modificar dato en Solicitud de Pedido automática antes que se grabe

Caso: Se requería que al grabar por la IW31 una orden que crea automáticamente solicitudes de pedido, se copie el campo BEDNR (Nro. de necesidad) al campo RESWK (Centro Suministrador).

Luego de pasar por varios lugares, la opción c) funcionó:

a. BADI ME_REQ_POSTED

Resultado: No funcionó porque no permite modificar aquí la SOLPE.

b. User-EXITs

COZF0001 Modificar solicitud pedido para operación externa

COZF0002 Modificar solicitud pedido para componente externa

Resultado: no funcionó porque pese a que hay una estructura de salida EBAN_ORD_CUST, ésta no contiene el campo RESWK (igual no llegué a probar si por aquí modificaba algo)

c. Enhacement en ME_CREATE_REQUISITION_EXT.

Resultado: Allí parece funcionar. Tomé el Enhancement-Point ME_CREATE_REQUISITION_EXT_01:

ENHANCEMENT-POINT ME_CREATE_REQUISITION_EXT_01 SPOTS ES_SAPLEBNE.
*$*$-Start: ME_CREATE_REQUISITION_EXT_01——————————————————–$*$*
ENHANCEMENT 1  DIMP_GENERAL_SAPLEBNE.    “active version

 

e hice un nuevo enhacement Z, al cual copie lo que estaba actualmente en la DIMP_GENERAL_SAPLEBNE y le agregué debajo mi código:

 

ENHANCEMENT 1  ZPM_COPIA_BEDNR_RESWK.    “active version
*
*…dunkle Konfiguration
*…dunkle Konfiguration
….

….(líneas omitidas para no copiar todo el código standard)

….
endif.           “aktyp
ENDIF.                                                      “1225491

* INI MOD Para SOLPEs ZSPA copio el campo “Nro. necesidad” al campo “Centro Suministro”
IF eban-bsart = ‘ZSPA’.
xeban-reswk   = xeban-bednr(
4).
bsn-reswk     = bsn-bednr(
4).
ENDIF.
* FIN MOD 
ENDENHANCEMENT.

Anuncios

SD – Generar fórmulas de precio en mandante

Caso: se creó una nueva fórmula de precios (la 904) en VOFM->Fórmulas->Valor de la condición. Se generó un nuevo include RV64A904 y la subrutina FORM FRM_KONDI_WERT_904.

Pero el problema es que la fórmula no funciona. Esto puede ser porque no se activó en el grupo de funciones V61A (verificarlo). Para ello se debe ejecutar un programa por la SE38, llamado RV80HGEN para regenerar las rutinas. Esto se debe realizar en cada mandante.

Luego de ejecutarse por la SE38 el programa RV80HGEN, el resultado es:

 

Links:

http://scn.sap.com/thread/901824

http://scn.sap.com/thread/240338

MRKO – Modificar dato en RMVKON00 al liquidar

Caso: se busca modificar el campo división (BSEG-GSBER) en la posición del proveedor (Clave de Contabilización 31) en el asiento contable que se genera al liquidar consignaciones por la transacción MRKO

Terminé actualizando el dato antes de generar el documento contable, no se si es la mejor solución pero me funcionó.

Usé el EXIT_RMVKON00_001 (ZXM08U11), pero también encontré que está elEXIT_RMVKON00_002 (ZXM08U12) y la BADI MRM_MRKO_HDAT_MODIFY por si tienen que hacer otra cosa.

DATA: lw_bseg TYPE bseg,
lv_gsber TYPE gsber.

* Tomo la división
LOOP AT t_bseg INTO lw_bseg WHERE koart = ‘S’
AND gsber IS NOT INITIAL.
lv_gsber = lw_bseg-gsber.
EXIT. " Uso el EXIT porque se supone que se liquidará todo para el mismo centro / la misma división, así que el dato es el mismo para todos
ENDLOOP.

* Modifico el registro con KOART = K (proveedor)
LOOP AT t_bseg INTO lw_bseg
WHERE koart = ‘K’
AND lifnr EQ i_lifnr.

lw_bseg-gsber = lv_gsber.
MODIFY t_bseg FROM lw_bseg INDEX sy-tabix.
ENDLOOP.