ABAP Select data from SAP table RPCXXXXX 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 RPCXXXXX 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 RPCXXXXX. 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 RPCXXXXX 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_RPCXXXXX TYPE STANDARD TABLE OF RPCXXXXX,
      WA_RPCXXXXX TYPE RPCXXXXX,
      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: <RPCXXXXX> TYPE RPCXXXXX.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM RPCXXXXX
*  INTO TABLE @DATA(IT_RPCXXXXX2).
*--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_RPCXXXXX INDEX 1 INTO DATA(WA_RPCXXXXX2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_RPCXXXXX ASSIGNING <RPCXXXXX>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<RPCXXXXX>-DATUM = 1.
<RPCXXXXX>-JAHR = 1.
<RPCXXXXX>-KR_FELD1 = 1.
<RPCXXXXX>-KR_FELD2 = 1.
<RPCXXXXX>-KR_FELD3 = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_RPCXXXXX-KR_FELD4, sy-vline,
WA_RPCXXXXX-KR_FELD5, sy-vline,
WA_RPCXXXXX-DATUM2, sy-vline,
WA_RPCXXXXX-KR_FELD, sy-vline,
WA_RPCXXXXX-JAHR2, sy-vline,
WA_RPCXXXXX-KR_FELD6, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RPCXXXXX 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_RPCXXXXX 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_RPCXXXXX INTO WA_RPCXXXXX. *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 GJAHR, internal->external for field JAHR CALL FUNCTION 'CONVERSION_EXIT_GJAHR_OUTPUT' EXPORTING input = WA_RPCXXXXX-JAHR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RPCXXXXX-JAHR.
WRITE:/ 'New Value:', ld_input.

*Conversion exit GJAHR, internal->external for field JAHR2 CALL FUNCTION 'CONVERSION_EXIT_GJAHR_OUTPUT' EXPORTING input = WA_RPCXXXXX-JAHR2 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RPCXXXXX-JAHR2.
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_RPCXXXXX_STR,
DATUM TYPE STRING,
JAHR TYPE STRING,
KR_FELD1 TYPE STRING,
KR_FELD2 TYPE STRING,
KR_FELD3 TYPE STRING,
KR_FELD4 TYPE STRING,
KR_FELD5 TYPE STRING,
DATUM2 TYPE STRING,
KR_FELD TYPE STRING,
JAHR2 TYPE STRING,
KR_FELD6 TYPE STRING,
KR_FELD7 TYPE STRING,
KR_FELD8 TYPE STRING,
KR_FELD9 TYPE STRING,
KR_FELD10 TYPE STRING,
KR_FELD11 TYPE STRING,
PROGNA TYPE STRING,
VARNA TYPE STRING,
NOPNR TYPE STRING,
NOJOB TYPE STRING,
NJBMJ TYPE STRING,
JOBTT TYPE STRING,
NPRMJ TYPE STRING,
MJYES TYPE STRING,
MJNO TYPE STRING,
MCYES TYPE STRING,
MCNO TYPE STRING,
IMYES TYPE STRING,
IMNO TYPE STRING,
CHOICE1 TYPE STRING,
CHOICE2 TYPE STRING,
CHOICE3 TYPE STRING,
CHOICE4 TYPE STRING,
CHOICE5 TYPE STRING,
CHOICE6 TYPE STRING,
CHOICE7 TYPE STRING,
CHOICE8 TYPE STRING,
CHOICE9 TYPE STRING,
HR_TP_011V TYPE STRING,
DISKONT TYPE STRING,
LINE_COUNT TYPE STRING,
COLU_COUNT TYPE STRING,
TMTAG TYPE STRING,
TXT50_011A TYPE STRING,
MF08DATU TYPE STRING,END OF T_EKKO_STR. DATA: WA_RPCXXXXX_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_RPCXXXXX_STR-DATUM sy-vline
WA_RPCXXXXX_STR-JAHR sy-vline
WA_RPCXXXXX_STR-KR_FELD1 sy-vline
WA_RPCXXXXX_STR-KR_FELD2 sy-vline
WA_RPCXXXXX_STR-KR_FELD3 sy-vline
WA_RPCXXXXX_STR-KR_FELD4 sy-vline
WA_RPCXXXXX_STR-KR_FELD5 sy-vline
WA_RPCXXXXX_STR-DATUM2 sy-vline
WA_RPCXXXXX_STR-KR_FELD sy-vline
WA_RPCXXXXX_STR-JAHR2 sy-vline
WA_RPCXXXXX_STR-KR_FELD6 sy-vline
WA_RPCXXXXX_STR-KR_FELD7 sy-vline
WA_RPCXXXXX_STR-KR_FELD8 sy-vline
WA_RPCXXXXX_STR-KR_FELD9 sy-vline
WA_RPCXXXXX_STR-KR_FELD10 sy-vline
WA_RPCXXXXX_STR-KR_FELD11 sy-vline
WA_RPCXXXXX_STR-PROGNA sy-vline
WA_RPCXXXXX_STR-VARNA sy-vline
WA_RPCXXXXX_STR-NOPNR sy-vline
WA_RPCXXXXX_STR-NOJOB sy-vline
WA_RPCXXXXX_STR-NJBMJ sy-vline
WA_RPCXXXXX_STR-JOBTT sy-vline
WA_RPCXXXXX_STR-NPRMJ sy-vline
WA_RPCXXXXX_STR-MJYES sy-vline
WA_RPCXXXXX_STR-MJNO sy-vline
WA_RPCXXXXX_STR-MCYES sy-vline
WA_RPCXXXXX_STR-MCNO sy-vline
WA_RPCXXXXX_STR-IMYES sy-vline
WA_RPCXXXXX_STR-IMNO sy-vline
WA_RPCXXXXX_STR-CHOICE1 sy-vline
WA_RPCXXXXX_STR-CHOICE2 sy-vline
WA_RPCXXXXX_STR-CHOICE3 sy-vline
WA_RPCXXXXX_STR-CHOICE4 sy-vline
WA_RPCXXXXX_STR-CHOICE5 sy-vline
WA_RPCXXXXX_STR-CHOICE6 sy-vline
WA_RPCXXXXX_STR-CHOICE7 sy-vline
WA_RPCXXXXX_STR-CHOICE8 sy-vline
WA_RPCXXXXX_STR-CHOICE9 sy-vline
WA_RPCXXXXX_STR-HR_TP_011V sy-vline
WA_RPCXXXXX_STR-DISKONT sy-vline
WA_RPCXXXXX_STR-LINE_COUNT sy-vline
WA_RPCXXXXX_STR-COLU_COUNT sy-vline
WA_RPCXXXXX_STR-TMTAG sy-vline
WA_RPCXXXXX_STR-TXT50_011A sy-vline
WA_RPCXXXXX_STR-MF08DATU sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.