Problem solve Get help with specific problems with your technologies, process and projects.

Programming dynamic selections

A description of how to program a dynamic selection.

Programming dynamic selections
By Bernd Matzke

Excerpted from ABAP/4: Programming the SAP R/3 System by Bernd Matzke, published by Addison Wesley.


You require two things before you can implement a dynamic selection in a logical database. One is a special statement in the database program's selection include (DBxxxSEL). This special statement ensures that the user can enter the corresponding selection criterion. You enter the selection criterion for a dynamic selection in a different way from simply parameters or selection tables, and the program also evaluates it in a different way. Therefore, the selection statement must be tailored to the paritcular table so that the table can evalutate this selection criterion. This section will introduce you to the statements you require in more detail.

In the DBxxxSEL section include, the following statement defines the database table for which a dynamic selection is to be implemented:

SELECTION-SCREEN DYNAMIC SELECTIONS
   FOR TABLE table
   [ID ident].

If dynamic selections are to be supported for several tables, a statement is required for each table. If the report uses a table that is intended for a DYNAMIC SELECTION, the Dynamic selections pushbutton appears in the selection screen. Any entries made when the application is running for any dynamic selections are stored in a complex data object called DYN_SEL. This data object contains an internal table called CLAUSES. Each data record in this table contains another internal table called WHERE_TAB. The selection criteria for all the dtabase tables are stored in this internal table. You must use this special variant of the SELECT statement to evaluate these selection criteria.

SELECT * FROM table
   WHERE (itab).

This variant of the SELECT statement reads the selection criteria from an internal table. You can also enter other conditions in the WHERE clause. Before you do this, the internal table used in the WHERE clause must be filled with data from the DYN_SEL dataset.

The DYN_SEL data object has a very complex structure. The definition is stored in the RSDS type pool. Its most elementary component is the dype definition for an internal RSDS_WHERE_TAB table. This internal table is derived from a structure stored in the Data Dictionary. It merely consists of a CHAR-type field with a length of 72 characters.

   TYPES: RSDS_WHERE_TAB LIKE RSDSWHERE OCCURS 5.

This definition flows into the definition of the RSDS_WHERE structure. This structure has a TABLENAME field, in which you enter a table name, and a WHERE_TAB internal table. The selection criteria for the table defined in the TABLENAME field are stored in the WHERE_TAB internal table.

TYPES:
   BEGIN OF RSDS_WHERE,
      TABLENAME LIKE RSDSTABS-PRIM_TAB,
      WHERE_TAB WHERE_TAB TYPE RSDS_WHERE_TAB,
   END OF RSDS_WHERE.

You use this type of structure to define another internal table. This second internal table stores the selection criteria for several Data Dictionary tables.

TYPES: RSDS_TWHERE TYPE RSDS_WHERE OCCURS 5.

Finally, the table definition shown above is incorporated into the RSDS_WHERE type description. This type now contains the CLAUSES field, which contains an RSDS_TWHERE-type table.

TYPES:
   BEGIN OF RSDS_TYPE,
      CLAUSES TYPE RSDS_TWHERE,
      TEXPR TYPE RSDS_TEXPR,
      TRANGE TYPE RSDS_TRANGE,
   END OF RSDS_TYPE.

This data type has two additional fields that also contain very complex objects. The TEXPR field ocntains the selection criteria in a form that can be stored, whereas the TRANGE field saves tehse criteria in some of the RANGES tables. If necessary, the CHECK statement can use these RANGES tables. Finally, you use data type RSDS_TYPE to generate a real data object. You sue the following statement to do this:

DATA DYN_SEL TYPE RSDS_TYPE.

You will find more details about the structure of the other components in DYN_SEL in the type pool we mentioned above.

From the data types dicussed above, you can see that DYN_SEL always stores data in all talbes where dynamic selections have been used to enter selection criteria. Therefore, you suually access values in DYN_SEL by using the name of the database table as a limiting criterion.


To read more about this and other ABAP/4 programming issues, click to find out about ABAP/4: Programming the SAP R/3 System.


 

This was last published in November 2001

Dig Deeper on SAP Basis administration and NetWeaver administration

PRO+

Content

Find more PRO+ content and other member only offers, here.

Start the conversation

Send me notifications when other members comment.

By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Please create a username to comment.

-ADS BY GOOGLE

SearchManufacturingERP

SearchOracle

SearchDataManagement

SearchAWS

SearchBusinessAnalytics

SearchCRM

SearchContentManagement

SearchFinancialApplications

Close