Skip to Content
-5
H S
May 24, 2020 at 06:56 AM

How to use data of 3 internal tables?

180 Views

I get the required data in 3 internal tables. How can I get a report which will print :

1. Material Number

2. Material Description

3. Plant

4. Plant Description as output for the given Material Number.

I am a bit confused about retrieving the data from it_too1w when no field matches with MARC and MAKT Internal tables.

Here is the code :

*&---------------------------------------------------------------------*
*& Report Z_ABAP_ASSIGNMENT2_ADDITION_1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT Z_ABAP_ASSIGNMENT2_ADDITION_1.

TYPES : BEGIN OF ty_marc,
matnr TYPE MATNR,
werks TYPE WERKS_D,
END OF ty_marc.

TYPES : BEGIN OF ty_makt,
matnr TYPE MATNR,
spras TYPE SPRAS,
maktx TYPE MAKTX,
maktg TYPE MAKTG,
END OF ty_makt.

TYPES : BEGIN OF ty_t001w,
werks TYPE WERKS_D,
name1 TYPE NAME1,
END OF ty_t001w.

DATA : it_marc TYPE ty_marc OCCURS 0,
wa_marc TYPE ty_marc,
it_makt TYPE ty_makt OCCURS 0,
wa_makt TYPE ty_makt,
it_t001w TYPE ty_t001w OCCURS 0,
wa_t001w TYPE ty_t001w.


SELECT-OPTIONS s_matnr FOR wa_makt-matnr NO-EXTENSION NO INTERVALS.

SELECT matnr
spras
maktx
maktg
FROM makt
INTO TABLE it_makt
WHERE matnr IN s_matnr.

IF sy-subrc IS INITIAL.
SELECT matnr
werks
FROM marc
INTO TABLE it_marc
FOR ALL ENTRIES IN it_makt
WHERE matnr EQ it_makt-matnr.
ENDIF.

IF sy-subrc IS INITIAL.
SELECT werks
name1
FROM T001W
INTO TABLE it_t001w
FOR ALL ENTRIES IN it_marc
WHERE werks EQ it_marc-werks.
ENDIF.

WRITE : / 'Material Number',
20 'Material Description',
45 'Plant',
55 'Plant Description' LEFT-JUSTIFIED.
SKIP.

*I am unable to understand how to use 3 IT for output.

LOOP AT it_makt INTO wa_makt.
* READ TABLE it_t001w INTO wa_t001w WITH TABLE KEY.
WRITE wa_makt-matnr.
WRITE 20 wa_makt-maktx.
WRITE 45 wa_t001w-werks.
WRITE 55 wa_t001w-name1 LEFT-JUSTIFIED.

ENDLOOP.