11-10-2006 2:09 PM
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
11-10-2006 2:26 PM
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
11-10-2006 2:28 PM
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