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

Dynamic internal tables

Former Member
0 Likes
422

Hello Experts,

I want to dynamically fetch records from condition tables. I have written a subroutine like this:

FORM FETCH_COND_REC TABLES P_IT_TAB

USING VALUE(P_0441)

VALUE(P_0442)

CHANGING P_V_SUBRC.

REFRESH: IT_CON_REC,IT_A673.

CLEAR: IT_CON_REC,IT_A673.

SPLIT P_0441 AT ',' INTO TABLE IT_CON_REC.

  • Building a range table for the condition records

LOOP AT IT_CON_REC INTO WA_CON_REC.

LN_KSCHL-SIGN = 'I'.

LN_KSCHL-OPTION = 'EQ'.

LN_KSCHL-LOW = WA_CON_REC-WORDS.

LN_KSCHL-HIGH = ' '.

APPEND LN_KSCHL TO R_KSCHL.

ENDLOOP.

  • Fetching the data from the condition table based on the condition

*records

IF NOT R_KSCHL[] IS INITIAL.

SELECT SALES_ORG

PRICE_GRP

PRODUCT

KSCHL

KBETR

KPEIN

KMEIN

KONWA

KRECH

FROM (P_0442)

INTO TABLE (P_IT_TAB)

WHERE SALES_ORG IN S_VKORG

AND KSCHL IN R_KSCHL

AND TIMESTAMP_TO >= V_TIMESTAMP

AND TIMESTAMP_FROM <= V_TIMESTAMP.

- -


-


ENDFORM.

I am calling the subroutine many a times passing different condition records and condition tables like YMPO and A673 respectively in the following way.

PERFORM FETCH_COND_REC TABLES IT_A673 USING 'YMP0,YMP3,YMP5'

'CNCCRMPRCUS673'

CHANGING V_SUBRC.

I want to sort and loop the dynamic internal table everytime I call the subroutine.

How do I do that?

What is the syntax for sorting and looping dynamic internal table?

Also, How to make use of field-symbols in this scenario?

Thanks and Regards,

Sangeeta.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
385

I hope this helps:

REPORT zbc_temp.


TYPES: BEGIN OF ty_kna1.
        INCLUDE STRUCTURE kna1.
TYPES: END OF ty_kna1.

TYPES: BEGIN OF ty_mara.
        INCLUDE STRUCTURE mara.
TYPES: END OF ty_mara.

DATA: ta_kna1 TYPE STANDARD TABLE OF ty_kna1.
DATA: ta_mara TYPE STANDARD TABLE OF ty_mara.
DATA: wa_kna1 TYPE ty_kna1.
DATA: wa_mara TYPE ty_mara.

PERFORM get_data USING 'KNA1'.
PERFORM get_data USING 'MARA'.

*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
FORM get_data USING    value(p_table).

  DATA: z_table TYPE string.
  DATA: wa_table TYPE string.

  FIELD-SYMBOLS <internal_table> TYPE ANY TABLE.
  FIELD-SYMBOLS <wa_internal_table> TYPE ANY.

  CONCATENATE 'TA_' p_table INTO z_table.  "Internal table
  CONCATENATE 'WA_' p_table INTO wa_table. "Workarea

  ASSIGN (z_table) TO <internal_table>.
  ASSIGN (wa_table) TO <wa_internal_table>.

  SELECT * FROM (p_table)
           INTO TABLE <internal_table>
           UP TO 10 ROWS.

  SKIP.
  WRITE:/ z_table.
  LOOP AT <internal_table> INTO <wa_internal_table>.
    WRITE:/ <wa_internal_table>.
  ENDLOOP.

ENDFORM.                    " get_data

I also found a nice Blog: <a href="/people/rich.heilman2/blog/2005/07/27/dynamic-internal-tables-and-structures--abap

1 REPLY 1
Read only

Former Member
0 Likes
386

I hope this helps:

REPORT zbc_temp.


TYPES: BEGIN OF ty_kna1.
        INCLUDE STRUCTURE kna1.
TYPES: END OF ty_kna1.

TYPES: BEGIN OF ty_mara.
        INCLUDE STRUCTURE mara.
TYPES: END OF ty_mara.

DATA: ta_kna1 TYPE STANDARD TABLE OF ty_kna1.
DATA: ta_mara TYPE STANDARD TABLE OF ty_mara.
DATA: wa_kna1 TYPE ty_kna1.
DATA: wa_mara TYPE ty_mara.

PERFORM get_data USING 'KNA1'.
PERFORM get_data USING 'MARA'.

*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
FORM get_data USING    value(p_table).

  DATA: z_table TYPE string.
  DATA: wa_table TYPE string.

  FIELD-SYMBOLS <internal_table> TYPE ANY TABLE.
  FIELD-SYMBOLS <wa_internal_table> TYPE ANY.

  CONCATENATE 'TA_' p_table INTO z_table.  "Internal table
  CONCATENATE 'WA_' p_table INTO wa_table. "Workarea

  ASSIGN (z_table) TO <internal_table>.
  ASSIGN (wa_table) TO <wa_internal_table>.

  SELECT * FROM (p_table)
           INTO TABLE <internal_table>
           UP TO 10 ROWS.

  SKIP.
  WRITE:/ z_table.
  LOOP AT <internal_table> INTO <wa_internal_table>.
    WRITE:/ <wa_internal_table>.
  ENDLOOP.

ENDFORM.                    " get_data

I also found a nice Blog: <a href="/people/rich.heilman2/blog/2005/07/27/dynamic-internal-tables-and-structures--abap