从两个表去数,放在一张表里面

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.

 

posted @ 2017-10-11 10:15  王族子坤  阅读(142)  评论(0)    收藏  举报