Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

logic needed-pls help

Former Member
0 Likes
761

Hi

i need to combain it_mara it_marc it_makt it_zmpkg fields into one internal table. following is my code

pls help me.

SELECT mandt matnr meins laeda aenam

FROM mara

INTO TABLE it_mara

WHERE matnr IN s_matnr.

IF NOT it_mara[] IS INITIAL.

SELECT matnr werks

FROM marc

INTO TABLE it_marc

FOR ALL ENTRIES IN it_mara

WHERE matnr = it_mara-matnr

AND werks = p_werks.

SELECT matnr maktx

FROM makt

INTO TABLE it_makt

FOR ALL ENTRIES IN it_mara

WHERE matnr = it_mara-matnr.

SELECT matnr zppqt zspqt zpmqt_3

INTO TABLE it_zmpkg

FROM zmpkg

FOR ALL ENTRIES IN it_mara

WHERE matnr = it_mara-matnr.

ENDIF.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
738

Hi ,

see below.

data : begin of it_final occurs 1,

mandt type mara-mandt,

meins type mara-meins,

laeda type mara-laeda,

aenam type mara-menam,

werks type marc-werks,

maktx type marc-maktx,

zppqt type zmpkg-zppqt,

zspqt type zmpkg-zspqt,

zspmqt_3 type zmpkg-zspmqt_3,

end of it_final.

loop at it_mara.

read table it_marc with key matnr = it_mara-matnr.

if sy-subrc eq 0.

read table it_makt with key matnr = it_mara-matnr.

if sy-subrc eq 0.

read table it_zmpkg with key matnr = it_mara-matnr.

if sy-subrc eq 0.

it_final-mandt = it_mara-mandt.

it_final-meins = it_mara-meins.

it_final-laeda = it_mara-laeda.

it_final-aenam = it_mara-aenam.

it_final-werks = it_marc-werks.

it_final-zppqt = it_zmpkg-zppqt.

it_final-zspqt = it_zmpkg-zspqt.

it_final-zpmqt_3 = it_zmpkg-zpmqt_3.

append it_final.

endif.

endif.

endif.

endloop.

Regars,

Vishvesh.

if helpful , rewards it.

8 REPLIES 8
Read only

Former Member
0 Likes
738

Hi,

use MOVE or MOVECORRESPONDING Statement.

you can move all the fields in to one internal table.

Regards,

Narasimha.

Read only

Former Member
0 Likes
738

hi,

do this way ..


SELECT mandt matnr meins laeda aenam
FROM mara
INTO TABLE it_mara
WHERE matnr IN s_matnr.

IF NOT it_mara[] IS INITIAL.

SELECT matnr werks
FROM marc
INTO TABLE it_marc
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr
AND werks = p_werks.

SELECT matnr maktx
FROM makt
INTO TABLE it_makt
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr.

SELECT matnr zppqt zspqt zpmqt_3
INTO TABLE it_zmpkg
FROM zmpkg
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr.

loop at it_mara.
  clear : it_marc, it_makt, it_zmpkg.
    it_final-matnr = it_mara-matnr.
    it_final-meins = it_mara-meins.
    it_final-laeda = it_mara-laeda.
    it_final-aenam = it_mara-aenam.
  read table it_marc with key matnr = it_mara-matnr and
                                          werks = p_werks.
  if sy-subrc = 0.
    it_final-werks = it_marc-werks.
  endif.

  read table it_makt with key matnr = it_mara-matnr. 
  if sy-subrc = 0.
    it_final-maktx = it_makt-maktx.
  endif.

  read table it_zmpkg with key matnr = it_mara-matnr. 
  if sy-subrc = 0.
    it_final-zppqt = it_zmpkg-zppqt.
    it_final-zspqt = it_zmpkg-zspqt.
    it_final-zpmqt_3 = it_zmpkg-zpmqt_3.
  endif.
  append it_final.
  clear it_final.
endloop.

Read only

Former Member
0 Likes
738

SELECT mandt matnr meins laeda aenam

FROM mara

INTO TABLE it_mara

WHERE matnr IN s_matnr.

loop at it_mara into wa_mara.

move-corresponding wa_mara to wa_final.

read table it_marc into wa_marc with key matnr = wa_mara-matnr.

if sy-subrc eq 0.

move-corresponding wa_marc to wa_final.

endif.

read table it_makt into wa_makt with key matnr = wa_mara-matnr.

if sy-subrc eq 0.

move-corresponding wa_marc to wa_final.

endif.

read table it_zmpkg into wa_zmpkg with key matnr = wa_mara-matnr.

if sy-subrc eq 0.

move-corresponding wa_marc to wa_final.

endif.

append wa_final to it_final.

endloop.

Regards

Kannaiah

Read only

Former Member
0 Likes
738

Hi

You need to join three tables mara , marc , makt through inner join or you can create a view of these three tables...

Read only

Former Member
0 Likes
739

Hi ,

see below.

data : begin of it_final occurs 1,

mandt type mara-mandt,

meins type mara-meins,

laeda type mara-laeda,

aenam type mara-menam,

werks type marc-werks,

maktx type marc-maktx,

zppqt type zmpkg-zppqt,

zspqt type zmpkg-zspqt,

zspmqt_3 type zmpkg-zspmqt_3,

end of it_final.

loop at it_mara.

read table it_marc with key matnr = it_mara-matnr.

if sy-subrc eq 0.

read table it_makt with key matnr = it_mara-matnr.

if sy-subrc eq 0.

read table it_zmpkg with key matnr = it_mara-matnr.

if sy-subrc eq 0.

it_final-mandt = it_mara-mandt.

it_final-meins = it_mara-meins.

it_final-laeda = it_mara-laeda.

it_final-aenam = it_mara-aenam.

it_final-werks = it_marc-werks.

it_final-zppqt = it_zmpkg-zppqt.

it_final-zspqt = it_zmpkg-zspqt.

it_final-zpmqt_3 = it_zmpkg-zpmqt_3.

append it_final.

endif.

endif.

endif.

endloop.

Regars,

Vishvesh.

if helpful , rewards it.

Read only

Former Member
0 Likes
738

Hi

data : begin of it_final occurs 1,

mandt type mara-mandt,

meins type mara-meins,

laeda type mara-laeda,

aenam type mara-menam,

werks type marc-werks,

maktx type marc-maktx,

zppqt type zmpkg-zppqt,

zspqt type zmpkg-zspqt,

zspmqt_3 type zmpkg-zspmqt_3,

end of it_final.

loop at it_mara.

read table it_marc with key matnr = it_mara-matnr.

if sy-subrc eq 0.

read table it_makt with key matnr = it_mara-matnr.

if sy-subrc eq 0.

read table it_zmpkg with key matnr = it_mara-matnr.

if sy-subrc eq 0.

it_final-mandt = it_mara-mandt.

it_final-meins = it_mara-meins.

it_final-laeda = it_mara-laeda.

it_final-aenam = it_mara-aenam.

it_final-werks = it_marc-werks.

it_final-zppqt = it_zmpkg-zppqt.

it_final-zspqt = it_zmpkg-zspqt.

it_final-zpmqt_3 = it_zmpkg-zpmqt_3.

append it_final.

endif.

endif.

endif.

endloop.

Regards,

Vishvesh

Read only

Former Member
0 Likes
738

Hi,

Create an Internal table it_main with the combination of all the fields of it_mara it_marc it_makt it_zmpkg and then use first internal table it_mara.

sort it_mara by matnr.

sort it_marc by matnr.

sort it_makt by matnr.

sort it_zmpkg by matnr.

loop at it_mara.

read table it_marc with key matnr = it_main-matnr.

read table it_makt with key matnr = it_main-matnr.

read table it_zmpkg with key matnr = it_main-matnr.

it_main-matnr = it_mara-matnr.

(like this write code for other fields of it_mara)

it_main-werks = it_marc-werks.

it_main-maktx = it_makt-maktx.

it_main-zppqt = it_zmpkg-zppqt.

(like this write code for other fields of it_zmpkg)

append it_main.

endloop.

Thanks,

Arunprasad.P

Reward if useful.

Read only

Former Member
0 Likes
738

Hi Kumar K,


DATA : 	BEGIN OF WA_FINAL,
	MANDT LIKE MARA-MANDT,
	MATNR LIKE MARA-MATNR,
	MEINS LIKE MARA-MEINS,
	LAEDA LIKE MARA-LAEDA,
	AENAM LIKE MARA-AENAM,
	WERKS LIKE MARC-WERKS,
	MAKTX LIKE MAKT-MAKTX,
ZPPQT LIKE ZPPQT,
ZSPQT LIKE ZSPQT,
ZPMQT_3 LIKE ZPMQT_3,
	END OF WA_FINAL,

                BEGIN OF WA_MARA,
	MANDT LIKE MARA-MANDT,
	MATNR LIKE MARA-MATNR,
	MEINS LIKE MARA-MEINS,
	LAEDA LIKE MARA-LAEDA,
	AENAM LIKE MARA-AENAM,
	END OF WA_MARA,
 
 	BEGIN OF WA_MAKT,
	MATNR LIKE MAKT-MATNR,
	MAKTX LIKE MAKT-MAKTX,
	END OF WA_MAKT,
 
	BEGIN OF WA_MARC,
	MATNR LIKE MARC-MATNR,
	WERKS LIKE MARC-WERKS,
	END OF WA_MARC,

BEGIN OF WA_ZMPKG,
ZPPQT LIKE ZPPQT,
ZSPQT LIKE ZSPQT,
ZPMQT_3 LIKE ZPMQT_3,
END OF WA_ZMPKG.

 
DATA : IT_MARA LIKE STANDARD TABLE OF WA_MARA WITH HEADER LINE,
IT_FINAL LIKE STANDARD TABLE OF WA_FINAL WITH HEADER LINE,
IT_MAKT LIKE STANDARD TABLE OF WA_MAKT WITH HEADER LINE,
IT_MARC LIKE STANDARD TABLE OF WA_MARC WITH HEADER LINE,
IT_ZMPKG LIKE STANDARD TABLE OF WA_ZMPKG WITH HEADER LINE.
 
SELECT mandt matnr meins laeda aenam
FROM mara
INTO TABLE it_mara
WHERE matnr IN s_matnr.

IF NOT it_mara[] IS INITIAL.

SELECT matnr werks
FROM marc
INTO TABLE it_marc
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr
AND werks = p_werks.

SELECT matnr maktx
FROM makt
INTO TABLE it_makt
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr.

SELECT matnr zppqt zspqt zpmqt_3
INTO TABLE it_zmpkg
FROM zmpkg
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr.

ENDIF.

LOOP AT IT_MARA.
 
IT_FINAL-MANDT = IT_MARA-MANDT.
IT_FINAL-MATNR = IT_MARA-MATNR.
IT_FINAL-MEINS = IT_MARA-MEINS.
IT_FINAL-LAEDA = IT_MARA-LAEDA.
IT_FINAL-AENAM = IT_MARA-AENAM.
 
READ TABLE IT_MARC WITH KEY MATNR = IT_MARA-MATNR.
IF SY-SUBRC = 0.
IT_FINAL-WERKS = IT_MARC-WERKS.
ENDIF.
 
 
READ TABLE IT_MAKT WITH KEY MATNR = IT_MARA-MATNR.
IF SY-SUBRC = 0.
IT_FINAL-MAKTX = IT_MAKT-MAKTX.
ENDIF.
 
READ TABLE IT_ZMPKG WITH KEY MATNR = IT_MARA-MATNR.
IF SY-SUBRC = 0.
IT_FINAL-ZPPQT = IT_ZMPKG-ZPPQT.
IT_FINAL-ZSPQT = IT_ZMPKG-ZSPQT.
IT_FINAL-ZPMQT_3 = IT_ZMPKG-ZPMQT_3.
ENDIF.
 
APPEND IT_FINAL.
 
CLEAR : IT_FINAL, IT_MARA , IT_MAKT, IT_MARC ,  IT_ZMPKG.
 
ENDLOOP.

now IT_FINAL table contains the final data which you want...

Hope it will solve your problem

Reward points if useful...

Thanks & Regards

ilesh 24x7