Archivo
Error PO002 – Spooler: problemas de grafo (RSPOENONET)
Caso: al intentar pre-visualizar una orden de compra por la ME23n o intentar imprimirla por la ME9F, genera error PO002 Spooler: problemas de grafo (RSPOENONET)
Solución: una idea es revisar las autorizaciones del usuario.
Posiblemente le esté faltando la autorización para utilizar la impresora local o la impresora (Destino lógico) que contiene el mensaje.
Por la ME23n, ir al menú “Pasar a…” – Mensajes:
Luego hacer click en “Medios comunicación”:
Para nuestro caso el destino lógico es es locl (impresora local):
Revisando las autorizaciones del usuario (SU53) vemos que es lo que está faltando…
Ocultar botón RETENER (HOLD) en ME21n
Caso: se busca ocultar el botón RETENER (HOLD) que aparece en la cabecera del pedido en la ME21n y ME22n.
Solución: para ello hay una BADI en la SPRO, en la siguiente ruta:
SPRO-> Gestión de materiales -> Compras -> Add Ins empresariales para compras -> BAdI: Desactivar la función Retener para el pedido Enjoy
Hacemos click en el botón de ejecutar y nos abre la siguiente pantalla, en donde le ponemos un nombre a la implementación:
Nos abre la siguiente pantalla en donde indicamos el texto breve para la implementación y activamos todo. Nos va a pedir orden de transporte para ello.
Hacemos doble click en la clase ZCL_IMM_MM_ME_HOLD_PO para agregar el código necesario. La idea para ocultarlo es que el parámetro CH_ALLOWED esté en vacío. En mi caso sólo era para el tipo de documento ZSSM.
Grabamos, activamos y listo.
Al ingresar a la ME21n, con cualquier tipo de pedido (en el caso NB) aparece el botón…
Ingresando con el tipo de pedido ZSSM, ahora no aparece:
Les dejo algunas notas al respecto:
Note 390117 – ME21N: Prevent holding of purchase orders
Note 1627441 – ME2L Held PO’s are always shows in EHP4
Liberar pedido de Compras con BAPI_PO_RELEASE
Liberar pedido de Compras con BAPI_PO_RELEASE
Caso: se busca liberar un pedido de compras recién creado, con la BAPI_PO_RELEASE.
Nota: abajo les paso algunos links, ya que no me puse a averiguar mucho del tema porque al final para el caso que buscaba no se va a usar estrategia (digamos que trabajé de más, pero por ello dejo la entrada en el BLOG). Así que sólo espero que de algo les sirva, ya que está bastante incompleto el post (me hubiera gustado probar más sobre el tema).
Algunos tips:
– Hay que tener cuidado es con la estrategia de liberación. En mi caso hay una sola estrategia (código/nivel) de liberación, pero puede darse el caso de que haya más niveles y ahí hay que ver como tratarlo.
– El objeto de autorización necesario para ejecutar la BAPI es: M_EINK_FRG
AUTHORITY-CHECK OBJECT ‘M_EINK_FRG’
ID ‘FRGGR’ FIELD ekko-frggr
ID ‘FRGCO’ FIELD po_rel_code.
– La BAPI_PO_RELEASE parece que no necesitaría un COMMIT, ya que posee un parámetro en su llamada
– También puede serles útil saber que existe una BAPI para restaurar la liberación del pedido, llamada BAPI_PO_RESET_RELEASE.
FORM liberar_pedido USING p_ebeln TYPE ebeln.
DATA: l_grupo TYPE frggr,
l_est TYPE frgsx,
wa_t16fs TYPE t16fs,
lt_return TYPE bapireturn OCCURS 0,
l_rel_status_new TYPE bapimmpara-rel_status,
l_rel_indicator_new TYPE bapimmpara-po_rel_ind,
l_ret_code TYPE sy-subrc.
* Busco el grupo de liberación para la orden de compra.
SELECT SINGLE frggr frgsx
FROM ekko
INTO (l_grupo, l_est)
WHERE ebeln EQ p_ebeln.
* En base al grupo de la orden de compra traigo todos los códigos de liberación.
SELECT SINGLE *
FROM t16fs
INTO wa_t16fs
WHERE frggr EQ l_grupo
AND frgsx EQ l_est.
CALL FUNCTION ‘BAPI_PO_RELEASE’
EXPORTING
purchaseorder = p_ebeln
po_rel_code = wa_t16fs-frgc1
* USE_EXCEPTIONS = ‘X’
* NO_COMMIT = ‘ ‘
IMPORTING
rel_status_new = l_rel_status_new
rel_indicator_new = l_rel_indicator_new
ret_code = l_ret_code
TABLES
return = lt_return
EXCEPTIONS
authority_check_fail = 1
document_not_found = 2
enqueue_fail = 3
prerequisite_fail = 4
release_already_posted = 5
responsibility_fail = 6
OTHERS = 7.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
* Espera hasta la actualización del documento (hasta que cambie el
* indicador de liberada)
DO 20 TIMES.
SELECT SINGLE mandt
FROM ekko
INTO ekko-mandt
WHERE ebeln = p_ebeln
AND frgke = ‘L’
AND frgzu = ‘X’.
IF sy-subrc = 0.
EXIT.
ELSE.
WAIT UP TO 3 SECONDS.
ENDIF.
ENDDO.
ENDIF.
ENDFORM. «liberar_pedido
Algunos links:
http://www.mundosap.com/foro/showthread.php?t=16140