Primero habría que sugerir que el saldo inicial de producto debe ser introducido por medio de una transacción, así como cualquier Entrada o Salida, con fecha, documento, etc.
Luego, listar todas las transacciones del producto y armar la existencia histórica de cada movimiento es fácil con el report form, en donde ordenas por fecha y para armar el saldo creas una operación repetitiva a la par de cada transacción.
El problema viene cuando quieres sacar reporte limitado a una fecha, por ejemplo el mes pasado, ya que para ponerle saldos, internamente en la rutina debes calcular saldo inicial en base a todo el histórico anterior (con set filter to y una sum se puede comenzar). Tenemos un sistema en VFP -hecho por teceros- que calcula así los saldos iniciales de cuentas contables, para sacar solo los movimientos del mes. Para calcular el saldo inicial de la fecha del reporte se va al histórico de transacciones y aunque pasan de 200,000 el calculo es rapidísimo.