ABAP Select data from SAP table RFUMS_ALV 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 RFUMS_ALV 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 RFUMS_ALV. 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 RFUMS_ALV 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_RFUMS_ALV TYPE STANDARD TABLE OF RFUMS_ALV,
      WA_RFUMS_ALV TYPE RFUMS_ALV,
      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: <RFUMS_ALV> TYPE RFUMS_ALV.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM RFUMS_ALV
*  INTO TABLE @DATA(IT_RFUMS_ALV2).
*--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_RFUMS_ALV INDEX 1 INTO DATA(WA_RFUMS_ALV2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_RFUMS_ALV ASSIGNING <RFUMS_ALV>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<RFUMS_ALV>-TRANSFER = 1.
<RFUMS_ALV>-HKONT = 1.
<RFUMS_ALV>-R_MWSKZ = 1.
<RFUMS_ALV>-TAX_ACC = 1.
<RFUMS_ALV>-JUR_STA = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_RFUMS_ALV-VARIANTE, sy-vline,
WA_RFUMS_ALV-HWBAS, sy-vline,
WA_RFUMS_ALV-HWGROSS, sy-vline,
WA_RFUMS_ALV-FWBAS, sy-vline,
WA_RFUMS_ALV-FWAER, sy-vline,
WA_RFUMS_ALV-FWAUSTE2, sy-vline.
ENDLOOP. *Add any further fields from structure WA_RFUMS_ALV 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_RFUMS_ALV 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_RFUMS_ALV INTO WA_RFUMS_ALV. *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 HKONT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HKONT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HKONT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AC172, internal->external for field HWBAS CALL FUNCTION 'CONVERSION_EXIT_AC172_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWBAS IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWBAS.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AC172, internal->external for field HWGROSS CALL FUNCTION 'CONVERSION_EXIT_AC172_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWGROSS IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWGROSS.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AC172, internal->external for field FWBAS CALL FUNCTION 'CONVERSION_EXIT_AC172_OUTPUT' EXPORTING input = WA_RFUMS_ALV-FWBAS IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-FWBAS.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field FWAUSTE2 CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-FWAUSTE2 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-FWAUSTE2.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field HWAUSTE2 CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWAUSTE2 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWAUSTE2.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field HWSTE3 CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWSTE3 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWSTE3.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field HWNAF3 CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWNAF3 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWNAF3.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field HWANAF3 CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWANAF3 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWANAF3.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field HWAUSTE3 CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWAUSTE3 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWAUSTE3.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field HWVOSTE3 CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWVOSTE3 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWVOSTE3.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field HWSALDO3 CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWSALDO3 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWSALDO3.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field HWSDIFF3 CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWSDIFF3 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWSDIFF3.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field FWVOSTE2 CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-FWVOSTE2 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-FWVOSTE2.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field HWVOSTE2 CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWVOSTE2 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWVOSTE2.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field HWAUSTEA CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWAUSTEA IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWAUSTEA.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field HWVOSTEA CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWVOSTEA IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWVOSTEA.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field HWAUSTE CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWAUSTE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWAUSTE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field HWVOSTE CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWVOSTE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWVOSTE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field FWAUSTE CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-FWAUSTE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-FWAUSTE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field FWVOSTE CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-FWVOSTE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-FWVOSTE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field HWNAF CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWNAF IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWNAF.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field FWNAF CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-FWNAF IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-FWNAF.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field HWSTE2 CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWSTE2 IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWSTE2.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field SDIFF CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-SDIFF IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-SDIFF.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field FWSALDO CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-FWSALDO IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-FWSALDO.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field HWSALDO CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWSALDO IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWSALDO.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field HWANAF CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-HWANAF IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-HWANAF.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field FWANAF CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-FWANAF IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-FWANAF.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field DMSHB CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-DMSHB IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-DMSHB.
WRITE:/ 'New Value:', ld_input.

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

*Conversion exit EXCRT, internal->external for field EX_RATE CALL FUNCTION 'CONVERSION_EXIT_EXCRT_OUTPUT' EXPORTING input = WA_RFUMS_ALV-EX_RATE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-EX_RATE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field FWAUSTEA CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-FWAUSTEA IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-FWAUSTEA.
WRITE:/ 'New Value:', ld_input.

*Conversion exit AU132, internal->external for field FWVOSTEA CALL FUNCTION 'CONVERSION_EXIT_AU132_OUTPUT' EXPORTING input = WA_RFUMS_ALV-FWVOSTEA IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_RFUMS_ALV-FWVOSTEA.
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_RFUMS_ALV_STR,
TRANSFER TYPE STRING,
HKONT TYPE STRING,
R_MWSKZ TYPE STRING,
TAX_ACC TYPE STRING,
JUR_STA TYPE STRING,
VARIANTE TYPE STRING,
HWBAS TYPE STRING,
HWGROSS TYPE STRING,
FWBAS TYPE STRING,
FWAER TYPE STRING,
FWAUSTE2 TYPE STRING,
HWAUSTE2 TYPE STRING,
HWSTE3 TYPE STRING,
HWNAF3 TYPE STRING,
HWANAF3 TYPE STRING,
HWAUSTE3 TYPE STRING,
HWVOSTE3 TYPE STRING,
HWSALDO3 TYPE STRING,
HWSDIFF3 TYPE STRING,
FWVOSTE2 TYPE STRING,
HWVOSTE2 TYPE STRING,
MONAT TYPE STRING,
PSATZ TYPE STRING,
HWAUSTEA TYPE STRING,
HWVOSTEA TYPE STRING,
HWAUSTE TYPE STRING,
HWVOSTE TYPE STRING,
FWAUSTE TYPE STRING,
FWVOSTE TYPE STRING,
HWNAF TYPE STRING,
FWNAF TYPE STRING,
QUNUM TYPE STRING,
QUTYP TYPE STRING,
STNUE TYPE STRING,
STNUA TYPE STRING,
HWSTE2 TYPE STRING,
QUDAT TYPE STRING,
SDIFF TYPE STRING,
LFDNR TYPE STRING,
PROZT TYPE STRING,
FWSALDO TYPE STRING,
HWSALDO TYPE STRING,
HWANAF TYPE STRING,
FWANAF TYPE STRING,
DMSHB TYPE STRING,
MLDWAER TYPE STRING,
LOHNIND TYPE STRING,
KTONR TYPE STRING,
NAME TYPE STRING,
UMSVXASU TYPE STRING,
UMSVXVSU TYPE STRING,
UMSVXBSU TYPE STRING,
UMSVXHSU TYPE STRING,
UMSVXSEP TYPE STRING,
UMSVXCAS TYPE STRING,
UMSVXADR TYPE STRING,
CONLIS TYPE STRING,
UMSVXFWA TYPE STRING,
UMSVXSTR TYPE STRING,
DEKR TYPE STRING,
EX_RATE TYPE STRING,
AUGDT TYPE STRING,
FWAUSTEA TYPE STRING,
FWVOSTEA TYPE STRING,
UMSVXSU TYPE STRING,END OF T_EKKO_STR. DATA: WA_RFUMS_ALV_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_RFUMS_ALV_STR-TRANSFER sy-vline
WA_RFUMS_ALV_STR-HKONT sy-vline
WA_RFUMS_ALV_STR-R_MWSKZ sy-vline
WA_RFUMS_ALV_STR-TAX_ACC sy-vline
WA_RFUMS_ALV_STR-JUR_STA sy-vline
WA_RFUMS_ALV_STR-VARIANTE sy-vline
WA_RFUMS_ALV_STR-HWBAS sy-vline
WA_RFUMS_ALV_STR-HWGROSS sy-vline
WA_RFUMS_ALV_STR-FWBAS sy-vline
WA_RFUMS_ALV_STR-FWAER sy-vline
WA_RFUMS_ALV_STR-FWAUSTE2 sy-vline
WA_RFUMS_ALV_STR-HWAUSTE2 sy-vline
WA_RFUMS_ALV_STR-HWSTE3 sy-vline
WA_RFUMS_ALV_STR-HWNAF3 sy-vline
WA_RFUMS_ALV_STR-HWANAF3 sy-vline
WA_RFUMS_ALV_STR-HWAUSTE3 sy-vline
WA_RFUMS_ALV_STR-HWVOSTE3 sy-vline
WA_RFUMS_ALV_STR-HWSALDO3 sy-vline
WA_RFUMS_ALV_STR-HWSDIFF3 sy-vline
WA_RFUMS_ALV_STR-FWVOSTE2 sy-vline
WA_RFUMS_ALV_STR-HWVOSTE2 sy-vline
WA_RFUMS_ALV_STR-MONAT sy-vline
WA_RFUMS_ALV_STR-PSATZ sy-vline
WA_RFUMS_ALV_STR-HWAUSTEA sy-vline
WA_RFUMS_ALV_STR-HWVOSTEA sy-vline
WA_RFUMS_ALV_STR-HWAUSTE sy-vline
WA_RFUMS_ALV_STR-HWVOSTE sy-vline
WA_RFUMS_ALV_STR-FWAUSTE sy-vline
WA_RFUMS_ALV_STR-FWVOSTE sy-vline
WA_RFUMS_ALV_STR-HWNAF sy-vline
WA_RFUMS_ALV_STR-FWNAF sy-vline
WA_RFUMS_ALV_STR-QUNUM sy-vline
WA_RFUMS_ALV_STR-QUTYP sy-vline
WA_RFUMS_ALV_STR-STNUE sy-vline
WA_RFUMS_ALV_STR-STNUA sy-vline
WA_RFUMS_ALV_STR-HWSTE2 sy-vline
WA_RFUMS_ALV_STR-QUDAT sy-vline
WA_RFUMS_ALV_STR-SDIFF sy-vline
WA_RFUMS_ALV_STR-LFDNR sy-vline
WA_RFUMS_ALV_STR-PROZT sy-vline
WA_RFUMS_ALV_STR-FWSALDO sy-vline
WA_RFUMS_ALV_STR-HWSALDO sy-vline
WA_RFUMS_ALV_STR-HWANAF sy-vline
WA_RFUMS_ALV_STR-FWANAF sy-vline
WA_RFUMS_ALV_STR-DMSHB sy-vline
WA_RFUMS_ALV_STR-MLDWAER sy-vline
WA_RFUMS_ALV_STR-LOHNIND sy-vline
WA_RFUMS_ALV_STR-KTONR sy-vline
WA_RFUMS_ALV_STR-NAME sy-vline
WA_RFUMS_ALV_STR-UMSVXASU sy-vline
WA_RFUMS_ALV_STR-UMSVXVSU sy-vline
WA_RFUMS_ALV_STR-UMSVXBSU sy-vline
WA_RFUMS_ALV_STR-UMSVXHSU sy-vline
WA_RFUMS_ALV_STR-UMSVXSEP sy-vline
WA_RFUMS_ALV_STR-UMSVXCAS sy-vline
WA_RFUMS_ALV_STR-UMSVXADR sy-vline
WA_RFUMS_ALV_STR-CONLIS sy-vline
WA_RFUMS_ALV_STR-UMSVXFWA sy-vline
WA_RFUMS_ALV_STR-UMSVXSTR sy-vline
WA_RFUMS_ALV_STR-DEKR sy-vline
WA_RFUMS_ALV_STR-EX_RATE sy-vline
WA_RFUMS_ALV_STR-AUGDT sy-vline
WA_RFUMS_ALV_STR-FWAUSTEA sy-vline
WA_RFUMS_ALV_STR-FWVOSTEA sy-vline
WA_RFUMS_ALV_STR-UMSVXSU sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.