You can use an internal table to build a dynamic where clause:
data: where_tab(30) occurs 1 with header line, where_clause(30) type c. * Build the where clause. Will look like this when finished * WHERE ZAFSTMD02 = 'X' AND rbusa = '5145' * With a constant, result: ZAFSTMD01 = 'X' concatenate 'ZAFSTMD' zcostcheck-zmaaned ' = ''X''' into where_clause. * Append to internal table where_tab append where_clause to where_tab. * With a variable, result: AND rbusa = '5145' concatenate 'AND rbusa = ' '''' i_tab-zgsber '''' append where_clause to where_tab. * Select select * from zcostfreq where (where_tab). endselect. Note that you can combine static and dynamic where clauses: select * from zcostfreq where bukrs = '2021' AND (where_tab). endselect.
This report prints the number og entries in a table. The table
name is specified by a parameter.
data: l_count type i. parameters: p_tab type tabname. start-of-selection. select count(*) from (p_tab) into l_count. write: / 'Number of entries in table ', p_tab, l_count.
In this example, data is retrieved from the table selected on
the selection screen, and the contents of the table is written to
the screen.
DATA: * Create variable that can contain referecene to any data dataref TYPE REF TO data. FIELD-SYMBOLS: <row> TYPE ANY, <component> TYPE ANY. PARAMETERS: p_tab TYPE tabname. START-OF-SELECTION. * Create a workarea for the tabel selected on the selection screen CREATE DATA dataref TYPE (p_tab). * The variable dataref cannot be accessed directly, so a field symbol is * used ASSIGN dataref->* TO <row>. SELECT * FROM (p_tab) UP TO 10 ROWS INTO <row>. NEW-LINE. DO. * Write all the fields in the record ASSIGN COMPONENT sy-index OF STRUCTURE <row> TO <component>. IF sy-subrc <> 0. EXIT. ENDIF. WRITE <component>. ENDDO. ENDSELECT.
TYPES: BEGIN OF st_bseg, bukrs LIKE bseg-bukrs, belnr LIKE bseg-belnr, dmbtr LIKE bseg-dmbtr, END OF st_bseg. DATA: sel_list TYPE STANDARD TABLE OF edpline, li_bseg TYPE STANDARD TABLE OF st_bseg, l_bseg TYPE st_bseg. START-OF-SELECTION. APPEND 'bukrs belnr dmbtr' TO sel_list. SELECT (sel_list) FROM bseg UP TO 100 ROWS INTO TABLE li_bseg. LOOP AT li_bseg INTO l_bseg. WRITE : / l_bseg-bukrs, l_bseg-belnr, l_bseg-dmbtr. ENDLOOP.
Converted from CHM to HTML with chm2web Standard 2.7 (unicode) |