Data Pump throws an error I am trying to do datapump.

DECLARE
hdnl NUMBER;
BEGIN
hdnl := DBMS_DATAPUMP.open( operation =&gt; 'EXPORT', job_mode =&gt; 'TABLE', job_name=&gt;null);
DBMS_DATAPUMP.ADD_FILE( handle =&gt; hdnl, filename =&gt; 'tab1.dmp', directory =&gt; 'DATA_PUMP_DIR', filetype =&gt; dbms_datapump.ku$_file_type_dump_file);
DBMS_DATAPUMP.add_file( handle =&gt; hdnl, filename =&gt; 'exp.log', directory =&gt; 'DATA_PUMP_DIR', filetype =&gt; dbms_datapump.ku$_file_type_log_file);
DBMS_DATAPUMP.METADATA_FILTER(hdnl,'SCHEMA_EXPR','IN (''USERS'')');
DBMS_DATAPUMP.METADATA_FILTER(handle =&gt; hdnl,name =&gt; 'NAME_EXPR',value =&gt; 'IN (''CA_FILE'')');
DBMS_DATAPUMP.start_job(hdnl);
END;
/


But this throws an error:

Error report -
ORA-39001: invalid argument value
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "SYS.DBMS_DATAPUMP", line 3507
ORA-06512: at "SYS.DBMS_DATAPUMP", line 3756
ORA-06512: at line 5
39001. 00000 -  "invalid argument value"
*Cause:    The user specified API parameters were of the wrong type or
           value range.  Subsequent messages supplied by
           DBMS_DATAPUMP.GET_STATUS will further describe the error.
*Action:   Correct the bad argument and retry the API.


Please help.
You got the error from line 5. This is line 5:

DBMS_DATAPUMP.ADD_FILE(
  handle =&gt; hdnl, filename =&gt; 'tab1.dmp',
  directory =&gt; 'DATA_PUMP_DIR',
  filetype =&gt; dbms_datapump.ku$_file_type_dump_file
);


If the specified dumpfile already exists, this line throws the above error. You can add reusefile =&gt; 1 to overwrite the existing file and avoid this error.

DBMS_DATAPUMP.ADD_FILE(
  handle =&gt; hdnl, filename =&gt; 'tab1.dmp',
  directory =&gt; 'DATA_PUMP_DIR',
  filetype =&gt; dbms_datapump.ku$_file_type_dump_file,
  reusefile =&gt; 1
);