ABAP Select data from SAP table KLSDCPROT1 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 KLSDCPROT1 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 KLSDCPROT1. 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 KLSDCPROT1 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_KLSDCPROT1 TYPE STANDARD TABLE OF KLSDCPROT1,
      WA_KLSDCPROT1 TYPE KLSDCPROT1,
      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: <KLSDCPROT1> TYPE KLSDCPROT1.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM KLSDCPROT1
*  INTO TABLE @DATA(IT_KLSDCPROT12).
*--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_KLSDCPROT1 INDEX 1 INTO DATA(WA_KLSDCPROT12).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_KLSDCPROT1 ASSIGNING <KLSDCPROT1>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<KLSDCPROT1>-MANDT = 1.
<KLSDCPROT1>-CALLIDX = 1.
<KLSDCPROT1>-PLEVEL = 1.
<KLSDCPROT1>-CALCDATE = 1.
<KLSDCPROT1>-MODUSPAR = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_KLSDCPROT1-EMITTRISIKOPAR, sy-vline,
WA_KLSDCPROT1-KASSE_TERMINPAR, sy-vline,
WA_KLSDCPROT1-LRL_POLPAR, sy-vline,
WA_KLSDCPROT1-SARAKTPAR, sy-vline,
WA_KLSDCPROT1-SLRAKTPAR, sy-vline,
WA_KLSDCPROT1-OBJTYPKEY, sy-vline.
ENDLOOP. *Add any further fields from structure WA_KLSDCPROT1 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_KLSDCPROT1 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_KLSDCPROT1 INTO WA_KLSDCPROT1. *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 RANLKEY CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_KLSDCPROT1-RANLKEY IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_KLSDCPROT1-RANLKEY.
WRITE:/ 'New Value:', ld_input.

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

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

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

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

*Conversion exit ACEXT, internal->external for field ACNUM_EXTKEY CALL FUNCTION 'CONVERSION_EXIT_ACEXT_OUTPUT' EXPORTING input = WA_KLSDCPROT1-ACNUM_EXTKEY IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_KLSDCPROT1-ACNUM_EXTKEY.
WRITE:/ 'New Value:', ld_input.

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

*Conversion exit ALPHA, internal->external for field PARTNRCHR CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_KLSDCPROT1-PARTNRCHR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_KLSDCPROT1-PARTNRCHR.
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_KLSDCPROT1_STR,
MANDT TYPE STRING,
CALLIDX TYPE STRING,
PLEVEL TYPE STRING,
CALCDATE TYPE STRING,
MODUSPAR TYPE STRING,
EMITTRISIKOPAR TYPE STRING,
KASSE_TERMINPAR TYPE STRING,
LRL_POLPAR TYPE STRING,
SARAKTPAR TYPE STRING,
SLRAKTPAR TYPE STRING,
OBJTYPKEY TYPE STRING,
BUKRSKEY TYPE STRING,
RANLALT1KEY TYPE STRING,
RANLKEY TYPE STRING,
NORDEXTKEY TYPE STRING,
NORDERKEY TYPE STRING,
REXTNRKEY TYPE STRING,
RBKONTKEY TYPE STRING,
RFHAKEY TYPE STRING,
RUBESTKEY TYPE STRING,
RANLWKEY TYPE STRING,
RLDEPOKEY TYPE STRING,
RIDEXTKEY TYPE STRING,
RIDXRTKEY TYPE STRING,
RIDBSTDKEY TYPE STRING,
SSHLNGKEY TYPE STRING,
RBESTOKEY TYPE STRING,
ACNUM_EXTKEY TYPE STRING,
BKKRSKEY TYPE STRING,
EXTNRKEY TYPE STRING,
RESERVGKEY TYPE STRING,
VTNUMKEY TYPE STRING,
BUKRSCHR TYPE STRING,
PARTNRCHR TYPE STRING,
SLPGCHR TYPE STRING,
RPORTBCHR TYPE STRING,
RDEALERCHR TYPE STRING,
WAERSCHR TYPE STRING,
CONTROL01CHR TYPE STRING,
INTORGCHR TYPE STRING,
RCOUNTRYCHR TYPE STRING,
COUNTRYCHR TYPE STRING,
SECTORCHR TYPE STRING,
RATINGCHR TYPE STRING,
CRATINGCHR TYPE STRING,
RRFINDCHR TYPE STRING,
CEQCLASSCHR TYPE STRING,
LEQCLASSCHR TYPE STRING,
ARRCHR TYPE STRING,
DFIKTCHR TYPE STRING,
SKALIDCHR TYPE STRING,
DMWAECHR TYPE STRING,
DRBDCHR TYPE STRING,
DBLFZCHR TYPE STRING,
DELFZCHR TYPE STRING,
DBMWAECHR TYPE STRING,
DFIKTVGLCHR TYPE STRING,
UPUSERKCHR TYPE STRING,
DUPDATKCHR TYPE STRING,
TUPTIMKCHR TYPE STRING,
CRUSERKCHR TYPE STRING,
DCRDATKCHR TYPE STRING,
TCRTIMKCHR TYPE STRING,
SDCPRODSDC TYPE STRING,
OVERWRITESDC TYPE STRING,END OF T_EKKO_STR. DATA: WA_KLSDCPROT1_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_KLSDCPROT1_STR-MANDT sy-vline
WA_KLSDCPROT1_STR-CALLIDX sy-vline
WA_KLSDCPROT1_STR-PLEVEL sy-vline
WA_KLSDCPROT1_STR-CALCDATE sy-vline
WA_KLSDCPROT1_STR-MODUSPAR sy-vline
WA_KLSDCPROT1_STR-EMITTRISIKOPAR sy-vline
WA_KLSDCPROT1_STR-KASSE_TERMINPAR sy-vline
WA_KLSDCPROT1_STR-LRL_POLPAR sy-vline
WA_KLSDCPROT1_STR-SARAKTPAR sy-vline
WA_KLSDCPROT1_STR-SLRAKTPAR sy-vline
WA_KLSDCPROT1_STR-OBJTYPKEY sy-vline
WA_KLSDCPROT1_STR-BUKRSKEY sy-vline
WA_KLSDCPROT1_STR-RANLALT1KEY sy-vline
WA_KLSDCPROT1_STR-RANLKEY sy-vline
WA_KLSDCPROT1_STR-NORDEXTKEY sy-vline
WA_KLSDCPROT1_STR-NORDERKEY sy-vline
WA_KLSDCPROT1_STR-REXTNRKEY sy-vline
WA_KLSDCPROT1_STR-RBKONTKEY sy-vline
WA_KLSDCPROT1_STR-RFHAKEY sy-vline
WA_KLSDCPROT1_STR-RUBESTKEY sy-vline
WA_KLSDCPROT1_STR-RANLWKEY sy-vline
WA_KLSDCPROT1_STR-RLDEPOKEY sy-vline
WA_KLSDCPROT1_STR-RIDEXTKEY sy-vline
WA_KLSDCPROT1_STR-RIDXRTKEY sy-vline
WA_KLSDCPROT1_STR-RIDBSTDKEY sy-vline
WA_KLSDCPROT1_STR-SSHLNGKEY sy-vline
WA_KLSDCPROT1_STR-RBESTOKEY sy-vline
WA_KLSDCPROT1_STR-ACNUM_EXTKEY sy-vline
WA_KLSDCPROT1_STR-BKKRSKEY sy-vline
WA_KLSDCPROT1_STR-EXTNRKEY sy-vline
WA_KLSDCPROT1_STR-RESERVGKEY sy-vline
WA_KLSDCPROT1_STR-VTNUMKEY sy-vline
WA_KLSDCPROT1_STR-BUKRSCHR sy-vline
WA_KLSDCPROT1_STR-PARTNRCHR sy-vline
WA_KLSDCPROT1_STR-SLPGCHR sy-vline
WA_KLSDCPROT1_STR-RPORTBCHR sy-vline
WA_KLSDCPROT1_STR-RDEALERCHR sy-vline
WA_KLSDCPROT1_STR-WAERSCHR sy-vline
WA_KLSDCPROT1_STR-CONTROL01CHR sy-vline
WA_KLSDCPROT1_STR-INTORGCHR sy-vline
WA_KLSDCPROT1_STR-RCOUNTRYCHR sy-vline
WA_KLSDCPROT1_STR-COUNTRYCHR sy-vline
WA_KLSDCPROT1_STR-SECTORCHR sy-vline
WA_KLSDCPROT1_STR-RATINGCHR sy-vline
WA_KLSDCPROT1_STR-CRATINGCHR sy-vline
WA_KLSDCPROT1_STR-RRFINDCHR sy-vline
WA_KLSDCPROT1_STR-CEQCLASSCHR sy-vline
WA_KLSDCPROT1_STR-LEQCLASSCHR sy-vline
WA_KLSDCPROT1_STR-ARRCHR sy-vline
WA_KLSDCPROT1_STR-DFIKTCHR sy-vline
WA_KLSDCPROT1_STR-SKALIDCHR sy-vline
WA_KLSDCPROT1_STR-DMWAECHR sy-vline
WA_KLSDCPROT1_STR-DRBDCHR sy-vline
WA_KLSDCPROT1_STR-DBLFZCHR sy-vline
WA_KLSDCPROT1_STR-DELFZCHR sy-vline
WA_KLSDCPROT1_STR-DBMWAECHR sy-vline
WA_KLSDCPROT1_STR-DFIKTVGLCHR sy-vline
WA_KLSDCPROT1_STR-UPUSERKCHR sy-vline
WA_KLSDCPROT1_STR-DUPDATKCHR sy-vline
WA_KLSDCPROT1_STR-TUPTIMKCHR sy-vline
WA_KLSDCPROT1_STR-CRUSERKCHR sy-vline
WA_KLSDCPROT1_STR-DCRDATKCHR sy-vline
WA_KLSDCPROT1_STR-TCRTIMKCHR sy-vline
WA_KLSDCPROT1_STR-SDCPRODSDC sy-vline
WA_KLSDCPROT1_STR-OVERWRITESDC sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.