ABAP Select data from SAP table OIL_OIJTS 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 OIL_OIJTS 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 OIL_OIJTS. 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 OIL_OIJTS 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_OIL_OIJTS TYPE STANDARD TABLE OF OIL_OIJTS,
      WA_OIL_OIJTS TYPE OIL_OIJTS,
      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: <OIL_OIJTS> TYPE OIL_OIJTS.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM OIL_OIJTS
*  INTO TABLE @DATA(IT_OIL_OIJTS2).
*--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_OIL_OIJTS INDEX 1 INTO DATA(WA_OIL_OIJTS2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_OIL_OIJTS ASSIGNING <OIL_OIJTS>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<OIL_OIJTS>-TSNAM = 1.
<OIL_OIJTS>-BOOKTS = 1.
<OIL_OIJTS>-VSART = 1.
<OIL_OIJTS>-VKTRA = 1.
<OIL_OIJTS>-SHTYPE = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_OIL_OIJTS-VEHID, sy-vline,
WA_OIL_OIJTS-TSSUOMV, sy-vline,
WA_OIL_OIJTS-TSSUOMM, sy-vline,
WA_OIL_OIJTS-CYCPERD, sy-vline,
WA_OIL_OIJTS-CYCPUOM, sy-vline,
WA_OIL_OIJTS-CARRIER, sy-vline.
ENDLOOP. *Add any further fields from structure WA_OIL_OIJTS 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_OIL_OIJTS 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_OIL_OIJTS INTO WA_OIL_OIJTS. *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 VEHID CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_OIL_OIJTS-VEHID IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_OIL_OIJTS-VEHID.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field TSSUOMV CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_OIL_OIJTS-TSSUOMV IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_OIL_OIJTS-TSSUOMV.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field TSSUOMM CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_OIL_OIJTS-TSSUOMM IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_OIL_OIJTS-TSSUOMM.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field CYCPUOM CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_OIL_OIJTS-CYCPUOM IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_OIL_OIJTS-CYCPUOM.
WRITE:/ 'New Value:', ld_input.

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

*Conversion exit CUNIT, internal->external for field CONLUOM CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_OIL_OIJTS-CONLUOM IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_OIL_OIJTS-CONLUOM.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field BULTOLUOM CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_OIL_OIJTS-BULTOLUOM IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_OIL_OIJTS-BULTOLUOM.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field RATEUOM CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_OIL_OIJTS-RATEUOM IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_OIL_OIJTS-RATEUOM.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field RATEPERD CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_OIL_OIJTS-RATEPERD IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_OIL_OIJTS-RATEPERD.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field USAGEUOM CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_OIL_OIJTS-USAGEUOM IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_OIL_OIJTS-USAGEUOM.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field USAGEPERD CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_OIL_OIJTS-USAGEPERD IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_OIL_OIJTS-USAGEPERD.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field VEL_UOM CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_OIL_OIJTS-VEL_UOM IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_OIL_OIJTS-VEL_UOM.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field VEL_UOMT CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_OIL_OIJTS-VEL_UOMT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_OIL_OIJTS-VEL_UOMT.
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_OIL_OIJTS_STR,
TSNAM TYPE STRING,
BOOKTS TYPE STRING,
VSART TYPE STRING,
VKTRA TYPE STRING,
SHTYPE TYPE STRING,
VEHID TYPE STRING,
TSSUOMV TYPE STRING,
TSSUOMM TYPE STRING,
CYCPERD TYPE STRING,
CYCPUOM TYPE STRING,
CARRIER TYPE STRING,
WERK TYPE STRING,
LGORT TYPE STRING,
NOMMSK TYPE STRING,
SHIPPER TYPE STRING,
CONLTM TYPE STRING,
CONLUOM TYPE STRING,
TPLST TYPE STRING,
BOTOL TYPE STRING,
BUTOL TYPE STRING,
BOTOLABS TYPE STRING,
BUTOLABS TYPE STRING,
BULTOLUOM TYPE STRING,
UNLIMITED TYPE STRING,
BALCH TYPE STRING,
CLIPLGORT TYPE STRING,
SHTYP TYPE STRING,
ERDAT TYPE STRING,
ERZEIT TYPE STRING,
ERNAM TYPE STRING,
AEDAT TYPE STRING,
AEZEIT TYPE STRING,
AENAM TYPE STRING,
BLOIND TYPE STRING,
DELIND TYPE STRING,
TKTSELECT TYPE STRING,
KALSM TYPE STRING,
KAPPL TYPE STRING,
KSCHL TYPE STRING,
MAXRATE TYPE STRING,
MINRATE TYPE STRING,
OPERATE TYPE STRING,
RATEUOM TYPE STRING,
RATEPERD TYPE STRING,
SEQIND TYPE STRING,
MAXUSAGE TYPE STRING,
MINUSAGE TYPE STRING,
USAGEUOM TYPE STRING,
USAGEPERD TYPE STRING,
PIPE_BATCH TYPE STRING,
VEL_AVG TYPE STRING,
VEL_MAX TYPE STRING,
VEL_MIN TYPE STRING,
BUSTYP TYPE STRING,
VEL_UOM TYPE STRING,
VEL_UOMT TYPE STRING,
ROUTE_TOLERANCE TYPE STRING,
RDTSACT TYPE STRING,
ACT_SUBITEM TYPE STRING,END OF T_EKKO_STR. DATA: WA_OIL_OIJTS_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_OIL_OIJTS_STR-TSNAM sy-vline
WA_OIL_OIJTS_STR-BOOKTS sy-vline
WA_OIL_OIJTS_STR-VSART sy-vline
WA_OIL_OIJTS_STR-VKTRA sy-vline
WA_OIL_OIJTS_STR-SHTYPE sy-vline
WA_OIL_OIJTS_STR-VEHID sy-vline
WA_OIL_OIJTS_STR-TSSUOMV sy-vline
WA_OIL_OIJTS_STR-TSSUOMM sy-vline
WA_OIL_OIJTS_STR-CYCPERD sy-vline
WA_OIL_OIJTS_STR-CYCPUOM sy-vline
WA_OIL_OIJTS_STR-CARRIER sy-vline
WA_OIL_OIJTS_STR-WERK sy-vline
WA_OIL_OIJTS_STR-LGORT sy-vline
WA_OIL_OIJTS_STR-NOMMSK sy-vline
WA_OIL_OIJTS_STR-SHIPPER sy-vline
WA_OIL_OIJTS_STR-CONLTM sy-vline
WA_OIL_OIJTS_STR-CONLUOM sy-vline
WA_OIL_OIJTS_STR-TPLST sy-vline
WA_OIL_OIJTS_STR-BOTOL sy-vline
WA_OIL_OIJTS_STR-BUTOL sy-vline
WA_OIL_OIJTS_STR-BOTOLABS sy-vline
WA_OIL_OIJTS_STR-BUTOLABS sy-vline
WA_OIL_OIJTS_STR-BULTOLUOM sy-vline
WA_OIL_OIJTS_STR-UNLIMITED sy-vline
WA_OIL_OIJTS_STR-BALCH sy-vline
WA_OIL_OIJTS_STR-CLIPLGORT sy-vline
WA_OIL_OIJTS_STR-SHTYP sy-vline
WA_OIL_OIJTS_STR-ERDAT sy-vline
WA_OIL_OIJTS_STR-ERZEIT sy-vline
WA_OIL_OIJTS_STR-ERNAM sy-vline
WA_OIL_OIJTS_STR-AEDAT sy-vline
WA_OIL_OIJTS_STR-AEZEIT sy-vline
WA_OIL_OIJTS_STR-AENAM sy-vline
WA_OIL_OIJTS_STR-BLOIND sy-vline
WA_OIL_OIJTS_STR-DELIND sy-vline
WA_OIL_OIJTS_STR-TKTSELECT sy-vline
WA_OIL_OIJTS_STR-KALSM sy-vline
WA_OIL_OIJTS_STR-KAPPL sy-vline
WA_OIL_OIJTS_STR-KSCHL sy-vline
WA_OIL_OIJTS_STR-MAXRATE sy-vline
WA_OIL_OIJTS_STR-MINRATE sy-vline
WA_OIL_OIJTS_STR-OPERATE sy-vline
WA_OIL_OIJTS_STR-RATEUOM sy-vline
WA_OIL_OIJTS_STR-RATEPERD sy-vline
WA_OIL_OIJTS_STR-SEQIND sy-vline
WA_OIL_OIJTS_STR-MAXUSAGE sy-vline
WA_OIL_OIJTS_STR-MINUSAGE sy-vline
WA_OIL_OIJTS_STR-USAGEUOM sy-vline
WA_OIL_OIJTS_STR-USAGEPERD sy-vline
WA_OIL_OIJTS_STR-PIPE_BATCH sy-vline
WA_OIL_OIJTS_STR-VEL_AVG sy-vline
WA_OIL_OIJTS_STR-VEL_MAX sy-vline
WA_OIL_OIJTS_STR-VEL_MIN sy-vline
WA_OIL_OIJTS_STR-BUSTYP sy-vline
WA_OIL_OIJTS_STR-VEL_UOM sy-vline
WA_OIL_OIJTS_STR-VEL_UOMT sy-vline
WA_OIL_OIJTS_STR-ROUTE_TOLERANCE sy-vline
WA_OIL_OIJTS_STR-RDTSACT sy-vline
WA_OIL_OIJTS_STR-ACT_SUBITEM sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.