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

Assigning values into final internal table

Former Member
0 Likes
591

Hi Friends,

i have a requirment .

i have some 7 internal tables.

from those internal tables i need to assign all those values into one internal table

ie : final internal table.

hoe can i do that.

code :

DATA :

t_mkpf TYPE STANDARD TABLE OF ty_mkpf,

t_mseg TYPE STANDARD TABLE OF ty_mseg,

t_detl TYPE STANDARD TABLE OF ty_detl,

t_ekko TYPE STANDARD TABLE OF ty_ekko,

t_lfa1 TYPE STANDARD TABLE OF ty_lfa1,

t_marc TYPE STANDARD TABLE OF ty_marc,

t_makt TYPE STANDARD TABLE OF ty_makt,

t_mbew TYPE STANDARD TABLE OF ty_mbew,

t_final TYPE STANDARD TABLE OF ty_final.

DATA :

wa_mkpf TYPE ty_mkpf,

wa_mseg TYPE ty_mseg,

wa_ekko TYPE ty_ekko,

wa_lfa1 TYPE ty_lfa1,

wa_detl TYPE ty_detl,

wa_marc TYPE ty_marc,

wa_makt TYPE ty_makt,

wa_mbew TYPE ty_mbew,

wa_final TYPE ty_final,

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002.

SELECT-OPTIONS s_bukrs FOR mseg-bukrs NO INTERVALS. " compnay code

SELECT-OPTIONS s_bwart FOR mseg-bwart NO-DISPLAY. " movement type

SELECT-OPTIONS s_werks FOR mseg-werks. " plant

SELECT-OPTIONS s_lifnr FOR mseg-lifnr. " vendor no

SELECT-OPTIONS s_prctr FOR marc-prctr. " profit centre

SELECT-OPTIONS s_bklas FOR mbew-bklas. " valuation class

SELECT-OPTIONS s_matnr FOR mseg-matnr. " material no

SELECTION-SCREEN END OF BLOCK b1.

  • FETCHING DATA FROM MKPF TABLE

SELECT mandt

mblnr

mjahr

budat

INTO TABLE t_mkpf FROM mkpf

WHERE budat >= date1 AND

budat <= date2.

IF t_mkpf[] IS NOT INITIAL.

*FETCHING DATA FROM MSEG TABLE BASED ON THE VALUES IN

*T_MKPF internal table

SELECT mandt

mblnr

mjahr

bukrs

ebeln

ebelp

matnr

meins

waers

werks

bwart

menge

FROM mseg INTO TABLE t_mseg

FOR ALL ENTRIES IN t_mkpf

WHERE mblnr = t_mkpf-mblnr AND

mjahr = t_mkpf-mjahr AND

bukrs IN s_bukrs AND

matnr IN s_matnr AND

werks IN s_werks AND

bwart IN s_bwart.

ENDIF.

  • check for the materail for movement types

SORT t_mseg BY mblnr ebeln ebelp matnr werks bwart menge.

LOOP AT t_mseg INTO wa_mseg.

IF wa_mseg-bwart = '101'.

wa_mseg-menge = wa_mseg-menge.

ELSEIF wa_mseg-bwart = '102'.

wa_mseg-menge = wa_mseg-menge * -1.

ELSEIF wa_mseg-bwart = '105'.

wa_mseg-menge = wa_mseg-menge.

ELSEIF wa_mseg-bwart = '106'.

wa_mseg-menge = wa_mseg-menge * -1.

ENDIF.

wa_detl-ebeln = wa_mseg-ebeln.

wa_detl-ebelp = wa_mseg-ebelp.

wa_detl-matnr = wa_mseg-matnr.

wa_detl-meins = wa_mseg-meins.

wa_detl-werks = wa_mseg-werks.

wa_detl-menge = wa_mseg-menge.

wa_detl-waers = wa_mseg-waers.

COLLECT wa_detl INTO t_detl.

CLEAR : t_detl.

ENDLOOP.

IF t_detl[] IS NOT INITIAL.

  • FETCHING DATA FROM EKKO TABLE BASED ON THE VALUES IN

*T_MSEG1 internal table

SELECT ebeln

lponr

lifnr

FROM ekko INTO TABLE t_ekko

FOR ALL ENTRIES IN t_detl

WHERE ebeln = t_detl-ebeln AND

lponr = t_detl-ebelp AND

lifnr IN s_lifnr.

ENDIF.

IF t_ekko[] IS NOT INITIAL.

*FETCHING DATA FROM LFA1 TABLE BASED ON THE VALUES IN

*T_EKKO internal table

SELECT lifnr

name1

FROM lfa1 INTO TABLE t_lfa1

FOR ALL ENTRIES IN t_ekko

WHERE lifnr = t_ekko-lifnr.

ENDIF.

*FETCHING DATA FROM MARC TABLE BASED ON THE VALUES IN

*T_MSEG1 internal table

SELECT matnr

werks

prctr

FROM marc INTO TABLE t_marc

FOR ALL ENTRIES IN t_detl

WHERE matnr = t_detl-matnr AND

werks = t_detl-werks.

  • FETCHING DATA FROM MBEW TABLE BASED ON THE VALUES IN

*T_MARC internal table

SELECT matnr

bwkey

bklas

stprs

peinh

FROM mbew INTO TABLE t_mbew

FOR ALL ENTRIES IN t_marc

WHERE matnr = t_marc-matnr AND

bwkey = t_marc-werks AND

bklas IN s_bklas.

  • FETCHING DATA FROM MAKT TABLE BASED ON THE VALUES IN T_MBEW internal

  • table

SELECT matnr

maktx

FROM makt INTO TABLE t_makt

FOR ALL ENTRIES IN t_mbew

WHERE matnr = t_mbew-matnr AND

spras = sy-langu.

now in my final internal table T_FINAL I need all the following fields.

lifnr name1 werks prctr bklas matnr maktx menge waers

In my final internal table T_FINAL.

*clearing all the work areas

CLEAR: wa_mkpf,

wa_mseg,

wa_ekko,

wa_lfa1,

wa_marc,

wa_mbew,

wa_makt.

*sort internal table T_mseg1

SORT t_detl.

*sort internal table T_ekko

SORT t_ekko BY ebeln.

  • sort internal table T_lfa1

SORT t_lfa1 BY lifnr.

  • sort internal table T_marc

SORT t_marc BY matnr werks.

  • sort internal table T_mbew

SORT t_mbew BY matnr.

  • sort internal table T_makt

SORT t_makt BY matnr.

*looping internal table T_mseg1 into wa_mseg and assinging the

*values to wa_final.

LOOP AT t_detl INTO wa_detl.

wa_final-ebeln = wa_detl-ebeln.

wa_final-ebelp = wa_detl-ebelp.

wa_final-matnr = wa_detl-matnr.

wa_final-meins = wa_detl-meins.

wa_final-menge = wa_detl-menge.

wa_final-werks = wa_detl-werks.

wa_final-waers = wa_detl-waers.

*reading internal table T_ekko

READ TABLE t_ekko INTO wa_ekko WITH KEY ebeln = wa_detl-ebeln.

IF sy-subrc = 0.

wa_final-lifnr = wa_ekko-lifnr.

ENDIF.

*reading internal table T_lfa1

READ TABLE t_lfa1 INTO wa_lfa1 WITH KEY lifnr = wa_final-lifnr.

IF sy-subrc = 0.

wa_final-name1 = wa_lfa1-name1.

ENDIF.

*reading internal table T_marc

READ TABLE t_marc INTO wa_marc WITH KEY matnr = wa_detl-matnr

werks = wa_detl-werks.

IF sy-subrc = 0.

wa_final-prctr = wa_marc-prctr.

ENDIF.

*reading internal table T_mbew

READ TABLE t_mbew INTO wa_mbew WITH KEY matnr = wa_marc-matnr

bwkey = wa_detl-werks.

IF sy-subrc = 0.

wa_final-bklas = wa_mbew-bklas.

wa_final-stprs = wa_mbew-stprs.

*calculating standard cost

wa_final-stcst = wa_mbew-stprs * wa_detl-menge.

ENDIF.

*Reading internal table t_makt

READ TABLE t_makt INTO wa_makt WITH KEY matnr = wa_mbew-matnr.

IF sy-subrc = 0.

wa_final-maktx = wa_makt-maktx.

  • appending values into final internal table T_final

APPEND wa_final TO t_final.

CLEAR : wa_final.

ENDIF.

ENDLOOP.

Iam using above code to get the data into T_FINAL.

But with the above code iam getting the unnecesary data when iam passing T_FINAL TO grid display.

IE: when iam giving particaluar vendor on selection screen it is displaying some other data

which is not related to that particular vendor ie: iam getting other vendors also.

can any one tell me how to correct the code.

Thanks & Regards,

JERRY.

Edited by: jerry roberts on Sep 1, 2008 8:03 PM

1 ACCEPTED SOLUTION
Read only

former_member585060
Active Contributor
0 Likes
559

Hi,

In your code

LOOP AT t_mseg INTO wa_mseg.

IF wa_mseg-bwart = '101'.

wa_mseg-menge = wa_mseg-menge.

ELSEIF wa_mseg-bwart = '102'.

wa_mseg-menge = wa_mseg-menge * -1.

ELSEIF wa_mseg-bwart = '105'.

wa_mseg-menge = wa_mseg-menge.

ELSEIF wa_mseg-bwart = '106'.

wa_mseg-menge = wa_mseg-menge * -1.

ENDIF.

wa_detl-ebeln = wa_mseg-ebeln.

wa_detl-ebelp = wa_mseg-ebelp.

wa_detl-matnr = wa_mseg-matnr.

wa_detl-meins = wa_mseg-meins.

wa_detl-werks = wa_mseg-werks.

wa_detl-menge = wa_mseg-menge.

wa_detl-waers = wa_mseg-waers.

COLLECT wa_detl INTO t_detl.

CLEAR : t_detl. why you are using this, as it is deleting the contents of the internal table, which you are using at later stage, that is the reason you are getting different values. Use CLEAR : wa_detl.

If possible pass your complete code with Types declaration, so that we can try and execute the program.

Regards

Bala Krishna

Edited by: Bala Krishna on Sep 2, 2008 12:24 AM

3 REPLIES 3
Read only

former_member585060
Active Contributor
0 Likes
560

Hi,

In your code

LOOP AT t_mseg INTO wa_mseg.

IF wa_mseg-bwart = '101'.

wa_mseg-menge = wa_mseg-menge.

ELSEIF wa_mseg-bwart = '102'.

wa_mseg-menge = wa_mseg-menge * -1.

ELSEIF wa_mseg-bwart = '105'.

wa_mseg-menge = wa_mseg-menge.

ELSEIF wa_mseg-bwart = '106'.

wa_mseg-menge = wa_mseg-menge * -1.

ENDIF.

wa_detl-ebeln = wa_mseg-ebeln.

wa_detl-ebelp = wa_mseg-ebelp.

wa_detl-matnr = wa_mseg-matnr.

wa_detl-meins = wa_mseg-meins.

wa_detl-werks = wa_mseg-werks.

wa_detl-menge = wa_mseg-menge.

wa_detl-waers = wa_mseg-waers.

COLLECT wa_detl INTO t_detl.

CLEAR : t_detl. why you are using this, as it is deleting the contents of the internal table, which you are using at later stage, that is the reason you are getting different values. Use CLEAR : wa_detl.

If possible pass your complete code with Types declaration, so that we can try and execute the program.

Regards

Bala Krishna

Edited by: Bala Krishna on Sep 2, 2008 12:24 AM

Read only

Former Member
0 Likes
559

Hi Jerry,

Is this still an open issue?

Regards,

Verma.

Read only

0 Likes
559

yes it is...a open issue still