When you use DELETE ADJACENT DUPLICATES you have to sort the internal table by the field you want to delete.
This source code should work out.
DATA: BEGIN OF GT_MRP OCCURS 0,
WMENG TYPE ZPR_COLLECTIVE-WMENG,
VBELN TYPE ZPR_COLLECTIVE-VBELN,
POSNR TYPE ZPR_COLLECTIVE-POSNR,
MATNR TYPE ZPR_COLLECTIVE-MATNR,
J_3ASIZE TYPE ZPR_COLLECTIVE-J_3ASIZE,
KZDIE TYPE ZPR_COLLECTIVE-KZDIE,
ZSO_ASSIGN TYPE ZPR_COLLECTIVE-ZSO_ASSIGN,
END OF GT_MRP.
SELECT WMENG
VBELN
POSNR
MATNR
J_3ASIZE
KZDIE
ZSO_ASSIGN
FROM ZPR_COLLECTIVE
INTO TABLE GT_MRP
FOR ALL ENTRIES IN GT_MCHA
WHERE MATNR = GT_MCHA-MATNR
AND J_3ASIZE = GT_MCHA-J_3ASIZE
AND ZSO_ASSIGN NE 'X'.
SORT GT_MRP BY WMENG.
DELETE ADJACENT DUPLICATES FROM GT_MRP COMPARING WMENG.
Regards