ABAP Select data from SAP table HM60X 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 HM60X 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 HM60X. 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 HM60X 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_HM60X TYPE STANDARD TABLE OF HM60X, WA_HM60X TYPE HM60X, 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: <HM60X> TYPE HM60X. *Process all fields in table header/work area as string values PERFORM process_as_string_field_values CHANGING wa_HM60X. SELECT * *restrict ABAP select to first 10 rows UP TO 10 ROWS FROM HM60X INTO TABLE IT_HM60X. *Select data and declare internal table using in-line method @DATA *SELECT * * FROM HM60X * INTO TABLE @DATA(IT_HM60X2). *--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_HM60X INDEX 1 INTO DATA(WA_HM60X2). *Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL LOOP AT IT_HM60X ASSIGNING <HM60X>.*To update a field value using a field symbol simply change the value via the field symbol pointer
<HM60X>-UEBEINZ = 1.
<HM60X>-UEBZWEI = 1.
<HM60X>-BEDAE = 1.
<HM60X>-BDTXT = 1.
<HM60X>-NPOS = 1.
ENDLOOP. LOOP AT IT_HM60X INTO WA_HM60X. *Write horizonal line to screen report. WRITE:/ sy-uline. *Write selected data to screen/report before conversion. WRITE:/ sy-vline, WA_HM60X-URPET, sy-vline,
WA_HM60X-URPLAN, sy-vline,
WA_HM60X-ORPLAN, sy-vline,
WA_HM60X-PERXX, sy-vline,
WA_HM60X-XLINE, sy-vline,
WA_HM60X-VERSB, sy-vline.
ENDLOOP. *Add any further fields from structure WA_HM60X 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_HM60X 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_HM60X INTO WA_HM60X. *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_HM60X-MATNR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_HM60X-MATNR.
WRITE:/ 'New Value:', ld_input.
*Conversion exit ABPSP, internal->external for field PSPEL CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT' EXPORTING input = WA_HM60X-PSPEL IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_HM60X-PSPEL.
WRITE:/ 'New Value:', ld_input.
*Conversion exit ALPHA, internal->external for field KDAUF CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_HM60X-KDAUF IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_HM60X-KDAUF.
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_HM60X_STR,
UEBEINZ TYPE STRING,
UEBZWEI TYPE STRING,
BEDAE TYPE STRING,
BDTXT TYPE STRING,
NPOS TYPE STRING,
URPET TYPE STRING,
URPLAN TYPE STRING,
ORPLAN TYPE STRING,
PERXX TYPE STRING,
XLINE TYPE STRING,
VERSB TYPE STRING,
WERT TYPE STRING,
POSNR TYPE STRING,
PERIV TYPE STRING,
PANEW TYPE STRING,
PASUM TYPE STRING,
TXZ01 TYPE STRING,
VBTXT TYPE STRING,
PBDNR TYPE STRING,
STRA1 TYPE STRING,
ENTLI TYPE STRING,
VERVS TYPE STRING,
WAERS TYPE STRING,
STRGR TYPE STRING,
HISKZ TYPE STRING,
WAERG TYPE STRING,
ENTMG TYPE STRING,
PLGMG TYPE STRING,
AEDAT TYPE STRING,
LTFLG TYPE STRING,
VRMOD TYPE STRING,
VINT1 TYPE STRING,
VINT2 TYPE STRING,
MATNR TYPE STRING,
SSOUR TYPE STRING,
VRSIO TYPE STRING,
GSTRU TYPE STRING,
MRPPP TYPE STRING,
PPTXT TYPE STRING,
LTEXT TYPE STRING,
UEBKZ TYPE STRING,
DATLP TYPE STRING,
UHRLP TYPE STRING,
RFTXT TYPE STRING,
PSPEL TYPE STRING,
KDAUF TYPE STRING,
KDPOS TYPE STRING,
KNTTP TYPE STRING,
SOBKZ TYPE STRING,
KZVBR TYPE STRING,
FIELDNAME TYPE STRING,END OF T_EKKO_STR. DATA: WA_HM60X_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_HM60X_STR-UEBEINZ sy-vline
WA_HM60X_STR-UEBZWEI sy-vline
WA_HM60X_STR-BEDAE sy-vline
WA_HM60X_STR-BDTXT sy-vline
WA_HM60X_STR-NPOS sy-vline
WA_HM60X_STR-URPET sy-vline
WA_HM60X_STR-URPLAN sy-vline
WA_HM60X_STR-ORPLAN sy-vline
WA_HM60X_STR-PERXX sy-vline
WA_HM60X_STR-XLINE sy-vline
WA_HM60X_STR-VERSB sy-vline
WA_HM60X_STR-WERT sy-vline
WA_HM60X_STR-POSNR sy-vline
WA_HM60X_STR-PERIV sy-vline
WA_HM60X_STR-PANEW sy-vline
WA_HM60X_STR-PASUM sy-vline
WA_HM60X_STR-TXZ01 sy-vline
WA_HM60X_STR-VBTXT sy-vline
WA_HM60X_STR-PBDNR sy-vline
WA_HM60X_STR-STRA1 sy-vline
WA_HM60X_STR-ENTLI sy-vline
WA_HM60X_STR-VERVS sy-vline
WA_HM60X_STR-WAERS sy-vline
WA_HM60X_STR-STRGR sy-vline
WA_HM60X_STR-HISKZ sy-vline
WA_HM60X_STR-WAERG sy-vline
WA_HM60X_STR-ENTMG sy-vline
WA_HM60X_STR-PLGMG sy-vline
WA_HM60X_STR-AEDAT sy-vline
WA_HM60X_STR-LTFLG sy-vline
WA_HM60X_STR-VRMOD sy-vline
WA_HM60X_STR-VINT1 sy-vline
WA_HM60X_STR-VINT2 sy-vline
WA_HM60X_STR-MATNR sy-vline
WA_HM60X_STR-SSOUR sy-vline
WA_HM60X_STR-VRSIO sy-vline
WA_HM60X_STR-GSTRU sy-vline
WA_HM60X_STR-MRPPP sy-vline
WA_HM60X_STR-PPTXT sy-vline
WA_HM60X_STR-LTEXT sy-vline
WA_HM60X_STR-UEBKZ sy-vline
WA_HM60X_STR-DATLP sy-vline
WA_HM60X_STR-UHRLP sy-vline
WA_HM60X_STR-RFTXT sy-vline
WA_HM60X_STR-PSPEL sy-vline
WA_HM60X_STR-KDAUF sy-vline
WA_HM60X_STR-KDPOS sy-vline
WA_HM60X_STR-KNTTP sy-vline
WA_HM60X_STR-SOBKZ sy-vline
WA_HM60X_STR-KZVBR sy-vline
WA_HM60X_STR-FIELDNAME sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.