Application Development 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: 

more than five internal table move to output internal table...

Former Member
0 Kudos

i want to move five internal table to one output formate table.

actually all the internal table having the data some condition wise fetched.

i want to move the internal table data as field wise because some of table fields are same but not all the internal table.

the time of moving datas to output table, the datas are overlaped..... so that i want particular table fields wise to move to output table.

note: some of the table having more records and some of table having low records, but all the records fetched some condition wise at that time , so i used forall entries concept wise.......

i tried so many logic not working....

please help me as coding wise....

iam waiting

2 REPLIES 2

Former Member
0 Kudos

Hi,

Please go through the logic.

FORM FINALINVOICECHECK.

  • Data from EKPO table Based on Final Invoice Checked

IF NOT IT_EKKO[] IS INITIAL.

SELECT EBELN

EBELP

LOEKZ

TXZ01

MATNR

WERKS

MATKL

MENGE

MEINS

NETPR

NETWR

ELIKZ

EREKZ

PSTYP

KNTTP

XERSY

BANFN

BNFPO

INTO TABLE IT_EKPO

FROM EKPO

FOR ALL ENTRIES IN IT_EKKO

WHERE EBELN = IT_EKKO-EBELN

AND KNTTP IN S_KNTTP

AND WERKS IN S_WERKS

AND MATNR IN S_MATNR

AND EREKZ EQ k_x.

ENDIF.

IT_EKPO5[] = IT_EKPO[].

DELETE IT_EKPO5 WHERE BANFN = ' '

AND BNFPO = '00000'.

SORT IT_EKPO5 BY EBELN EBELP.

SORT IT_EKPO BY EBELN EBELP.

  • DATA from T163y table

IF NOT IT_EKPO[] IS INITIAL.

SELECT SPRAS

PSTYP

EPSTP

FROM T163Y INTO TABLE IT_T163Y

FOR ALL ENTRIES IN IT_EKPO

WHERE PSTYP = IT_EKPO-PSTYP

AND SPRAS = 'EN'.

ENDIF.

  • Data from EKKN table Based on item Level

IF NOT IT_EKPO[] IS INITIAL.

SELECT EBELN

EBELP

SAKTO

KOSTL

ANLN1

FROM EKKN

INTO TABLE IT_EKKN

FOR ALL ENTRIES IN IT_EKPO

WHERE EBELN = IT_EKPO-EBELN

AND EBELP = IT_EKPO-EBELP.

ENDIF.

  • Data from EBAN table based on Item level

IF NOT IT_EKPO5[] IS INITIAL.

SELECT BANFN

BNFPO

LOEKZ

ERNAM

AFNAM

EBELN

EBELP

INTO TABLE IT_EBAN

FROM EBAN

FOR ALL ENTRIES IN IT_EKPO5

WHERE BANFN = IT_EKPO5-BANFN

AND BNFPO = IT_EKPO5-BNFPO.

ENDIF.

  • Data from CSKT table based on Item level

IF NOT IT_EKKN[] IS INITIAL.

SELECT KOSTL

LTEXT

FROM CSKT

INTO TABLE IT_CSKT

FOR ALL ENTRIES IN IT_EKKN

WHERE KOSTL = IT_EKKN-KOSTL.

ENDIF.

IF NOT IT_EKPO[] IS INITIAL.

  • Finding GR qty

SELECT EBELN

EBELP

BELNR

BUZEI

BUDAT

MENGE

DMBTR

SHKZG

FROM EKBE

INTO TABLE IT_GR

FOR ALL ENTRIES IN IT_EKPO

WHERE EBELN = IT_EKPO-EBELN

AND EBELP = IT_EKPO-EBELP

AND VGABE EQ '1'.

ENDIF.

IF NOT IT_EKPO[] IS INITIAL.

  • Finding IR qty

SELECT EBELN

EBELP

BELNR

BUZEI

BUDAT

MENGE

DMBTR

SHKZG

FROM EKBE

INTO TABLE IT_IR

FOR ALL ENTRIES IN IT_EKPO

WHERE EBELN = IT_EKPO-EBELN

AND EBELP = IT_EKPO-EBELP

AND VGABE EQ '2'.

ENDIF.

IF NOT IT_EKPO[] IS INITIAL.

  • For delivery date

SELECT EBELN

EBELP

EINDT

INTO TABLE IT_EKET

FROM EKET

FOR ALL ENTRIES IN IT_EKPO

WHERE EBELN = IT_EKPO-EBELN

AND EBELP = IT_EKPO-EBELP.

ENDIF.

SORT IT_EKKO BY EBELN.

SORT IT_LFA1 BY LIFNR.

SORT IT_EKPO BY EBELN EBELP.

SORT IT_EKET BY EBELN EBELP.

SORT IT_EKKN BY EBELN EBELP.

SORT IT_CSKT BY KOSTL.

SORT IT_EBAN BY EBELN EBELP.

SORT IT_IR BY EBELN EBELP.

SORT IT_GR BY EBELN EBELP.

LOOP AT IT_EKKO.

READ TABLE IT_LFA1 WITH KEY LIFNR = IT_EKKO-LIFNR

BINARY SEARCH.

IF SY-SUBRC = 0.

MOVE : IT_LFA1-NAME1 TO IT_EKKO-NAME1,

IT_LFA1-TELF1 TO IT_EKKO-TELF1.

MODIFY IT_EKKO TRANSPORTING NAME1 TELF1.

ENDIF.

ENDLOOP.

LOOP AT IT_EKKN.

READ TABLE IT_CSKT WITH KEY KOSTL = IT_EKKN-KOSTL

BINARY SEARCH.

IF SY-SUBRC = 0.

MOVE IT_CSKT-LTEXT TO IT_EKKN-LTEXT.

MODIFY IT_EKKN TRANSPORTING LTEXT .

ENDIF.

ENDLOOP.

SORT IT_EKPO BY EBELN EBELP.

SORT IT_T163Y BY PSTYP.

LOOP AT IT_EKPO.

READ TABLE IT_T163Y WITH KEY PSTYP = IT_EKPO-PSTYP.

IF SY-SUBRC = 0.

MOVE IT_T163Y-EPSTP TO IT_EKPO-EPSTP.

MODIFY IT_EKPO TRANSPORTING EPSTP.

ENDIF.

ENDLOOP.

SORT IT_EKPO BY EBELN EBELP.

SORT IT_IR BY EBELN EBELP.

LOOP AT IT_EKPO.

LOOP AT IT_IR WHERE EBELN = IT_EKPO-EBELN

AND EBELP = IT_EKPO-EBELP.

CASE IT_IR-SHKZG.

WHEN 'H'.

WS_IR = WS_IR - IT_IR-MENGE.

WS_DMBTR = WS_DMBTR - IT_IR-DMBTR.

WHEN 'S'.

WS_IR = WS_IR + IT_IR-MENGE.

WS_DMBTR = WS_DMBTR + IT_IR-DMBTR.

ENDCASE.

ENDLOOP.

MOVE WS_IR TO IT_EKPO-TOT_IR.

CLEAR WS_IR.

MOVE WS_DMBTR TO IT_EKPO-DMBTR1.

CLEAR WS_DMBTR.

MODIFY IT_EKPO TRANSPORTING TOT_IR DMBTR1.

ENDLOOP.

SORT IT_EKPO BY EBELN EBELP.

SORT IT_GR BY EBELN EBELP.

LOOP AT IT_EKPO.

LOOP AT IT_GR WHERE EBELN = IT_EKPO-EBELN

AND EBELP = IT_EKPO-EBELP.

CASE IT_GR-SHKZG.

WHEN 'H'.

WS_GR = WS_GR - IT_GR-MENGE.

WS_DMBTR = WS_DMBTR - IT_GR-DMBTR.

WHEN 'S'.

WS_GR = WS_GR + IT_GR-MENGE.

WS_DMBTR = WS_DMBTR + IT_GR-DMBTR.

ENDCASE.

ENDLOOP.

MOVE WS_GR TO IT_EKPO-TOT_GR.

CLEAR WS_GR.

MOVE WS_DMBTR TO IT_EKPO-DMBTR2.

CLEAR WS_DMBTR.

MODIFY IT_EKPO TRANSPORTING TOT_GR DMBTR2.

ENDLOOP.

SORT IT_EKPO BY EBELN EBELP.

SORT IT_EKKO BY EBELN.

SORT IT_EKET BY EBELN EBELP.

SORT IT_EBAN BY EBELN EBELP.

SORT IT_EKKN BY EBELN EBELP.

LOOP AT IT_EKPO.

IF IT_EKPO-NETWR = 0.

WS_OSTOTIR = 0.

ELSE.

WS_OSTOTIR = IT_EKPO-NETWR - IT_EKPO-DMBTR1.

ENDIF.

IF IT_EKPO-NETWR = 0.

WS_OSTOTGR = 0.

ELSE.

WS_OSTOTGR = IT_EKPO-NETWR - IT_EKPO-DMBTR2.

ENDIF.

*IF IT_EKPO-TOT_GR < 0.

  • IT_FINAL-TOT_GR = 0.

*ELSE.

  • IT_FINAL-TOT_GR = IT_EKPO-TOT_GR.

  • ENDIF.

*

*IF IT_EKPO-TOT_IR < 0.

  • IT_FINAL-TOT_IR = 0.

*ELSE.

  • IT_FINAL-TOT_IR = IT_EKPO-TOT_IR.

  • ENDIF.

MOVE : IT_EKPO-EBELN TO IT_FINAL-EBELN,

IT_EKPO-EBELP TO IT_FINAL-EBELP,

IT_EKPO-LOEKZ TO IT_FINAL-LOEKZ,

IT_EKPO-TXZ01 TO IT_FINAL-TXZ01,

IT_EKPO-MATNR TO IT_FINAL-MATNR,

IT_EKPO-WERKS TO IT_FINAL-WERKS,

IT_EKPO-MATKL TO IT_FINAL-MATKL,

IT_EKPO-MENGE TO IT_FINAL-MENGE,

IT_EKPO-MEINS TO IT_FINAL-MEINS,

IT_EKPO-NETPR TO IT_FINAL-NETPR,

IT_EKPO-NETWR TO IT_FINAL-NETWR,

IT_EKPO-ELIKZ TO IT_FINAL-ELIKZ,

IT_EKPO-EREKZ TO IT_FINAL-EREKZ,

IT_EKPO-EPSTP TO IT_FINAL-EPSTP,

IT_EKPO-KNTTP TO IT_FINAL-KNTTP,

IT_EKPO-XERSY TO IT_FINAL-XERSY,

IT_EKPO-TOT_GR TO IT_FINAL-TOT_GR,

IT_EKPO-TOT_IR TO IT_FINAL-TOT_IR.

READ TABLE IT_EKKO WITH KEY EBELN = IT_EKPO-EBELN

BINARY SEARCH.

IF SY-SUBRC = 0.

MOVE : IT_EKKO-BUKRS TO IT_FINAL-BUKRS,

IT_EKKO-BSART TO IT_FINAL-BSART,

IT_EKKO-LIFNR TO IT_FINAL-LIFNR,

IT_EKKO-EKORG TO IT_FINAL-EKORG,

IT_EKKO-EKGRP TO IT_FINAL-EKGRP,

IT_EKKO-WAERS TO IT_FINAL-WAERS,

IT_EKKO-WAERS TO IT_FINAL-WAERS1,

IT_EKKO-BEDAT TO IT_FINAL-BEDAT,

IT_EKKO-NAME1 TO IT_FINAL-NAME1,

IT_EKKO-TELF1 TO IT_FINAL-TELF1.

ENDIF.

READ TABLE IT_EBAN WITH KEY BANFN = IT_EKPO-BANFN

BNFPO = IT_EKPO-BNFPO

BINARY SEARCH.

IF SY-SUBRC = 0.

MOVE : IT_EBAN-BANFN TO IT_FINAL-BANFN,

IT_EBAN-BNFPO TO IT_FINAL-BNFPO,

IT_EBAN-LOEKZ1 TO IT_FINAL-LOEKZ1,

IT_EBAN-ERNAM TO IT_FINAL-ERNAM,

IT_EBAN-AFNAM TO IT_FINAL-AFNAM.

ENDIF.

READ TABLE IT_EKET WITH KEY EBELN = IT_EKPO-EBELN

EBELP = IT_EKPO-EBELP

BINARY SEARCH.

IF SY-SUBRC = 0.

MOVE IT_EKET-EINDT TO IT_FINAL-EINDT.

ENDIF.

READ TABLE IT_EKKN WITH KEY EBELN = IT_EKPO-EBELN

EBELP = IT_EKPO-EBELP

BINARY SEARCH.

IF SY-SUBRC = 0.

MOVE : IT_EKKN-SAKTO TO IT_FINAL-SAKTO,

IT_EKKN-KOSTL TO IT_FINAL-KOSTL,

IT_EKKN-ANLN1 TO IT_FINAL-ANLN1,

IT_EKKN-LTEXT TO IT_FINAL-LTEXT.

ENDIF.

MOVE: WS_OSTOTIR TO IT_FINAL-OSTOTIR,

WS_OSTOTGR TO IT_FINAL-OSTOTGR.

APPEND IT_FINAL.

CLEAR IT_FINAL.

ENDLOOP.

PERFORM f6000_build_fieldcat USING int_fieldcat[].

PERFORM F1005_03_EVENTS.

ws_repd = SY-REPID.

SORT IT_FINAL BY EBELN EBELP.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = WS_REPD

IT_FIELDCAT = INT_FIELDCAT

IT_EVENTS = int_events

I_SAVE = 'X'

I_GRID_TITLE = 'CLOSE PO Report'

TABLES

T_OUTTAB = IT_FINAL[].

IF SY-SUBRC <> 0.

MESSAGE E010.

ENDIF.

ENDFORM.

Thanks & Regards,

Padmaja

Former Member
0 Kudos

hi Santhosh,

Since your 5 tables should be merged to one table for output, you need to maintain one key (may be a key with multiple fields)..which is common to all the 5 internal tables.

Then you can follow the steps mentioned below.

1. Find the table with the largest number of records.

2. loop this table.

3. move the required fields to target table.

4. read records from the rest of the tables using READ statement.

5. after each read, move the relevant fields to the target table fields.

6. append the target table.

7.endloop.

you now have the synchronized data in the target output table.

Hope this helps.

Sajan.

Annex: Since you populate the internal tables using for all entries select, you may require to loop these tables again, to maintain the common key (for 5 tables), and modify inside the loop with index sy-tabix.

Message was edited by:

Sajan Joseph