ABAP Select data from SAP table RMPS_PRO_T_CATTR 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 RMPS_PRO_T_CATTR 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 RMPS_PRO_T_CATTR. 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 RMPS_PRO_T_CATTR 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_RMPS_PRO_T_CATTR TYPE STANDARD TABLE OF RMPS_PRO_T_CATTR,
      WA_RMPS_PRO_T_CATTR TYPE RMPS_PRO_T_CATTR,
      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: <RMPS_PRO_T_CATTR> TYPE RMPS_PRO_T_CATTR.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM RMPS_PRO_T_CATTR
*  INTO TABLE @DATA(IT_RMPS_PRO_T_CATTR2).
*--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_RMPS_PRO_T_CATTR INDEX 1 INTO DATA(WA_RMPS_PRO_T_CATTR2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_RMPS_PRO_T_CATTR ASSIGNING <RMPS_PRO_T_CATTR>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<RMPS_PRO_T_CATTR>-MANDT = 1.
<RMPS_PRO_T_CATTR>-CASE_GUID = 1.
<RMPS_PRO_T_CATTR>-PS_SUBJECT = 1.
<RMPS_PRO_T_CATTR>-PS_REFERENCE = 1.
<RMPS_PRO_T_CATTR>-PS_REFERENCERULE = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_RMPS_PRO_T_CATTR-PS_DEPARTMENT, sy-vline,
WA_RMPS_PRO_T_CATTR-PS_OPEN_PART, sy-vline,
WA_RMPS_PRO_T_CATTR-RMPSP_DESCRIPT, sy-vline,
WA_RMPS_PRO_T_CATTR-RMPSP_AGGREGAT, sy-vline,
WA_RMPS_PRO_T_CATTR-RMPSP_ACL_DL, sy-vline,
WA_RMPS_PRO_T_CATTR-RMPSP_ACL_US, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RMPS_PRO_T_CATTR 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_RMPS_PRO_T_CATTR 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_RMPS_PRO_T_CATTR INTO WA_RMPS_PRO_T_CATTR. *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 ACLDL, internal->external for field RMPSP_ACL_DL CALL FUNCTION 'CONVERSION_EXIT_ACLDL_OUTPUT' EXPORTING input = WA_RMPS_PRO_T_CATTR-RMPSP_ACL_DL IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RMPS_PRO_T_CATTR-RMPSP_ACL_DL.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ACLUS, internal->external for field RMPSP_ACL_US CALL FUNCTION 'CONVERSION_EXIT_ACLUS_OUTPUT' EXPORTING input = WA_RMPS_PRO_T_CATTR-RMPSP_ACL_US IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RMPS_PRO_T_CATTR-RMPSP_ACL_US.
WRITE:/ 'New Value:', ld_input.

*Conversion exit RMPSC, internal->external for field RMPSP_CUSTODIAN CALL FUNCTION 'CONVERSION_EXIT_RMPSC_OUTPUT' EXPORTING input = WA_RMPS_PRO_T_CATTR-RMPSP_CUSTODIAN IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RMPS_PRO_T_CATTR-RMPSP_CUSTODIAN.
WRITE:/ 'New Value:', ld_input.

*Conversion exit BEGDA, internal->external for field PS_ACTIVE_TEND CALL FUNCTION 'CONVERSION_EXIT_BEGDA_OUTPUT' EXPORTING input = WA_RMPS_PRO_T_CATTR-PS_ACTIVE_TEND IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RMPS_PRO_T_CATTR-PS_ACTIVE_TEND.
WRITE:/ 'New Value:', ld_input.

*Conversion exit BEGDA, internal->external for field PS_ACTIVE_TSTART CALL FUNCTION 'CONVERSION_EXIT_BEGDA_OUTPUT' EXPORTING input = WA_RMPS_PRO_T_CATTR-PS_ACTIVE_TSTART IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RMPS_PRO_T_CATTR-PS_ACTIVE_TSTART.
WRITE:/ 'New Value:', ld_input.

*Conversion exit BEGDA, internal->external for field RMPSP_SECCNG_DAT CALL FUNCTION 'CONVERSION_EXIT_BEGDA_OUTPUT' EXPORTING input = WA_RMPS_PRO_T_CATTR-RMPSP_SECCNG_DAT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RMPS_PRO_T_CATTR-RMPSP_SECCNG_DAT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit STORP, internal->external for field PS_STOR_PLACE CALL FUNCTION 'CONVERSION_EXIT_STORP_OUTPUT' EXPORTING input = WA_RMPS_PRO_T_CATTR-PS_STOR_PLACE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RMPS_PRO_T_CATTR-PS_STOR_PLACE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit BEGDA, internal->external for field PS_WHERE_DATE CALL FUNCTION 'CONVERSION_EXIT_BEGDA_OUTPUT' EXPORTING input = WA_RMPS_PRO_T_CATTR-PS_WHERE_DATE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RMPS_PRO_T_CATTR-PS_WHERE_DATE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit BEGDA, internal->external for field RMPSP_CUTOFF_DAT CALL FUNCTION 'CONVERSION_EXIT_BEGDA_OUTPUT' EXPORTING input = WA_RMPS_PRO_T_CATTR-RMPSP_CUTOFF_DAT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RMPS_PRO_T_CATTR-RMPSP_CUTOFF_DAT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit BEGDA, internal->external for field RMPSP_DP_DUEDATE CALL FUNCTION 'CONVERSION_EXIT_BEGDA_OUTPUT' EXPORTING input = WA_RMPS_PRO_T_CATTR-RMPSP_DP_DUEDATE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RMPS_PRO_T_CATTR-RMPSP_DP_DUEDATE.
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_RMPS_PRO_T_CATTR_STR,
MANDT TYPE STRING,
CASE_GUID TYPE STRING,
PS_SUBJECT TYPE STRING,
PS_REFERENCE TYPE STRING,
PS_REFERENCERULE TYPE STRING,
PS_DEPARTMENT TYPE STRING,
PS_OPEN_PART TYPE STRING,
RMPSP_DESCRIPT TYPE STRING,
RMPSP_AGGREGAT TYPE STRING,
RMPSP_ACL_DL TYPE STRING,
RMPSP_ACL_US TYPE STRING,
RMPSP_CUSTODIAN TYPE STRING,
RMPSP_DESCRIPTOR TYPE STRING,
RMPSP_CHANGED TYPE STRING,
RMPSP_OVERRIDDEN TYPE STRING,
PS_ACTIVE_TEND TYPE STRING,
PS_ACTIVE_TSTART TYPE STRING,
RMPSP_DPA_FLAG TYPE STRING,
RMPSP_EIR_FLAG TYPE STRING,
RMPSP_FOI TYPE STRING,
RMPSP_FOI_DETDAT TYPE STRING,
RMPSP_SECCNG_DAT TYPE STRING,
RMPSP_SECCNG_RUL TYPE STRING,
RMPSP_PARTCUTOFF TYPE STRING,
PS_STOR_PLACE TYPE STRING,
PS_WHEREABOUTS TYPE STRING,
PS_WHERE_TYPE TYPE STRING,
PS_WHERE_DATE TYPE STRING,
PS_WHERE_COMM TYPE STRING,
RMPSP_PARENT_OBJ TYPE STRING,
RMPSP_HYBRIDPAPR TYPE STRING,
RMPSP_CUTOFF_DAT TYPE STRING,
RMPSP_TITLE TYPE STRING,
RMPSP_TITLE_RNAM TYPE STRING,
RMPSP_TITLE_CURR TYPE STRING,
RMPSP_FPLID TYPE STRING,
RMPSP_FPLID_RNAM TYPE STRING,
RMPSP_FPLID_CURR TYPE STRING,
RMPS_REFGEN_PROF TYPE STRING,
RMPSP_DP_ID TYPE STRING,
RMPSP_DP_DUEDATE TYPE STRING,
RMPSP_DP_HOLD TYPE STRING,
RMPSP_DP_TCODE TYPE STRING,
RMPSP_DP_ADDLAST TYPE STRING,
RMPSP_DP_RETLAST TYPE STRING,
RMPS_MAND_STATUT TYPE STRING,
RMPS_MAND_PURPOS TYPE STRING,
RMPS_MAND_EX_CAT TYPE STRING,END OF T_EKKO_STR. DATA: WA_RMPS_PRO_T_CATTR_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_RMPS_PRO_T_CATTR_STR-MANDT sy-vline
WA_RMPS_PRO_T_CATTR_STR-CASE_GUID sy-vline
WA_RMPS_PRO_T_CATTR_STR-PS_SUBJECT sy-vline
WA_RMPS_PRO_T_CATTR_STR-PS_REFERENCE sy-vline
WA_RMPS_PRO_T_CATTR_STR-PS_REFERENCERULE sy-vline
WA_RMPS_PRO_T_CATTR_STR-PS_DEPARTMENT sy-vline
WA_RMPS_PRO_T_CATTR_STR-PS_OPEN_PART sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_DESCRIPT sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_AGGREGAT sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_ACL_DL sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_ACL_US sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_CUSTODIAN sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_DESCRIPTOR sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_CHANGED sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_OVERRIDDEN sy-vline
WA_RMPS_PRO_T_CATTR_STR-PS_ACTIVE_TEND sy-vline
WA_RMPS_PRO_T_CATTR_STR-PS_ACTIVE_TSTART sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_DPA_FLAG sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_EIR_FLAG sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_FOI sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_FOI_DETDAT sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_SECCNG_DAT sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_SECCNG_RUL sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_PARTCUTOFF sy-vline
WA_RMPS_PRO_T_CATTR_STR-PS_STOR_PLACE sy-vline
WA_RMPS_PRO_T_CATTR_STR-PS_WHEREABOUTS sy-vline
WA_RMPS_PRO_T_CATTR_STR-PS_WHERE_TYPE sy-vline
WA_RMPS_PRO_T_CATTR_STR-PS_WHERE_DATE sy-vline
WA_RMPS_PRO_T_CATTR_STR-PS_WHERE_COMM sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_PARENT_OBJ sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_HYBRIDPAPR sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_CUTOFF_DAT sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_TITLE sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_TITLE_RNAM sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_TITLE_CURR sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_FPLID sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_FPLID_RNAM sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_FPLID_CURR sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPS_REFGEN_PROF sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_DP_ID sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_DP_DUEDATE sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_DP_HOLD sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_DP_TCODE sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_DP_ADDLAST sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPSP_DP_RETLAST sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPS_MAND_STATUT sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPS_MAND_PURPOS sy-vline
WA_RMPS_PRO_T_CATTR_STR-RMPS_MAND_EX_CAT sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.