D’aquesta manera es poden introduir els paràmetres de les preguntes d’una forma més senzilla de cara al manteniment de les consultes:
/* SELECT DocDate FROM OINV FA */ declare @desde as date declare @finsa as date set @desde = /* FA.DocDate */ '[%0]' set @finsa = /* FA.DocDate */ '[%1]' select 'FC/MI' 'Tipus' ,O.DocDate 'Data Factura' ,SE.SeriesName+'/'+CONVERT(nvarchar,O.DocNum) 'Numero Factura' ,L.ItemCode 'Codi Article' ,IT.ItemName 'Descripcio Article' ,F.Code 'Codi Familia' ,F.Name 'Familia' ,SF.Code 'Codi SubFamilia' ,SF.Name 'SubFamilia' ,MONTH(O.DocDate) 'Mes' ,YEAR(O.DocDate) 'Any' ,DATEPART(ISO_WEEK,O.DocDate) 'Setmana' ,L.Quantity 'Quantitat' ,L.unitMsr 'Unitat de Compra' ,L.LineTotal 'Import' from OPCH O join PCH1 L on L.DocEntry=O.DocEntry join NNM1 SE on SE.Series=O.Series join OITM IT on IT.ItemCode=L.ItemCode left join [@INT_FAMILY] F on F.Code=IT.U_family left join [@INT_SUBFAMILY] SF on SF.Code=IT.U_Subfamily where O.DocDate>=@desde and O.DocDate<=@finsa
Exemple versió SAP Business One HANA
SQL
/* SELECT DocDate FROM OINV FA */
declare @desde as date;
declare @finsa as date;
set @desde = /* FA.DocDate */ '20250101';
set @finsa = /* FA.DocDate */ '20250101';
SELECT
F."DocEntry"
,F."DocNum",S."SeriesName" "Serie"
,F."CardCode" "CodigoProveedor"
,F."CardName" "NombreProveedor"
,IC."DebPayAcct" "Cuenta"
,F."DocDate" "FechaContabilizado"
,F."DocDueDate" "FechaVencimiento"
,F."TaxDate" "FechaDocumento"
,P."DocDate" "FechaPago"
,A."RefDate" "FechaAsiento"
,AB."DocDate" "FechaAbono"
,IFNULL(IFNULL(P."DocDate",A."RefDate"),AB."DocDate") "FechaDePago"
,F."DocTotal"-F."VatSum" "BaseImponible"
,F."DocTotal" "TotalFactura"
,F."DocStatus" "EstadoFactura"
,A."TransType"
,A."CreatedBy"
,A."Ref1"
,F."PaidToDate" "PagadoHastaFecha"
,F."Installmnt" "Plazos"
,F."GroupNum",FP."PymntGroup" "MetodoPago"
,F."PeyMethod",MP."Descript" "ViaPago"
,RI."ReconNum" "Reconciliacion"
,RIL."LineSeq" "LineaReconciliacion"
,RI."ReconType"
,RI."InitObjTyp"
,RI."InitObjAbs"
,RIL."ReconSum" "ImporteReconciliado"
,RIL."SrcObjTyp" "ObjetoOrigenReconciliacion"
,RIL."SrcObjAbs" "DocEntryOrigenReconciliacion"
,RIL."TransId", RIL."TransRowId" -- Assentament
,LP."SumApplied" "LineaPagoImporte"
,LP."InvType" "LineaPagoObjetoBase"
,LP."baseAbs" "LineaPagoDocEntryBase"
,P."DocEntry" "DocEntryPago"
,P."DocNum" "DocNumPago"
FROM OPCH F
-- Taules auxiliars
LEFT JOIN OCRD IC on IC."CardCode"=F."CardCode"
LEFT JOIN OCTG FP on FP."GroupNum"=F."GroupNum"
LEFT JOIN OPYM MP on MP."PayMethCod"=F."PeyMethod"
LEFT JOIN NNM1 S on S."Series"=F."Series"
-- Reconciliacions internes
LEFT JOIN OITR RI on RI."ReconNum" in
(
SELECT IRIL."ReconNum"
FROM ITR1 IRIL
JOIN OITR IRI on IRI."ReconNum"=IRIL."ReconNum"
WHERE IRIL."SrcObjTyp"='18' and IRIL."SrcObjAbs"=F."DocEntry" and IRIL."ShortName"=F."CardCode" and IRI."Canceled"='N'
)
LEFT JOIN ITR1 RIL on RIL."ReconNum"=RI."ReconNum" and (RIL."SrcObjTyp" in ('46','30','19'))
-- Pagaments
LEFT JOIN OVPM P on P."DocEntry"=RIL."SrcObjAbs" and RIL."SrcObjTyp"='46' and P."DocDate"<=@finsa
LEFT JOIN VPM2 LP on LP."DocNum"=P."DocEntry"
-- Asentament
LEFT JOIN OJDT A on A."TransId"=RIL."SrcObjAbs" and RIL."SrcObjTyp"='30'
-- Abonament
LEFT JOIN ORPC AB on AB."DocEntry"=RIL."SrcObjAbs" and RIL."SrcObjTyp"='19'
-- Condicions generals
WHERE F."TaxDate">=@desde and F."TaxDate"<=@finsa and F."CANCELED"='N' and (F."DocEntry"=LP."baseAbs" or LP."baseAbs" is Null)
ORDER BY "FechaDocumento", "DocEntry";