¿Alguien podría esbozar una tabla genérica que vincule un documento base y un documento objetivo para un informe Crystal basado en SAP B1?
Por ejemplo, ¿cómo se conecta una orden de venta (ORDR, RDR1) con una factura (OINV, INV1)? Entiendo el concepto de un documento basado en otro documento, pero los campos de la base de datos en estas tablas no parecen ser sencillos en absoluto.
Aquí está mi enfoque:
La orden de venta es el documento base y la factura es el documento objetivo.
Las tablas de encabezado se vinculan a las tablas de línea a través de los campos DocEntry y ObjType. DocEntry es numérico, ObjType es una cadena de texto. Las tablas de encabezado (OINV, ORDR) no tienen campos específicos de base o objetivo, por lo que hay que vincular los documentos base a los documentos objetivo a través de las tablas de línea (INV1, RDR1). Las tablas de línea tienen estos campos:
ActBaseEnt (número)
ActBaseLn (número)
ActBaseNum (número)
BaseDocNum (número)
BaseEntry (número)
BaseLine (número)
BaseRef (número almacenado como cadena de texto)
BaseType (número)
TargetType (número)
TrgetEntry (número)
Supongamos que la orden de venta no tiene un documento base y la factura no tiene un documento objetivo. Por lo tanto, en RDR1, todos los campos anteriores excepto los dos últimos estarían en blanco/nulos. RDR1.TargetType sería = 13 (número) y RDR1.TrgetEntry sería el DocEntry en OINV o INV1. Por otro lado, en INV1, solo TargetType y TrgetEntry estarían en blanco/nulos. Todos los otros campos anteriores estarían relacionados con el documento base de la orden de venta.
En RDR1, TargetType = 13 (número) y en INV1, BaseType = 17 (número). Ninguno de estos campos puede vincularse directamente al campo ObjType en ninguna tabla, ya que ObjType es una cadena de texto. ¿Cómo se pueden vincular estos dos documentos sin tener que escribir un Comando de informe que convierta números en cadenas de texto o viceversa?
BaseDocNum en una tabla de línea solo puede conectarse a una tabla de encabezado, ya que DocNum no existe en las tablas de línea. ¿Qué sucede si BaseDocNum está en blanco? BaseRef es típicamente el DocNum almacenado como texto. ¿Qué propósito sirve? ¿Es relevante para esta discusión?
Entonces, ¿qué necesita conectarse con qué para vincular estos dos documentos en un informe Crystal?
Estos conectan cada encabezado con cada tabla de línea:
ORDR.DocEntry >> RDR1.DocEntry
ORDR.ObjType >> RDR1.ObjType
OINV.DocEntry >> INV1.DocEntry
OINV.ObjType >> INV1.ObjType
¿Son estas las conexiones correctas?:
INV1.BaseDocNum >> ORDR.DocNum
INV1.BaseEntry >> ORDR.DocEntry o INV1.BaseEntry >> RDR1.DocEntry
INV1.BaseLine >> RDR1.LineNum
¿Hay alguna más?
Gracias por toda la asistencia. Y, por favor, no se incluya código SQL como explicación.