ABAP Select data from SAP table MCDOK 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 MCDOK 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 MCDOK. 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 MCDOK 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_MCDOK TYPE STANDARD TABLE OF MCDOK, WA_MCDOK TYPE MCDOK, 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: <MCDOK> TYPE MCDOK. *Process all fields in table header/work area as string values PERFORM process_as_string_field_values CHANGING wa_MCDOK. SELECT * *restrict ABAP select to first 10 rows UP TO 10 ROWS FROM MCDOK INTO TABLE IT_MCDOK. *Select data and declare internal table using in-line method @DATA *SELECT * * FROM MCDOK * INTO TABLE @DATA(IT_MCDOK2). *--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_MCDOK INDEX 1 INTO DATA(WA_MCDOK2). *Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL LOOP AT IT_MCDOK ASSIGNING <MCDOK>.*To update a field value using a field symbol simply change the value via the field symbol pointer
<MCDOK>-TRATX = 1.
<MCDOK>-REFNR = 1.
<MCDOK>-REFAR = 1.
<MCDOK>-REFVR = 1.
<MCDOK>-REFTL = 1.
ENDLOOP. LOOP AT IT_MCDOK INTO WA_MCDOK. *Write horizonal line to screen report. WRITE:/ sy-uline. *Write selected data to screen/report before conversion. WRITE:/ sy-vline, WA_MCDOK-REFTX, sy-vline,
WA_MCDOK-DOKNR, sy-vline,
WA_MCDOK-DOKAR, sy-vline,
WA_MCDOK-DOKVR, sy-vline,
WA_MCDOK-DOKTL, sy-vline,
WA_MCDOK-MARAF, sy-vline.
ENDLOOP. *Add any further fields from structure WA_MCDOK 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_MCDOK 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_MCDOK INTO WA_MCDOK. *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 REFNR CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_MCDOK-REFNR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_MCDOK-REFNR.
WRITE:/ 'New Value:', ld_input.
*Conversion exit ALPHA, internal->external for field DOKNR CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_MCDOK-DOKNR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_MCDOK-DOKNR.
WRITE:/ 'New Value:', ld_input.
*Conversion exit NUMCV, internal->external for field DREVLV CALL FUNCTION 'CONVERSION_EXIT_NUMCV_OUTPUT' EXPORTING input = WA_MCDOK-DREVLV IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_MCDOK-DREVLV.
WRITE:/ 'New Value:', ld_input.
*Conversion exit NUMCV, internal->external for field REVLV CALL FUNCTION 'CONVERSION_EXIT_NUMCV_OUTPUT' EXPORTING input = WA_MCDOK-REVLV IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_MCDOK-REVLV.
WRITE:/ 'New Value:', ld_input.
*Conversion exit ALPHA, internal->external for field QMNUM CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_MCDOK-QMNUM IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_MCDOK-QMNUM.
WRITE:/ 'New Value:', ld_input.
*Conversion exit ISOLA, internal->external for field FILE_LANG_VERSION CALL FUNCTION 'CONVERSION_EXIT_ISOLA_OUTPUT' EXPORTING input = WA_MCDOK-FILE_LANG_VERSION IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_MCDOK-FILE_LANG_VERSION.
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_MCDOK_STR,
TRATX TYPE STRING,
REFNR TYPE STRING,
REFAR TYPE STRING,
REFVR TYPE STRING,
REFTL TYPE STRING,
REFTX TYPE STRING,
DOKNR TYPE STRING,
DOKAR TYPE STRING,
DOKVR TYPE STRING,
DOKTL TYPE STRING,
MARAF TYPE STRING,
ACTION TYPE STRING,
SELFLD TYPE STRING,
DKTXT TYPE STRING,
CVHIER TYPE STRING,
STSEIT TYPE STRING,
STTAGE TYPE STRING,
SRTXT TYPE STRING,
APPLTXT1 TYPE STRING,
APPLTXT2 TYPE STRING,
KLASSE TYPE STRING,
KLASSENTYP TYPE STRING,
JAFELD TYPE STRING,
NOFELD TYPE STRING,
CVKLAS TYPE STRING,
PATNR TYPE STRING,
PZIFF TYPE STRING,
PNAME TYPE STRING,
FALNR TYPE STRING,
FZIFF TYPE STRING,
ORGFA TYPE STRING,
ORGFA_KB TYPE STRING,
ORGPF TYPE STRING,
ORGPF_KB TYPE STRING,
ORGAR TYPE STRING,
ORGAR_KB TYPE STRING,
KDEFPATH TYPE STRING,
FILEP TYPE STRING,
DTTRG TYPE STRING,
CVTEXT TYPE STRING,
CVTEXT1 TYPE STRING,
ORIGINAL1 TYPE STRING,
ORIGINAL2 TYPE STRING,
DKSTL TYPE STRING,
DREVLV TYPE STRING,
REVLV TYPE STRING,
HIGHTDOC TYPE STRING,
PRTPOST TYPE STRING,
FRTXT TYPE STRING,
QMNUM TYPE STRING,
VDIR TYPE STRING,
FILELEN TYPE STRING,
FILELEN1 TYPE STRING,
DLOCK_IGNORE TYPE STRING,
STBIS TYPE STRING,
STFLAG TYPE STRING,
STTAGEB TYPE STRING,
FILE_LANG_VERSION TYPE STRING,
FILE_ACT_VERSION TYPE STRING,
FILE_DESCRIPTION TYPE STRING,
ICON1 TYPE STRING,
ICON2 TYPE STRING,
DELETE_TEXT TYPE STRING,
BOM_TEXT TYPE STRING,
CAD_TEXT TYPE STRING,
HIERARCHIE_TEXT TYPE STRING,
STORAGE_CAT TYPE STRING,
FILE_NAME TYPE STRING,
VAULTFLAG TYPE STRING,
ARCHIVEFLAG TYPE STRING,
SAPDBFLAG TYPE STRING,
URL TYPE STRING,
ICON_CHECKED_IN TYPE STRING,
ICON_APPL TYPE STRING,
CONTENT_PROVIDE TYPE STRING,
ICON_COPY_STATUS TYPE STRING,
DMS_TARGET_FILEP TYPE STRING,
DMS_SOURCE_FILEP TYPE STRING,
IDX_EXPR_OR TYPE STRING,
IDX_EXPR_AND TYPE STRING,
IDX_SEARCH_TYPE TYPE STRING,
CM_FIXED_TEXT TYPE STRING,
MAXROWS TYPE STRING,
CHECKFLAG TYPE STRING,END OF T_EKKO_STR. DATA: WA_MCDOK_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_MCDOK_STR-TRATX sy-vline
WA_MCDOK_STR-REFNR sy-vline
WA_MCDOK_STR-REFAR sy-vline
WA_MCDOK_STR-REFVR sy-vline
WA_MCDOK_STR-REFTL sy-vline
WA_MCDOK_STR-REFTX sy-vline
WA_MCDOK_STR-DOKNR sy-vline
WA_MCDOK_STR-DOKAR sy-vline
WA_MCDOK_STR-DOKVR sy-vline
WA_MCDOK_STR-DOKTL sy-vline
WA_MCDOK_STR-MARAF sy-vline
WA_MCDOK_STR-ACTION sy-vline
WA_MCDOK_STR-SELFLD sy-vline
WA_MCDOK_STR-DKTXT sy-vline
WA_MCDOK_STR-CVHIER sy-vline
WA_MCDOK_STR-STSEIT sy-vline
WA_MCDOK_STR-STTAGE sy-vline
WA_MCDOK_STR-SRTXT sy-vline
WA_MCDOK_STR-APPLTXT1 sy-vline
WA_MCDOK_STR-APPLTXT2 sy-vline
WA_MCDOK_STR-KLASSE sy-vline
WA_MCDOK_STR-KLASSENTYP sy-vline
WA_MCDOK_STR-JAFELD sy-vline
WA_MCDOK_STR-NOFELD sy-vline
WA_MCDOK_STR-CVKLAS sy-vline
WA_MCDOK_STR-PATNR sy-vline
WA_MCDOK_STR-PZIFF sy-vline
WA_MCDOK_STR-PNAME sy-vline
WA_MCDOK_STR-FALNR sy-vline
WA_MCDOK_STR-FZIFF sy-vline
WA_MCDOK_STR-ORGFA sy-vline
WA_MCDOK_STR-ORGFA_KB sy-vline
WA_MCDOK_STR-ORGPF sy-vline
WA_MCDOK_STR-ORGPF_KB sy-vline
WA_MCDOK_STR-ORGAR sy-vline
WA_MCDOK_STR-ORGAR_KB sy-vline
WA_MCDOK_STR-KDEFPATH sy-vline
WA_MCDOK_STR-FILEP sy-vline
WA_MCDOK_STR-DTTRG sy-vline
WA_MCDOK_STR-CVTEXT sy-vline
WA_MCDOK_STR-CVTEXT1 sy-vline
WA_MCDOK_STR-ORIGINAL1 sy-vline
WA_MCDOK_STR-ORIGINAL2 sy-vline
WA_MCDOK_STR-DKSTL sy-vline
WA_MCDOK_STR-DREVLV sy-vline
WA_MCDOK_STR-REVLV sy-vline
WA_MCDOK_STR-HIGHTDOC sy-vline
WA_MCDOK_STR-PRTPOST sy-vline
WA_MCDOK_STR-FRTXT sy-vline
WA_MCDOK_STR-QMNUM sy-vline
WA_MCDOK_STR-VDIR sy-vline
WA_MCDOK_STR-FILELEN sy-vline
WA_MCDOK_STR-FILELEN1 sy-vline
WA_MCDOK_STR-DLOCK_IGNORE sy-vline
WA_MCDOK_STR-STBIS sy-vline
WA_MCDOK_STR-STFLAG sy-vline
WA_MCDOK_STR-STTAGEB sy-vline
WA_MCDOK_STR-FILE_LANG_VERSION sy-vline
WA_MCDOK_STR-FILE_ACT_VERSION sy-vline
WA_MCDOK_STR-FILE_DESCRIPTION sy-vline
WA_MCDOK_STR-ICON1 sy-vline
WA_MCDOK_STR-ICON2 sy-vline
WA_MCDOK_STR-DELETE_TEXT sy-vline
WA_MCDOK_STR-BOM_TEXT sy-vline
WA_MCDOK_STR-CAD_TEXT sy-vline
WA_MCDOK_STR-HIERARCHIE_TEXT sy-vline
WA_MCDOK_STR-STORAGE_CAT sy-vline
WA_MCDOK_STR-FILE_NAME sy-vline
WA_MCDOK_STR-VAULTFLAG sy-vline
WA_MCDOK_STR-ARCHIVEFLAG sy-vline
WA_MCDOK_STR-SAPDBFLAG sy-vline
WA_MCDOK_STR-URL sy-vline
WA_MCDOK_STR-ICON_CHECKED_IN sy-vline
WA_MCDOK_STR-ICON_APPL sy-vline
WA_MCDOK_STR-CONTENT_PROVIDE sy-vline
WA_MCDOK_STR-ICON_COPY_STATUS sy-vline
WA_MCDOK_STR-DMS_TARGET_FILEP sy-vline
WA_MCDOK_STR-DMS_SOURCE_FILEP sy-vline
WA_MCDOK_STR-IDX_EXPR_OR sy-vline
WA_MCDOK_STR-IDX_EXPR_AND sy-vline
WA_MCDOK_STR-IDX_SEARCH_TYPE sy-vline
WA_MCDOK_STR-CM_FIXED_TEXT sy-vline
WA_MCDOK_STR-MAXROWS sy-vline
WA_MCDOK_STR-CHECKFLAG sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.