Ayuda SAP

Historial de Compra con Autorización [QUERY]

Hola a toda la comunidad.

Quisiera aportar una QUERY con la cual estuve trabajando las ultimas semanas.

La misma muestra el historial de compra desde la Solicitud hasta el Pedido, incluyendo la oferta.
Como todos saben para hacer sin Oferta tuve que realizar otra ya que esta requiere otro JOIN.

En mi caso Tanto las Solicitudes de Compra como los Pedidos requieren de una autorización.
Para los Gerentes es importante ver quien fue el responsable de autorizar ‘x’ compra.
Entonces tuve que indagar varias tablas, no solo los Documentos de Marketing sino las de Procesos de Aprobación.

Si a alguien le sirve, siéntase cómodo y pregunte.

Si alguien tiene alguna sugerencia y/o crítica, bienvenida sea

A continuación la QUERY:

SELECT DISTINCT
T14."DocNum" AS "Nro Solicitud Compra",

T17."U_NAME" AS "Creador Solicitud Compra",

T18."U_NAME" AS "Autorizador Solicitud Compra",

T2."U_NAME" AS "Creador Orden de Compra",

T3."U_NAME" AS "Autorizador Orden de Compra",

CASE T0."Status"
WHEN 'Y' THEN 'Autorizado'
WHEN 'N' THEN 'Rechazado'
WHEN 'W' THEN 'Pendiente'
WHEN 'P' THEN 'Creado'
END AS "Estado Autorización",

CASE T1."Status"
WHEN 'Y' THEN 'Autorizado'
WHEN 'N' THEN 'Rechazado'
WHEN 'W' THEN 'Pendiente'
END AS "Respuesta Autorización",

T12."DocNum" AS "Nro Doc Oferta",

T10."DocNum" AS "Nro Pedido",
T10."CardName" AS "Proveedor",
T10."DocTotal" AS "Total Documento",

CASE T0."ProcesStat"
	WHEN 'A' THEN 'Creado por Autorizador'
	WHEN 'P' THEN 'Creado'
	WHEN 'C' THEN 'Cancelado'
	WHEN 'N' THEN 'Rechazado'
	WHEN 'W' THEN 'Pendiente'
	WHEN 'Y' THEN 'Autorizado' 
END AS "Estado Documento"

FROM OWDD T0

INNER JOIN WDD1 T1 ON T0."WddCode" = T1."WddCode"
INNER JOIN OUSR T2 ON T0."OwnerID" = T2."USERID"
INNER JOIN OUSR T3 ON T1."UserID" = T3."USERID"


INNER JOIN OPOR T10 ON T0."DocEntry" = T10."DocEntry" AND T0."ObjType" = '22'
INNER JOIN POR1 T11 ON T10."DocEntry" = T11."DocEntry"

INNER JOIN OPQT T12 ON T11."BaseEntry" = T12."DocEntry" AND T11."BaseType" = '540000006'
INNER JOIN PQT1 T13 ON T12."DocEntry" = T13."DocEntry"

INNER JOIN OPRQ T14 ON T13."BaseEntry" = T14."DocEntry"

LEFT JOIN OWDD T15 ON T14."DocEntry" = T15."DocEntry" AND T15."ObjType" = '1470000113'
LEFT JOIN WDD1 T16 ON T15."WddCode" = T16."WddCode" AND T16."Status" = 'Y'
LEFT JOIN OUSR T17 ON T15."OwnerID" = T17."USERID"
LEFT JOIN OUSR T18 ON T16."UserID" = T18."USERID"


WHERE T0."ObjType" = '22' AND 
T1."Status" = 'Y' 
ORDER BY T14."DocNum"

Saludos a toda la comunidad.

2 Me gusta

Muchísimas gracias por tu aportación

1 me gusta

Amigo, esta excelente tu aportación soy nuevo y poco experto, saber con esta Query como podría mostrar únicamente las Ordenes de Compra pendientes de autorizar con proveedor y total de partidas. Agradecería mucho tu ayuda, saludos…!

2 Me gusta

Hola @JManuel esta Query en particular muestra por documentos específicos. Si puedes visualizar el Informe de Status de Autorización (dentro del Modulo de Gestión -> Proceso de Aprobación) allí te figuran las Tablas y Columnas a consultar.
Las tablas cabeceras son OWDD y WDD1
Luego ya debes indagar en los datos que necesites obtener.
Aqui te dejo un ejemplo

SELECT T3."DocEntry", T3."CardCode"
FROM OWDD T0
INNER JOIN WDD1 T1 ON T0."WddCode" = T1."WddCode"
INNER JOIN OPOR T3 ON T0."DocEntry" = T3."DocEntry"
WHERE T0."ObjType" = '22' AND T1."Status" = 'W' AND T3."CardName" like '%S.A.%'
1 me gusta