ABAP Select data from SAP table RM08N 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 RM08N 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 RM08N. 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 RM08N 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_RM08N TYPE STANDARD TABLE OF RM08N, WA_RM08N TYPE RM08N, 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: <RM08N> TYPE RM08N. *Process all fields in table header/work area as string values PERFORM process_as_string_field_values CHANGING wa_RM08N. SELECT * *restrict ABAP select to first 10 rows UP TO 10 ROWS FROM RM08N INTO TABLE IT_RM08N. *Select data and declare internal table using in-line method @DATA *SELECT * * FROM RM08N * INTO TABLE @DATA(IT_RM08N2). *--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_RM08N INDEX 1 INTO DATA(WA_RM08N2). *Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL LOOP AT IT_RM08N ASSIGNING <RM08N>.*To update a field value using a field symbol simply change the value via the field symbol pointer
<RM08N>-BUKRSV = 1.
<RM08N>-BUKRSB = 1.
<RM08N>-GJAHRV = 1.
<RM08N>-GJAHRB = 1.
<RM08N>-USNAMV = 1.
ENDLOOP. LOOP AT IT_RM08N INTO WA_RM08N. *Write horizonal line to screen report. WRITE:/ sy-uline. *Write selected data to screen/report before conversion. WRITE:/ sy-vline, WA_RM08N-USNAMB, sy-vline,
WA_RM08N-LIFNRV, sy-vline,
WA_RM08N-LIFNRB, sy-vline,
WA_RM08N-BELNRV, sy-vline,
WA_RM08N-BELNRB, sy-vline,
WA_RM08N-BLDATV, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RM08N 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_RM08N 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_RM08N INTO WA_RM08N. *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 GJAHR, internal->external for field GJAHRV CALL FUNCTION 'CONVERSION_EXIT_GJAHR_OUTPUT' EXPORTING input = WA_RM08N-GJAHRV IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM08N-GJAHRV.
WRITE:/ 'New Value:', ld_input.
*Conversion exit GJAHR, internal->external for field GJAHRB CALL FUNCTION 'CONVERSION_EXIT_GJAHR_OUTPUT' EXPORTING input = WA_RM08N-GJAHRB IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM08N-GJAHRB.
WRITE:/ 'New Value:', ld_input.
*Conversion exit ALPHA, internal->external for field LIFNRV CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_RM08N-LIFNRV IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM08N-LIFNRV.
WRITE:/ 'New Value:', ld_input.
*Conversion exit ALPHA, internal->external for field LIFNRB CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_RM08N-LIFNRB IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM08N-LIFNRB.
WRITE:/ 'New Value:', ld_input.
*Conversion exit ALPHA, internal->external for field BELNRV CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_RM08N-BELNRV IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM08N-BELNRV.
WRITE:/ 'New Value:', ld_input.
*Conversion exit ALPHA, internal->external for field BELNRB CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_RM08N-BELNRB IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RM08N-BELNRB.
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_RM08N_STR,
BUKRSV TYPE STRING,
BUKRSB TYPE STRING,
GJAHRV TYPE STRING,
GJAHRB TYPE STRING,
USNAMV TYPE STRING,
USNAMB TYPE STRING,
LIFNRV TYPE STRING,
LIFNRB TYPE STRING,
BELNRV TYPE STRING,
BELNRB TYPE STRING,
BLDATV TYPE STRING,
BLDATB TYPE STRING,
BUDATV TYPE STRING,
BUDATB TYPE STRING,
KZSORCHG TYPE STRING,
KRSGEPR TYPE STRING,
KRSUNGEPR TYPE STRING,
KRSFEHLER TYPE STRING,
KRSKORREKT TYPE STRING,
XSTATBG TYPE STRING,
XSTATOK TYPE STRING,
XSTATERR TYPE STRING,
XSTATPOST TYPE STRING,
XMANAKZ TYPE STRING,
XAUTAKZ TYPE STRING,
XMANRK TYPE STRING,
XAUTRK TYPE STRING,
XUNFEH TYPE STRING,
MWLIEFF TYPE STRING,
SMWST TYPE STRING,
MAKZMW TYPE STRING,
MWDIFFB TYPE STRING,
MODUS TYPE STRING,
ISTN TYPE STRING,
WMWST TYPE STRING,
WMWSTS TYPE STRING,
MWBNK TYPE STRING,
XTXTREQ TYPE STRING,
XMAKZEP TYPE STRING,
ARKUER TYPE STRING,
ARKMW TYPE STRING,
MAKZB TYPE STRING,
XIVTYPEDI TYPE STRING,
XIVTYPHG TYPE STRING,
XIVTYPONL TYPE STRING,
NOTIZ TYPE STRING,
PBITEMS TYPE STRING,END OF T_EKKO_STR. DATA: WA_RM08N_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_RM08N_STR-BUKRSV sy-vline
WA_RM08N_STR-BUKRSB sy-vline
WA_RM08N_STR-GJAHRV sy-vline
WA_RM08N_STR-GJAHRB sy-vline
WA_RM08N_STR-USNAMV sy-vline
WA_RM08N_STR-USNAMB sy-vline
WA_RM08N_STR-LIFNRV sy-vline
WA_RM08N_STR-LIFNRB sy-vline
WA_RM08N_STR-BELNRV sy-vline
WA_RM08N_STR-BELNRB sy-vline
WA_RM08N_STR-BLDATV sy-vline
WA_RM08N_STR-BLDATB sy-vline
WA_RM08N_STR-BUDATV sy-vline
WA_RM08N_STR-BUDATB sy-vline
WA_RM08N_STR-KZSORCHG sy-vline
WA_RM08N_STR-KRSGEPR sy-vline
WA_RM08N_STR-KRSUNGEPR sy-vline
WA_RM08N_STR-KRSFEHLER sy-vline
WA_RM08N_STR-KRSKORREKT sy-vline
WA_RM08N_STR-XSTATBG sy-vline
WA_RM08N_STR-XSTATOK sy-vline
WA_RM08N_STR-XSTATERR sy-vline
WA_RM08N_STR-XSTATPOST sy-vline
WA_RM08N_STR-XMANAKZ sy-vline
WA_RM08N_STR-XAUTAKZ sy-vline
WA_RM08N_STR-XMANRK sy-vline
WA_RM08N_STR-XAUTRK sy-vline
WA_RM08N_STR-XUNFEH sy-vline
WA_RM08N_STR-MWLIEFF sy-vline
WA_RM08N_STR-SMWST sy-vline
WA_RM08N_STR-MAKZMW sy-vline
WA_RM08N_STR-MWDIFFB sy-vline
WA_RM08N_STR-MODUS sy-vline
WA_RM08N_STR-ISTN sy-vline
WA_RM08N_STR-WMWST sy-vline
WA_RM08N_STR-WMWSTS sy-vline
WA_RM08N_STR-MWBNK sy-vline
WA_RM08N_STR-XTXTREQ sy-vline
WA_RM08N_STR-XMAKZEP sy-vline
WA_RM08N_STR-ARKUER sy-vline
WA_RM08N_STR-ARKMW sy-vline
WA_RM08N_STR-MAKZB sy-vline
WA_RM08N_STR-XIVTYPEDI sy-vline
WA_RM08N_STR-XIVTYPHG sy-vline
WA_RM08N_STR-XIVTYPONL sy-vline
WA_RM08N_STR-NOTIZ sy-vline
WA_RM08N_STR-PBITEMS sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.