uvm_analysis_port #(sa_transaction) monitorap;// declaring analysis port with name monitorap. we will instanciate in the build phase
(You parameterise a port to the transaction class it uses, not the class that contains it.)
That gives you another error regarding your virtual interface not being connected. I'll let you have a look at that.
Matthew
--