04-25-2008 4:39 AM
Hi All,
Can any one send me good coding for For all entries,I need to get data from 6 tables,earlier I uesd Join condition but it is performace wise so poor,pls any one send me example code using For all entries with performance wise good.
Thanks,
Sree.
04-25-2008 4:46 AM
Hi,
Check this out from ABAP documentation:
PARAMETERS p_city TYPE spfli-cityfrom.
TYPES: BEGIN OF entry_tab_type,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
END OF entry_tab_type.
DATA: entry_tab TYPE TABLE OF entry_tab_type,
sflight_tab TYPE SORTED TABLE OF sflight
WITH UNIQUE KEY carrid connid fldate.
SELECT carrid connid
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE entry_tab
WHERE cityfrom = p_city.
SELECT carrid connid fldate
FROM sflight
INTO CORRESPONDING FIELDS OF TABLE sflight_tab
FOR ALL ENTRIES IN entry_tab
WHERE carrid = entry_tab-carrid AND
connid = entry_tab-connid.
Reward points if helpful
Manish
04-25-2008 4:46 AM
Hi,
Check this out from ABAP documentation:
PARAMETERS p_city TYPE spfli-cityfrom.
TYPES: BEGIN OF entry_tab_type,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
END OF entry_tab_type.
DATA: entry_tab TYPE TABLE OF entry_tab_type,
sflight_tab TYPE SORTED TABLE OF sflight
WITH UNIQUE KEY carrid connid fldate.
SELECT carrid connid
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE entry_tab
WHERE cityfrom = p_city.
SELECT carrid connid fldate
FROM sflight
INTO CORRESPONDING FIELDS OF TABLE sflight_tab
FOR ALL ENTRIES IN entry_tab
WHERE carrid = entry_tab-carrid AND
connid = entry_tab-connid.
Reward points if helpful
Manish
04-25-2008 4:53 AM
hi.
check the code.
SELECT vbeln
knumv
FROM vbrk INTO CORRESPONDING FIELDS OF TABLE i_vbrk
WHERE vbeln EQ p_vbeln.
SELECT vbeln
posnr
arktx
fkimg
vrkme
netwr
vgbel
vgpos
werks
meins
FROM vbrp INTO CORRESPONDING FIELDS OF TABLE i_vbrp
FOR ALL ENTRIES IN i_vbrk
WHERE vbeln EQ i_vbrk-vbeln.
IF NOT i_vbrp[] IS INITIAL.
SELECT vbelv
posnv
vbeln
posnn
FROM vbfa INTO CORRESPONDING FIELDS OF TABLE i_vbfa
FOR ALL ENTRIES IN i_vbrp
WHERE vbeln EQ i_vbrp-vbeln
AND posnn EQ i_vbrp-posnr
AND vbtyp_v EQ 'J'.
SELECT vbeln
posnr
charg
brgew
ntgew
hsdat
vfdat
matnr
FROM lips INTO CORRESPONDING FIELDS OF TABLE i_lips
FOR ALL ENTRIES IN i_vbfa
WHERE vbeln EQ i_vbfa-vbelv
AND posnr EQ i_vbfa-posnv.
SELECT knumv
kposn
kschl
kbetr
kwert
FROM konv
INTO CORRESPONDING FIELDS OF TABLE i_konv
FOR ALL ENTRIES IN i_vbrk
WHERE knumv = i_vbrk-knumv.
SELECT knumv
kposn
kschl
kbetr
kwert
FROM konv
INTO CORRESPONDING FIELDS OF TABLE i_konv1
FOR ALL ENTRIES IN i_vbrk
WHERE knumv = i_vbrk-knumv.
SELECT werks
mlno
FROM zplant
INTO CORRESPONDING FIELDS OF TABLE i_zplant
FOR ALL ENTRIES IN i_vbrp
WHERE werks = i_vbrp-werks.
SELECT vbeln
posnr
matnr
maktx
FROM zmatdesc
INTO CORRESPONDING FIELDS OF TABLE i_zmatdesc
FOR ALL ENTRIES IN i_vbrp
WHERE vbeln EQ i_vbrp-vbeln
AND posnr EQ i_vbrp-posnr.
SELECT matnr
charg
hsdat
vfdat
FROM mch1
INTO CORRESPONDING FIELDS OF TABLE i_mch1
FOR ALL ENTRIES IN i_lips
WHERE matnr EQ i_lips-matnr
AND charg EQ i_lips-charg.
04-25-2008 4:49 AM
Hi,
1. First check that first Int Table(ITAB) is not Initial.
2. Select all the Key fields of the Table from which you are fetching data(DB Table).
3. Use for all entries.. and equate the key/same fields in both tables:
If not ITAB[] is initial.
Select f1 f2... from <DB Tabale>
into (int table) for all entries in ITAB
where f1 = <f1> and F2 = <f2>.
endif.
Check the following Document for For all Entries with Select Statement
Variant 12
... FOR ALL ENTRIES IN itab WHERE cond
Effect
Selects only those lines of the database table which satisfy the WHERE condition cond where each occurring replacement symbol itab-f is replaced by the value of the component f in the internal table itab for at least one line. Clearly, a SELECT command with ... FOR ALL ENTRIES IN itab WHERE cond forms the union of solution sets for all SELECT commands which result when, for each line of the internal table itab , each symbol itab-f addressed in the WHERE condition is replaced by the relevant value of the component f in this table line. Duplicate lines are eliminated from the result set. If the internal table itab contains no entries, the processing continues as if the WHERE condition cond has failed.
Example
Display a full list of flights on 28.02.1995:
TABLES SFLIGHT.
DATA: BEGIN OF FTAB OCCURS 10,
CARRID LIKE SFLIGHT-CARRID,
CONNID LIKE SFLIGHT-CONNID,
END OF FTAB,
RATIO TYPE F.
Let FTAB be filled as follows:
*
CARRID CONNID
*
-
LH 2415
SQ 0026
LH 0400
SELECT * FROM SFLIGHT FOR ALL ENTRIES IN FTAB
WHERE CARRID = FTAB-CARRID AND
CONNID = FTAB-CONNID AND
FLDATE = '19950228'.
RATIO = SFLIGHT-SEATSOCC / SFLIGHT-SEATSMAX.
WRITE: / SFLIGHT-CARRID, SFLIGHT-CONNID, RATIO.
ENDSELECT.
Notes
... FOR ALL ENTRIES IN itab WHERE cond can only be used with a SELECT command.
In the WHERE condition ... FOR ALL ENTRIES IN itab WHERE cond , the symbol itab-f always has the meaning of a replacement symbol and must not be confused with the component f of the header line in the internal table itab . The internal table itab does not have to have a header line.
The line structure of the internal table itab must be a field string. Each component of this field string which occurs in a replacement symbol in the WHERE condition must be of exactly the same type and length as the corresponding component in the table work area (see TABLES ).
Replacement symbols must not occur in comparisons with the operators LIKE , BETWEEN and IN .
FOR ALL ENTRIES IN itab excludes ORDER BY f1 ... fn in the ORDER-BY clause .
The internal table itab cannot be used at the same time in the INTO clause .
Also Check with the following Code
&----
*& Report ZSSSS1 *
*& *
&----
*& *
*& *
&----
REPORT ZSSSS1 LINE-SIZE 120
LINE-COUNT 25(3)
MESSAGE-ID ZSAN.
********************************************************************
*Program Desc: INTERACTIVE REPORT FOR PURCHASE ORDER DETAILS
BASIC LIST CONTAINS HEADER DETAILS
SECONDARY LIST CONTAINS ITEM DETAILS
AND CONDETION RECORD DETAILS
********************************************************************
T A B L E S U S E D *
********************************************************************
TABLES: EKKO,EKPO,KONV,LFA1,T001.
********************************************************************
S E L E C T I O N S C R E E N *
********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.
SELECT-OPTIONS:
S_LIFNR FOR EKKO-LIFNR,
S_BUKRS FOR EKKO-BUKRS.
SELECTION-SCREEN END OF BLOCK B1.
********************************************************************
D A T A D E C L A R A T I O N S *
********************************************************************
DATA: BEGIN OF IT_EKKO OCCURS 0,
BUKRS LIKE EKKO-BUKRS,
LIFNR LIKE EKKO-LIFNR,
EBELN LIKE EKKO-EBELN,
KNUMV LIKE EKKO-KNUMV,
END OF IT_EKKO.
DATA: BEGIN OF IT_EKPO OCCURS 0,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
INFNR LIKE EKPO-INFNR,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
NETPR LIKE EKPO-NETPR,
END OF IT_EKPO.
DATA: BEGIN OF IT_KONV OCCURS 0,
KNUMV LIKE KONV-KNUMV,
KSCHL LIKE KONV-KSCHL,
KAWRT LIKE KONV-KAWRT,
KBETR LIKE KONV-KBETR,
KPOSN LIKE KONV-KPOSN,
END OF IT_KONV.
DATA: BEGIN OF IT_LFA1 OCCURS 0,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
STRAS LIKE LFA1-STRAS,
ORT01 LIKE LFA1-ORT01,
PSTLZ LIKE LFA1-PSTLZ,
LAND1 LIKE LFA1-LAND1,
END OF IT_LFA1.
DATA: V_BUTXT LIKE T001-BUTXT,
FNAM(20) TYPE C,
FVAL(20) TYPE C.
********************************************************************
A T S E L E C T I O N - S C R E E N O N <FIELD> *
********************************************************************
AT SELECTION-SCREEN ON S_BUKRS.
PERFORM VALIDATE.
********************************************************************
S T A R T - O F - S E L E C T I O N *
********************************************************************
START-OF-SELECTION.
PERFORM SELECT_DATA. " SELECTION OF ALL DATA
PERFORM DISPLAY_DATA. " DISPLAY OF BASIC LIST
********************************************************************
A T L I N E S E L E C T I O N *
********************************************************************
AT LINE-SELECTION.
GET CURSOR FIELD FNAM VALUE FVAL.
CASE FNAM.
WHEN 'IT_EKKO-EBELN'.
PERFORM DISPLAY_SEC1.
WHEN 'IT_EKKO-LIFNR'.
PERFORM DISPLAY_SEC2.
WHEN OTHERS.
PERFORM DISPLAY_SEC3.
ENDCASE.
********************************************************************
T O P - O F - P A G E *
********************************************************************
TOP-OF-PAGE.
PERFORM WRITE_HEADER.
********************************************************************
T O P - O F - P A G E D U R I N G L I N E S E L *
********************************************************************
TOP-OF-PAGE DURING LINE-SELECTION.
PERFORM WRITE_HEADER2.
********************************************************************
E N D - O F - P A G E *
********************************************************************
END-OF-PAGE.
PERFORM WRITE_FOOTER.
&----
*& Form SELECT_DATA
&----
THIS FORM CONTAINS ALL SELECTION OF DATA STATEMENTS
-
form SELECT_DATA.
SELECT BUKRS LIFNR EBELN KNUMV
FROM EKKO
INTO TABLE IT_EKKO
WHERE LIFNR IN S_LIFNR
AND BUKRS IN S_BUKRS.
IF NOT IT_EKKO[] IS INITIAL.
SELECT EBELN EBELP MATNR INFNR MENGE MEINS NETPR
FROM EKPO
INTO TABLE IT_EKPO
FOR ALL ENTRIES IN IT_EKKO
WHERE EBELN = IT_EKKO-EBELN.
IF SY-SUBRC = 0.
LOOP AT IT_EKKO.
LOOP AT IT_EKPO.
SELECT KNUMV KSCHL KAWRT KBETR KPOSN
FROM KONV
INTO IT_KONV
WHERE KNUMV = IT_EKKO-KNUMV
AND KPOSN = IT_EKPO-EBELP.
APPEND IT_KONV.
ENDSELECT.
ENDLOOP.
ENDLOOP.
ENDIF." END OF IF FOR CHECK OF SY-SUBRC
SELECT LIFNR NAME1 STRAS ORT01 PSTLZ LAND1
INTO TABLE IT_LFA1
FROM LFA1
FOR ALL ENTRIES IN IT_EKKO
WHERE LIFNR = IT_EKKO-LIFNR.
ENDIF." END OF IF FOR IT_EKKO IS NOT INITIAL
endform. " SELECT_DATA
&----
*& Form DISPLAY_DATA
&----
DISPLAY THE BASIC DATA
-
form DISPLAY_DATA.
DATA: LINNO TYPE I.
SORT IT_EKKO BY BUKRS LIFNR EBELN.
LOOP AT IT_EKKO.
READ TABLE IT_LFA1 WITH KEY LIFNR = IT_EKKO-LIFNR.
SELECT SINGLE BUTXT
FROM T001
INTO (V_BUTXT)
WHERE BUKRS = IT_EKKO-BUKRS.
WRITE:/1 SY-VLINE,
(10) IT_EKKO-EBELN HOTSPOT ON,
SY-VLINE,
(10) IT_EKKO-LIFNR HOTSPOT ON,
SY-VLINE,
(15) IT_LFA1-NAME1 HOTSPOT ON,
SY-VLINE,
(10) IT_EKKO-BUKRS HOTSPOT ON,
SY-VLINE,
(15) V_BUTXT,
75 SY-VLINE.
HIDE: IT_EKKO-EBELN,
IT_EKKO-LIFNR.
WRITE:/1(75) SY-ULINE.
AT END OF LIFNR.
LINNO = SY-LINCT - SY-LINNO - 1.
SKIP LINNO.
ENDAT.
ENDLOOP.
endform. " DISPLAY_DATA
&----
*& Form DISPLAY_SEC3
&----
form DISPLAY_SEC3.
LOOP AT IT_EKPO.
CLEAR: IT_EKPO, IT_KONV.
READ TABLE IT_EKPO WITH KEY EBELN = IT_EKKO-EBELN.
IF SY-SUBRC = 0.
FORMAT COLOR 3.
WRITE:/1 SY-VLINE,
(10) IT_EKPO-EBELN,
SY-VLINE,
(10) IT_EKPO-EBELP,
SY-VLINE,
(18) IT_EKPO-MATNR,
SY-VLINE,
(10) IT_EKPO-INFNR,
SY-VLINE,
(15) IT_EKPO-MENGE,
SY-VLINE,
(10) IT_EKPO-MEINS,
SY-VLINE,
(12) IT_EKPO-NETPR,
105 SY-VLINE.
FORMAT COLOR OFF.
WRITE:/1(105) SY-ULINE.
FORMAT COLOR 4.
READ TABLE IT_KONV WITH KEY KPOSN = IT_EKPO-EBELP.
IF SY-SUBRC = 0.
WRITE:/1 SY-VLINE,
(10) IT_KONV-KNUMV,
SY-VLINE,
(10) IT_KONV-KSCHL,
SY-VLINE,
(15) IT_KONV-KAWRT,
SY-VLINE,
(12) IT_KONV-KBETR,
SY-VLINE.
WRITE:/1(95) SY-ULINE.
FORMAT COLOR OFF.
ENDIF.
ENDIF.
ENDLOOP.
endform. " DISPLAY_SEC3
&----
*& Form DISPLAY_SEC1
&----
TO CALL TRANSACTION ME23
-
form DISPLAY_SEC1.
SET PARAMETER ID 'BES' FIELD IT_EKKO-EBELN.
CALL TRANSACTION 'ME23' AND SKIP FIRST SCREEN.
endform. " DISPLAY_SEC1
&----
*& Form WRITE_HEADER
&----
HEADER DISPLAY
-
form WRITE_HEADER.
FORMAT COLOR 3.
WRITE:/1 SY-VLINE,
(10) 'PUR.ORDER',
SY-VLINE,
(10) 'VENDOR',
SY-VLINE,
(15) 'NAME',
SY-VLINE,
(10) 'COMP.CODE',
SY-VLINE,
(15) 'COMP.DESC',
75 SY-VLINE.
WRITE:/1(75) SY-ULINE.
FORMAT COLOR OFF.
endform. " WRITE_HEADER
&----
*& Form WRITE_FOOTER
&----
FOOTER OF LIST
-
form WRITE_FOOTER.
FORMAT COLOR 4.
WRITE: /1 'USER:',SY-UNAME,
45 'DATE:', SY-DATUM.
FORMAT COLOR OFF.
endform. " WRITE_FOOTER
&----
*& Form WRITE_HEADER2
&----
HEADER FOR SECONDARY LIST
-
form WRITE_HEADER2.
FORMAT COLOR 4.
WRITE: /30 'INTELLIGROUP ASIA PVT LTD' CENTERED.
WRITE:/50 'HYDERABAD' CENTERED.
FORMAT COLOR 5.
WRITE:/1 SY-VLINE,
(10) 'PUR.ORDR',
SY-VLINE,
(10) 'ITEM',
SY-VLINE,
(18) 'MATERIAL NUMBER',
SY-VLINE,
(10) 'INFO.RECD',
SY-VLINE,
(15) 'QUANTITY',
SY-VLINE,
(10) 'UNITS',
SY-VLINE,
(12) 'NETPRICE',
105 SY-VLINE.
FORMAT COLOR OFF.
WRITE:/1(105) SY-ULINE.
FORMAT COLOR 6.
WRITE:/1 SY-VLINE,
(10) 'COND.RECD',
SY-VLINE,
(10) 'TYPE',
SY-VLINE,
(15) 'BASE VALUE',
SY-VLINE,
(12) 'AMOUNT',
SY-VLINE.
FORMAT COLOR OFF.
WRITE:/1(95) SY-ULINE.
endform. " WRITE_HEADER2
&----
*& Form DISPLAY_SEC2
&----
TO DISPLAY VENDOR DETAILS IN POP UP WINDOW
-
form DISPLAY_SEC2.
READ TABLE IT_LFA1 WITH KEY LIFNR = IT_EKKO-LIFNR.
IF SY-SUBRC = 0.
WRITE:/ 'NAME IS:' , IT_LFA1-NAME1,
/ 'STREET IS:', IT_LFA1-STRAS,
/ 'CITY IS:', IT_LFA1-ORT01,
/ 'POSTEL CODE IS:',IT_LFA1-PSTLZ,
/ 'COUNTRY IS: ', IT_LFA1-LAND1.
WINDOW STARTING AT 1 15
ENDING AT 50 20.
ENDIF.
endform. " DISPLAY_SEC2
&----
*& Form VALIDATE
&----
VALIDATE BUKRS
-
form VALIDATE.
SELECT SINGLE *
FROM T001
WHERE BUKRS IN S_BUKRS.
IF SY-SUBRC 0.
MESSAGE E001.
ENDIF.
endform. " VALIDATE
Check the links given below
Regards,
Raj.
04-25-2008 4:51 AM
Hi,
Declare 2 internal tables for joining 2 tables.
TYPES: BEGIN OF ty_det,
ccode TYPE bukrs,
assno TYPE dzuonr,
docno TYPE belnr_d,
doctyp TYPE blart,
docdat TYPE bldat,
postkey TYPE bschl,
amt TYPE dmbtr,
cleardoc TYPE augbl,
cleardat TYPE augdt,
text TYPE sgtxt,
END OF ty_det,
BEGIN OF ty_bkpf,
ccode TYPE bukrs,
docno TYPE belnr_d,
fisyear TYPE gjahr,
doctyp TYPE blart,
docdat TYPE bldat,
END OF ty_bkpf,
BEGIN OF ty_bseg,
ccode TYPE bukrs,
docno TYPE belnr_d,
fisyear TYPE gjahr,
assno TYPE dzuonr,
postkey TYPE bschl,
amt TYPE dmbtr,
cleardoc TYPE augbl,
cleardat TYPE augdt,
text TYPE sgtxt,
END OF ty_bseg.
DATA: gt_det TYPE TABLE OF ty_det,
gt_bkpf TYPE TABLE OF ty_bkpf,
gt_bseg TYPE TABLE OF ty_bseg,
gw_det TYPE ty_det,
gw_bkpf TYPE ty_bkpf,
gw_bseg TYPE ty_bseg.
SELECT bukrs belnr gjahr blart bldat
FROM bkpf
INTO TABLE gt_bkpf
WHERE bukrs = s_ccode.
IF sy-subrc = 0.
SELECT bukrs belnr gjahr zuonr bschl dmbtr augbl augdt sgtxt INTO TABLE gt_bseg
FROM bseg
FOR ALL ENTRIES IN gt_bkpf
WHERE bukrs = gt_bkpf-ccode AND
belnr = gt_bkpf-docno AND
gjahr = gt_bkpf-fisyear.
ENDIF.
LOOP AT gt_bseg INTO gw_bseg.
READ TABLE gt_bkpf
INTO gw_bkpf
WITH KEY ccode = gw_bseg-ccode
docno = gw_bseg-docno
fisyear = gw_bseg-fisyear.
IF sy-subrc = 0.
gw_det-ccode = gw_bseg-ccode.
gw_det-assno = gw_bseg-assno.
gw_det-docno = gw_bseg-docno.
gw_det-doctyp = gw_bkpf-doctyp.
gw_det-docdat = gw_bkpf-docdat.
gw_det-postkey = gw_bseg-postkey.
gw_det-amt = gw_bseg-amt.
gw_det-cleardoc = gw_bseg-cleardoc.
gw_det-cleardat = gw_bseg-cleardat.
gw_det-text = gw_bseg-text.
APPEND gw_det TO gt_det.
ENDIF.
ENDLOOP.
If the fields are more then you can use corresponding fileds.Otherwise dont use corresponding fileds. It is also the performance issue.
I think it is useful for you..
04-25-2008 5:19 AM
*****************FETCH DATA****************************
SELECT
MTART MATNR MEINS
INTO TABLE T_MARA FROM MARA WHERE MTART = P_MTART
AND MATNR IN ITEMID .
if t_mara is not initial.
SELECT
MATNR WERKS CHARG SHKZG MENGE MEINS UMMAT UMCHA
LIFNR LICHA AUFNR EBELN MBLNR MJAHR BWART
INTO TABLE T_CHVW FROM CHVW FOR ALL ENTRIES IN T_MARA
WHERE
MATNR = T_MARA-MATNR AND
MEINS = T_MARA-MEINS AND
WERKS = PLANT AND
MJAHR = 2007 OR MJAHR = 2008 AND
BWART = P_BWART." AND
MJAHR = 2007 OR MJAHR = 2008 .
SELECT
MAKTX MATNR
INTO TABLE T_MAKT FROM MAKT
FOR ALL ENTRIES IN T_CHVW
WHERE
MATNR = T_CHVW-MATNR.
SELECT
MATNR LIFNR AUGDT WRBTR
INTO TABLE T_BSEG FROM BSEG
FOR ALL ENTRIES IN T_CHVW
WHERE
MATNR = T_CHVW-MATNR.
SELECT
VBELN VGBEL CHARG MATNR
INTO TABLE T_VBRP FROM VBRP
FOR ALL ENTRIES IN T_CHVW
WHERE
MATNR = T_CHVW-MATNR.
AND
VBELN = T_CHVW-VBELN.
*SELECT
VBELN FKDAT
INTO TABLE T_VBRK FROM VBRK
FOR ALL ENTRIES IN T_CHVW
WHERE
VBELN = T_CHVW-VBELN.
endif.
*************EVENTS*************************************
04-25-2008 5:43 AM
hi,
i have used three tables vbak, vbap, kna1.
TYPES: BEGIN OF ty_vbak,
vbeln TYPE vbeln_va,
vkorg TYPE vkorg,
vkgrp TYPE vkgrp,
kunnr TYPE kunag,
END OF ty_vbak,
BEGIN OF ty_vbap,
vbeln TYPE vbeln_va,
posnr TYPE posnr,
matnr TYPE matnr,
end of ty_vbap,
BEGIN OF ty_kna1,
kunnr TYPE kunag,
land1 TYPE land1_gp,
name1 TYPE name1_gp,
end of ty_kna1.
BEGIN OF ty_output,
vbeln TYPE vbeln_va,
vkorg TYPE vkorg,
vkgrp TYPE vkgrp,
kunnr TYPE kunag,
land1 TYPE land1_gp,
name1 TYPE name1_gp,
posnr TYPE posnr,
matnr TYPE matnr, "Materail Num
END OF ty_output.
declare the internal tables and work area for the above tables
SELECT vbeln
vkorg
vkgrp
kunnr
FROM vbak
INTO TABLE t_vbak
WHERE vbeln IN s_vbeln.(parameter used in selection screen)
if t_vbak is not initial.
SELECT vbeln
posnr
matnr
FROM vbap
INTO TABLE t_vbap
FOR ALL ENTRIES IN t_vbak
WHERE vbeln = t_vbak-vbeln
endif.
if t_vbak is not initial.
SELECT kunnr
land1
name1
INTO TABLE t_kna1
FROM kna1
FOR ALL ENTRIES IN t_vbak
WHERE kunnr = t_vbak-kunnr.
endif.
LOOP AT t_vbap INTO w_vbap.
w_output-vbeln = w_vbap-vbeln.
w_output-posnr = w_vbap-posnr.
w_output-matnr = w_vbap-matnr.
READ TABLE t_vbak INTO w_vbak WITH KEY vbeln = w_vbap-vbeln.
IF sy-subrc = 0.
w_output-vkorg = w_vbak-vkorg.
w_output-vkgrp = w_vbak-vkgrp.
w_output-kunnr = w_vbak-kunnr.
ENDIF.
READ TABLE t_kna1 INTO w_kna1 WITH KEY kunnr = w_vbak-kunnr.
IF sy-subrc = 0.
w_output-land1 = w_kna1-land1.
w_output-name1 = w_kna1-name1.
ENDIF.
APPEND w_output TO t_output.
CLEAR w_output.
ENDLOOP.