‎2007 Jun 27 10:33 AM
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.
‎2007 Jun 27 2:38 PM
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_dataI also found a nice Blog: <a href="/people/rich.heilman2/blog/2005/07/27/dynamic-internal-tables-and-structures--abap
‎2007 Jun 27 2:38 PM
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_dataI also found a nice Blog: <a href="/people/rich.heilman2/blog/2005/07/27/dynamic-internal-tables-and-structures--abap