ABAP Select data from SAP table RCGLSELDAT 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 RCGLSELDAT 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 RCGLSELDAT. 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 RCGLSELDAT 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_RCGLSELDAT TYPE STANDARD TABLE OF RCGLSELDAT,
      WA_RCGLSELDAT TYPE RCGLSELDAT,
      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: <RCGLSELDAT> TYPE RCGLSELDAT.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM RCGLSELDAT
*  INTO TABLE @DATA(IT_RCGLSELDAT2).
*--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_RCGLSELDAT INDEX 1 INTO DATA(WA_RCGLSELDAT2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_RCGLSELDAT ASSIGNING <RCGLSELDAT>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<RCGLSELDAT>-PHRCOUNT = 1.
<RCGLSELDAT>-RVLID = 1.
<RCGLSELDAT>-LANGU = 1.
<RCGLSELDAT>-VACLID = 1.
<RCGLSELDAT>-RECNTRH = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_RCGLSELDAT-ACTNTRH, sy-vline,
WA_RCGLSELDAT-RECNTVH, sy-vline,
WA_RCGLSELDAT-ACTNTVH, sy-vline,
WA_RCGLSELDAT-RECNTVA, sy-vline,
WA_RCGLSELDAT-ACTNTVA, sy-vline,
WA_RCGLSELDAT-ESNTFLGTVA, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RCGLSELDAT 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_RCGLSELDAT 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_RCGLSELDAT INTO WA_RCGLSELDAT. *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 ISOLA, internal->external for field LANGU CALL FUNCTION 'CONVERSION_EXIT_ISOLA_OUTPUT' EXPORTING input = WA_RCGLSELDAT-LANGU IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RCGLSELDAT-LANGU.
WRITE:/ 'New Value:', ld_input.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

*Conversion exit MATN1, internal->external for field MATNR CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' EXPORTING input = WA_RCGLSELDAT-MATNR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RCGLSELDAT-MATNR.
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_RCGLSELDAT_STR,
PHRCOUNT TYPE STRING,
RVLID TYPE STRING,
LANGU TYPE STRING,
VACLID TYPE STRING,
RECNTRH TYPE STRING,
ACTNTRH TYPE STRING,
RECNTVH TYPE STRING,
ACTNTVH TYPE STRING,
RECNTVA TYPE STRING,
ACTNTVA TYPE STRING,
ESNTFLGTVA TYPE STRING,
RECNTVP TYPE STRING,
ACTNTVP TYPE STRING,
RECNTLP TYPE STRING,
ACTNTLP TYPE STRING,
RECNTDF TYPE STRING,
ACTNTDF TYPE STRING,
RECNTDS TYPE STRING,
ACTNTDS TYPE STRING,
RECNTDU TYPE STRING,
ACTNTDU TYPE STRING,
RECNT0F TYPE STRING,
ACTNT0F TYPE STRING,
DISCRETE TYPE STRING,
RTIME_FROM TYPE STRING,
RTIME_TO TYPE STRING,
VAL_DATE TYPE STRING,
LAST_VER TYPE STRING,
LAST_GENTIME TYPE STRING,
MARK_CHANG TYPE STRING,
REL_CHANGE TYPE STRING,
GRP_START TYPE STRING,
SYM_COUNT TYPE STRING,
LENID TYPE STRING,
ESTCAT TYPE STRING,
NAMEMSTDF TYPE STRING,
RECNMSTDF TYPE STRING,
NAMEMSTDU TYPE STRING,
RECNMSTDU TYPE STRING,
DPOT TYPE STRING,
USAGECHECK TYPE STRING,
PARHIER TYPE STRING,
PAROBJ TYPE STRING,
STACTFLG TYPE STRING,
STFLG TYPE STRING,
OBJTYPE TYPE STRING,
RECNFORM TYPE STRING,
RECNINP TYPE STRING,
RECNINA TYPE STRING,
RECNINS TYPE STRING,
RECNINM TYPE STRING,
RECNOUP TYPE STRING,
RECNOUA TYPE STRING,
RECNOUS TYPE STRING,
RECNOUM TYPE STRING,
RECNCLI TYPE STRING,
RECNCMP TYPE STRING,
RECNAPPLSCOPE TYPE STRING,
ACTNAPPLSCOPE TYPE STRING,
MATNR TYPE STRING,
LWDG TYPE STRING,
MARKCHECK TYPE STRING,END OF T_EKKO_STR. DATA: WA_RCGLSELDAT_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_RCGLSELDAT_STR-PHRCOUNT sy-vline
WA_RCGLSELDAT_STR-RVLID sy-vline
WA_RCGLSELDAT_STR-LANGU sy-vline
WA_RCGLSELDAT_STR-VACLID sy-vline
WA_RCGLSELDAT_STR-RECNTRH sy-vline
WA_RCGLSELDAT_STR-ACTNTRH sy-vline
WA_RCGLSELDAT_STR-RECNTVH sy-vline
WA_RCGLSELDAT_STR-ACTNTVH sy-vline
WA_RCGLSELDAT_STR-RECNTVA sy-vline
WA_RCGLSELDAT_STR-ACTNTVA sy-vline
WA_RCGLSELDAT_STR-ESNTFLGTVA sy-vline
WA_RCGLSELDAT_STR-RECNTVP sy-vline
WA_RCGLSELDAT_STR-ACTNTVP sy-vline
WA_RCGLSELDAT_STR-RECNTLP sy-vline
WA_RCGLSELDAT_STR-ACTNTLP sy-vline
WA_RCGLSELDAT_STR-RECNTDF sy-vline
WA_RCGLSELDAT_STR-ACTNTDF sy-vline
WA_RCGLSELDAT_STR-RECNTDS sy-vline
WA_RCGLSELDAT_STR-ACTNTDS sy-vline
WA_RCGLSELDAT_STR-RECNTDU sy-vline
WA_RCGLSELDAT_STR-ACTNTDU sy-vline
WA_RCGLSELDAT_STR-RECNT0F sy-vline
WA_RCGLSELDAT_STR-ACTNT0F sy-vline
WA_RCGLSELDAT_STR-DISCRETE sy-vline
WA_RCGLSELDAT_STR-RTIME_FROM sy-vline
WA_RCGLSELDAT_STR-RTIME_TO sy-vline
WA_RCGLSELDAT_STR-VAL_DATE sy-vline
WA_RCGLSELDAT_STR-LAST_VER sy-vline
WA_RCGLSELDAT_STR-LAST_GENTIME sy-vline
WA_RCGLSELDAT_STR-MARK_CHANG sy-vline
WA_RCGLSELDAT_STR-REL_CHANGE sy-vline
WA_RCGLSELDAT_STR-GRP_START sy-vline
WA_RCGLSELDAT_STR-SYM_COUNT sy-vline
WA_RCGLSELDAT_STR-LENID sy-vline
WA_RCGLSELDAT_STR-ESTCAT sy-vline
WA_RCGLSELDAT_STR-NAMEMSTDF sy-vline
WA_RCGLSELDAT_STR-RECNMSTDF sy-vline
WA_RCGLSELDAT_STR-NAMEMSTDU sy-vline
WA_RCGLSELDAT_STR-RECNMSTDU sy-vline
WA_RCGLSELDAT_STR-DPOT sy-vline
WA_RCGLSELDAT_STR-USAGECHECK sy-vline
WA_RCGLSELDAT_STR-PARHIER sy-vline
WA_RCGLSELDAT_STR-PAROBJ sy-vline
WA_RCGLSELDAT_STR-STACTFLG sy-vline
WA_RCGLSELDAT_STR-STFLG sy-vline
WA_RCGLSELDAT_STR-OBJTYPE sy-vline
WA_RCGLSELDAT_STR-RECNFORM sy-vline
WA_RCGLSELDAT_STR-RECNINP sy-vline
WA_RCGLSELDAT_STR-RECNINA sy-vline
WA_RCGLSELDAT_STR-RECNINS sy-vline
WA_RCGLSELDAT_STR-RECNINM sy-vline
WA_RCGLSELDAT_STR-RECNOUP sy-vline
WA_RCGLSELDAT_STR-RECNOUA sy-vline
WA_RCGLSELDAT_STR-RECNOUS sy-vline
WA_RCGLSELDAT_STR-RECNOUM sy-vline
WA_RCGLSELDAT_STR-RECNCLI sy-vline
WA_RCGLSELDAT_STR-RECNCMP sy-vline
WA_RCGLSELDAT_STR-RECNAPPLSCOPE sy-vline
WA_RCGLSELDAT_STR-ACTNAPPLSCOPE sy-vline
WA_RCGLSELDAT_STR-MATNR sy-vline
WA_RCGLSELDAT_STR-LWDG sy-vline
WA_RCGLSELDAT_STR-MARKCHECK sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.