Sunteți pe pagina 1din 6

By Sivaprasath Sekar KAAVIAN Systems

Dynamic Internal Table Creation using ABAP

Scope:

This document briefly explains the dynamic retrieval of data from database tables. Here, the
table name and the number of lines to be selected can be specified by the user .The user has to choose
the fields which are to be displayed in output ,from a pop up window . The output will be displayed in
simple ALV report format.

Conventional Method:

The following section will briefly describe the steps followed to select data using Conventional method:

Step1:

Create a Z program.

Step2:

Type the following code in the ABAP editor.

*&---------------------------------------------------------------------*
*&Report ZDYNAMIC_SELECT
*&---------------------------------------------------------------------*

REPORT ZDYNAMIC_SELECT..

TYPE-POOLS SLIS.

DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,


P_TABLE LIKE DD02L-TABNAME, " SAP Tables - Table name
DY_TABLE TYPE REF TO DATA.

*************** Field symbol declaration *******************************


FIELD-SYMBOLS: <DYN_TABLE> TYPE STANDARD TABLE.

PARAMETERS: P_TNAME TYPE DD03L-TABNAME,


P_LINES(10) TYPE N.
************** Internal table declaration for selecting the fields at runtime ********************
DATA: BEGIN OF WA OCCURS 0,
CHECK TYPE C, " Checkbox for selection of fields
FIELDNAME TYPE DFIES-FIELDNAME, " Field name
FIELDTEXT TYPE DFIES-FIELDTEXT, " Field text
OUTPUTLEN TYPE DFIES-OUTPUTLEN, " Output length
DATATYPE TYPE DFIES-DATATYPE, " Datatype
INTTYPE TYPE DFIES-INTTYPE, " Integer
DECIMALS TYPE DFIES-DECIMALS, " Decimals
INTLEN TYPE DFIES-INTLEN, " Integer field length
By Sivaprasath Sekar KAAVIAN Systems

END OF WA.

DATA: FIELD_CATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.


DATA: WA_DFIES TYPE DFIES. " DD Interface: Table Fields for DDIF_FIELDINFO_G
ET
DATA: IT_DFIES LIKE TABLE OF WA_DFIES WITH HEADER LINE.

DATA: LVC TYPE LVC_S_FCAT, " ALV control: Field catalog


LVC1 LIKE TABLE OF LVC. " Internal table for the above structure
DATA: P_FIELD TYPE STRING,
FIELD TYPE STRING,
IT_FIELD LIKE TABLE OF FIELD.

INITIALIZATION.
*NOCODE

*************** At Selection-Screen event *******************************


AT SELECTION-SCREEN.
CASE SY-UCOMM. " User command
WHEN 'ONLI'. " Execute user command in standard screen
IF P_TNAME IS INITIAL OR P_LINES CA 'ABCDEFGHIJKLMNOPQRSTUVWXYZ,<>.?/:;"'.
MESSAGE 'Fill the required entries in correct format' TYPE 'W'.
ELSE.
PERFORM SELECT. " Calling subroutine
ENDIF.
ENDCASE.
*************** Start of Selection event *******************************
START-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form SELECT
*&---------------------------------------------------------------------*
FORM SELECT .
P_TABLE = P_TNAME. " Assigning table name to another parameter
CALL FUNCTION 'DDIF_FIELDINFO_GET' " Functon module to fetch all the fields and its prop
erties in the database table
EXPORTING
TABNAME = P_TABLE
LANGU = SY-LANGU
TABLES
DFIES_TAB = IT_DFIES.

***** Assigning the properties of the fields to an internal table 'WA'


LOOP AT IT_DFIES.
WA-FIELDNAME = IT_DFIES-FIELDNAME.
WA-FIELDTEXT = IT_DFIES-FIELDTEXT.
WA-OUTPUTLEN = IT_DFIES-OUTPUTLEN.
WA-DATATYPE = IT_DFIES-DATATYPE.
By Sivaprasath Sekar KAAVIAN Systems

WA-INTTYPE = IT_DFIES-INTTYPE.
WA-DECIMALS = IT_DFIES-DECIMALS.
WA-INTLEN = IT_DFIES-INTLEN.
APPEND WA.
ENDLOOP.

IF SY-SUBRC = 0.
*********** Fielcatalog for popup window ***************
FIELD_CATALOG-FIELDNAME = 'CHECK'.
FIELD_CATALOG-SELTEXT_M = 'Selection Field'.
FIELD_CATALOG-TABNAME = 'WA'.
FIELD_CATALOG-COL_POS = 1.
FIELD_CATALOG-OUTPUTLEN = 3.
APPEND FIELD_CATALOG.
CLEAR FIELD_CATALOG.

FIELD_CATALOG-FIELDNAME = 'FIELDNAME'.
FIELD_CATALOG-SELTEXT_M = 'Field Names'.
FIELD_CATALOG-TABNAME = 'WA'.
FIELD_CATALOG-COL_POS = 2.
FIELD_CATALOG-OUTPUTLEN = 12.
APPEND FIELD_CATALOG.
CLEAR FIELD_CATALOG.

FIELD_CATALOG-FIELDNAME = 'FIELDTEXT'.
FIELD_CATALOG-SELTEXT_M = 'Field Description'.
FIELD_CATALOG-TABNAME = 'WA'.
FIELD_CATALOG-COL_POS = 3.
FIELD_CATALOG-OUTPUTLEN = 60.
APPEND FIELD_CATALOG.
CLEAR FIELD_CATALOG.
******** Function module for popup **************
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT' " List in dialog box to choose one or mo
re entries (or display only)
EXPORTING
I_ZEBRA = 'X'
I_TITLE = 'Fields For Selection'
I_TABNAME = 'WA'
IT_FIELDCAT = FIELD_CATALOG[]
I_CHECKBOX_FIELDNAME = 'CHECK'
TABLES
T_OUTTAB = WA.
ENDIF.

CLEAR: FIELD_CATALOG[],FIELD_CATALOG.

LOOP AT WA WHERE CHECK = 'X'.


By Sivaprasath Sekar KAAVIAN Systems

LVC-FIELDNAME = WA-FIELDNAME.
LVC-SCRTEXT_S = WA-FIELDTEXT.
LVC-OUTPUTLEN = WA-OUTPUTLEN.
LVC-DATATYPE = WA-DATATYPE.
LVC-INTTYPE = WA-INTTYPE.
LVC-TABNAME = P_TABLE.
LVC-DECIMALS = WA-DECIMALS.
LVC-INTLEN = WA-INTLEN.
APPEND LVC TO LVC1.
CLEAR LVC.

FIELD = WA-FIELDNAME.
APPEND FIELD TO IT_FIELD.

FIELD_CATALOG-FIELDNAME = WA-FIELDNAME.
FIELD_CATALOG-SELTEXT_M = WA-FIELDTEXT.
FIELD_CATALOG-TABNAME = P_TABLE.
FIELD_CATALOG-OUTPUTLEN = WA-OUTPUTLEN.
APPEND FIELD_CATALOG.
CLEAR FIELD_CATALOG.
ENDLOOP.

IF SY-SUBRC = 0.
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
IT_FIELDCATALOG = LVC1
I_LENGTH_IN_BYTE = 'X'
IMPORTING
EP_TABLE = DY_TABLE.

ASSIGN DY_TABLE->* TO <DYN_TABLE>.

IF SY-SUBRC = 0.
************* Select query for fetching data for the selected field at runtime **********
SELECT (IT_FIELD)
FROM (P_TABLE)
INTO TABLE <DYN_TABLE> UP TO P_LINES ROWS.
************* Function module for ALV Grid Display ******************************
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IT_FIELDCAT = FIELD_CATALOG[]
TABLES
T_OUTTAB = <DYN_TABLE>
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
By Sivaprasath Sekar KAAVIAN Systems

ENDIF.
ENDIF.
ENDFORM. " SELECT

Step3:

Activate and run the program.

Enter the Table name and the Number of lines to be selected and execute..

Step4:

Select the fields to be fetched from the popup for output and press copy(Enter)...
By Sivaprasath Sekar KAAVIAN Systems

Step 5:

• Output of the program

S-ar putea să vă placă și