Quantcast
Channel: SCN : All Content - ABAP Development
Viewing all articles
Browse latest Browse all 8332

RTTS Issue

$
0
0

Hello...  I've got a program I've been asked to modify.  I've been asked to modify a program which uploads 1 of 5 different files and store them into 1 of 5 corresponding tables.  The files input will by delimited by a tilde "~".  The files are specified by the user via 5 radio buttons and they select the file from their desktop.  I was hoping to simplify the processing of the input files using RTTS.  I've included a much simpler version of my problem below using only 2 files.  The questions are documented in the program code.  For some reason I just can't figure out how to do 3 of the tasks.

 

   type-pools: abap.

  types: begin of gt_upload,
           record type string.
  types: end of gt_upload.

  data: go_structdescr          type ref to cl_abap_structdescr,
        go_fielddescr           type ref to cl_abap_datadescr.

  data: git_filetable  type table of file_table,
        git_spfli      type table of spfli,
        git_scarr      type table of scarr,
        git_upload     type table of gt_upload.

  data: gk_filetable  like line of git_filetable,
        gk_spfli      like line of git_spfli,
        gk_scarr      like line of git_scarr,
        gk_upload     like line of git_upload,
        gk_component  type abap_compdescr.

  data: g_fieldcount  type i,
        g_return      type i,
        g_result      type string.

  field-symbols: <gfs_struct>  type any,
                 <gfs_table>   type standard table.

selection-screen begin of block b1 with frame title text-001.
  parameters: p_fname like rlgrap-filename.
selection-screen end of block b1.

selection-screen begin of block b2 with frame title text-002.
  parameters: rb_spfli radiobutton group rb01 default 'X', "Input file will contain spfli "~" delimited file
              rb_scarr radiobutton group rb01.             "Input file will contain scarr "~" delimited file
selection-screen end of block b2.

at selection-screen on value-request for p_fname.

* do the file open dialog stuff here to store the filename
* in parameter p_fname.

start-of-selection.

* Question 1: is there a way to do this with the structure definition
*             instead of the data dictionary object?  I.E., can I do this
*             using 'gk_spfli' or 'gk_scarr' insead of 'spfli' and 'scarr'
*             respectively
  if rb_spfli = abap_true.
    go_structdescr ?= cl_abap_structdescr=>describe_by_name( 'SPFLI' ).
  else.
    go_structdescr ?= cl_abap_structdescr=>describe_by_name( 'SCARR' ).
  endif.

* Get the number of delimited fields
  g_fieldcount    = lines( go_structdescr->components ).

  perform read_input_file.

* Loop at each record (row) in the input file
  loop at git_upload from 2 into gk_upload.

*   loop through each "field" in the delimited file
    do g_fieldcount times.
      clear g_result.

      try.
*       split off each field and store value into g_result
        g_result = segment( val   = gk_upload-record
                            index = sy-index
                            sep   = '~' ).

        catch cx_sy_strg_par_val.
          exit.
      endtry.

*     first get the corresponding field name from our structure for the
*     sy-index field
      read table go_structdescr->components into gk_component index sy-index.

*     Question 2: How do a store the value in g_result into the correct table-field?
*                 Something to the effect of doing the following which I know is
*                 syntatically incorrect but what I'm trying to figure out:
*     <gfs_struct>-gk_component-field = g_result.

     enddo.
*    Question 3: How do I then store the values in my structure <gfs_struct>
*                into my table <gfs_table>>
*                something like
*    append <gfs_struct> into <gfs_table>.
   endloop.

form read_input_file .

* Do the file upload processing
* which stores the input file
* in table git_upload.
* git_upload will contain either the
* "~" delimited data for table spfli or scarr

endform.                    " read_input_file


Viewing all articles
Browse latest Browse all 8332

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>