Parámetro UserCode@ en Factura Deudores

Hola, espero que todos se encuentren muy bien, quisiera que por favor me dieran una mano con un tema que no había tratado antes y que debe ser muy sencillo.

Tengo un layout de impresión para las Facturas de deudores en el cual recibo dos parámetros los cuales son: DocKey@ y Schema@ para identificar el DocEntry de la factura y el otro es la base de datos, pero ahora requiero recibir otro parámetro con el usuario que está intentando imprimir la factura, para mostrar o no, una imágen; he visto que el parámetro usado es UserCode@ pero no he podido usarlo porque me da este error al querer visualizar a través de sap el layout.

Agradezco mucho su ayuda y colaboración.

Mi duda es, como para que necesitas pasar el SCHEMA?

1 me gusta

Hola @leonardo70338

Cierto, creo que no necesitas pasar el parámetro de Schema@ porque ya cargaste el loyout a SAP, y previo a eso realizaste la conexión a X base de datos desde crystal.

Ahora, respecto al problema del parámetro UserCode@, de donde lo estás tomando?? al crear el layout lo hiciste desde una vista, un SP o desde las tablas ?

Sería bueno que compartieras como estás creando tu parámetro desde Crystal.

Saludos.

2 Me gusta

Bueno, el parámetro Schema@ lo incluí porque tengo otra aplicación externa a SAP en la que uso el mismo layout para mostrar facturas pero a través de ese parámetro identifico la base de datos en la que estoy en esa otra aplicación; ahora, los datos los traigo a través de un comando.image en él tengo el parámetro DocKey@ para recibir obviamente el DocEntry de la factura y bueno el Schema@ por lo que ya expliqué, con estos dos parámetros funciona correctamente, pero vi aquí que se podía usar el parámetro UserCode@ h_tps://es.calameo.com/read/004175524cbf1f2bb8ab5 el parámetro lo creé así: image
si ejecuto el layout desde crystal reports me pide los parámetros y ejecuta bien el layout


Gracias.

Hola @leonardo70338

El parámetro está bien definido, si se crea de esa forma UserCode@

Intenta validar quitando el parámetro UserCode@ para verificar que la lógica del query es correcta (ejecuta sin errores).

Para los otros compañeros el parámetro Schema@ se usa para definir en el query la base de datos a la que debe apuntar, lo uso principalmente en los formatos para HANA, adicional sirve para importarlo a otras bases de datos sin tener que actualizar cadenas de conexión.

Saludos,
Diego Achury :colombia:

2 Me gusta

Hola @Diego_Achury muchas gracias por tu ayuda, mira… este es el query, si lo pruebo desde crystal si funciona y me pide los parámetros, pero cuando lo importo a SAP y doy previsualizar layouts no funciona.

SELECT CASE WHEN T0."Printed"='Y' THEN 'DUPLICADO' END AS "MSJ-PRINT",T0."CardCode",T1."ItemCode" AS "Producto"
,case when T9."U_GVS_CantProv">0 THEN SUM(T1."Quantity"/T9."U_GVS_CantProv") else 0 END AS "PACAS",SUM(T1."Quantity") AS "Cantidad", T0."DocEntry",T0."DocNum", T0."CardName", T0."VatSum", T0."DocTotal", T1."PriceBefDi", T0."DocDate",T0."TaxDate", T0."DocDueDate"
,  T0."Address", T0."Comments" , T0."WTSum", T0."NumAtCard", T0."DocType" , T0."DocCur"
 , CASE T0."DocCur"  WHEN '$' THEN sum(T0."VatSum") ELSE sum(T0."VatSumFC") END  "Total IVA "
, CASE T0."DocCur"  WHEN '$' THEN T0."DiscPrcnt" ELSE T0."DiscSum" END "Total Descuento"
 , CASE T0."DocCur"  WHEN '$' THEN round(T0."Max1099") ELSE round(T0."DocTotalFC") END  "Total Documento"
, CASE T0."DocCur"  WHEN '$' THEN T0."WTSum" ELSE T0."WTSumFC" END  "Total Retenciones"
, CASE T0."DocCur"  WHEN '$' THEN 1 ELSE 2 END  "Total ", sum(T1."Quantity") as "Quantity", T1."ItemCode",T1."Dscription" 
, CASE WHEN T1."Price" = 0 THEN SUM(T10."Price" * T1."Quantity") ELSE sum(T1."LineTotal") END as "LineTotal" ,T1."VatPrcnt",T1."DiscPrcnt"
, CASE T1."BaseType" WHEN 17 THEN  '  -  ' END "Numero Pedido",T1."UseBaseUn" AS "Unidad Medida"
 , CASE WHEN T1."Price"=0 THEN T10."Price" ELSE T1."Price" END AS "Precio Und",CASE WHEN T1."Price" = 0 THEN ((T10."Price" * T7."Rate")/100)+T10."Price" ELSE ((T1."Price" * T7."Rate")/100)+T1."Price" END AS "Precio Und IVA"
  , T1."TaxCode"
 , T2."LicTradNum", T5."U_GVS_Telefono" AS "Phone1", T5."U_GVS_Celular" AS "Phone2", t2."City"
 , T3."SlpName" -----------------------------------------
,T3."Telephone"
 , T4."PymntGroup"
 , T5."Street" "Direccion Entrega"
 ,T5."Block" as "t5.Block", T5."U_GVS_CdPtoVta" as "t5.U_GVS_CdPtoVta",T5."U_GVS_CodRelacionado" as "t5.U_GVS_CodRelacionado", t5."City" as "t5.City"
 , T6."Street" "Direccion Factura"
 ,T6."Block" as "t6.Block", T6."U_GVS_CdPtoVta" as "t6.U_GVS_CdPtoVta",T6."U_GVS_CodRelacionado" as "t6.U_GVS_CodRelacionado", t5."City" as "t5.City_2"
 , T7."Rate"
 , T8."U_NAME"
,T9."InvntryUom",T9."SWeight1",T1."DiscPrcnt" AS "PROMO",CASE WHEN T1."DiscPrcnt"=100 THEN SUM(T10."Price" * T1."Quantity") ELSE 0 END AS "VLDESCU"
,T0."Max1099" AS "Totsinret"
,T0."DiscSum",T0."DocTotalFC",T0."DiscPrcnt",T0."WTSumFC"
,T1."BaseType",T1."UseBaseUn",T1."Price", T7."Rate",T1."TaxCode",T2."LicTradNum",T5."U_GVS_Telefono" AS "Phone1",T5."U_GVS_Celular" "Phone2"
,T2."City",T3."SlpName",T3."Telephone" , T4."PymntGroup" , T5."Street",T5."Block", T5."U_GVS_CdPtoVta",T5."U_GVS_CodRelacionado", t5."City"
 , T6."Street",T6."Block",T6."U_GVS_CdPtoVta",T6."U_GVS_CodRelacionado",T8."U_NAME",T9."InvntryUom",T9."SWeight1",T0."CardCode",T10."Price"
  ,T0."Max1099",T9."U_GVS_CantProv"
FROM {?Schema@}.OINV T0
 LEFT JOIN {?Schema@}.INV1 T1 ON T1."DocEntry"=T0."DocEntry" 
 LEFT JOIN {?Schema@}.OCRD T2 ON T0."CardCode"=T2."CardCode"
 LEFT JOIN {?Schema@}.OSLP T3 ON T0."SlpCode"=T3."SlpCode" 
 LEFT JOIN {?Schema@}.OCTG T4 ON T2."GroupNum"=T4."GroupNum"
 LEFT JOIN {?Schema@}.CRD1 T5 ON T2."CardCode" = T5."CardCode" and T0."ShipToCode"=T5."Address" AND T5."AdresType"='S'
 LEFT JOIN {?Schema@}.CRD1 T6 ON T2."CardCode" = T6."CardCode" and T0."PayToCode"=T6."Address" AND T6."AdresType"='B'
 LEFT JOIN {?Schema@}.OSTC T7 ON T1."TaxCode" = T7."Code"
 LEFT JOIN {?Schema@}.OUSR T8 ON T0."UserSign" = T8.USERID
 LEFT JOIN {?Schema@}.OITM T9 ON T9."ItemCode" = T1."ItemCode"
 LEFT JOIN {?Schema@}.ITM1 T10 ON T10."ItemCode" = T1."ItemCode" AND T10."PriceList" = T2."ListNum"
 LEFT JOIN {?Schema@}.OUSR T11 ON T11."USERID" = {?UserCode@}
 WHERE  T0."DocType" ='I' and T0."DocEntry"={?DocKey@}
 GROUP BY T0."Printed",T0."CardCode",T1."ItemCode",T9."U_GVS_CantProv",T0."DocEntry",T0."DocNum", T0."CardName"
 , T0."VatSum", T0."DocTotal", T1."PriceBefDi", T0."DocDate",T0."TaxDate", T0."DocDueDate"
,  T0."Address", T0."Comments" , T0."WTSum", T0."DocEntry", T0."NumAtCard", T0."DocType" , T0."DocCur",T0."VatSumFC"
,T0."DiscSum",t0."DiscPrcnt",t0."DocTotalFC",T0."Max1099",T0."WTSumFC",T1."Dscription",T1."Price",T1."VatPrcnt",T1."DiscPrcnt"
,T1."BaseType",T1."UseBaseUn",T10."Price",T7."Rate"
  , T1."TaxCode"
 , T2."LicTradNum", T5."U_GVS_Telefono", T5."U_GVS_Celular", t2."City"
 , T3."SlpName"
,T3."Telephone"
 , T4."PymntGroup"
 , T5."Street"
 ,T5."Block", T5."U_GVS_CdPtoVta",T5."U_GVS_CodRelacionado", t5."City"
 , T6."Street"
 ,T6."Block", T6."U_GVS_CdPtoVta",T6."U_GVS_CodRelacionado", t5."City"
 , T7."Rate"
 , T8."U_NAME"
,T9."InvntryUom",T9."SWeight1",T1."DiscPrcnt"
,T0."Max1099"

Hola @leonardo70338

Aca un par de recomendaciones:

Realizar un query para traer datos del encabezado y otro para los datos de detalle, el de encabezado solo debe traerme un registro siempre, el de detalle si va a crecer según cuantas líneas tenga el documento.

Puedes comentarear partes del query para probar su ejecución y validar los errores generados desde SQL, en mi ambiente no tengo esos campos de usuario.

Lo que veo es que en la función ROUND de sql server le faltan parámetros. Puedes validarlo en:

Saludos,
Diego Achury :colombia:

Estimado, alguna vez me sucedió y fue porque intente cambiar el nombre del parametro del usuario, así que decidi volver a usar el que siempre usaba printbyusername@ y funciona perfecto. Espero que te solucione el inconveniente.

1 me gusta

este parámetro existe en sap printbyusername@ ? voy a probarlo, muchas gracias.

Estimado, creo que tu inconveniente se encuentra en la siguiente línea

LEFT JOIN {?Schema@}.OUSR T11 ON T11.“USERID” = {?UserCode@}

Ya que desde Crystal he intentado obtener el código del usuario (USERID) pero no es así, lo que se obtiene es el nombre del usuario el U_NAME, ayer tuve un inconveniente similar, es más… Tu comentas que al probarlo desde Crystal te funciona bien, porque muy seguramente le colocas el código del usuario, pero al cargarlo en SAP te aparece un codigo de proveedor 359 o algo similar. Si mi teoría está bien deberías cambiar la línea de la siguiente forma.

LEFT JOIN {?Schema@}.OUSR T11 ON T11.“U_NAME” = {?UserCode@}

Espero que puedas solucionarlo.

1 me gusta

muchas gracias @juanfranc520 ya me funcionó, hice lo que me dijiste pero no con U_NAME sino con USER_CODE. muchas gracias a todos por la colaboración.