ABAP Select data from SAP table SMI_S_ITEM_UPD 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 SMI_S_ITEM_UPD 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 SMI_S_ITEM_UPD. 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 SMI_S_ITEM_UPD 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_SMI_S_ITEM_UPD TYPE STANDARD TABLE OF SMI_S_ITEM_UPD,
      WA_SMI_S_ITEM_UPD TYPE SMI_S_ITEM_UPD,
      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: <SMI_S_ITEM_UPD> TYPE SMI_S_ITEM_UPD.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM SMI_S_ITEM_UPD
*  INTO TABLE @DATA(IT_SMI_S_ITEM_UPD2).
*--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_SMI_S_ITEM_UPD INDEX 1 INTO DATA(WA_SMI_S_ITEM_UPD2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_SMI_S_ITEM_UPD ASSIGNING <SMI_S_ITEM_UPD>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<SMI_S_ITEM_UPD>-MANDT = 1.
<SMI_S_ITEM_UPD>-XMLGUID = 1.
<SMI_S_ITEM_UPD>-MATNR = 1.
<SMI_S_ITEM_UPD>-VBELN = 1.
<SMI_S_ITEM_UPD>-POSNR = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_SMI_S_ITEM_UPD-KDMAT, sy-vline,
WA_SMI_S_ITEM_UPD-BP_KUNNR, sy-vline,
WA_SMI_S_ITEM_UPD-BP_BUYID, sy-vline,
WA_SMI_S_ITEM_UPD-SHIP_FROM_BUYID, sy-vline,
WA_SMI_S_ITEM_UPD-WERKS, sy-vline,
WA_SMI_S_ITEM_UPD-KNREF, sy-vline.
ENDLOOP. *Add any further fields from structure WA_SMI_S_ITEM_UPD 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_SMI_S_ITEM_UPD 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_SMI_S_ITEM_UPD INTO WA_SMI_S_ITEM_UPD. *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 MATN1, internal->external for field MATNR CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' EXPORTING input = WA_SMI_S_ITEM_UPD-MATNR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_SMI_S_ITEM_UPD-MATNR.
WRITE:/ 'New Value:', ld_input.

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

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

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

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

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

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

*Conversion exit CUNIT, internal->external for field SFTY_QTY_UOM CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_SMI_S_ITEM_UPD-SFTY_QTY_UOM IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_SMI_S_ITEM_UPD-SFTY_QTY_UOM.
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_SMI_S_ITEM_UPD_STR,
MANDT TYPE STRING,
XMLGUID TYPE STRING,
MATNR TYPE STRING,
VBELN TYPE STRING,
POSNR TYPE STRING,
KDMAT TYPE STRING,
BP_KUNNR TYPE STRING,
BP_BUYID TYPE STRING,
SHIP_FROM_BUYID TYPE STRING,
WERKS TYPE STRING,
KNREF TYPE STRING,
WERKSTO TYPE STRING,
BSTKD TYPE STRING,
POSEX TYPE STRING,
PROCTRIGGER TYPE STRING,
PROCTSTMP TYPE STRING,
STATUS TYPE STRING,
STOPIND TYPE STRING,
STATUSDT TYPE STRING,
UNRQUAN TYPE STRING,
QUALQUAN TYPE STRING,
BLOCQUAN TYPE STRING,
PROMOQUAN TYPE STRING,
STATUSDT_C TYPE STRING,
UNRQUAN_C TYPE STRING,
QUALQUAN_C TYPE STRING,
BLOCQUAN_C TYPE STRING,
PROMOQUAN_C TYPE STRING,
STOCKONHAND TYPE STRING,
MINSTOCK TYPE STRING,
MINSTOCK_C TYPE STRING,
MAXSTOCK TYPE STRING,
MAXSTOCK_C TYPE STRING,
ROUNDQUAN TYPE STRING,
ROUNDQUAN_C TYPE STRING,
PACKQUAN TYPE STRING,
ABEFZ TYPE STRING,
VRKME TYPE STRING,
LABNK TYPE STRING,
SCHEMAGNTID TYPE STRING,
TIME_ZONE TYPE STRING,
ID TYPE STRING,
CUSTOMER_ID TYPE STRING,
KDMAT_PROF TYPE STRING,
BSTKD_PROF TYPE STRING,
POSEX_PROF TYPE STRING,
WERKS_EXT TYPE STRING,
HORIZON_USE TYPE STRING,
SMI_HORIZON TYPE STRING,
REPL_METH TYPE STRING,
SAFETY_PERC TYPE STRING,
SAFETY_QTY TYPE STRING,
SFTY_QTY_UOM TYPE STRING,
CUST_ROUND_VAL TYPE STRING,
REPL_PROC_LOGIC TYPE STRING,
SEND_PROC_LOGIC TYPE STRING,
STOP_FLAG TYPE STRING,
SMI_HORIZON_S TYPE STRING,
SMI_HORIZON_M TYPE STRING,
SMI_HORIZON_L TYPE STRING,
HIGH_PERC_S TYPE STRING,
LOW_PERC_S TYPE STRING,
HIGH_PERC_M TYPE STRING,
LOW_PERC_M TYPE STRING,
HIGH_PERC_L TYPE STRING,
LOW_PERC_L TYPE STRING,
ALERTCATEGORY TYPE STRING,
COMP_LOGIC TYPE STRING,
VKORG TYPE STRING,
VTWEG TYPE STRING,
UPDKZ TYPE STRING,END OF T_EKKO_STR. DATA: WA_SMI_S_ITEM_UPD_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_SMI_S_ITEM_UPD_STR-MANDT sy-vline
WA_SMI_S_ITEM_UPD_STR-XMLGUID sy-vline
WA_SMI_S_ITEM_UPD_STR-MATNR sy-vline
WA_SMI_S_ITEM_UPD_STR-VBELN sy-vline
WA_SMI_S_ITEM_UPD_STR-POSNR sy-vline
WA_SMI_S_ITEM_UPD_STR-KDMAT sy-vline
WA_SMI_S_ITEM_UPD_STR-BP_KUNNR sy-vline
WA_SMI_S_ITEM_UPD_STR-BP_BUYID sy-vline
WA_SMI_S_ITEM_UPD_STR-SHIP_FROM_BUYID sy-vline
WA_SMI_S_ITEM_UPD_STR-WERKS sy-vline
WA_SMI_S_ITEM_UPD_STR-KNREF sy-vline
WA_SMI_S_ITEM_UPD_STR-WERKSTO sy-vline
WA_SMI_S_ITEM_UPD_STR-BSTKD sy-vline
WA_SMI_S_ITEM_UPD_STR-POSEX sy-vline
WA_SMI_S_ITEM_UPD_STR-PROCTRIGGER sy-vline
WA_SMI_S_ITEM_UPD_STR-PROCTSTMP sy-vline
WA_SMI_S_ITEM_UPD_STR-STATUS sy-vline
WA_SMI_S_ITEM_UPD_STR-STOPIND sy-vline
WA_SMI_S_ITEM_UPD_STR-STATUSDT sy-vline
WA_SMI_S_ITEM_UPD_STR-UNRQUAN sy-vline
WA_SMI_S_ITEM_UPD_STR-QUALQUAN sy-vline
WA_SMI_S_ITEM_UPD_STR-BLOCQUAN sy-vline
WA_SMI_S_ITEM_UPD_STR-PROMOQUAN sy-vline
WA_SMI_S_ITEM_UPD_STR-STATUSDT_C sy-vline
WA_SMI_S_ITEM_UPD_STR-UNRQUAN_C sy-vline
WA_SMI_S_ITEM_UPD_STR-QUALQUAN_C sy-vline
WA_SMI_S_ITEM_UPD_STR-BLOCQUAN_C sy-vline
WA_SMI_S_ITEM_UPD_STR-PROMOQUAN_C sy-vline
WA_SMI_S_ITEM_UPD_STR-STOCKONHAND sy-vline
WA_SMI_S_ITEM_UPD_STR-MINSTOCK sy-vline
WA_SMI_S_ITEM_UPD_STR-MINSTOCK_C sy-vline
WA_SMI_S_ITEM_UPD_STR-MAXSTOCK sy-vline
WA_SMI_S_ITEM_UPD_STR-MAXSTOCK_C sy-vline
WA_SMI_S_ITEM_UPD_STR-ROUNDQUAN sy-vline
WA_SMI_S_ITEM_UPD_STR-ROUNDQUAN_C sy-vline
WA_SMI_S_ITEM_UPD_STR-PACKQUAN sy-vline
WA_SMI_S_ITEM_UPD_STR-ABEFZ sy-vline
WA_SMI_S_ITEM_UPD_STR-VRKME sy-vline
WA_SMI_S_ITEM_UPD_STR-LABNK sy-vline
WA_SMI_S_ITEM_UPD_STR-SCHEMAGNTID sy-vline
WA_SMI_S_ITEM_UPD_STR-TIME_ZONE sy-vline
WA_SMI_S_ITEM_UPD_STR-ID sy-vline
WA_SMI_S_ITEM_UPD_STR-CUSTOMER_ID sy-vline
WA_SMI_S_ITEM_UPD_STR-KDMAT_PROF sy-vline
WA_SMI_S_ITEM_UPD_STR-BSTKD_PROF sy-vline
WA_SMI_S_ITEM_UPD_STR-POSEX_PROF sy-vline
WA_SMI_S_ITEM_UPD_STR-WERKS_EXT sy-vline
WA_SMI_S_ITEM_UPD_STR-HORIZON_USE sy-vline
WA_SMI_S_ITEM_UPD_STR-SMI_HORIZON sy-vline
WA_SMI_S_ITEM_UPD_STR-REPL_METH sy-vline
WA_SMI_S_ITEM_UPD_STR-SAFETY_PERC sy-vline
WA_SMI_S_ITEM_UPD_STR-SAFETY_QTY sy-vline
WA_SMI_S_ITEM_UPD_STR-SFTY_QTY_UOM sy-vline
WA_SMI_S_ITEM_UPD_STR-CUST_ROUND_VAL sy-vline
WA_SMI_S_ITEM_UPD_STR-REPL_PROC_LOGIC sy-vline
WA_SMI_S_ITEM_UPD_STR-SEND_PROC_LOGIC sy-vline
WA_SMI_S_ITEM_UPD_STR-STOP_FLAG sy-vline
WA_SMI_S_ITEM_UPD_STR-SMI_HORIZON_S sy-vline
WA_SMI_S_ITEM_UPD_STR-SMI_HORIZON_M sy-vline
WA_SMI_S_ITEM_UPD_STR-SMI_HORIZON_L sy-vline
WA_SMI_S_ITEM_UPD_STR-HIGH_PERC_S sy-vline
WA_SMI_S_ITEM_UPD_STR-LOW_PERC_S sy-vline
WA_SMI_S_ITEM_UPD_STR-HIGH_PERC_M sy-vline
WA_SMI_S_ITEM_UPD_STR-LOW_PERC_M sy-vline
WA_SMI_S_ITEM_UPD_STR-HIGH_PERC_L sy-vline
WA_SMI_S_ITEM_UPD_STR-LOW_PERC_L sy-vline
WA_SMI_S_ITEM_UPD_STR-ALERTCATEGORY sy-vline
WA_SMI_S_ITEM_UPD_STR-COMP_LOGIC sy-vline
WA_SMI_S_ITEM_UPD_STR-VKORG sy-vline
WA_SMI_S_ITEM_UPD_STR-VTWEG sy-vline
WA_SMI_S_ITEM_UPD_STR-UPDKZ sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.