Relatórios Crystal – Dicas e Truques: Tabela dinâmica
Olá a todos, aproveitando o post do DIEGO LOTHER também tenho uma dica para todos.
Como sabemos podemos desenvolver impressão de documentos chamadas “layout”, onde conseguimos customizar as impressões no SAP.
Por exemplo, ao gerar e imprimir um pedido de compra, criei um relatório no Crystal Reports e customizei conforme minha necessidade, só que percebi que quando era gerado um esboço de pedido de compra, ele também chamava meu layout customizado só que não mostrava as informações corretas, isso porque o esboço utiliza outras tabelas de dados.
E como fazer pra usar as tabelas corretas conforme o tipo de documento?
Analisando o manual do Crystal Reports, descobri que além do DocKey@, ele também passa automaticamente como parâmetro o campo ObjectId@, com isso, consigo saber onde estou e qual informação selecionar.
Para facilitar ainda mais o comando, criei a seguinte query (deixei a query mais simples para entendimento).
DECLARE @TipoObjeto VARCHAR(10)
DECLARE @DocEntry INT
DECLARE @Comando VARCHAR(MAX)
DECLARE @Tabela VARCHAR(3)
SET @TipoObjeto = {?ObjectId@}
SET @DocEntry = {?DocKey@}
IF @TipoObjeto = '112' -- Draft
BEGIN
SET @Tabela = 'DRF' -- Draft/Rascunhos - ODRF
END
ELSE
BEGIN
SET @Tabela = 'POR' -- Pedido de compra - OPOR
END
SET @COMANDO =
"
select
T0.DocEntry,
T0.DocDate,
T0.CardCode,
T0.CardName,
T0.TotalExpSC,
T0.DiscSum,
T1.ItemCode,
T1.Dscription,
T1.Freetxt,
T1.Quantity,
T1.unitMsr,
T1.Price,
T1.LineTotal,
T1.ShipDate
FROM O[TABELA] T0
INNER JOIN [TABELA]1 T1 ON T1.DocEntry = T0.DocEntry
WHERE T0.DocEntry = @DocEntry
"
SELECT @COMANDO = REPLACE(@COMANDO, "[TABELA]", @Tabela)
SELECT @COMANDO = REPLACE(@COMANDO, "@DocEntry", @DocEntry)
EXEC(@COMANDO)
SET QUOTED_IDENTIFIER ON
Resumindo, se for documento tipo 112, ele lê as tabelas ODRF e DRF1, senão (no caso é um pedido de compra), ele lê as tabelas OPOR e POR1.
Utilizei o comando REPLACE para manter um único comando SQL trocando o nome das tabelas no comando.
Abraço,
Fabio
SAP 9.1 PL11 (SAP 9.2 PL04 test)
Crystal Reports 2016 SP3