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: 

internal tables

Former Member
0 Kudos

Hi ,

Iam going to retreive different fields from different table and displaying it in an ALV format.

do we have to declare an internal table for each table and atlast move all the fields to a final table. from the final table we can display the results in ALV.Is this the only we can do or

can we use one internal table alone to select different fields from different table and to display it in ALV.If it is possible could you please explain me how to do it.

Thanks,

Phyrose.

4 REPLIES 4

Former Member
0 Kudos

Hi

retrieve data from different tables and populate final internal table which contains all data .

This can be done using inner joins or for all entries.

Now u can display this internal table ( final) using ALV.

Sample code for ALV

REPORT ZALV .

TABLES : VBAP.

TYPE-POOLS : SLIS.

DATA : BEGIN OF ITAB OCCURS 0,

VBELN LIKE VBAP-VBELN,

POSNR LIKE VBAP-POSNR,

ERNAM LIKE VBAP-ERNAM,

ERDAT LIKE VBAP-ERDAT.

DATA : END OF ITAB.

DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.

SELECT-OPTIONS : S_VBELN FOR VBAP-VBELN.

START-OF-SELECTION.

SELECT VBELN

POSNR

ERNAM

ERDAT

FROM VBAP

INTO CORRESPONDING FIELDS OF TABLE ITAB

WHERE VBELN IN S_VBELN.

PERFORM MODIFY_CAT.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

  • I_CALLBACK_PROGRAM = ' '

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE =

  • I_GRID_SETTINGS =

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCAT

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • I_HTML_HEIGHT_TOP =

  • I_HTML_HEIGHT_END =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = ITAB

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*END-OF-SELECTION.

*LOOP AT ITAB.

*WRITE : / ITAB-VBELN,

  • ITAB-POSNR,

  • ITAB-ERNAM,

  • ITAB-ERDAT.

*ENDLOOP.

&----


*& Form MODIFY_CAT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM MODIFY_CAT .

WA_FIELDCAT-TABNAME = 'ITAB'..

WA_FIELDCAT-FIELDNAME = 'VBELN'.

WA_FIELDCAT-SELTEXT_L = 'SALES DOC'.

WA_FIELDCAT-COL_POS = 1.

WA_FIELDCAT-OUTPUTLEN = 10.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'ITAB'..

WA_FIELDCAT-FIELDNAME = 'POSNR'.

WA_FIELDCAT-SELTEXT_L = 'ITEM'.

WA_FIELDCAT-COL_POS = 2.

WA_FIELDCAT-OUTPUTLEN = 6.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'ITAB'..

WA_FIELDCAT-FIELDNAME = 'ERNAM'.

WA_FIELDCAT-SELTEXT_L = 'PERSON NAME'.

WA_FIELDCAT-COL_POS = 3.

WA_FIELDCAT-OUTPUTLEN = 12.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'ITAB'..

WA_FIELDCAT-FIELDNAME = 'ERDAT'.

WA_FIELDCAT-SELTEXT_L = 'DATE'.

WA_FIELDCAT-COL_POS = 4.

WA_FIELDCAT-OUTPUTLEN = 8.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_LAYOUT-ZEBRA = 'X'.

*WA_LAYOUT-INFO_FIELDNAME = 'COLOR'.

ENDFORM. " MODIFY_CAT

Regards

vasu

Former Member
0 Kudos

HI

U can decalre one final internal table

and use join stt while selecting the data from different tables

regards

sandhya

Former Member
0 Kudos

hi camila,

it depends up on the req and the tables & fields the functional people mantioned uin the FS.

if all the fields are coming from 2-3 tables and these 3 tables have key fields to get the combination of data from them then no need to go for another int table declaration.

if it is not like that acoording to the req.

we have to declare tp fetch the req data from different tables and finally populate them into one final internal table .

using that final internal table build the field catelog and popuplate it in ALV fms...

<b>Reward points if useful</b>

Former Member
0 Kudos

Hi,

You can follow any of the following steps to display the otuput in ALV.

i) Declare a single internal table(containing fields from different tables), and query a join based on the tables only if it satisfies the following conditions.

a) Fields are to be selected from not more than three tables and

b) Ensure that there are common fields present in all the tables to per form a join.

NOTE: Join on more no of tables will be performance intensive.

ii) Declare any no of internal tables to select the fields from different tables. Declare a final internal table with all the fields that needs to be displayed in ALV.

Move the final data into Final internal table and display it in ALV.

You can follow any of the above steps, depending on the requirement.

Hope this gives some information about selection from different tables.

Regards,

Dilli