ABAP Select data from SAP table KOMT1 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 KOMT1 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 KOMT1. 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 KOMT1 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_KOMT1 TYPE STANDARD TABLE OF KOMT1,
      WA_KOMT1 TYPE KOMT1,
      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: <KOMT1> TYPE KOMT1.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM KOMT1
*  INTO TABLE @DATA(IT_KOMT12).
*--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_KOMT1 INDEX 1 INTO DATA(WA_KOMT12).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_KOMT1 ASSIGNING <KOMT1>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<KOMT1>-STUNR = 1.
<KOMT1>-ZAEHK = 1.
<KOMT1>-KAPPL = 1.
<KOMT1>-KSCHL = 1.
<KOMT1>-STUNB = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_KOMT1-STUN2, sy-vline,
WA_KOMT1-KAUTO, sy-vline,
WA_KOMT1-KOBED, sy-vline,
WA_KOMT1-KZWIW, sy-vline,
WA_KOMT1-KVSL1, sy-vline,
WA_KOMT1-KVSL2, sy-vline.
ENDLOOP. *Add any further fields from structure WA_KOMT1 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_KOMT1 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_KOMT1 INTO WA_KOMT1. *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 CUNIT, internal->external for field GRMEN CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_KOMT1-GRMEN IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_KOMT1-GRMEN.
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_KOMT1_STR,
STUNR TYPE STRING,
ZAEHK TYPE STRING,
KAPPL TYPE STRING,
KSCHL TYPE STRING,
STUNB TYPE STRING,
STUN2 TYPE STRING,
KAUTO TYPE STRING,
KOBED TYPE STRING,
KZWIW TYPE STRING,
KVSL1 TYPE STRING,
KVSL2 TYPE STRING,
DRUKZ TYPE STRING,
KOAID TYPE STRING,
KOZGF TYPE STRING,
KRECH TYPE STRING,
KZBZG TYPE STRING,
KNTYP TYPE STRING,
KMWST TYPE STRING,
KAEND_BTR TYPE STRING,
KAEND_WRT TYPE STRING,
KAEND_UFK TYPE STRING,
KAEND_RCH TYPE STRING,
KAEND_LOE TYPE STRING,
KAEND_MEH TYPE STRING,
KOBLI TYPE STRING,
KMANU TYPE STRING,
GRZGF TYPE STRING,
GRLNR TYPE STRING,
GRMEN TYPE STRING,
GANZZ TYPE STRING,
KGRPE TYPE STRING,
KRELI TYPE STRING,
KDUPL TYPE STRING,
KRUEK TYPE STRING,
KKOPF TYPE STRING,
KPOSI TYPE STRING,
KSTAT TYPE STRING,
KOUPD TYPE STRING,
SOSTA TYPE STRING,
KOFRM TYPE STRING,
KOFRS TYPE STRING,
KOFRA TYPE STRING,
KZNEP TYPE STRING,
KNEGA TYPE STRING,
TXPRF TYPE STRING,
KPRDT TYPE STRING,
STFKZ TYPE STRING,
VKKAL TYPE STRING,
VKOBL TYPE STRING,
RKAPPL TYPE STRING,
RKSCHL TYPE STRING,
IX_KOMT2_V TYPE STRING,
IX_KOMT2_B TYPE STRING,
KINAK TYPE STRING,
BERGL TYPE STRING,
VHART TYPE STRING,
RDIFA TYPE STRING,
KVORG TYPE STRING,
KFKIV TYPE STRING,
KVARC TYPE STRING,
KMENG TYPE STRING,
KTREL TYPE STRING,
MDFLG TYPE STRING,
KBFLAG TYPE STRING,
IS_CPF_ENABLED TYPE STRING,
IS_CPE_ENABLED TYPE STRING,
IS_QTYCNVFCT_ENABLED TYPE STRING,
VAL_ZERO TYPE STRING,
PURP TYPE STRING,
CCS_USAGE TYPE STRING,
IS_ACCT_DETN_RELEVANT TYPE STRING,END OF T_EKKO_STR. DATA: WA_KOMT1_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_KOMT1_STR-STUNR sy-vline
WA_KOMT1_STR-ZAEHK sy-vline
WA_KOMT1_STR-KAPPL sy-vline
WA_KOMT1_STR-KSCHL sy-vline
WA_KOMT1_STR-STUNB sy-vline
WA_KOMT1_STR-STUN2 sy-vline
WA_KOMT1_STR-KAUTO sy-vline
WA_KOMT1_STR-KOBED sy-vline
WA_KOMT1_STR-KZWIW sy-vline
WA_KOMT1_STR-KVSL1 sy-vline
WA_KOMT1_STR-KVSL2 sy-vline
WA_KOMT1_STR-DRUKZ sy-vline
WA_KOMT1_STR-KOAID sy-vline
WA_KOMT1_STR-KOZGF sy-vline
WA_KOMT1_STR-KRECH sy-vline
WA_KOMT1_STR-KZBZG sy-vline
WA_KOMT1_STR-KNTYP sy-vline
WA_KOMT1_STR-KMWST sy-vline
WA_KOMT1_STR-KAEND_BTR sy-vline
WA_KOMT1_STR-KAEND_WRT sy-vline
WA_KOMT1_STR-KAEND_UFK sy-vline
WA_KOMT1_STR-KAEND_RCH sy-vline
WA_KOMT1_STR-KAEND_LOE sy-vline
WA_KOMT1_STR-KAEND_MEH sy-vline
WA_KOMT1_STR-KOBLI sy-vline
WA_KOMT1_STR-KMANU sy-vline
WA_KOMT1_STR-GRZGF sy-vline
WA_KOMT1_STR-GRLNR sy-vline
WA_KOMT1_STR-GRMEN sy-vline
WA_KOMT1_STR-GANZZ sy-vline
WA_KOMT1_STR-KGRPE sy-vline
WA_KOMT1_STR-KRELI sy-vline
WA_KOMT1_STR-KDUPL sy-vline
WA_KOMT1_STR-KRUEK sy-vline
WA_KOMT1_STR-KKOPF sy-vline
WA_KOMT1_STR-KPOSI sy-vline
WA_KOMT1_STR-KSTAT sy-vline
WA_KOMT1_STR-KOUPD sy-vline
WA_KOMT1_STR-SOSTA sy-vline
WA_KOMT1_STR-KOFRM sy-vline
WA_KOMT1_STR-KOFRS sy-vline
WA_KOMT1_STR-KOFRA sy-vline
WA_KOMT1_STR-KZNEP sy-vline
WA_KOMT1_STR-KNEGA sy-vline
WA_KOMT1_STR-TXPRF sy-vline
WA_KOMT1_STR-KPRDT sy-vline
WA_KOMT1_STR-STFKZ sy-vline
WA_KOMT1_STR-VKKAL sy-vline
WA_KOMT1_STR-VKOBL sy-vline
WA_KOMT1_STR-RKAPPL sy-vline
WA_KOMT1_STR-RKSCHL sy-vline
WA_KOMT1_STR-IX_KOMT2_V sy-vline
WA_KOMT1_STR-IX_KOMT2_B sy-vline
WA_KOMT1_STR-KINAK sy-vline
WA_KOMT1_STR-BERGL sy-vline
WA_KOMT1_STR-VHART sy-vline
WA_KOMT1_STR-RDIFA sy-vline
WA_KOMT1_STR-KVORG sy-vline
WA_KOMT1_STR-KFKIV sy-vline
WA_KOMT1_STR-KVARC sy-vline
WA_KOMT1_STR-KMENG sy-vline
WA_KOMT1_STR-KTREL sy-vline
WA_KOMT1_STR-MDFLG sy-vline
WA_KOMT1_STR-KBFLAG sy-vline
WA_KOMT1_STR-IS_CPF_ENABLED sy-vline
WA_KOMT1_STR-IS_CPE_ENABLED sy-vline
WA_KOMT1_STR-IS_QTYCNVFCT_ENABLED sy-vline
WA_KOMT1_STR-VAL_ZERO sy-vline
WA_KOMT1_STR-PURP sy-vline
WA_KOMT1_STR-CCS_USAGE sy-vline
WA_KOMT1_STR-IS_ACCT_DETN_RELEVANT sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.