Application Development and Automation 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: 
Read only

File Upload

Former Member
0 Likes
449

Hi guru's...

can someone provide me how to use dynamic interal table.

I have done a coding in which I want to use *it_data_tab * as dynamic internal table and instead of DISPLAY_BASIC_LIST

which another FM can i Use.


*&---------------------------------------------------------------------*
*& Report  YAKP_TEST6
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  yakp_test6.


TYPES : BEGIN OF ts_col ,
        col  TYPE alsmex_tabline-col,
        size TYPE i ,
        END OF ts_col.

TYPES : BEGIN OF ts_header,
        title(60) TYPE c ,
        END OF ts_header.

DATA : w_fname TYPE rlgrap-filename,
       w_begincol TYPE i VALUE '1' ,
       w_beginrow TYPE i VALUE '1' ,
       w_endcol   TYPE i VALUE '100' ,
       w_endrow   TYPE i VALUE '32000' ,
       w_datalength   TYPE i ,
       w_totalrecords TYPE i ,
       w_index(4) TYPE n ,
       w_cell(22),
       wheader TYPE char1.

CONSTANTS : c_x TYPE char1 VALUE 'X'.


DATA : it_tab1 TYPE TABLE OF alsmex_tabline,
       it_tab2 TYPE TABLE OF alsmex_tabline,
       is_tab1 TYPE alsmex_tabline,
       is_tab2 TYPE alsmex_tabline,
       it_listheader TYPE TABLE OF ts_header,
       is_listheader TYPE ts_header,
       it_col TYPE TABLE OF ts_col,
       is_col TYPE ts_col.


TYPES : BEGIN OF ts_data_tab ,
       value_0001(50),
       value_0002(50),
       value_0003(50),
       value_0004(50),
       value_0005(50),
       value_0006(50),
       value_0007(50),
       value_0008(50),
       value_0009(50),
       value_0010(50),
       value_0011(50),
       value_0012(50),
       value_0013(50),
       value_0014(50),
       value_0015(50),
       value_0016(50),
       value_0017(50),
       value_0018(50),
       value_0019(50),
       value_0020(50),
       value_0021(50),
       value_0022(50),
       value_0023(50),
       value_0024(50),
       value_0025(50),
       value_0026(50),
       value_0027(50),
       value_0028(50),
       value_0029(50),
       value_0030(50),
       value_0031(50),
       value_0032(50),
       value_0033(50),
       value_0034(50),
       value_0035(50),
       value_0036(50),
       value_0037(50),
       value_0038(50),
       value_0039(50),
       value_0040(50),
       value_0041(50),
       value_0042(50),
       value_0043(50),
       value_0044(50),
       value_0045(50),
       value_0046(50),
       value_0047(50),
       value_0048(50),
       value_0049(50),
       value_0050(50),
       value_0051(50),
       value_0052(50),
       value_0053(50),
       value_0054(50),
       value_0055(50),
       value_0056(50),
       value_0057(50),
       value_0058(50),
       value_0059(50),
       value_0060(50),
       value_0061(50),
       value_0062(50),
       value_0063(50),
       value_0064(50),
       value_0065(50),
       value_0066(50),
       value_0067(50),
       value_0068(50),
       value_0069(50),
       value_0070(50),
       value_0071(50),
       value_0072(50),
       value_0073(50),
       value_0074(50),
       value_0075(50),
       value_0076(50),
       value_0077(50),
       value_0078(50),
       value_0079(50),
       value_0080(50),
       value_0081(50),
       value_0082(50),
       value_0083(50),
       value_0084(50),
       value_0085(50),
       value_0086(50),
       value_0087(50),
       value_0088(50),
       value_0089(50),
       value_0090(50),
       value_0091(50),
       value_0092(50),
       value_0093(50),
       value_0094(50),
       value_0095(50),
       value_0096(50),
       value_0097(50),
       value_0098(50),
       value_0099(50),
       value_0100(50),
      END OF ts_data_tab.

DATA : it_data_tab TYPE TABLE OF ts_data_tab,
       is_data_tab TYPE ts_data_tab.

FIELD-SYMBOLS <fs>.

DATA w_res TYPE i.

PARAMETERS : p_fname TYPE rlgrap-filename,
             w_check TYPE c AS CHECKBOX.



AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname .

  CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
    CHANGING
      file_name = w_fname.

  p_fname = w_fname.
  CLEAR w_fname.

START-OF-SELECTION.

  IF w_check = 'X'.
    wheader = c_x.
  ELSE.
    wheader = space.
  ENDIF.

  REFRESH : it_tab1, it_listheader, it_tab2, it_col,it_data_tab.

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename                = p_fname
      i_begin_col             = w_begincol
      i_begin_row             = w_beginrow
      i_end_col               = w_endcol
      i_end_row               = w_endrow
    TABLES
      intern                  = it_tab1
    EXCEPTIONS
      inconsistent_parameters = 1
      upload_ole              = 2
      OTHERS                  = 3.
  IF sy-subrc <> 0.
    MESSAGE e000(00) WITH 'File upload failed'.
  ENDIF.


  LOOP AT it_tab1 INTO is_tab1.
    MOVE-CORRESPONDING is_tab1 TO is_tab2.
    CLEAR  is_tab2-row.
    APPEND is_tab2 TO it_tab2.
    CLEAR : is_tab1 , is_tab2.
  ENDLOOP.

  SORT it_tab2 BY col.

  LOOP AT it_tab2 INTO is_tab2.
    AT NEW col.
      is_col-col = is_tab2-col.
      APPEND is_col TO it_col.
    ENDAT.
    w_datalength = STRLEN( is_tab2-value ).
    READ TABLE it_col INTO is_col WITH KEY col = is_tab2-col.
    IF sy-subrc = 0.
      IF w_datalength > is_col-size.
        is_col-size = w_datalength.
        MODIFY it_col FROM is_col INDEX sy-tabix TRANSPORTING size.
      ENDIF.
    ENDIF.
    CLEAR is_tab2.
  ENDLOOP.

  DESCRIBE TABLE it_col LINES w_totalrecords.

  SORT it_tab1 BY row col.

  IF wheader = c_x.
    LOOP AT it_tab1 INTO is_tab1.
      is_listheader-title = is_tab1-value.
      APPEND is_listheader TO it_listheader.
      AT END OF row.
        EXIT.
      ENDAT.
    ENDLOOP.
  ELSE.
    DO w_totalrecords TIMES.
      is_listheader-title = sy-index.
      APPEND is_listheader TO it_listheader.
    ENDDO.
  ENDIF.

  SORT it_tab1 BY row col.

  LOOP AT it_tab1 INTO is_tab1.
    IF wheader = c_x AND is_tab1-row = 1.
      CONTINUE.
    ENDIF.
    w_index = is_tab1-col.
    CONCATENATE 'IS_DATA_TAB-VALUE_' w_index INTO w_cell.
    ASSIGN (w_cell) TO <fs>.
    <fs> = is_tab1-value.
    AT END OF row.
      APPEND is_data_tab TO it_data_tab.
      CLEAR is_data_tab.
    ENDAT.
    CLEAR is_tab1.
  ENDLOOP.

  IF wheader <> c_x.
    DELETE it_data_tab INDEX 1.
  ENDIF.

  CALL FUNCTION 'DISPLAY_BASIC_LIST'
    EXPORTING
      basic_list_title = 'Excel File Upload'
      file_name        = p_fname
    TABLES
      data_tab         = it_data_tab
      fieldname_tab    = it_listheader.

3 REPLIES 3
Read only

Former Member
0 Likes
424

hi,

try this..

=====================================

REPORT zmaschl_create_data_dynamic .

TYPE-POOLS: slis.

DATA: it_fcat TYPE slis_t_fieldcat_alv,

is_fcat LIKE LINE OF it_fcat.

DATA: it_fieldcat TYPE lvc_t_fcat,

is_fieldcat LIKE LINE OF it_fieldcat.

DATA: new_table TYPE REF TO data.

DATA: new_line TYPE REF TO data.

FIELD-SYMBOLS: <l_table> TYPE ANY TABLE,

<l_line> TYPE ANY,

<l_field> TYPE ANY.

Build fieldcat

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_structure_name = 'SYST'

CHANGING

ct_fieldcat = it_fcat[].

LOOP AT it_fcat INTO is_fcat WHERE NOT reptext_ddic IS initial.

MOVE-CORRESPONDING is_fcat TO is_fieldcat.

is_fieldcat-fieldname = is_fcat-fieldname.

is_fieldcat-ref_field = is_fcat-fieldname.

is_fieldcat-ref_table = is_fcat-ref_tabname.

APPEND is_fieldcat TO it_fieldcat.

ENDLOOP.

Create a new Table

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = it_fieldcat

IMPORTING

ep_table = new_table.

Create a new Line with the same structure of the table.

ASSIGN new_table->* TO <l_table>.

CREATE DATA new_line LIKE LINE OF <l_table>.

ASSIGN new_line->* TO <l_line>.

Test it...

DO 30 TIMES.

ASSIGN COMPONENT 'SUBRC' OF STRUCTURE <l_line> TO <l_field>.

<l_field> = sy-index.

INSERT <l_line> INTO TABLE <l_table>.

ENDDO.

LOOP AT <l_table> ASSIGNING <l_line>.

ASSIGN COMPONENT 'SUBRC' OF STRUCTURE <l_line> TO <l_field>.

WRITE <l_field>.

ENDLOOP.

Regards,

Raj

Read only

Former Member
0 Likes
424

try this..................

TYPES:BEGIN OF ty_itab ,

objecttype TYPE string,

objectname TYPE string,

END OF ty_itab.

DATA:

count TYPE i,

file TYPE ibipparms-path,

iexcel TYPE TABLE OF alsmex_tabline ,

wa_itab TYPE ty_itab,

itab type standard table of ty_itab,

wa_iexcel TYPE alsmex_tabline.

field-symbols : <fs> type string.

*Calling function module to get file path from PC

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

IMPORTING

file_name = file.

*Calling function module to upload excel sheet

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = file

i_begin_col = 1

i_begin_row = 1

i_end_col = 2

i_end_row = 65000

TABLES

intern = iexcel

EXCEPTIONS

inconsistent_parameters = 1

upload_ole = 2

OTHERS = 3.

IF sy-subrc <> 0.

WRITE :/15 'FILE NOT UPLOADED. INVALID FILE NAME OR PATH.' COLOR 6 .

EXIT.

ENDIF.

LOOP AT iexcel INTO wa_iexcel.

count = count + 1.

ASSIGN COMPONENT count OF STRUCTURE wa_itab TO <fs>.

<fs> = wa_iexcel-value.

AT END OF row.

CLEAR count.

APPEND wa_itab TO itab.

ENDAT.

CLEAR wa_iexcel.

ENDLOOP.

loop at itab into wa_itab.

Write : / wa_itab-objectname ,wa_itab-objecttype.

endloop.

Read only

Former Member
0 Likes
424

Thanks