Your query returns a table of two columns and an unknown number of rows. Select these into a collection of a two-column record. Instead of a mere INTO you need BULK COLLECT INTO for this operation.
Once you are there, you can fill your separate variables in a loop:
DECLARE
TYPE t_record IS RECORD (parameter VARCHAR2(100), value VARCHAR2(100));
TYPE t_table IS TABLE OF t_record;
v_table t_table;
BEGIN
SELECT parameter, value
BULK COLLECT INTO v_table
FROM TABLE(my_db.workplan.get_pp_params(in_pa_nummer => 'NR04640992', in_par_typ => NULL));
-- do something with that result, e.g.
FOR i IN 1 .. v_table.COUNT LOOP
CASE v_table(i).parameter
WHEN 'Arbeitsanweisung' THEN v_arbeitsanweisung := v_table(i).value;
WHEN 'Maschinengruppe' THEN v_maschinengruppe := v_table(i).value;
WHEN 'Max. Anz. IC pro Tape' THEN v_max_anz_ic_pro_tape := v_table(i).value;
...
END CASE;
END LOOP;
END;
Another option: pivot your data to turn your rows into columns. With conditional aggregation:
BEGIN
SELECT
MAX(CASE WHEN parameter = 'Arbeitsanweisung' THEN value END),
MAX(CASE WHEN parameter = 'Maschinengruppe' THEN value END),
MAX(CASE WHEN parameter = 'Max. Anz. IC pro Tape' THEN value END),
INTO v_arbeitsanweisung
, v_maschinengruppe
, v_max_anz_ic_pro_tape
FROM TABLE(my_db.workplan.get_pp_params(in_pa_nummer => 'NR04640992', in_par_typ => NULL));
END;