ABAP Select data from SAP table MPDPSD 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 MPDPSD 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 MPDPSD. 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 MPDPSD 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_MPDPSD TYPE STANDARD TABLE OF MPDPSD, WA_MPDPSD TYPE MPDPSD, 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: <MPDPSD> TYPE MPDPSD. *Process all fields in table header/work area as string values PERFORM process_as_string_field_values CHANGING wa_MPDPSD. SELECT * *restrict ABAP select to first 10 rows UP TO 10 ROWS FROM MPDPSD INTO TABLE IT_MPDPSD. *Select data and declare internal table using in-line method @DATA *SELECT * * FROM MPDPSD * INTO TABLE @DATA(IT_MPDPSD2). *--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_MPDPSD INDEX 1 INTO DATA(WA_MPDPSD2). *Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL LOOP AT IT_MPDPSD ASSIGNING <MPDPSD>.*To update a field value using a field symbol simply change the value via the field symbol pointer
<MPDPSD>-MANDT = 1.
<MPDPSD>-PLAN_DATA_ID = 1.
<MPDPSD>-DOKAR = 1.
<MPDPSD>-DOKNR = 1.
<MPDPSD>-DOKVR = 1.
ENDLOOP. LOOP AT IT_MPDPSD INTO WA_MPDPSD. *Write horizonal line to screen report. WRITE:/ sy-uline. *Write selected data to screen/report before conversion. WRITE:/ sy-vline, WA_MPDPSD-DOKTL, sy-vline,
WA_MPDPSD-AENNR, sy-vline,
WA_MPDPSD-MPTYP, sy-vline,
WA_MPDPSD-WSET, sy-vline,
WA_MPDPSD-WPTXT, sy-vline,
WA_MPDPSD-PLAN_SORT, sy-vline.
ENDLOOP. *Add any further fields from structure WA_MPDPSD 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_MPDPSD 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_MPDPSD INTO WA_MPDPSD. *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 DOKNR CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_MPDPSD-DOKNR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_MPDPSD-DOKNR.
WRITE:/ 'New Value:', ld_input.
*Conversion exit ALPHA, internal->external for field AENNR CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_MPDPSD-AENNR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_MPDPSD-AENNR.
WRITE:/ 'New Value:', ld_input.
*Conversion exit CUNIT, internal->external for field HUNIT CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_MPDPSD-HUNIT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_MPDPSD-HUNIT.
WRITE:/ 'New Value:', ld_input.
*Conversion exit ALPHA, internal->external for field PLNNR CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_MPDPSD-PLNNR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_MPDPSD-PLNNR.
WRITE:/ 'New Value:', ld_input.
*Conversion exit ALPHA, internal->external for field PLNAL CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_MPDPSD-PLNAL IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_MPDPSD-PLNAL.
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_MPDPSD_STR,
MANDT TYPE STRING,
PLAN_DATA_ID TYPE STRING,
DOKAR TYPE STRING,
DOKNR TYPE STRING,
DOKVR TYPE STRING,
DOKTL TYPE STRING,
AENNR TYPE STRING,
MPTYP TYPE STRING,
WSET TYPE STRING,
WPTXT TYPE STRING,
PLAN_SORT TYPE STRING,
BEGRU TYPE STRING,
VSPOS TYPE STRING,
VSNEG TYPE STRING,
TOPOS TYPE STRING,
TOSNEG TYPE STRING,
SFAKT TYPE STRING,
STICH TYPE STRING,
FABKL TYPE STRING,
ABRHO TYPE STRING,
HUNIT TYPE STRING,
HORIZ TYPE STRING,
CALL_CONFIRM TYPE STRING,
STADT TYPE STRING,
SZAEH TYPE STRING,
PSTXT TYPE STRING,
IWERK TYPE STRING,
WPGRP TYPE STRING,
AUFART TYPE STRING,
ILART TYPE STRING,
GEWERK TYPE STRING,
WERGW TYPE STRING,
GSBER TYPE STRING,
PLNTY TYPE STRING,
PLNNR TYPE STRING,
PLNAL TYPE STRING,
APFKT TYPE STRING,
QMART TYPE STRING,
PRIOK TYPE STRING,
TASK_DETERMINE TYPE STRING,
DOC_UPDT TYPE STRING,
TLC_IND TYPE STRING,
MP_CRTD_IND TYPE STRING,
COMPLIANCE_DATE TYPE STRING,
JOBNAME TYPE STRING,
JOBCOUNT TYPE STRING,
START_DATE TYPE STRING,
START_TIME TYPE STRING,
OR_KNZ TYPE STRING,
AND_KNZ TYPE STRING,
VORLAUF TYPE STRING,
TOBE_UPDATED TYPE STRING,
TOBE_RESTARTED TYPE STRING,END OF T_EKKO_STR. DATA: WA_MPDPSD_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_MPDPSD_STR-MANDT sy-vline
WA_MPDPSD_STR-PLAN_DATA_ID sy-vline
WA_MPDPSD_STR-DOKAR sy-vline
WA_MPDPSD_STR-DOKNR sy-vline
WA_MPDPSD_STR-DOKVR sy-vline
WA_MPDPSD_STR-DOKTL sy-vline
WA_MPDPSD_STR-AENNR sy-vline
WA_MPDPSD_STR-MPTYP sy-vline
WA_MPDPSD_STR-WSET sy-vline
WA_MPDPSD_STR-WPTXT sy-vline
WA_MPDPSD_STR-PLAN_SORT sy-vline
WA_MPDPSD_STR-BEGRU sy-vline
WA_MPDPSD_STR-VSPOS sy-vline
WA_MPDPSD_STR-VSNEG sy-vline
WA_MPDPSD_STR-TOPOS sy-vline
WA_MPDPSD_STR-TOSNEG sy-vline
WA_MPDPSD_STR-SFAKT sy-vline
WA_MPDPSD_STR-STICH sy-vline
WA_MPDPSD_STR-FABKL sy-vline
WA_MPDPSD_STR-ABRHO sy-vline
WA_MPDPSD_STR-HUNIT sy-vline
WA_MPDPSD_STR-HORIZ sy-vline
WA_MPDPSD_STR-CALL_CONFIRM sy-vline
WA_MPDPSD_STR-STADT sy-vline
WA_MPDPSD_STR-SZAEH sy-vline
WA_MPDPSD_STR-PSTXT sy-vline
WA_MPDPSD_STR-IWERK sy-vline
WA_MPDPSD_STR-WPGRP sy-vline
WA_MPDPSD_STR-AUFART sy-vline
WA_MPDPSD_STR-ILART sy-vline
WA_MPDPSD_STR-GEWERK sy-vline
WA_MPDPSD_STR-WERGW sy-vline
WA_MPDPSD_STR-GSBER sy-vline
WA_MPDPSD_STR-PLNTY sy-vline
WA_MPDPSD_STR-PLNNR sy-vline
WA_MPDPSD_STR-PLNAL sy-vline
WA_MPDPSD_STR-APFKT sy-vline
WA_MPDPSD_STR-QMART sy-vline
WA_MPDPSD_STR-PRIOK sy-vline
WA_MPDPSD_STR-TASK_DETERMINE sy-vline
WA_MPDPSD_STR-DOC_UPDT sy-vline
WA_MPDPSD_STR-TLC_IND sy-vline
WA_MPDPSD_STR-MP_CRTD_IND sy-vline
WA_MPDPSD_STR-COMPLIANCE_DATE sy-vline
WA_MPDPSD_STR-JOBNAME sy-vline
WA_MPDPSD_STR-JOBCOUNT sy-vline
WA_MPDPSD_STR-START_DATE sy-vline
WA_MPDPSD_STR-START_TIME sy-vline
WA_MPDPSD_STR-OR_KNZ sy-vline
WA_MPDPSD_STR-AND_KNZ sy-vline
WA_MPDPSD_STR-VORLAUF sy-vline
WA_MPDPSD_STR-TOBE_UPDATED sy-vline
WA_MPDPSD_STR-TOBE_RESTARTED sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.