DATA : BEGIN OF gs_mara ,
matnr LIKE mara-matnr,
mtart LIKE mara-mtart,
END OF gs_mara.
DATA gt_mara LIKE TABLE OF gs_mara WITH HEADER LINE .
DATA : BEGIN OF gs_makt ,
matnr LIKE makt-matnr,
maktx LIKE makt-maktx,
END OF gs_makt.
DATA gt_makt LIKE TABLE OF gs_makt WITH HEADER LINE.
DATA : BEGIN OF gs_total ,
matnr LIKE mara-matnr,
maktx LIKE makt-maktx,
mtart LIKE mara-mtart,
END OF gs_total.
DATA gt_total LIKE TABLE OF gs_total WITH HEADER LINE.
SELECT matnr mtart
FROM mara
INTO CORRESPONDING FIELDS OF TABLE gt_mara.
IF gt_mara[] IS NOT INITIAL.
SELECT maktx matnr
FROM makt
INTO CORRESPONDING FIELDS OF TABLE gt_makt
FOR ALL ENTRIES IN gt_mara
WHERE matnr = gt_mara-matnr.
ENDIF.
SORT gt_mara BY matnr.
LOOP AT gt_mara .
CLEAR gt_total .
MOVE-CORRESPONDING gt_mara TO gt_total.
READ TABLE gt_makt WITH KEY matnr = gt_mara-matnr
BINARY SEARCH.
IF sy-subrc = 0 .
gt_total-maktx = gt_makt-maktx.
ENDIF.
APPEND gt_total.
ENDLOOP.