0

I am trying to remove rows that have empty values in one column segment. The table is declared dynamically so it does not have a standard type that I can use in DATA declaration like I used to do (DATA table_x TYPE BSEG). I tried to create structure based of the imported table but I receive an error:

The data object "LS_DYN_TABLE" does not have a structure and therefore does not have a component called "SEGMENT"

Is there any way to declare dynamically a structure so I can loop through a table, remove rows and pass filtered table further?

    DATA:
      dy_table          TYPE REF TO data.


    FIELD-SYMBOLS:

      <dyn_table>  TYPE STANDARD TABLE,
      <fs_segment> TYPE any.

    IF ID  = '1234'.


      me->method_that_import_desired_table( IMPORTING et_table = dy_table ).
      ASSIGN dy_table->* TO <dyn_table>.
      DATA(ls_dyn_table) = dy_table.
      LOOP AT <dyn_table> ASSIGNING FIELD-SYMBOL(<fs_row>).
        
        IF ls_dyn_table-segment IS INITIAL.
          CONTINUE.
        ENDIF.
      ENDLOOP.
    ENDIF.
1

1 Answer 1

0

When you loop the internal table, you have to assign the field segment dynamically and check if it has a value:

LOOP AT <dyn_table>
     ASSIGNING FIELD-SYMBOL(<fs_row>).
  DATA(tabix) = sy-tabix. "note row index in internal table
  ASSIGN COMPONENT 'SEGMENT'
         OF STRUCTURE <fs_row>
         TO FIELD-SYMBOL(<segment>). 
  IF sy-subrc EQ 0 AND
     <segment> IS INITIAL.
    DELETE <dyn_table> INDEX tabix. "delete by row index
  ENDIF.
ENDLOOP.
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.