SAP Activos
Enviado por Kenny Junior Mercedes Rojas • 17 de Junio de 2023 • Apuntes • 1.140 Palabras (5 Páginas) • 222 Visitas
Especificación Funcional Reporte de Proveedores con detracciones.
- La pantalla de selección debe contener los filtros de Sociedad (BSIK-BUKRS, P_SOCIEDAD) (Obligatoria), Acreedor (BSIK-LIFNR, P_ACREEDOR), Clase de Documento (BSIK-BLART, P_CLDOC), Fecha de Contabilización (BSIK-BUDAT, P_FCONTAB) y Abierta en Fecha Clave (BSIK-BUDAT, P_FCLAVE) (Obligatoria).
El campo P_FCLAVE debe traer por defecto el día actual.
- El reporte debe realizar un select a la tabla BSIK:
SELECT * FROM BSIK INTO T_DATA
WHERE BUKRS = P_SOCIEDAD (parámetro de entrada)
LIFNR IN P_ACREEDOR (parámetro de entrada)
BLART IN P_CLDOC (parámetro de entrada)
BUDAT LE P_FCLAVE (parámetro de entrada)
BUDAT IN P_FCONTAB (parámetro de entrada)
SELECT * FROM BSIK APPENDING T_DATA
WHERE BUKRS EQ P_SOCIEDAD (parámetro de entrada)
LIFNR IN P_ACREEDOR (parámetro de entrada)
BLART IN P_CLDOC (parámetro de entrada)
AUGDT GT P_FCLAVE (parámetro de entrada)
BUDAT LE P_FCLAVE (parámetro de entrada)
BUDAT IN P_FCONTAB (parámetro de entrada)
Ordenamos el reporte por sociedad ejercicio y num. de documento
- Con la data resultante realizamos un select a la bkpf indexando la tabla interna con un for all entries
SELECT FROM BKPF INTO T_BKPF
FOR ALL ENTRIES T_DATA
WHERE BUKRS EQ T_DATA-BUKRS
BELNR EQ T_DATA-BELNR
GJAHR EQ T_DATA-GJAHR
- Eliminamos los documentos anulados por FI y MM.
LOOP T_BKPF
IF T_BKPF-AWTYP EQ ‘BKPF’.
IF T_BKPF-XREVERSAL EQ ‘2’.
*ELIMINAMOS EL REGISTRO DE LA BSIK
DELETE T_BSIK WHERE BELNR EQ T_BKPF-BELNR AND GJAHR EQ T_BKPF-GJAHR.
ELSE T_BKPF-XREVERSAL EQ ‘1’
SELECT BUDAT FROM BKPF INTO W_BUDAT
WHERE BUKRS EQ T_BKPF-BUKRS
BELNR EQ T_BKPF-STBLG
GJAHR EQ T_BKPF-STJAH
IF W_BUDAT < P_FCLAVE
*ELIMINAMOS EL REGISTRO DE LA BSIK
DELETE T_BSIK WHERE BELNR EQ T_BKPF-BELNR AND GJAHR EQ T_BKPF-GJAHR.
ENDIF.
ENDIF.
ELSEIF T_BKPF-AWTYP EQ ‘RMRP’.
SELECT STBLG STJAH FROM RBKP
WHERE BELNR EQ T_BKPF-AWKEY(10)
GJAHR EQ T_BKPF-AWKEY+10(4).
IF STBLG NE ‘ ’.
*Con lo obtenido hacemos otro select a la RBKP
SELECT BUDAT FROM RBKP
WHERE BELNR EQ STBLG
GJAHR EQ STJAH.
IF RBKP-BUDAT< P_FCLAVE.
*ELIMINAMOS EL REGISTRO DE LA BSIK
DELETE T_BSIK WHERE BELNR EQ T_BKPF-BELNR AND GJAHR EQ T_BKPF-GJAHR.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP
- De lo obtenido realizamos un FOR ALL ENTRIES con la WITH_ITEM y LFA1.
SELECT FROM WITH_ITEM INTO T_DETRAC
FOR ALL ENTRIES T_BSIK
WHERE BUKRS EQ T_BSIK-BUKRS
BELNR EQ T_BSIK-BELNR
...