ABAP Select data from SAP table SXI_MSG_SELECT 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 SXI_MSG_SELECT 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 SXI_MSG_SELECT. 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 SXI_MSG_SELECT 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_SXI_MSG_SELECT TYPE STANDARD TABLE OF SXI_MSG_SELECT,
      WA_SXI_MSG_SELECT TYPE SXI_MSG_SELECT,
      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: <SXI_MSG_SELECT> TYPE SXI_MSG_SELECT.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM SXI_MSG_SELECT
*  INTO TABLE @DATA(IT_SXI_MSG_SELECT2).
*--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_SXI_MSG_SELECT INDEX 1 INTO DATA(WA_SXI_MSG_SELECT2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_SXI_MSG_SELECT ASSIGNING <SXI_MSG_SELECT>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<SXI_MSG_SELECT>-SENDDATE = 1.
<SXI_MSG_SELECT>-SENDTIME = 1.
<SXI_MSG_SELECT>-SND2DATE = 1.
<SXI_MSG_SELECT>-SND2TIME = 1.
<SXI_MSG_SELECT>-EXEDATE = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_SXI_MSG_SELECT-EXETIME, sy-vline,
WA_SXI_MSG_SELECT-EXE2DATE, sy-vline,
WA_SXI_MSG_SELECT-EXE2TIME, sy-vline,
WA_SXI_MSG_SELECT-INITDATE, sy-vline,
WA_SXI_MSG_SELECT-INITTIME, sy-vline,
WA_SXI_MSG_SELECT-INI2DATE, sy-vline.
ENDLOOP. *Add any further fields from structure WA_SXI_MSG_SELECT 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_SXI_MSG_SELECT 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_SXI_MSG_SELECT INTO WA_SXI_MSG_SELECT. *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_SXI_MSG_SELECT_STR,
SENDDATE TYPE STRING,
SENDTIME TYPE STRING,
SND2DATE TYPE STRING,
SND2TIME TYPE STRING,
EXEDATE TYPE STRING,
EXETIME TYPE STRING,
EXE2DATE TYPE STRING,
EXE2TIME TYPE STRING,
INITDATE TYPE STRING,
INITTIME TYPE STRING,
INI2DATE TYPE STRING,
INI2TIME TYPE STRING,
PIDS TYPE STRING,
CLIENT TYPE STRING,
ADMINUSER TYPE STRING,
ADAPTER_TYPE TYPE STRING,
ADAPTER_TYPE_IN TYPE STRING,
ADAPTER_STATE TYPE STRING,
SENDER_RECEIVER TYPE STRING,
OB_SYSTEM TYPE STRING,
OB_NS TYPE STRING,
OB_NAME TYPE STRING,
OB_PARTY TYPE STRING,
OB_PARTY_TYPE TYPE STRING,
OB_PARTY_AGENCY TYPE STRING,
OB_OPERATION TYPE STRING,
IB_SYSTEM TYPE STRING,
IB_NS TYPE STRING,
IB_NAME TYPE STRING,
IB_PARTY TYPE STRING,
IB_PARTY_TYPE TYPE STRING,
IB_PARTY_AGENCY TYPE STRING,
IB_OPERATION TYPE STRING,
MSGGUID_TAB TYPE STRING,
ERRCAT TYPE STRING,
ERRCODE TYPE STRING,
MSGSTATE_TAB TYPE STRING,
QUEUEID TYPE STRING,
EO_REFID TYPE STRING,
EO_REFVAL TYPE STRING,
MAN_RETRYCO TYPE STRING,
MSG_TYPE TYPE STRING,
PARENT_MSG_TAB TYPE STRING,
REF_TO_MSG_TAB TYPE STRING,
QUEUEGUID TYPE STRING,
MANUALSTAT TYPE STRING,
EXTR_DATA TYPE STRING,
USE_OR TYPE STRING,
ERRLABEL TYPE STRING,END OF T_EKKO_STR. DATA: WA_SXI_MSG_SELECT_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_SXI_MSG_SELECT_STR-SENDDATE sy-vline
WA_SXI_MSG_SELECT_STR-SENDTIME sy-vline
WA_SXI_MSG_SELECT_STR-SND2DATE sy-vline
WA_SXI_MSG_SELECT_STR-SND2TIME sy-vline
WA_SXI_MSG_SELECT_STR-EXEDATE sy-vline
WA_SXI_MSG_SELECT_STR-EXETIME sy-vline
WA_SXI_MSG_SELECT_STR-EXE2DATE sy-vline
WA_SXI_MSG_SELECT_STR-EXE2TIME sy-vline
WA_SXI_MSG_SELECT_STR-INITDATE sy-vline
WA_SXI_MSG_SELECT_STR-INITTIME sy-vline
WA_SXI_MSG_SELECT_STR-INI2DATE sy-vline
WA_SXI_MSG_SELECT_STR-INI2TIME sy-vline
WA_SXI_MSG_SELECT_STR-PIDS sy-vline
WA_SXI_MSG_SELECT_STR-CLIENT sy-vline
WA_SXI_MSG_SELECT_STR-ADMINUSER sy-vline
WA_SXI_MSG_SELECT_STR-ADAPTER_TYPE sy-vline
WA_SXI_MSG_SELECT_STR-ADAPTER_TYPE_IN sy-vline
WA_SXI_MSG_SELECT_STR-ADAPTER_STATE sy-vline
WA_SXI_MSG_SELECT_STR-SENDER_RECEIVER sy-vline
WA_SXI_MSG_SELECT_STR-OB_SYSTEM sy-vline
WA_SXI_MSG_SELECT_STR-OB_NS sy-vline
WA_SXI_MSG_SELECT_STR-OB_NAME sy-vline
WA_SXI_MSG_SELECT_STR-OB_PARTY sy-vline
WA_SXI_MSG_SELECT_STR-OB_PARTY_TYPE sy-vline
WA_SXI_MSG_SELECT_STR-OB_PARTY_AGENCY sy-vline
WA_SXI_MSG_SELECT_STR-OB_OPERATION sy-vline
WA_SXI_MSG_SELECT_STR-IB_SYSTEM sy-vline
WA_SXI_MSG_SELECT_STR-IB_NS sy-vline
WA_SXI_MSG_SELECT_STR-IB_NAME sy-vline
WA_SXI_MSG_SELECT_STR-IB_PARTY sy-vline
WA_SXI_MSG_SELECT_STR-IB_PARTY_TYPE sy-vline
WA_SXI_MSG_SELECT_STR-IB_PARTY_AGENCY sy-vline
WA_SXI_MSG_SELECT_STR-IB_OPERATION sy-vline
WA_SXI_MSG_SELECT_STR-MSGGUID_TAB sy-vline
WA_SXI_MSG_SELECT_STR-ERRCAT sy-vline
WA_SXI_MSG_SELECT_STR-ERRCODE sy-vline
WA_SXI_MSG_SELECT_STR-MSGSTATE_TAB sy-vline
WA_SXI_MSG_SELECT_STR-QUEUEID sy-vline
WA_SXI_MSG_SELECT_STR-EO_REFID sy-vline
WA_SXI_MSG_SELECT_STR-EO_REFVAL sy-vline
WA_SXI_MSG_SELECT_STR-MAN_RETRYCO sy-vline
WA_SXI_MSG_SELECT_STR-MSG_TYPE sy-vline
WA_SXI_MSG_SELECT_STR-PARENT_MSG_TAB sy-vline
WA_SXI_MSG_SELECT_STR-REF_TO_MSG_TAB sy-vline
WA_SXI_MSG_SELECT_STR-QUEUEGUID sy-vline
WA_SXI_MSG_SELECT_STR-MANUALSTAT sy-vline
WA_SXI_MSG_SELECT_STR-EXTR_DATA sy-vline
WA_SXI_MSG_SELECT_STR-USE_OR sy-vline
WA_SXI_MSG_SELECT_STR-ERRLABEL sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.