If you truly do not have any external data RAM available, then the PDATA option will not help you. PDATA resides in a different Logical address space from XDATA, but uses the same Physical Space.
For example, the micro-controller that you're using contains 1kB of RAM. All 1024 bytes can be accessed as XDATA memory (Addresses XDATA:0x0000 to XDATA:0x03FF). 256 bytes (at a time) can be accessed as PDATA memory (Addresses PDATA:0x00 to PDATA:0xFF). Let's assume that you set up the micro-controller to use the first 256 bytes of RAM as PDATA memory. That means that PDATA:0x00 and XDATA:0x0000 point to the same physical byte of RAM. If you're not careful, you will try to store two different values in the same physical piece of memory and one of them will be overwritten and lost.
If you are already using all of your XDATA memory, you will need to use the DATA memory or the IDATA memory to get more. If you do use IDATA memory, you will need to be very careful that you leave enough space empty so that the values you are storing aren't accidentally overwritten by the stack which starts at IDATA:0xFF and grows down towards IDATA:0x00
Edit: Sorry, I didn't notice that this question was two years old. Hopefully this helps someone, though.