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: 

how to populate data in dynamic internal table

Former Member
0 Kudos

Hi Expert,

fyi. My dynamic internal table field is created base on data selected. Eg. select table qpcd has 5 records. These 5 recods will become fieldname to my dynamic internal table. My dynamic internal table will be

...itab

01

02

03

04

05

The 5 records from qpcd is populated in another table call viqmel. I need to find the occurance of each code in viqmel and populate the number of occurance in itab in each of column. The final dynamic itab will be like this

table itab

01 02 03 04 05 -


> field name

2 0 1 0 1 -


> data

my source code like below

-


Report ZPLYGRND2.

TABLES: mara, makt.

TYPE-POOLS: slis, sydes.

DATA:it_fcat TYPE slis_t_fieldcat_alv,

is_fcat LIKE LINE OF it_fcat,

ls_layout TYPE slis_layout_alv.

DATA: it_fieldcat TYPE lvc_t_fcat,

is_fieldcat LIKE LINE OF it_fieldcat.

DATA: new_table TYPE REF TO data,

new_line TYPE REF TO data,

ob_cont_alv TYPE REF TO cl_gui_custom_container,

ob_alv TYPE REF TO cl_gui_alv_grid,

vg_campos(255) TYPE c,

i_campos LIKE TABLE OF vg_campos,

vg_campo(30) TYPE c,

vg_tables(60) TYPE c.

types : begin of t_qpcd,

codegruppe like qpcd-codegruppe,

code like qpcd-code,

end of t_qpcd.

data:wa_qpcd type t_qpcd,

i_qpcd type standard table of t_qpcd initial size 0.

FIELD-SYMBOLS: <l_table> TYPE table,

<l_line> TYPE ANY,

<l_field> TYPE ANY.

select * into corresponding fields of wa_qpcd from qpcd

where katalogart = 'D'

and codegruppe = 'OOT01'.

append wa_qpcd to i_qpcd.

endselect.

loop at i_qpcd into wa_qpcd.

is_fcat-fieldname = wa_qpcd-code.

APPEND is_fcat TO it_fcat.

endloop.

LOOP AT it_fcat INTO is_fcat.

is_fieldcat-fieldname = is_fcat-fieldname.

is_fieldcat-ref_field = is_fcat-ref_fieldname.

is_fieldcat-ref_table = is_fcat-ref_tabname.

APPEND is_fieldcat TO it_fieldcat.

ENDLOOP.

*... Create the dynamic internal table

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = it_fieldcat

IMPORTING

ep_table = new_table.

if sy-subrc = 0.

endif.

*... Create a new line

ASSIGN new_table->* TO <l_table>.

CREATE DATA new_line LIKE LINE OF <l_table>.

ASSIGN new_line->* TO <l_line>.

LOOP AT <l_table> INTO <l_line>.

ENDLOOP.

-


1 ACCEPTED SOLUTION

SantoshKallem
Active Contributor
0 Kudos

http://www.sap-img.com/ab030.htm

reward if helpful.

Cheers..

santhosh

4 REPLIES 4

Former Member
0 Kudos

hello dear i m giving u a code in this a dynamic table is made on the basis of table in database , and u can download this data correct it , see it, or even change it....and upload in tht table help full if u dont know the table name...in advance.

-


also the code to populate data in dynamic table is in this code like:

SELECT * FROM (MTABLE_N)

INTO CORRESPONDING FIELDS OF TABLE <FS_ITAB> .

-


look at the whole program .hope this solve ur problem thanks.

REPORT ZTESTA MESSAGE-ID ZIMM .

TYPES : DATA_OBJECT TYPE REF TO DATA.

DATA : MITAB TYPE REF TO DATA .

TYPE-POOLS : SLIS .

DATA : IT_FIELDCAT TYPE STANDARD TABLE OF SLIS_FIELDCAT_ALV

WITH HEADER LINE .

DATA : IT_FIELDCATALOG TYPE LVC_T_FCAT .

DATA : WA_FIELDCATALOG TYPE LVC_S_FCAT .

DATA : I_STRUCTURE_NAME LIKE DD02L-TABNAME .

DATA : I_CALLBACK_PROGRAM LIKE SY-REPID .

DATA : DYN_LINE TYPE DATA_OBJECT .

FIELD-SYMBOLS : <FS_ITAB> TYPE STANDARD TABLE .

DATA : TABLE_NAME_IS_VALID TYPE C .

DATA : DYNAMIC_IT_INSTANTIATED TYPE C .

CONSTANTS BUTTONSELECTED TYPE C VALUE 'X' .

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 5(29) T_TABL.

PARAMETERS : MTABLE_N LIKE RSRD1-TBMA_VAL

MATCHCODE OBJECT DD_DBTB_16 OBLIGATORY .

DATA CHECKTABLED.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 5(29) T_FILE.

PARAMETERS : MFILENAM LIKE RLGRAP-FILENAME .

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 5(29) T_DOWN.

PARAMETERS : P_DOWNLD RADIOBUTTON GROUP GRP1

USER-COMMAND M_UCOMM .

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 5(29) T_CHKF.

PARAMETERS : P_CHKFIL RADIOBUTTON GROUP GRP1 .

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 5(29) T_UPLD.

PARAMETERS : P_UPLOAD RADIOBUTTON GROUP GRP1 .

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 5(29) T_SHOW.

PARAMETERS : P_SHOW_T RADIOBUTTON GROUP GRP1 .

SELECTION-SCREEN END OF LINE.

AT SELECTION-SCREEN OUTPUT .

PERFORM CHECK_FILENAME .

AT SELECTION-SCREEN.

IF SY-UCOMM = 'ONLI'.

CHECKTABLED = MTABLE_N+0(1).

IF CHECKTABLED NE 'Z'.

MESSAGE I017.

LEAVE TO SCREEN 1000.

ENDIF.

IF SY-UNAME NE 'KAMESH.K'.

MESSAGE I023 WITH SY-UNAME.

LEAVE TO SCREEN 1000.

ENDIF.

ENDIF.

IF SY-UCOMM = 'PRIN'.

CHECKTABLED = MTABLE_N+0(1).

IF CHECKTABLED NE 'Z'.

MESSAGE I017.

LEAVE TO SCREEN 1000.

ENDIF.

IF SY-UNAME NE 'KAMESH.K'.

MESSAGE I023 WITH SY-UNAME.

LEAVE TO SCREEN 1000.

ENDIF.

ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR MFILENAM .

PERFORM F4_FOR_FILENAME .

INITIALIZATION .

T_TABL = 'Table Name' .

T_FILE = 'File Name' .

T_DOWN = 'Download Table' .

T_CHKF = 'Check File to Upload' .

T_UPLD = 'Upload File' .

T_SHOW = 'Show Table Contents' .

START-OF-SELECTION .

PERFORM CHECK_TABLE_NAME_IS_VALID .

END-OF-SELECTION .

IF TABLE_NAME_IS_VALID EQ ' ' .

MESSAGE I398(00) WITH 'INVALID TABLE NAME' .

ELSE .

PERFORM INSTANTIATE_DYNAMIC_INTERNAL_T .

CHECK DYNAMIC_IT_INSTANTIATED = 'X' .

CASE BUTTONSELECTED .

WHEN P_DOWNLD .

PERFORM SELECT_AND_DOWNLOAD .

WHEN P_CHKFIL .

PERFORM CHECK_FILE_TO_UPLOAD .

WHEN P_UPLOAD .

PERFORM UPLOAD_FROM_FILE .

WHEN P_SHOW_T .

PERFORM SHOW_CONTENTS .

ENDCASE .

ENDIF .

FORM CHECK_TABLE_NAME_IS_VALID.

DATA MCOUNT TYPE I .

TABLES DD02L .

CLEAR TABLE_NAME_IS_VALID .

SELECT COUNT(*) INTO MCOUNT FROM TADIR

WHERE PGMID = 'R3TR'

AND OBJECT = 'TABL'

AND OBJ_NAME = MTABLE_N .

IF MCOUNT EQ 1 .

CLEAR DD02L .

SELECT SINGLE * FROM DD02L WHERE TABNAME = MTABLE_N .

IF SY-SUBRC EQ 0.

IF DD02L-TABCLASS = 'TRANSP' .

TABLE_NAME_IS_VALID = 'X' .

ENDIF .

ENDIF.

ENDIF .

ENDFORM. " CHECK_TABLE_NAME_IS_VALID

FORM SELECT_AND_DOWNLOAD.

CLEAR : <FS_ITAB> .

SELECT * FROM (MTABLE_N)

INTO CORRESPONDING FIELDS OF TABLE <FS_ITAB> .

PERFORM CHECK_FILENAME.

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

FILENAME = MFILENAM

FILETYPE = 'DAT'

TABLES

DATA_TAB = <FS_ITAB>

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_WRITE_ERROR = 2

INVALID_FILESIZE = 3

INVALID_TYPE = 4

NO_BATCH = 5

UNKNOWN_ERROR = 6

INVALID_TABLE_WIDTH = 7

GUI_REFUSE_FILETRANSFER = 8

CUSTOMER_ERROR = 9

OTHERS = 10.

IF SY-SUBRC EQ 0.

MESSAGE I398(00) WITH 'Table' MTABLE_N

'successfully downloaded to '

MFILENAM .

ENDIF.

ENDFORM. " SELECT_AND_DOWNLOAD

FORM UPLOAD_FROM_FILE.

DATA : ANS TYPE C .

DATA : LINES_OF_ITAB TYPE I .

DATA : MSY_SUBRC TYPE I .

CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'

EXPORTING

TEXTLINE1 = 'Are you sure you wish to upload'

TEXTLINE2 = 'data from ASCII File to DB table '

TITEL = 'Confirmation of Data Upload'

IMPORTING

ANSWER = ANS.

IF ANS = 'J' .

PERFORM CHECK_FILENAME.

CLEAR MSY_SUBRC .

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

FILENAME = MFILENAM

FILETYPE = 'DAT'

TABLES

DATA_TAB = <FS_ITAB>

EXCEPTIONS

CONVERSION_ERROR = 1

FILE_OPEN_ERROR = 2

FILE_READ_ERROR = 3

INVALID_TYPE = 4

NO_BATCH = 5

UNKNOWN_ERROR = 6

INVALID_TABLE_WIDTH = 7

GUI_REFUSE_FILETRANSFER = 8

CUSTOMER_ERROR = 9

OTHERS = 10.

MSY_SUBRC = MSY_SUBRC + SY-SUBRC .

IF SY-SUBRC EQ 0.

DESCRIBE TABLE <FS_ITAB> LINES LINES_OF_ITAB .

IF LINES_OF_ITAB GT 0 .

MODIFY (MTABLE_N) FROM TABLE <FS_ITAB> .

MSY_SUBRC = MSY_SUBRC + SY-SUBRC .

ENDIF .

ENDIF.

IF MSY_SUBRC EQ 0 .

MESSAGE I398(00) WITH LINES_OF_ITAB

'Record(s) inserted in table'

MTABLE_N .

ELSE .

MESSAGE I398(00) WITH

'Errors occurred No Records inserted in table'

MTABLE_N .

ENDIF .

ENDIF .

ENDFORM. " UPLOAD_FROM_FILE

FORM F4_FOR_FILENAME.

CALL FUNCTION 'WS_FILENAME_GET'

EXPORTING

DEF_PATH = 'C:\'

MASK = ',.,..'

MODE = '0'

IMPORTING

FILENAME = MFILENAM

EXCEPTIONS

INV_WINSYS = 1

NO_BATCH = 2

SELECTION_CANCEL = 3

SELECTION_ERROR = 4

OTHERS = 5.

ENDFORM. " F4_FOR_FILENAME

FORM CHECK_FILENAME.

IF MFILENAM IS INITIAL

AND NOT ( MTABLE_N IS INITIAL )

AND P_SHOW_T NE BUTTONSELECTED.

CONCATENATE 'C:\'

MTABLE_N '.TXT' INTO MFILENAM.

ENDIF .

ENDFORM. " CHECK_FILENAME

FORM INSTANTIATE_DYNAMIC_INTERNAL_T.

CLEAR DYNAMIC_IT_INSTANTIATED .

I_STRUCTURE_NAME = MTABLE_N .

CLEAR IT_FIELDCAT[] .

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_STRUCTURE_NAME = I_STRUCTURE_NAME

CHANGING

CT_FIELDCAT = IT_FIELDCAT[]

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3.

IF SY-SUBRC EQ 0.

LOOP AT IT_FIELDCAT .

CLEAR WA_FIELDCATALOG .

MOVE-CORRESPONDING IT_FIELDCAT TO WA_FIELDCATALOG .

WA_FIELDCATALOG-REF_FIELD = IT_FIELDCAT-FIELDNAME .

WA_FIELDCATALOG-REF_TABLE = MTABLE_N .

APPEND WA_FIELDCATALOG TO IT_FIELDCATALOG .

ENDLOOP .

CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE

EXPORTING

IT_FIELDCATALOG = IT_FIELDCATALOG

IMPORTING

EP_TABLE = MITAB .

ASSIGN MITAB->* TO <FS_ITAB> .

DYNAMIC_IT_INSTANTIATED = 'X' .

ENDIF.

ENDFORM. " INSTANTIATE_DYNAMIC_INTERNAL_T

FORM SHOW_CONTENTS.

CLEAR : <FS_ITAB> .

SELECT * FROM (MTABLE_N)

INTO CORRESPONDING FIELDS OF TABLE <FS_ITAB> .

I_CALLBACK_PROGRAM = SY-REPID .

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = I_CALLBACK_PROGRAM

IT_FIELDCAT = IT_FIELDCAT[]

TABLES

T_OUTTAB = <FS_ITAB>

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

ENDFORM. " SHOW_CONTENTS

FORM CHECK_FILE_TO_UPLOAD.

PERFORM CHECK_FILENAME.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

FILENAME = MFILENAM

FILETYPE = 'DAT'

TABLES

DATA_TAB = <FS_ITAB>

EXCEPTIONS

CONVERSION_ERROR = 1

FILE_OPEN_ERROR = 2

FILE_READ_ERROR = 3

INVALID_TYPE = 4

NO_BATCH = 5

UNKNOWN_ERROR = 6

INVALID_TABLE_WIDTH = 7

GUI_REFUSE_FILETRANSFER = 8

CUSTOMER_ERROR = 9

OTHERS = 10.

IF SY-SUBRC EQ 0.

I_CALLBACK_PROGRAM = SY-REPID .

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = I_CALLBACK_PROGRAM

IT_FIELDCAT = IT_FIELDCAT[]

TABLES

T_OUTTAB = <FS_ITAB>

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

ENDIF .

ENDFORM. " CHECK_FILE_TO_UPLOAD

Message was edited by:

SAURABH SINGH

SENIOR EXECUTIVE

SAMSUNG INDIA ELECTRONICS LTD.,NOIDA

SantoshKallem
Active Contributor
0 Kudos

http://www.sap-img.com/ab030.htm

reward if helpful.

Cheers..

santhosh

Former Member
0 Kudos

This question has been repeated many times in SDN. May be you do a search on "dynamic internal table".

Alternatively, you can also check in www.saptechnical.com for step by step document on dynamic internal table.

Please award points if this answered your question