ABAP Select data from SAP table MSSST04COUNTERS into internal table

Get Example source ABAP code based on a different SAP table
  

Below is a number of ABAP code snippets to demonstrate how to select data from SAP MSSST04COUNTERS table and store it within an internal table, including using the newer @DATA inline declaration methods. It also shows you various ways to process this data using ABAP work area, inline declaration or field symbols including executing all the relevant CONVERSION_EXIT routines specific to MSSST04COUNTERS. See here for more generic Select statement tips.

Sometimes data within SAP is stored within the database table in a different format to what it is displayed to the user. These input/output conversation FM routines are what translates the data between the two formats.

There is also a full declaration of the MSSST04COUNTERS table where each field has a char/string type for you to simply copy and paste. This allows you to use processing that is only available to these field types such as the CONCATENATE statement.

DATA: IT_MSSST04COUNTERS TYPE STANDARD TABLE OF MSSST04COUNTERS,
      WA_MSSST04COUNTERS TYPE MSSST04COUNTERS,
      GD_STR TYPE STRING.

DATA: lo_typedescr type REF TO cl_abap_typedescr.
DATA: lv_fieldname type fieldname.

FIELD-SYMBOLS: <FIELD> TYPE any.
FIELD-SYMBOLS: <MSSST04COUNTERS> TYPE MSSST04COUNTERS.

*Process all fields in table header/work area as string values
  PERFORM process_as_string_field_values CHANGING wa_MSSST04COUNTERS.

SELECT *
*restrict ABAP select to first 10 rows
 UP TO 10 ROWS      
  FROM MSSST04COUNTERS
  INTO TABLE IT_MSSST04COUNTERS.

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM MSSST04COUNTERS
*  INTO TABLE @DATA(IT_MSSST04COUNTERS2).
*--Further methods of using ABAP code to  select data from SAP database tables

*You can also declare the header/work area using the in-line DATA declaration method
READ TABLE IT_MSSST04COUNTERS INDEX 1 INTO DATA(WA_MSSST04COUNTERS2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_MSSST04COUNTERS ASSIGNING <MSSST04COUNTERS>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<MSSST04COUNTERS>-PGLATCHWAITMS = 1.
<MSSST04COUNTERS>-LOGWRITEWAITMS = 1.
<MSSST04COUNTERS>-LOGFLUSHWAITMS = 1.
<MSSST04COUNTERS>-LOGFLUSHES = 1.
<MSSST04COUNTERS>-IOSTALLREAD = 1.
ENDLOOP.

LOOP AT IT_MSSST04COUNTERS INTO WA_MSSST04COUNTERS.
*Write horizonal line to screen report.
  WRITE:/ sy-uline.

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_MSSST04COUNTERS-IOSTALLWRITE, sy-vline,
WA_MSSST04COUNTERS-PHYSREADSDB, sy-vline,
WA_MSSST04COUNTERS-PHYSWRITESDB, sy-vline,
WA_MSSST04COUNTERS-PHYSREADSSRV, sy-vline,
WA_MSSST04COUNTERS-PHYSWRITESSRV, sy-vline,
WA_MSSST04COUNTERS-BUFPGWAITMS, sy-vline.
ENDLOOP. *Add any further fields from structure WA_MSSST04COUNTERS you want to display... WRITE:/ sy-uline. * Aternatively use generic code to Write field values (and NAME) to screen report DO. ASSIGN COMPONENT sy-index OF STRUCTURE wa_MSSST04COUNTERS TO <field>. IF sy-subrc <> 0. EXIT. ENDIF. WRITE:/ 'Field Value', <field>, sy-vline. gd_str = <field> . lo_typedescr ?= CL_ABAP_DATADESCR=>DESCRIBE_BY_DATA( <field> ). lv_fieldname = lo_typedescr->GET_RELATIVE_NAME( ). WRITE:/ 'Field Name', lv_fieldname. ENDDO. *Redo loop but convert all fields from internal to out value LOOP AT IT_MSSST04COUNTERS INTO WA_MSSST04COUNTERS. *Write horizonal line to screen report. WRITE:/ sy-uline. *Convert all fields to display/output versions using conversion routines PERFORM convert_all_field_values CHANGING wa_EKKO. ENDLOOP. *&---------------------------------------------------------------------* *& Form convert_all_field_values *&---------------------------------------------------------------------* FORM convert_all_field_values CHANGING p_EKKO LIKE wa_EKKO. DATA: ld_input(1000) TYPE c, ld_output(1000) TYPE C.
ENDFORM. *&---------------------------------------------------------------------* *& Form process_as_string_field_values *&---------------------------------------------------------------------* FORM process_as_string_field_values CHANGING p_EKKO LIKE wa_EKKO. TYPES: BEGIN OF T_MSSST04COUNTERS_STR,
PGLATCHWAITMS TYPE STRING,
LOGWRITEWAITMS TYPE STRING,
LOGFLUSHWAITMS TYPE STRING,
LOGFLUSHES TYPE STRING,
IOSTALLREAD TYPE STRING,
IOSTALLWRITE TYPE STRING,
PHYSREADSDB TYPE STRING,
PHYSWRITESDB TYPE STRING,
PHYSREADSSRV TYPE STRING,
PHYSWRITESSRV TYPE STRING,
BUFPGWAITMS TYPE STRING,
BUFPGLOOKUPS TYPE STRING,
PAGEREADSPLKP TYPE STRING,
READ_READAHEAD TYPE STRING,
SQLBATCHES TYPE STRING,
TRANSACTIONS TYPE STRING,
FULLSCANS TYPE STRING,
RANGESCANS TYPE STRING,
IDXSEARCHES TYPE STRING,
PROBESCANS TYPE STRING,
CPUBUSY TYPE STRING,
CPUIDLE TYPE STRING,
IOBUSY TYPE STRING,
LAZYWRITES TYPE STRING,
SAPRL TYPE STRING,
CPUINFO TYPE STRING,
TRACEFLAGS TYPE STRING,
TOTALCONNECTS TYPE STRING,
DBCONNECTS TYPE STRING,
PHYSMEM TYPE STRING,
CURRMEM TYPE STRING,
MAXMEM TYPE STRING,
LOCKMEM TYPE STRING,
MEMSET TYPE STRING,
MEMOPT TYPE STRING,
DATABUFFERSZ TYPE STRING,
CACHESZ TYPE STRING,
FREEPGSZ TYPE STRING,
BUFHITRATIO TYPE STRING,
CACHEHITRATIO TYPE STRING,
COLUMNSTORESZ TYPE STRING,
WINVER TYPE STRING,
SQLVERSION TYPE STRING,
TOTDBSZ TYPE STRING,
DBFREE TYPE STRING,
TOTLOGSZ TYPE STRING,
LOGFREE TYPE STRING,
DBSTRTDATE TYPE STRING,
DBSTRTTIME TYPE STRING,
ANALYSISDATE TYPE STRING,
ANALYSISTIME TYPE STRING,END OF T_EKKO_STR. DATA: WA_MSSST04COUNTERS_STR type T_EKKO_STR. DATA: ld_text TYPE string. LOOP AT IT_EKKO INTO WA_EKKO. MOVE-CORRESPONDING wa_EKKO TO WA_EKKO_STR. CONCATENATE: sy-vline
WA_MSSST04COUNTERS_STR-PGLATCHWAITMS sy-vline
WA_MSSST04COUNTERS_STR-LOGWRITEWAITMS sy-vline
WA_MSSST04COUNTERS_STR-LOGFLUSHWAITMS sy-vline
WA_MSSST04COUNTERS_STR-LOGFLUSHES sy-vline
WA_MSSST04COUNTERS_STR-IOSTALLREAD sy-vline
WA_MSSST04COUNTERS_STR-IOSTALLWRITE sy-vline
WA_MSSST04COUNTERS_STR-PHYSREADSDB sy-vline
WA_MSSST04COUNTERS_STR-PHYSWRITESDB sy-vline
WA_MSSST04COUNTERS_STR-PHYSREADSSRV sy-vline
WA_MSSST04COUNTERS_STR-PHYSWRITESSRV sy-vline
WA_MSSST04COUNTERS_STR-BUFPGWAITMS sy-vline
WA_MSSST04COUNTERS_STR-BUFPGLOOKUPS sy-vline
WA_MSSST04COUNTERS_STR-PAGEREADSPLKP sy-vline
WA_MSSST04COUNTERS_STR-READ_READAHEAD sy-vline
WA_MSSST04COUNTERS_STR-SQLBATCHES sy-vline
WA_MSSST04COUNTERS_STR-TRANSACTIONS sy-vline
WA_MSSST04COUNTERS_STR-FULLSCANS sy-vline
WA_MSSST04COUNTERS_STR-RANGESCANS sy-vline
WA_MSSST04COUNTERS_STR-IDXSEARCHES sy-vline
WA_MSSST04COUNTERS_STR-PROBESCANS sy-vline
WA_MSSST04COUNTERS_STR-CPUBUSY sy-vline
WA_MSSST04COUNTERS_STR-CPUIDLE sy-vline
WA_MSSST04COUNTERS_STR-IOBUSY sy-vline
WA_MSSST04COUNTERS_STR-LAZYWRITES sy-vline
WA_MSSST04COUNTERS_STR-SAPRL sy-vline
WA_MSSST04COUNTERS_STR-CPUINFO sy-vline
WA_MSSST04COUNTERS_STR-TRACEFLAGS sy-vline
WA_MSSST04COUNTERS_STR-TOTALCONNECTS sy-vline
WA_MSSST04COUNTERS_STR-DBCONNECTS sy-vline
WA_MSSST04COUNTERS_STR-PHYSMEM sy-vline
WA_MSSST04COUNTERS_STR-CURRMEM sy-vline
WA_MSSST04COUNTERS_STR-MAXMEM sy-vline
WA_MSSST04COUNTERS_STR-LOCKMEM sy-vline
WA_MSSST04COUNTERS_STR-MEMSET sy-vline
WA_MSSST04COUNTERS_STR-MEMOPT sy-vline
WA_MSSST04COUNTERS_STR-DATABUFFERSZ sy-vline
WA_MSSST04COUNTERS_STR-CACHESZ sy-vline
WA_MSSST04COUNTERS_STR-FREEPGSZ sy-vline
WA_MSSST04COUNTERS_STR-BUFHITRATIO sy-vline
WA_MSSST04COUNTERS_STR-CACHEHITRATIO sy-vline
WA_MSSST04COUNTERS_STR-COLUMNSTORESZ sy-vline
WA_MSSST04COUNTERS_STR-WINVER sy-vline
WA_MSSST04COUNTERS_STR-SQLVERSION sy-vline
WA_MSSST04COUNTERS_STR-TOTDBSZ sy-vline
WA_MSSST04COUNTERS_STR-DBFREE sy-vline
WA_MSSST04COUNTERS_STR-TOTLOGSZ sy-vline
WA_MSSST04COUNTERS_STR-LOGFREE sy-vline
WA_MSSST04COUNTERS_STR-DBSTRTDATE sy-vline
WA_MSSST04COUNTERS_STR-DBSTRTTIME sy-vline
WA_MSSST04COUNTERS_STR-ANALYSISDATE sy-vline
WA_MSSST04COUNTERS_STR-ANALYSISTIME sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.