the validate::pic:file routine only gets called "dynamically" when the user enteres something in pic:file, not on the Save button.
If you want to assign something here, you need to assign the session variable.
ie
IF p_web.gsv('PIC:DESCRIPTION')=''
p_web.ssv('PIC:DESCRIPTION',PIC:FILE)
END
also you'll want to "reset" the Pic:Description field on the Pic:File field.
Cheers
Bruce