You cannot create/add triggers to any of the system tables, so no, you cannot do what you are proposing. This is true in all versions of SQL Anywhere.

One method to do what you want is to do all updates to your procedures and functions by using a procedure and then within that procedure log the update after performing the update to the system catalog.

Any other way to monitor that something changed in procedures / functions?
I was thinking to create another table and fill it with content of sys.SYSPROCEDURE - in this way I can create some event to monitor every one minute, but maybe there is something better to discover changes directly at the moment when change was made? I would like to log also db user and other information from connection who made changes - with event this will be not possible :/

SYSPROCEDURE changes are recorded in the transaction log. The dbtran utility can be used to read and translate transaction log entries into readable text. The dbtran -c option can be used to connect to the database to read the active transaction log. Alternatively, the transaction log file name can be specified if you want dbtran to read an old transaction log.

The truth is out there, that's the good news. Scanning and interpreting the output from dbtran, that's [cough] another matter :)