ABAP Select data from SAP table RKAL1 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 RKAL1 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 RKAL1. 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 RKAL1 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_RKAL1 TYPE STANDARD TABLE OF RKAL1,
      WA_RKAL1 TYPE RKAL1,
      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: <RKAL1> TYPE RKAL1.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM RKAL1
*  INTO TABLE @DATA(IT_RKAL12).
*--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_RKAL1 INDEX 1 INTO DATA(WA_RKAL12).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_RKAL1 ASSIGNING <RKAL1>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<RKAL1>-GROUP = 1.
<RKAL1>-KOKRS = 1.
<RKAL1>-RLDNR = 1.
<RKAL1>-ERKRS = 1.
<RKAL1>-GRBEZEI = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_RKAL1-CYCLE, sy-vline,
WA_RKAL1-GLCYC, sy-vline,
WA_RKAL1-KSCYC, sy-vline,
WA_RKAL1-RKOKRS, sy-vline,
WA_RKAL1-RRLDNR, sy-vline,
WA_RKAL1-RERKRS, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RKAL1 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_RKAL1 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_RKAL1 INTO WA_RKAL1. *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 RLDNR CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_RKAL1-RLDNR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RKAL1-RLDNR.
WRITE:/ 'New Value:', ld_input.

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

*Conversion exit AC152, internal->external for field KGCSUM CALL FUNCTION 'CONVERSION_EXIT_AC152_OUTPUT' EXPORTING input = WA_RKAL1-KGCSUM IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RKAL1-KGCSUM.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field ERSCH_TXT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_RKAL1-ERSCH_TXT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RKAL1-ERSCH_TXT.
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_RKAL1_STR,
GROUP TYPE STRING,
KOKRS TYPE STRING,
RLDNR TYPE STRING,
ERKRS TYPE STRING,
GRBEZEI TYPE STRING,
CYCLE TYPE STRING,
GLCYC TYPE STRING,
KSCYC TYPE STRING,
RKOKRS TYPE STRING,
RRLDNR TYPE STRING,
RERKRS TYPE STRING,
RGLCYC TYPE STRING,
RKSCYC TYPE STRING,
RSDATE TYPE STRING,
CTXT TYPE STRING,
UTXT TYPE STRING,
STTEXT1 TYPE STRING,
RCDATATXT TYPE STRING,
CNFLAG TYPE STRING,
SNFLAG TYPE STRING,
SRULETXT TYPE STRING,
RRULETXT TYPE STRING,
IFTXT TYPE STRING,
FGTXT1 TYPE STRING,
FGTXT2 TYPE STRING,
FGTXT3 TYPE STRING,
FGFLG1 TYPE STRING,
FGFLG2 TYPE STRING,
FGFLG3 TYPE STRING,
GRTXT TYPE STRING,
GRTXTM TYPE STRING,
RGRTXT TYPE STRING,
RCDATAFLG TYPE STRING,
SIPTXT TYPE STRING,
KGALKPOS TYPE STRING,
KGALKMAX TYPE STRING,
KGCSUM TYPE STRING,
COPSEQ TYPE STRING,
SETHEADER TYPE STRING,
ITERATIVE TYPE STRING,
STATUS TYPE STRING,
KGASUM TYPE STRING,
ASACC_TXT TYPE STRING,
NORM_TXT TYPE STRING,
ABSCH_TXT TYPE STRING,
ABSCH_T TYPE STRING,
ERSCH_TXT TYPE STRING,
ERSCH_T TYPE STRING,
SUBSTID TYPE STRING,
RKE_SPLIT TYPE STRING,
RWEIGHT_TEXT TYPE STRING,
SWEIGHT_TEXT TYPE STRING,
RVARTEXT TYPE STRING,
NO_SRC_CE TYPE STRING,
ALL_ARTNR TYPE STRING,END OF T_EKKO_STR. DATA: WA_RKAL1_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_RKAL1_STR-GROUP sy-vline
WA_RKAL1_STR-KOKRS sy-vline
WA_RKAL1_STR-RLDNR sy-vline
WA_RKAL1_STR-ERKRS sy-vline
WA_RKAL1_STR-GRBEZEI sy-vline
WA_RKAL1_STR-CYCLE sy-vline
WA_RKAL1_STR-GLCYC sy-vline
WA_RKAL1_STR-KSCYC sy-vline
WA_RKAL1_STR-RKOKRS sy-vline
WA_RKAL1_STR-RRLDNR sy-vline
WA_RKAL1_STR-RERKRS sy-vline
WA_RKAL1_STR-RGLCYC sy-vline
WA_RKAL1_STR-RKSCYC sy-vline
WA_RKAL1_STR-RSDATE sy-vline
WA_RKAL1_STR-CTXT sy-vline
WA_RKAL1_STR-UTXT sy-vline
WA_RKAL1_STR-STTEXT1 sy-vline
WA_RKAL1_STR-RCDATATXT sy-vline
WA_RKAL1_STR-CNFLAG sy-vline
WA_RKAL1_STR-SNFLAG sy-vline
WA_RKAL1_STR-SRULETXT sy-vline
WA_RKAL1_STR-RRULETXT sy-vline
WA_RKAL1_STR-IFTXT sy-vline
WA_RKAL1_STR-FGTXT1 sy-vline
WA_RKAL1_STR-FGTXT2 sy-vline
WA_RKAL1_STR-FGTXT3 sy-vline
WA_RKAL1_STR-FGFLG1 sy-vline
WA_RKAL1_STR-FGFLG2 sy-vline
WA_RKAL1_STR-FGFLG3 sy-vline
WA_RKAL1_STR-GRTXT sy-vline
WA_RKAL1_STR-GRTXTM sy-vline
WA_RKAL1_STR-RGRTXT sy-vline
WA_RKAL1_STR-RCDATAFLG sy-vline
WA_RKAL1_STR-SIPTXT sy-vline
WA_RKAL1_STR-KGALKPOS sy-vline
WA_RKAL1_STR-KGALKMAX sy-vline
WA_RKAL1_STR-KGCSUM sy-vline
WA_RKAL1_STR-COPSEQ sy-vline
WA_RKAL1_STR-SETHEADER sy-vline
WA_RKAL1_STR-ITERATIVE sy-vline
WA_RKAL1_STR-STATUS sy-vline
WA_RKAL1_STR-KGASUM sy-vline
WA_RKAL1_STR-ASACC_TXT sy-vline
WA_RKAL1_STR-NORM_TXT sy-vline
WA_RKAL1_STR-ABSCH_TXT sy-vline
WA_RKAL1_STR-ABSCH_T sy-vline
WA_RKAL1_STR-ERSCH_TXT sy-vline
WA_RKAL1_STR-ERSCH_T sy-vline
WA_RKAL1_STR-SUBSTID sy-vline
WA_RKAL1_STR-RKE_SPLIT sy-vline
WA_RKAL1_STR-RWEIGHT_TEXT sy-vline
WA_RKAL1_STR-SWEIGHT_TEXT sy-vline
WA_RKAL1_STR-RVARTEXT sy-vline
WA_RKAL1_STR-NO_SRC_CE sy-vline
WA_RKAL1_STR-ALL_ARTNR sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.