ABAP Select data from SAP table RFPP1 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 RFPP1 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 RFPP1. 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 RFPP1 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_RFPP1 TYPE STANDARD TABLE OF RFPP1,
      WA_RFPP1 TYPE RFPP1,
      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: <RFPP1> TYPE RFPP1.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM RFPP1
*  INTO TABLE @DATA(IT_RFPP12).
*--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_RFPP1 INDEX 1 INTO DATA(WA_RFPP12).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_RFPP1 ASSIGNING <RFPP1>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<RFPP1>-GPART = 1.
<RFPP1>-VKONT = 1.
<RFPP1>-VTREF = 1.
<RFPP1>-BUKRS = 1.
<RFPP1>-INVID = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_RFPP1-BCONT, sy-vline,
WA_RFPP1-STAT1, sy-vline,
WA_RFPP1-STAT2, sy-vline,
WA_RFPP1-STAT3, sy-vline,
WA_RFPP1-STAT4, sy-vline,
WA_RFPP1-STAT9, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RFPP1 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_RFPP1 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_RFPP1 INTO WA_RFPP1. *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 GPART CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_RFPP1-GPART IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFPP1-GPART.
WRITE:/ 'New Value:', ld_input.

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

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

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

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

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

*Conversion exit ALPHA, internal->external for field PPKEY CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_RFPP1-PPKEY IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFPP1-PPKEY.
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_RFPP1_STR,
GPART TYPE STRING,
VKONT TYPE STRING,
VTREF TYPE STRING,
BUKRS TYPE STRING,
INVID TYPE STRING,
BCONT TYPE STRING,
STAT1 TYPE STRING,
STAT2 TYPE STRING,
STAT3 TYPE STRING,
STAT4 TYPE STRING,
STAT9 TYPE STRING,
STATM TYPE STRING,
STATP TYPE STRING,
STATP2P TYPE STRING,
STATMD TYPE STRING,
FAEDN TYPE STRING,
XAWOP TYPE STRING,
XAWAP TYPE STRING,
XPREV TYPE STRING,
LTEXT TYPE STRING,
LTEXT2 TYPE STRING,
DOCT1 TYPE STRING,
DUE_DATE TYPE STRING,
DUE_DATE_LOW TYPE STRING,
DUE_DATE_HIGH TYPE STRING,
DOC_DATE_LOW TYPE STRING,
DOC_DATE_HIGH TYPE STRING,
CURRENCY TYPE STRING,
BETRW TYPE STRING,
OBETW TYPE STRING,
GBETW TYPE STRING,
NEBTR TYPE STRING,
EMBVT TYPE STRING,
EMCRD TYPE STRING,
AMOUNT TYPE STRING,
NON_PAYABLE TYPE STRING,
STATUS TYPE STRING,
OPENAMOUNT TYPE STRING,
HBTRW TYPE STRING,
DELTA TYPE STRING,
XCLEA TYPE STRING,
PYMETC TYPE STRING,
PYMETU TYPE STRING,
PYMETE TYPE STRING,
PYMETK TYPE STRING,
CVVAL TYPE STRING,
CVVST TYPE STRING,
DISPUTE_AMOUNT TYPE STRING,
DISPUTE_CURR TYPE STRING,
AGENT_ACTIVE TYPE STRING,
BETR1 TYPE STRING,
BETR2 TYPE STRING,
BETR3 TYPE STRING,
BETR4 TYPE STRING,
BETR5 TYPE STRING,
BETR6 TYPE STRING,
OPBEL TYPE STRING,
ONLYO TYPE STRING,
CALLED_BY_SERVICE TYPE STRING,
P2P_VKONT TYPE STRING,
P2P_PYMET TYPE STRING,
BUDAT_LOW TYPE STRING,
BUDAT_HIGH TYPE STRING,
PPKEY TYPE STRING,END OF T_EKKO_STR. DATA: WA_RFPP1_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_RFPP1_STR-GPART sy-vline
WA_RFPP1_STR-VKONT sy-vline
WA_RFPP1_STR-VTREF sy-vline
WA_RFPP1_STR-BUKRS sy-vline
WA_RFPP1_STR-INVID sy-vline
WA_RFPP1_STR-BCONT sy-vline
WA_RFPP1_STR-STAT1 sy-vline
WA_RFPP1_STR-STAT2 sy-vline
WA_RFPP1_STR-STAT3 sy-vline
WA_RFPP1_STR-STAT4 sy-vline
WA_RFPP1_STR-STAT9 sy-vline
WA_RFPP1_STR-STATM sy-vline
WA_RFPP1_STR-STATP sy-vline
WA_RFPP1_STR-STATP2P sy-vline
WA_RFPP1_STR-STATMD sy-vline
WA_RFPP1_STR-FAEDN sy-vline
WA_RFPP1_STR-XAWOP sy-vline
WA_RFPP1_STR-XAWAP sy-vline
WA_RFPP1_STR-XPREV sy-vline
WA_RFPP1_STR-LTEXT sy-vline
WA_RFPP1_STR-LTEXT2 sy-vline
WA_RFPP1_STR-DOCT1 sy-vline
WA_RFPP1_STR-DUE_DATE sy-vline
WA_RFPP1_STR-DUE_DATE_LOW sy-vline
WA_RFPP1_STR-DUE_DATE_HIGH sy-vline
WA_RFPP1_STR-DOC_DATE_LOW sy-vline
WA_RFPP1_STR-DOC_DATE_HIGH sy-vline
WA_RFPP1_STR-CURRENCY sy-vline
WA_RFPP1_STR-BETRW sy-vline
WA_RFPP1_STR-OBETW sy-vline
WA_RFPP1_STR-GBETW sy-vline
WA_RFPP1_STR-NEBTR sy-vline
WA_RFPP1_STR-EMBVT sy-vline
WA_RFPP1_STR-EMCRD sy-vline
WA_RFPP1_STR-AMOUNT sy-vline
WA_RFPP1_STR-NON_PAYABLE sy-vline
WA_RFPP1_STR-STATUS sy-vline
WA_RFPP1_STR-OPENAMOUNT sy-vline
WA_RFPP1_STR-HBTRW sy-vline
WA_RFPP1_STR-DELTA sy-vline
WA_RFPP1_STR-XCLEA sy-vline
WA_RFPP1_STR-PYMETC sy-vline
WA_RFPP1_STR-PYMETU sy-vline
WA_RFPP1_STR-PYMETE sy-vline
WA_RFPP1_STR-PYMETK sy-vline
WA_RFPP1_STR-CVVAL sy-vline
WA_RFPP1_STR-CVVST sy-vline
WA_RFPP1_STR-DISPUTE_AMOUNT sy-vline
WA_RFPP1_STR-DISPUTE_CURR sy-vline
WA_RFPP1_STR-AGENT_ACTIVE sy-vline
WA_RFPP1_STR-BETR1 sy-vline
WA_RFPP1_STR-BETR2 sy-vline
WA_RFPP1_STR-BETR3 sy-vline
WA_RFPP1_STR-BETR4 sy-vline
WA_RFPP1_STR-BETR5 sy-vline
WA_RFPP1_STR-BETR6 sy-vline
WA_RFPP1_STR-OPBEL sy-vline
WA_RFPP1_STR-ONLYO sy-vline
WA_RFPP1_STR-CALLED_BY_SERVICE sy-vline
WA_RFPP1_STR-P2P_VKONT sy-vline
WA_RFPP1_STR-P2P_PYMET sy-vline
WA_RFPP1_STR-BUDAT_LOW sy-vline
WA_RFPP1_STR-BUDAT_HIGH sy-vline
WA_RFPP1_STR-PPKEY sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.