ABAP Select data from SAP table SOUD2 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 SOUD2 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 SOUD2. 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 SOUD2 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_SOUD2 TYPE STANDARD TABLE OF SOUD2, WA_SOUD2 TYPE SOUD2, 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: <SOUD2> TYPE SOUD2. *Process all fields in table header/work area as string values PERFORM process_as_string_field_values CHANGING wa_SOUD2. SELECT * *restrict ABAP select to first 10 rows UP TO 10 ROWS FROM SOUD2 INTO TABLE IT_SOUD2. *Select data and declare internal table using in-line method @DATA *SELECT * * FROM SOUD2 * INTO TABLE @DATA(IT_SOUD22). *--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_SOUD2 INDEX 1 INTO DATA(WA_SOUD22). *Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL LOOP AT IT_SOUD2 ASSIGNING <SOUD2>.*To update a field value using a field symbol simply change the value via the field symbol pointer
<SOUD2>-CRONAM = 1.
<SOUD2>-CROADRNAM = 1.
<SOUD2>-CRDAT = 1.
<SOUD2>-CRTIM = 1.
<SOUD2>-CHONAM = 1.
ENDLOOP. LOOP AT IT_SOUD2 INTO WA_SOUD2. *Write horizonal line to screen report. WRITE:/ sy-uline. *Write selected data to screen/report before conversion. WRITE:/ sy-vline, WA_SOUD2-CHOADRNAM, sy-vline,
WA_SOUD2-CHDAT, sy-vline,
WA_SOUD2-CHTIM, sy-vline,
WA_SOUD2-SAPNAM, sy-vline,
WA_SOUD2-USRNAM, sy-vline,
WA_SOUD2-LOADAT, sy-vline.
ENDLOOP. *Add any further fields from structure WA_SOUD2 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_SOUD2 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_SOUD2 INTO WA_SOUD2. *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 SXIDN, internal->external for field CROADRNAM CALL FUNCTION 'CONVERSION_EXIT_SXIDN_OUTPUT' EXPORTING input = WA_SOUD2-CROADRNAM IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_SOUD2-CROADRNAM.
WRITE:/ 'New Value:', ld_input.
*Conversion exit SXIDN, internal->external for field CHOADRNAM CALL FUNCTION 'CONVERSION_EXIT_SXIDN_OUTPUT' EXPORTING input = WA_SOUD2-CHOADRNAM IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_SOUD2-CHOADRNAM.
WRITE:/ 'New Value:', ld_input.
*Conversion exit ALPHA, internal->external for field USRADR CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_SOUD2-USRADR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_SOUD2-USRADR.
WRITE:/ 'New Value:', ld_input.
*Conversion exit SXIDN, internal->external for field ADRNAME CALL FUNCTION 'CONVERSION_EXIT_SXIDN_OUTPUT' EXPORTING input = WA_SOUD2-ADRNAME IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_SOUD2-ADRNAME.
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_SOUD2_STR,
CRONAM TYPE STRING,
CROADRNAM TYPE STRING,
CRDAT TYPE STRING,
CRTIM TYPE STRING,
CHONAM TYPE STRING,
CHOADRNAM TYPE STRING,
CHDAT TYPE STRING,
CHTIM TYPE STRING,
SAPNAM TYPE STRING,
USRNAM TYPE STRING,
LOADAT TYPE STRING,
LGADAT TYPE STRING,
LPADAT TYPE STRING,
HOMAX TYPE STRING,
HOCNT TYPE STRING,
CRGDL TYPE STRING,
CRFCL TYPE STRING,
CRFCC TYPE STRING,
CRFPL TYPE STRING,
CRFDP TYPE STRING,
CRFAD TYPE STRING,
CRFGR TYPE STRING,
CALEN TYPE STRING,
OUTFL TYPE STRING,
NOTTP TYPE STRING,
GLMAX TYPE STRING,
GFMAX TYPE STRING,
GFCNT TYPE STRING,
EXMAX TYPE STRING,
RCMAX TYPE STRING,
INMAX TYPE STRING,
SQWIN TYPE STRING,
ADREXT TYPE STRING,
SYUSR TYPE STRING,
SYUSRINB TYPE STRING,
SYUSROUT TYPE STRING,
AUTEXT TYPE STRING,
INBYR TYPE STRING,
INBNO TYPE STRING,
OUTYR TYPE STRING,
OUTNO TYPE STRING,
WSTYR TYPE STRING,
WSTNO TYPE STRING,
PFRYR TYPE STRING,
PFRNO TYPE STRING,
PDLYR TYPE STRING,
PDLNO TYPE STRING,
VORYR TYPE STRING,
VORNO TYPE STRING,
NOTYR TYPE STRING,
NOTNO TYPE STRING,
REYR1 TYPE STRING,
RENO1 TYPE STRING,
REYR2 TYPE STRING,
RENO2 TYPE STRING,
DELETED TYPE STRING,
RSWORKDAY TYPE STRING,
RSFACID TYPE STRING,
USRADR TYPE STRING,
LFDNR TYPE STRING,
SNDART TYPE STRING,
FLAG1 TYPE STRING,
LADAT TYPE STRING,
VLADAT TYPE STRING,
LASDAT TYPE STRING,
INTSND TYPE STRING,
OFFMAX TYPE STRING,
NUMTELE TYPE STRING,
NUMSMTP TYPE STRING,
NUMX400 TYPE STRING,
NUMSAP TYPE STRING,
EXTTELE TYPE STRING,
EXTSMTP TYPE STRING,
EXTX400 TYPE STRING,
EXTSAP TYPE STRING,
EXTX500 TYPE STRING,
ARCHIV TYPE STRING,
ADRNAME TYPE STRING,
AREPYR TYPE STRING,
AREPNO TYPE STRING,
AREPABDAT TYPE STRING,
AREPAEDAT TYPE STRING,
FAXFORM TYPE STRING,
SCRFORM TYPE STRING,
FLAG2 TYPE STRING,
AUTOREPLY TYPE STRING,
AUTOFORWA TYPE STRING,
SUBSTITUTE TYPE STRING,
CHATSEND TYPE STRING,
NOARSDEX TYPE STRING,
PRPARCHG TYPE STRING,
PRPARNDH TYPE STRING,
PRPARRCL TYPE STRING,
PRPARNOP TYPE STRING,
DELFORIB TYPE STRING,
GHRAWDOC TYPE STRING,
FOLDSORT TYPE STRING,
DELTRASH TYPE STRING,
FOLLINYR TYPE STRING,
FOLLINNO TYPE STRING,
NORTFEDIT TYPE STRING,
PCOLE TYPE STRING,END OF T_EKKO_STR. DATA: WA_SOUD2_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_SOUD2_STR-CRONAM sy-vline
WA_SOUD2_STR-CROADRNAM sy-vline
WA_SOUD2_STR-CRDAT sy-vline
WA_SOUD2_STR-CRTIM sy-vline
WA_SOUD2_STR-CHONAM sy-vline
WA_SOUD2_STR-CHOADRNAM sy-vline
WA_SOUD2_STR-CHDAT sy-vline
WA_SOUD2_STR-CHTIM sy-vline
WA_SOUD2_STR-SAPNAM sy-vline
WA_SOUD2_STR-USRNAM sy-vline
WA_SOUD2_STR-LOADAT sy-vline
WA_SOUD2_STR-LGADAT sy-vline
WA_SOUD2_STR-LPADAT sy-vline
WA_SOUD2_STR-HOMAX sy-vline
WA_SOUD2_STR-HOCNT sy-vline
WA_SOUD2_STR-CRGDL sy-vline
WA_SOUD2_STR-CRFCL sy-vline
WA_SOUD2_STR-CRFCC sy-vline
WA_SOUD2_STR-CRFPL sy-vline
WA_SOUD2_STR-CRFDP sy-vline
WA_SOUD2_STR-CRFAD sy-vline
WA_SOUD2_STR-CRFGR sy-vline
WA_SOUD2_STR-CALEN sy-vline
WA_SOUD2_STR-OUTFL sy-vline
WA_SOUD2_STR-NOTTP sy-vline
WA_SOUD2_STR-GLMAX sy-vline
WA_SOUD2_STR-GFMAX sy-vline
WA_SOUD2_STR-GFCNT sy-vline
WA_SOUD2_STR-EXMAX sy-vline
WA_SOUD2_STR-RCMAX sy-vline
WA_SOUD2_STR-INMAX sy-vline
WA_SOUD2_STR-SQWIN sy-vline
WA_SOUD2_STR-ADREXT sy-vline
WA_SOUD2_STR-SYUSR sy-vline
WA_SOUD2_STR-SYUSRINB sy-vline
WA_SOUD2_STR-SYUSROUT sy-vline
WA_SOUD2_STR-AUTEXT sy-vline
WA_SOUD2_STR-INBYR sy-vline
WA_SOUD2_STR-INBNO sy-vline
WA_SOUD2_STR-OUTYR sy-vline
WA_SOUD2_STR-OUTNO sy-vline
WA_SOUD2_STR-WSTYR sy-vline
WA_SOUD2_STR-WSTNO sy-vline
WA_SOUD2_STR-PFRYR sy-vline
WA_SOUD2_STR-PFRNO sy-vline
WA_SOUD2_STR-PDLYR sy-vline
WA_SOUD2_STR-PDLNO sy-vline
WA_SOUD2_STR-VORYR sy-vline
WA_SOUD2_STR-VORNO sy-vline
WA_SOUD2_STR-NOTYR sy-vline
WA_SOUD2_STR-NOTNO sy-vline
WA_SOUD2_STR-REYR1 sy-vline
WA_SOUD2_STR-RENO1 sy-vline
WA_SOUD2_STR-REYR2 sy-vline
WA_SOUD2_STR-RENO2 sy-vline
WA_SOUD2_STR-DELETED sy-vline
WA_SOUD2_STR-RSWORKDAY sy-vline
WA_SOUD2_STR-RSFACID sy-vline
WA_SOUD2_STR-USRADR sy-vline
WA_SOUD2_STR-LFDNR sy-vline
WA_SOUD2_STR-SNDART sy-vline
WA_SOUD2_STR-FLAG1 sy-vline
WA_SOUD2_STR-LADAT sy-vline
WA_SOUD2_STR-VLADAT sy-vline
WA_SOUD2_STR-LASDAT sy-vline
WA_SOUD2_STR-INTSND sy-vline
WA_SOUD2_STR-OFFMAX sy-vline
WA_SOUD2_STR-NUMTELE sy-vline
WA_SOUD2_STR-NUMSMTP sy-vline
WA_SOUD2_STR-NUMX400 sy-vline
WA_SOUD2_STR-NUMSAP sy-vline
WA_SOUD2_STR-EXTTELE sy-vline
WA_SOUD2_STR-EXTSMTP sy-vline
WA_SOUD2_STR-EXTX400 sy-vline
WA_SOUD2_STR-EXTSAP sy-vline
WA_SOUD2_STR-EXTX500 sy-vline
WA_SOUD2_STR-ARCHIV sy-vline
WA_SOUD2_STR-ADRNAME sy-vline
WA_SOUD2_STR-AREPYR sy-vline
WA_SOUD2_STR-AREPNO sy-vline
WA_SOUD2_STR-AREPABDAT sy-vline
WA_SOUD2_STR-AREPAEDAT sy-vline
WA_SOUD2_STR-FAXFORM sy-vline
WA_SOUD2_STR-SCRFORM sy-vline
WA_SOUD2_STR-FLAG2 sy-vline
WA_SOUD2_STR-AUTOREPLY sy-vline
WA_SOUD2_STR-AUTOFORWA sy-vline
WA_SOUD2_STR-SUBSTITUTE sy-vline
WA_SOUD2_STR-CHATSEND sy-vline
WA_SOUD2_STR-NOARSDEX sy-vline
WA_SOUD2_STR-PRPARCHG sy-vline
WA_SOUD2_STR-PRPARNDH sy-vline
WA_SOUD2_STR-PRPARRCL sy-vline
WA_SOUD2_STR-PRPARNOP sy-vline
WA_SOUD2_STR-DELFORIB sy-vline
WA_SOUD2_STR-GHRAWDOC sy-vline
WA_SOUD2_STR-FOLDSORT sy-vline
WA_SOUD2_STR-DELTRASH sy-vline
WA_SOUD2_STR-FOLLINYR sy-vline
WA_SOUD2_STR-FOLLINNO sy-vline
WA_SOUD2_STR-NORTFEDIT sy-vline
WA_SOUD2_STR-PCOLE sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.