Do you mean PID as in (Unix)
process ID? Those can indeed exceed 2^8-1=255, the maximum that one byte can hold. Each entry in the data array of a message must therefore be within 0 and 255, each inclusive. I don't know what message format
(=what do the bytes mean) you are using. CAN only transports them from sender to receiver(s) without being concerned with the semantics of the data. You will therefore have to look at the protocol to see if there is maybe more then one byte of space for the PID and "split up" your value among them. See also
this for common ways of doing this. In general, this mailing list is probably not the right place to track this further (since CAN is not really the problem here). However, I hope I could give you some useful hints to get started with solving your problem.