ABAP Select data from SAP table SMMAIN 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 SMMAIN 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 SMMAIN. 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 SMMAIN 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_SMMAIN TYPE STANDARD TABLE OF SMMAIN,
      WA_SMMAIN TYPE SMMAIN,
      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: <SMMAIN> TYPE SMMAIN.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM SMMAIN
*  INTO TABLE @DATA(IT_SMMAIN2).
*--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_SMMAIN INDEX 1 INTO DATA(WA_SMMAIN2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_SMMAIN ASSIGNING <SMMAIN>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<SMMAIN>-MANDT = 1.
<SMMAIN>-ID = 1.
<SMMAIN>-LOGSYS = 1.
<SMMAIN>-IDTYPE = 1.
<SMMAIN>-SDATE = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_SMMAIN-EDATE, sy-vline,
WA_SMMAIN-STIME, sy-vline,
WA_SMMAIN-ETIME, sy-vline,
WA_SMMAIN-UNAME, sy-vline,
WA_SMMAIN-APLSTAT, sy-vline,
WA_SMMAIN-TIMESTAMP, sy-vline.
ENDLOOP. *Add any further fields from structure WA_SMMAIN 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_SMMAIN 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_SMMAIN INTO WA_SMMAIN. *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.

*Conversion exit ALPHA, internal->external for field LOGSYS CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_SMMAIN-LOGSYS IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_SMMAIN-LOGSYS.
WRITE:/ 'New Value:', ld_input.

*Conversion exit MODAT, internal->external for field SDATE CALL FUNCTION 'CONVERSION_EXIT_MODAT_OUTPUT' EXPORTING input = WA_SMMAIN-SDATE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_SMMAIN-SDATE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit MODAT, internal->external for field EDATE CALL FUNCTION 'CONVERSION_EXIT_MODAT_OUTPUT' EXPORTING input = WA_SMMAIN-EDATE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_SMMAIN-EDATE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit TIMLO, internal->external for field STIME CALL FUNCTION 'CONVERSION_EXIT_TIMLO_OUTPUT' EXPORTING input = WA_SMMAIN-STIME IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_SMMAIN-STIME.
WRITE:/ 'New Value:', ld_input.

*Conversion exit TIMLO, internal->external for field ETIME CALL FUNCTION 'CONVERSION_EXIT_TIMLO_OUTPUT' EXPORTING input = WA_SMMAIN-ETIME IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_SMMAIN-ETIME.
WRITE:/ 'New Value:', ld_input.
ENDFORM. *&---------------------------------------------------------------------* *& Form process_as_string_field_values *&---------------------------------------------------------------------* FORM process_as_string_field_values CHANGING p_EKKO LIKE wa_EKKO. TYPES: BEGIN OF T_SMMAIN_STR,
MANDT TYPE STRING,
ID TYPE STRING,
LOGSYS TYPE STRING,
IDTYPE TYPE STRING,
SDATE TYPE STRING,
EDATE TYPE STRING,
STIME TYPE STRING,
ETIME TYPE STRING,
UNAME TYPE STRING,
APLSTAT TYPE STRING,
TIMESTAMP TYPE STRING,
MASTERID TYPE STRING,
WF_WITEM TYPE STRING,
FUNCTION TYPE STRING,
TCODE TYPE STRING,
ACTIVITY TYPE STRING,
VARIANTE TYPE STRING,
REPID TYPE STRING,
APPLICATION TYPE STRING,
TESTFLAG TYPE STRING,
NR_OF_OBJECTS TYPE STRING,
MASTERAPPL TYPE STRING,
BATCHFLAG TYPE STRING,
SELKRITFLAG TYPE STRING,
MESSAGEFLAG TYPE STRING,
PARAMETERFLAG TYPE STRING,
RESULTLISTFLAG TYPE STRING,
STATUSFLAG TYPE STRING,
SPECIFICFLAG TYPE STRING,
SPOOLLISTFLAG TYPE STRING,
EXTFLAG TYPE STRING,
WFFLAG TYPE STRING,
WORKLISTFLAG TYPE STRING,
POSTING_FINISHED TYPE STRING,
ERROR_IN_POSTING TYPE STRING,
ONELISTFLAG TYPE STRING,
REF_ID TYPE STRING,
REF_RFCDEST TYPE STRING,
REF_WF_WITEM TYPE STRING,
SEND_MAIL TYPE STRING,
CONF_MAIL_USER TYPE STRING,
WF_EVENT_DELAYED TYPE STRING,
MAIL_CONTENT TYPE STRING,
WF_OKEY TYPE STRING,
REF_RFCDIA TYPE STRING,END OF T_EKKO_STR. DATA: WA_SMMAIN_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_SMMAIN_STR-MANDT sy-vline
WA_SMMAIN_STR-ID sy-vline
WA_SMMAIN_STR-LOGSYS sy-vline
WA_SMMAIN_STR-IDTYPE sy-vline
WA_SMMAIN_STR-SDATE sy-vline
WA_SMMAIN_STR-EDATE sy-vline
WA_SMMAIN_STR-STIME sy-vline
WA_SMMAIN_STR-ETIME sy-vline
WA_SMMAIN_STR-UNAME sy-vline
WA_SMMAIN_STR-APLSTAT sy-vline
WA_SMMAIN_STR-TIMESTAMP sy-vline
WA_SMMAIN_STR-MASTERID sy-vline
WA_SMMAIN_STR-WF_WITEM sy-vline
WA_SMMAIN_STR-FUNCTION sy-vline
WA_SMMAIN_STR-TCODE sy-vline
WA_SMMAIN_STR-ACTIVITY sy-vline
WA_SMMAIN_STR-VARIANTE sy-vline
WA_SMMAIN_STR-REPID sy-vline
WA_SMMAIN_STR-APPLICATION sy-vline
WA_SMMAIN_STR-TESTFLAG sy-vline
WA_SMMAIN_STR-NR_OF_OBJECTS sy-vline
WA_SMMAIN_STR-MASTERAPPL sy-vline
WA_SMMAIN_STR-BATCHFLAG sy-vline
WA_SMMAIN_STR-SELKRITFLAG sy-vline
WA_SMMAIN_STR-MESSAGEFLAG sy-vline
WA_SMMAIN_STR-PARAMETERFLAG sy-vline
WA_SMMAIN_STR-RESULTLISTFLAG sy-vline
WA_SMMAIN_STR-STATUSFLAG sy-vline
WA_SMMAIN_STR-SPECIFICFLAG sy-vline
WA_SMMAIN_STR-SPOOLLISTFLAG sy-vline
WA_SMMAIN_STR-EXTFLAG sy-vline
WA_SMMAIN_STR-WFFLAG sy-vline
WA_SMMAIN_STR-WORKLISTFLAG sy-vline
WA_SMMAIN_STR-POSTING_FINISHED sy-vline
WA_SMMAIN_STR-ERROR_IN_POSTING sy-vline
WA_SMMAIN_STR-ONELISTFLAG sy-vline
WA_SMMAIN_STR-REF_ID sy-vline
WA_SMMAIN_STR-REF_RFCDEST sy-vline
WA_SMMAIN_STR-REF_WF_WITEM sy-vline
WA_SMMAIN_STR-SEND_MAIL sy-vline
WA_SMMAIN_STR-CONF_MAIL_USER sy-vline
WA_SMMAIN_STR-WF_EVENT_DELAYED sy-vline
WA_SMMAIN_STR-MAIL_CONTENT sy-vline
WA_SMMAIN_STR-WF_OKEY sy-vline
WA_SMMAIN_STR-REF_RFCDIA sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.