ABAP Select data from SAP table RNF31 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 RNF31 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 RNF31. 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 RNF31 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_RNF31 TYPE STANDARD TABLE OF RNF31,
      WA_RNF31 TYPE RNF31,
      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: <RNF31> TYPE RNF31.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM RNF31
*  INTO TABLE @DATA(IT_RNF312).
*--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_RNF31 INDEX 1 INTO DATA(WA_RNF312).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_RNF31 ASSIGNING <RNF31>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<RNF31>-FALNR = 1.
<RNF31>-LFDNR = 1.
<RNF31>-KOSTR = 1.
<RNF31>-UNTGR = 1.
<RNF31>-NAME1KTR = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_RNF31-NAME2KTR, sy-vline,
WA_RNF31-NAME3KTR, sy-vline,
WA_RNF31-NAMEKURZ, sy-vline,
WA_RNF31-LANDKTR, sy-vline,
WA_RNF31-PSTLZKTR, sy-vline,
WA_RNF31-ORTKTR, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RNF31 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_RNF31 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_RNF31 INTO WA_RNF31. *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 FALNR CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_RNF31-FALNR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RNF31-FALNR.
WRITE:/ 'New Value:', ld_input.

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

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

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

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

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

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

*Conversion exit RANGF, internal->external for field RANGF CALL FUNCTION 'CONVERSION_EXIT_RANGF_OUTPUT' EXPORTING input = WA_RNF31-RANGF IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RNF31-RANGF.
WRITE:/ 'New Value:', ld_input.

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

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

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

*Conversion exit ISOLA, internal->external for field SPRASAR CALL FUNCTION 'CONVERSION_EXIT_ISOLA_OUTPUT' EXPORTING input = WA_RNF31-SPRASAR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RNF31-SPRASAR.
WRITE:/ 'New Value:', ld_input.

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

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

*Conversion exit ALPHA, internal->external for field ADRNR CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_RNF31-ADRNR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RNF31-ADRNR.
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_RNF31_STR,
FALNR TYPE STRING,
LFDNR TYPE STRING,
KOSTR TYPE STRING,
UNTGR TYPE STRING,
NAME1KTR TYPE STRING,
NAME2KTR TYPE STRING,
NAME3KTR TYPE STRING,
NAMEKURZ TYPE STRING,
LANDKTR TYPE STRING,
PSTLZKTR TYPE STRING,
ORTKTR TYPE STRING,
ORT2KTR TYPE STRING,
STRASKTR TYPE STRING,
TELFNKTR TYPE STRING,
TELFXKTR TYPE STRING,
INSTNRKTR TYPE STRING,
TELEXKTR TYPE STRING,
KUNNR TYPE STRING,
MGART TYPE STRING,
MTEXT TYPE STRING,
VERNR TYPE STRING,
VERAB TYPE STRING,
VERBI TYPE STRING,
VERGE TYPE STRING,
VERNN TYPE STRING,
VERVN TYPE STRING,
VERTI TYPE STRING,
VERNZ TYPE STRING,
VERVW TYPE STRING,
CONCATPAT TYPE STRING,
VERGB TYPE STRING,
VERLA TYPE STRING,
VERPL TYPE STRING,
VEROR TYPE STRING,
VERST TYPE STRING,
VERTE TYPE STRING,
VERSV TYPE STRING,
BERUF TYPE STRING,
AGNAM TYPE STRING,
AGLAN TYPE STRING,
AGPLZ TYPE STRING,
AGORT TYPE STRING,
AGSTR TYPE STRING,
SZDEB TYPE STRING,
AKTKZ TYPE STRING,
PFLZZ TYPE STRING,
NZZGR TYPE STRING,
NZZGT_TXT TYPE STRING,
BTRZZ TYPE STRING,
VERZZ TYPE STRING,
VTAGE TYPE STRING,
KZTXTVVF TYPE STRING,
RANGF TYPE STRING,
PFACHKTR TYPE STRING,
PLZPFKTR TYPE STRING,
ZFDT TYPE STRING,
VKVST TYPE STRING,
VKVSE TYPE STRING,
VKNRA TYPE STRING,
KVMAN TYPE STRING,
VCEND TYPE STRING,
VTRTY TYPE STRING,
VKNUM TYPE STRING,
KVDAT TYPE STRING,
KKFAL TYPE STRING,
ZENTRALE TYPE STRING,
ZNAME1KTR TYPE STRING,
ZNAME2KTR TYPE STRING,
ZNAME3KTR TYPE STRING,
ZNAMEKURZ TYPE STRING,
ZLANDKTR TYPE STRING,
ZPSTLZKTR TYPE STRING,
ZPLZPFKTR TYPE STRING,
ZPFACHKTR TYPE STRING,
ZORTKTR TYPE STRING,
ZORT2KTR TYPE STRING,
ZSTRASKTR TYPE STRING,
ZTELFNKTR TYPE STRING,
ZTELFXKTR TYPE STRING,
ZINSTNRKTR TYPE STRING,
ZTELEXKTR TYPE STRING,
ZPOST TYPE STRING,
NAME1AR TYPE STRING,
NAME2AR TYPE STRING,
NAME3AR TYPE STRING,
ORT01AR TYPE STRING,
PSTLZAR TYPE STRING,
ORT02AR TYPE STRING,
PFACHAR TYPE STRING,
PSTL2AR TYPE STRING,
LAND1AR TYPE STRING,
STRASAR TYPE STRING,
TELF1AR TYPE STRING,
TELFXAR TYPE STRING,
TELX1AR TYPE STRING,
SPRASAR TYPE STRING,
ANREDAR TYPE STRING,
SORTLAR TYPE STRING,
CPDKT TYPE STRING,
CONTRACT_IND TYPE STRING,
BTRZZ_WAERS TYPE STRING,
ASL TYPE STRING,
ZTERM TYPE STRING,
VTEXT TYPE STRING,
XEZER TYPE STRING,
ADRNR TYPE STRING,END OF T_EKKO_STR. DATA: WA_RNF31_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_RNF31_STR-FALNR sy-vline
WA_RNF31_STR-LFDNR sy-vline
WA_RNF31_STR-KOSTR sy-vline
WA_RNF31_STR-UNTGR sy-vline
WA_RNF31_STR-NAME1KTR sy-vline
WA_RNF31_STR-NAME2KTR sy-vline
WA_RNF31_STR-NAME3KTR sy-vline
WA_RNF31_STR-NAMEKURZ sy-vline
WA_RNF31_STR-LANDKTR sy-vline
WA_RNF31_STR-PSTLZKTR sy-vline
WA_RNF31_STR-ORTKTR sy-vline
WA_RNF31_STR-ORT2KTR sy-vline
WA_RNF31_STR-STRASKTR sy-vline
WA_RNF31_STR-TELFNKTR sy-vline
WA_RNF31_STR-TELFXKTR sy-vline
WA_RNF31_STR-INSTNRKTR sy-vline
WA_RNF31_STR-TELEXKTR sy-vline
WA_RNF31_STR-KUNNR sy-vline
WA_RNF31_STR-MGART sy-vline
WA_RNF31_STR-MTEXT sy-vline
WA_RNF31_STR-VERNR sy-vline
WA_RNF31_STR-VERAB sy-vline
WA_RNF31_STR-VERBI sy-vline
WA_RNF31_STR-VERGE sy-vline
WA_RNF31_STR-VERNN sy-vline
WA_RNF31_STR-VERVN sy-vline
WA_RNF31_STR-VERTI sy-vline
WA_RNF31_STR-VERNZ sy-vline
WA_RNF31_STR-VERVW sy-vline
WA_RNF31_STR-CONCATPAT sy-vline
WA_RNF31_STR-VERGB sy-vline
WA_RNF31_STR-VERLA sy-vline
WA_RNF31_STR-VERPL sy-vline
WA_RNF31_STR-VEROR sy-vline
WA_RNF31_STR-VERST sy-vline
WA_RNF31_STR-VERTE sy-vline
WA_RNF31_STR-VERSV sy-vline
WA_RNF31_STR-BERUF sy-vline
WA_RNF31_STR-AGNAM sy-vline
WA_RNF31_STR-AGLAN sy-vline
WA_RNF31_STR-AGPLZ sy-vline
WA_RNF31_STR-AGORT sy-vline
WA_RNF31_STR-AGSTR sy-vline
WA_RNF31_STR-SZDEB sy-vline
WA_RNF31_STR-AKTKZ sy-vline
WA_RNF31_STR-PFLZZ sy-vline
WA_RNF31_STR-NZZGR sy-vline
WA_RNF31_STR-NZZGT_TXT sy-vline
WA_RNF31_STR-BTRZZ sy-vline
WA_RNF31_STR-VERZZ sy-vline
WA_RNF31_STR-VTAGE sy-vline
WA_RNF31_STR-KZTXTVVF sy-vline
WA_RNF31_STR-RANGF sy-vline
WA_RNF31_STR-PFACHKTR sy-vline
WA_RNF31_STR-PLZPFKTR sy-vline
WA_RNF31_STR-ZFDT sy-vline
WA_RNF31_STR-VKVST sy-vline
WA_RNF31_STR-VKVSE sy-vline
WA_RNF31_STR-VKNRA sy-vline
WA_RNF31_STR-KVMAN sy-vline
WA_RNF31_STR-VCEND sy-vline
WA_RNF31_STR-VTRTY sy-vline
WA_RNF31_STR-VKNUM sy-vline
WA_RNF31_STR-KVDAT sy-vline
WA_RNF31_STR-KKFAL sy-vline
WA_RNF31_STR-ZENTRALE sy-vline
WA_RNF31_STR-ZNAME1KTR sy-vline
WA_RNF31_STR-ZNAME2KTR sy-vline
WA_RNF31_STR-ZNAME3KTR sy-vline
WA_RNF31_STR-ZNAMEKURZ sy-vline
WA_RNF31_STR-ZLANDKTR sy-vline
WA_RNF31_STR-ZPSTLZKTR sy-vline
WA_RNF31_STR-ZPLZPFKTR sy-vline
WA_RNF31_STR-ZPFACHKTR sy-vline
WA_RNF31_STR-ZORTKTR sy-vline
WA_RNF31_STR-ZORT2KTR sy-vline
WA_RNF31_STR-ZSTRASKTR sy-vline
WA_RNF31_STR-ZTELFNKTR sy-vline
WA_RNF31_STR-ZTELFXKTR sy-vline
WA_RNF31_STR-ZINSTNRKTR sy-vline
WA_RNF31_STR-ZTELEXKTR sy-vline
WA_RNF31_STR-ZPOST sy-vline
WA_RNF31_STR-NAME1AR sy-vline
WA_RNF31_STR-NAME2AR sy-vline
WA_RNF31_STR-NAME3AR sy-vline
WA_RNF31_STR-ORT01AR sy-vline
WA_RNF31_STR-PSTLZAR sy-vline
WA_RNF31_STR-ORT02AR sy-vline
WA_RNF31_STR-PFACHAR sy-vline
WA_RNF31_STR-PSTL2AR sy-vline
WA_RNF31_STR-LAND1AR sy-vline
WA_RNF31_STR-STRASAR sy-vline
WA_RNF31_STR-TELF1AR sy-vline
WA_RNF31_STR-TELFXAR sy-vline
WA_RNF31_STR-TELX1AR sy-vline
WA_RNF31_STR-SPRASAR sy-vline
WA_RNF31_STR-ANREDAR sy-vline
WA_RNF31_STR-SORTLAR sy-vline
WA_RNF31_STR-CPDKT sy-vline
WA_RNF31_STR-CONTRACT_IND sy-vline
WA_RNF31_STR-BTRZZ_WAERS sy-vline
WA_RNF31_STR-ASL sy-vline
WA_RNF31_STR-ZTERM sy-vline
WA_RNF31_STR-VTEXT sy-vline
WA_RNF31_STR-XEZER sy-vline
WA_RNF31_STR-ADRNR sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.