First of all you need no quotes and commas:
%macro m_test(
 keyN= /* numeric key variables */
,keyC= /* character key variables */
);
data test;
  if 0 then set sashelp.cars;
  length FAKE_NUM 8 FAKE_CHAR $ 1;
  drop FAKE_NUM FAKE_CHAR;
  array a[*] FAKE_NUM &keyN.;
  array b[*] $ FAKE_CHAR &keyC.;
  declare hash found_keys();
    do i = 2 to dim(A);
      found_keys.definekey(vname(A[i]));
    end;
    do i = 2 to dim(B);
      found_keys.definekey(vname(B[i]));
    end;
    found_keys.definedone();
  do while (not done);
    set sashelp.cars end=done;
      rc=found_keys.add(); 
      output;              
  end;
  rc = found_keys.output(dataset:"test123");
  stop;
run;
%mend;
%m_test(keyC=Make Model, keyN=Invoice);
%m_test(keyN=Invoice);
%m_test(keyC=Make Model);
%m_test(keyC=Make);
 
Bart