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: 

For all entries

Former Member
0 Kudos

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.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

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

6 REPLIES 6

Former Member
0 Kudos

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

0 Kudos

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.

Former Member
0 Kudos

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.

Former Member
0 Kudos

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..

Former Member
0 Kudos

*****************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*************************************

Former Member
0 Kudos

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.