ABAP Select data from SAP table INTWKACTVTYVERSN 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 INTWKACTVTYVERSN 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 INTWKACTVTYVERSN. 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 INTWKACTVTYVERSN 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_INTWKACTVTYVERSN TYPE STANDARD TABLE OF INTWKACTVTYVERSN,
      WA_INTWKACTVTYVERSN TYPE INTWKACTVTYVERSN,
      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: <INTWKACTVTYVERSN> TYPE INTWKACTVTYVERSN.

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

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

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM INTWKACTVTYVERSN
*  INTO TABLE @DATA(IT_INTWKACTVTYVERSN2).
*--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_INTWKACTVTYVERSN INDEX 1 INTO DATA(WA_INTWKACTVTYVERSN2).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_INTWKACTVTYVERSN ASSIGNING <INTWKACTVTYVERSN>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<INTWKACTVTYVERSN>-MANDT = 1.
<INTWKACTVTYVERSN>-PROJECTNETWORK = 1.
<INTWKACTVTYVERSN>-NETWORKACTIVITY = 1.
<INTWKACTVTYVERSN>-VERSION = 1.
<INTWKACTVTYVERSN>-NETWORKACTIVITYDESCRIPTION = 1.
ENDLOOP.

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

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_INTWKACTVTYVERSN-SUPERIORNTWKACTIVITYEXTERNALID, sy-vline,
WA_INTWKACTVTYVERSN-PROJECT, sy-vline,
WA_INTWKACTVTYVERSN-PROJECTWITHCODINGMASK, sy-vline,
WA_INTWKACTVTYVERSN-PROJECTDESCRIPTION, sy-vline,
WA_INTWKACTVTYVERSN-PROFITCENTER, sy-vline,
WA_INTWKACTVTYVERSN-WBSELEMENT, sy-vline.
ENDLOOP. *Add any further fields from structure WA_INTWKACTVTYVERSN 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_INTWKACTVTYVERSN 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_INTWKACTVTYVERSN INTO WA_INTWKACTVTYVERSN. *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 PROJECTNETWORK CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-PROJECTNETWORK IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-PROJECTNETWORK.
WRITE:/ 'New Value:', ld_input.

*Conversion exit NUMCV, internal->external for field NETWORKACTIVITY CALL FUNCTION 'CONVERSION_EXIT_NUMCV_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-NETWORKACTIVITY IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-NETWORKACTIVITY.
WRITE:/ 'New Value:', ld_input.

*Conversion exit NUMCV, internal->external for field SUPERIORNTWKACTIVITYEXTERNALID CALL FUNCTION 'CONVERSION_EXIT_NUMCV_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-SUPERIORNTWKACTIVITYEXTERNALID IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-SUPERIORNTWKACTIVITYEXTERNALID.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ABPSN, internal->external for field PROJECT CALL FUNCTION 'CONVERSION_EXIT_ABPSN_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-PROJECT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-PROJECT.
WRITE:/ 'New Value:', ld_input.

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

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

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

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

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

*Conversion exit CUNIT, internal->external for field NETWORKACTIVITYQUANTITYUNIT CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-NETWORKACTIVITYQUANTITYUNIT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-NETWORKACTIVITYQUANTITYUNIT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field STANDARDDURATIONUNIT CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-STANDARDDURATIONUNIT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-STANDARDDURATIONUNIT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field MINIMUMDURATIONUNIT CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-MINIMUMDURATIONUNIT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-MINIMUMDURATIONUNIT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field NTWKACTIVITYWORKQUANTITYUNIT CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-NTWKACTIVITYWORKQUANTITYUNIT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-NTWKACTIVITYWORKQUANTITYUNIT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field FCSTDSTANDARDDURATIONUNIT CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-FCSTDSTANDARDDURATIONUNIT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-FCSTDSTANDARDDURATIONUNIT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field FORECASTEDMINIMUMDURATIONUNIT CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-FORECASTEDMINIMUMDURATIONUNIT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-FORECASTEDMINIMUMDURATIONUNIT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field STARTDATEOFFSETDURATIONUNIT CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-STARTDATEOFFSETDURATIONUNIT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-STARTDATEOFFSETDURATIONUNIT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field ENDDATEOFFSETDURATIONUNIT CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-ENDDATEOFFSETDURATIONUNIT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-ENDDATEOFFSETDURATIONUNIT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field ACTIVITYCONFFCSTDDURATIONUNIT CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-ACTIVITYCONFFCSTDDURATIONUNIT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-ACTIVITYCONFFCSTDDURATIONUNIT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ABPSP, internal->external for field WBSELEMENTINTERNALID CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-WBSELEMENTINTERNALID IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-WBSELEMENTINTERNALID.
WRITE:/ 'New Value:', ld_input.

*Conversion exit KONPD, internal->external for field PROJECTINTERNALID CALL FUNCTION 'CONVERSION_EXIT_KONPD_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-PROJECTINTERNALID IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-PROJECTINTERNALID.
WRITE:/ 'New Value:', ld_input.

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

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

*Conversion exit CUNIT, internal->external for field FREEDEFINEDQUANTITY2UNIT CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-FREEDEFINEDQUANTITY2UNIT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-FREEDEFINEDQUANTITY2UNIT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit CUNIT, internal->external for field FREEDEFINEDQUANTITY1UNIT CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-FREEDEFINEDQUANTITY1UNIT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-FREEDEFINEDQUANTITY1UNIT.
WRITE:/ 'New Value:', ld_input.

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

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

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

*Conversion exit ISOLA, internal->external for field LANGUAGE CALL FUNCTION 'CONVERSION_EXIT_ISOLA_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-LANGUAGE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-LANGUAGE.
WRITE:/ 'New Value:', ld_input.

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

*Conversion exit ALPHA, internal->external for field REQUESTINGCOSTCENTER CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_INTWKACTVTYVERSN-REQUESTINGCOSTCENTER IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_INTWKACTVTYVERSN-REQUESTINGCOSTCENTER.
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_INTWKACTVTYVERSN_STR,
MANDT TYPE STRING,
PROJECTNETWORK TYPE STRING,
NETWORKACTIVITY TYPE STRING,
VERSION TYPE STRING,
NETWORKACTIVITYDESCRIPTION TYPE STRING,
SUPERIORNTWKACTIVITYEXTERNALID TYPE STRING,
PROJECT TYPE STRING,
PROJECTWITHCODINGMASK TYPE STRING,
PROJECTDESCRIPTION TYPE STRING,
PROFITCENTER TYPE STRING,
WBSELEMENT TYPE STRING,
WBSELEMENTWITHCODINGMASK TYPE STRING,
WBSDESCRIPTION TYPE STRING,
NETWORKACTIVITYCONTROLPROFILE TYPE STRING,
WORKCENTER TYPE STRING,
ISMARKEDFORDELETION TYPE STRING,
PLANT TYPE STRING,
PLANTNAME TYPE STRING,
LEADTIMEREDUCTIONSTRATEGY TYPE STRING,
SUPPLIER TYPE STRING,
SUPPLIERNAME TYPE STRING,
NETWORKACTIVITYPRICEBASEQTY TYPE STRING,
EXTERNALPROCESSINGPRICE TYPE STRING,
COSTELEMENT TYPE STRING,
NETWORKACTIVITYCURRENCY TYPE STRING,
PURCHASINGINFORECORD TYPE STRING,
PURCHASINGORGANIZATION TYPE STRING,
PURCHASINGORGANIZATIONNAME TYPE STRING,
PURCHASINGGROUP TYPE STRING,
PURCHASINGGROUPNAME TYPE STRING,
MATERIALGROUP TYPE STRING,
STANDARDDURATIONISFLEXIBLE TYPE STRING,
COMPANYCODE TYPE STRING,
COMPANYCODENAME TYPE STRING,
CONTROLLINGAREA TYPE STRING,
OPERATIONCALCULATIONCONTROL TYPE STRING,
COSTCTRACTIVITYTYPE TYPE STRING,
NETWORKACTIVITYCOST TYPE STRING,
PURCHASEREQUISITION TYPE STRING,
PURCHASEREQUISITIONITEM TYPE STRING,
FACTORYCALENDAR TYPE STRING,
CAPACITYREQUIREMENTDISTRKEY TYPE STRING,
NETWORKACTIVITYPRIORITY TYPE STRING,
TAXJURISDICTION TYPE STRING,
CONTROLLINGOBJECTCLASS TYPE STRING,
BUSINESSAREA TYPE STRING,
PROGRESSANLYSAGGREGATIONWEIGHT TYPE STRING,
NETWORKACTIVITYOBJECTCURRENCY TYPE STRING,
REQUISITIONERUSER TYPE STRING,
PURGINFORECDDATAISFIXED TYPE STRING,
NETWORKACTIVITYQUANTITYUNIT TYPE STRING,
ACTIVITYQUANTITY TYPE STRING,
PLANNEDDELIVERYDURATIONINDAYS TYPE STRING,
STANDARDDURATIONUNIT TYPE STRING,
STANDARDDURATION TYPE STRING,
MINIMUMDURATION TYPE STRING,
MINIMUMDURATIONUNIT TYPE STRING,
ACTYBSCSTARTDATECONSTRAINTTYPE TYPE STRING,
ACTYBSCENDDATECONSTRAINTTYPE TYPE STRING,
NTWKACTIVITYWORKQUANTITYUNIT TYPE STRING,
PLANNEDWORKQUANTITY TYPE STRING,
ACTUALWORKQUANTITY TYPE STRING,
SCHEDLDBASICEARLIESTSTARTDATE TYPE STRING,
SCHEDLDBASICEARLIESTENDDATE TYPE STRING,
SCHEDLDBASICLATESTSTARTDATE TYPE STRING,
SCHEDULEDBASICLATESTENDDATE TYPE STRING,
ACTUALSTARTDATE TYPE STRING,
ACTUALENDDATE TYPE STRING,
FORECASTEDSTARTDATE TYPE STRING,
FORECASTEDENDDATE TYPE STRING,
CONSTRAINTDATEFORBSCSTARTDATE TYPE STRING,
CONSTRAINTDATEFORBSCENDDATE TYPE STRING,
SCHEDLDFCSTDEARLIESTSTARTDATE TYPE STRING,
SCHEDLDFCSTDEARLIESTENDDATE TYPE STRING,
LATESTSCHEDLDFCSTDSTARTDATE TYPE STRING,
LATESTSCHEDLDFCSTDENDDATE TYPE STRING,
ACTYCONFFCSTDENDDATE TYPE STRING,
BASICDATESFREEFLOAT TYPE STRING,
TOTALFLOATFORBASICDATES TYPE STRING,
TOTALFLOATFORFORECASTEDDATES TYPE STRING,
FORECASTEDDATESFREEFLOAT TYPE STRING,
FORECASTEDSTANDARDDURATION TYPE STRING,
FCSTDSTANDARDDURATIONUNIT TYPE STRING,
FORECASTEDMINIMUMDURATION TYPE STRING,
FORECASTEDMINIMUMDURATIONUNIT TYPE STRING,
ACTYFCSTENDDATECONSTRAINTTYPE TYPE STRING,
ACTYFCSTSTARTDTECONSTRAINTTYPE TYPE STRING,
FORECASTEDWORKQTY TYPE STRING,
STARTDATEOFFSETDURATION TYPE STRING,
STARTDATEOFFSETDURATIONUNIT TYPE STRING,
ENDDATEOFFSETDURATION TYPE STRING,
ENDDATEOFFSETDURATIONUNIT TYPE STRING,
ACTIVITYCONFFCSTDDURATION TYPE STRING,
ACTIVITYCONFFCSTDDURATIONUNIT TYPE STRING,
FUNCTIONALAREA TYPE STRING,
TAXJURISDICTIONCALCPROCEDURE TYPE STRING,
REMAININGWORKQUANTITY TYPE STRING,
WBSELEMENTINTERNALID TYPE STRING,
PROJECTOBJECT TYPE STRING,
WBSELEMENTOBJECT TYPE STRING,
NETWORKACTIVITYOBJECT TYPE STRING,
PROJECTNETWORKINTERNALID TYPE STRING,
NETWORKACTIVITYINTERNALID TYPE STRING,
PROJECTINTERNALID TYPE STRING,
ISEXTERNALACTIVITY TYPE STRING,
ACTIVITYISACCOUNTASSIGNED TYPE STRING,
ISSERVICEACTIVITY TYPE STRING,
ISINTERNALACTIVITY TYPE STRING,
OBJECTISCONFIRMED TYPE STRING,
OBJECTISPARTIALLYCONFIRMED TYPE STRING,
NETWORKACTIVITYDESCRIPTION2 TYPE STRING,
SCHEDLDBASICLATESTENDTIME TYPE STRING,
SCHEDLDBASICLATESTSTARTTIME TYPE STRING,
SCHEDLDFCSTDLATESTENDTIME TYPE STRING,
SCHEDLDFCSTDLATESTSTARTTIME TYPE STRING,
SCHEDLDBASICEARLIESTENDTIME TYPE STRING,
SCHEDLDBASICEARLIESTSTARTTIME TYPE STRING,
SCHEDLDFCSTDEARLIESTENDTIME TYPE STRING,
SCHEDLDFCSTDEARLIESTSTARTTIME TYPE STRING,
ACTYCONFFCSTDENDTIME TYPE STRING,
CONSTRAINTTIMEFORBASICENDTIME TYPE STRING,
CONSTRAINTTIMEFORBSCSTARTTIME TYPE STRING,
ACTUALEXECUTIONSTARTTIME TYPE STRING,
ACTUALEXECUTIONENDTIME TYPE STRING,
FORECASTEDSTARTTIME TYPE STRING,
FORECASTEDENDTIME TYPE STRING,
DISPATCHEDENDTIME TYPE STRING,
DISPATCHEDENDDATE TYPE STRING,
DISPATCHEDSTARTTIME TYPE STRING,
DISPATCHEDSTARTDATE TYPE STRING,
JOINTVENTURE TYPE STRING,
JOINTVENTURESUBCLASS TYPE STRING,
JOINTVENTURECLASS TYPE STRING,
JOINTVENTUREOBJECTTYPE TYPE STRING,
JNTVENTUREORIGLCOSTOBJECTTYPE TYPE STRING,
FREEDEFINEDINDICATOR2 TYPE STRING,
FREEDEFINEDINDICATOR1 TYPE STRING,
FREEDEFINEDDATE2 TYPE STRING,
FREEDEFINEDDATE1 TYPE STRING,
FREEDEFINEDAMOUNT2 TYPE STRING,
FREEDEFINEDAMOUNT1 TYPE STRING,
FREEDEFINEDQUANTITY2 TYPE STRING,
FREEDEFINEDQUANTITY1 TYPE STRING,
FREEDEFINEDATTRIBUTE04 TYPE STRING,
FREEDEFINEDATTRIBUTE03 TYPE STRING,
FREEDEFINEDATTRIBUTE02 TYPE STRING,
FREEDEFINEDATTRIBUTE01 TYPE STRING,
FREEDEFINEDAMOUNT1CURRENCY TYPE STRING,
FREEDEFINEDAMOUNT2CURRENCY TYPE STRING,
FREEDEFINEDQUANTITY2UNIT TYPE STRING,
FREEDEFINEDQUANTITY1UNIT TYPE STRING,
EXCHANGERATE TYPE STRING,
GOODSRECIPIENTNAME TYPE STRING,
SUPERIORNTWKACTIVITYINTERNALID TYPE STRING,
NETWORKACTIVITYCONFIRMATION TYPE STRING,
NTWKACTYCONFIRMATIONCOUNT TYPE STRING,
EMPLOYEESUITABILITY TYPE STRING,
PROJECTTEXTINTERNALID TYPE STRING,
OPERATIONIMPORTANCE TYPE STRING,
NTWKACTYISRELEVANTFORMATLPLNG TYPE STRING,
NTWKACCOUNTASSIGNMENTCODE TYPE STRING,
EMPLOYEEWAGETYPE TYPE STRING,
STANDARDTEXTINTERNALID TYPE STRING,
PURCHASINGDOCUMENTITEM TYPE STRING,
PURCHASINGDOCUMENT TYPE STRING,
ACTYISTAKENACCTFORPROJSMMRY TYPE STRING,
NUMBEROFCAPACITIES TYPE STRING,
NUMBEROFEMPLOYEES TYPE STRING,
PARTNERCOSTCENTER TYPE STRING,
UNLOADINGPOINTNAME TYPE STRING,
USAGECODE TYPE STRING,
LANGUAGE TYPE STRING,
WORKCENTERINTERNALID TYPE STRING,
ISCOSTACTIVITY TYPE STRING,
PURCHASINGINFORECDADDLGRPGNAME TYPE STRING,
MRPCONTROLLER TYPE STRING,
RESPCOSTCENTERCONTROLLINGAREA TYPE STRING,
RESPONSIBLECOSTCENTER TYPE STRING,
REQUESTINGCOSTCENTER TYPE STRING,
REQGCOSTCENTERCONTROLLINGAREA TYPE STRING,
WBSELEMENTHIERARCHYLEVEL TYPE STRING,
PROJECTTYPE TYPE STRING,
NETWORKACTIVITYCATEGORY TYPE STRING,
FREEDEFINEDTABLEFIELDSEMANTIC TYPE STRING,END OF T_EKKO_STR. DATA: WA_INTWKACTVTYVERSN_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_INTWKACTVTYVERSN_STR-MANDT sy-vline
WA_INTWKACTVTYVERSN_STR-PROJECTNETWORK sy-vline
WA_INTWKACTVTYVERSN_STR-NETWORKACTIVITY sy-vline
WA_INTWKACTVTYVERSN_STR-VERSION sy-vline
WA_INTWKACTVTYVERSN_STR-NETWORKACTIVITYDESCRIPTION sy-vline
WA_INTWKACTVTYVERSN_STR-SUPERIORNTWKACTIVITYEXTERNALID sy-vline
WA_INTWKACTVTYVERSN_STR-PROJECT sy-vline
WA_INTWKACTVTYVERSN_STR-PROJECTWITHCODINGMASK sy-vline
WA_INTWKACTVTYVERSN_STR-PROJECTDESCRIPTION sy-vline
WA_INTWKACTVTYVERSN_STR-PROFITCENTER sy-vline
WA_INTWKACTVTYVERSN_STR-WBSELEMENT sy-vline
WA_INTWKACTVTYVERSN_STR-WBSELEMENTWITHCODINGMASK sy-vline
WA_INTWKACTVTYVERSN_STR-WBSDESCRIPTION sy-vline
WA_INTWKACTVTYVERSN_STR-NETWORKACTIVITYCONTROLPROFILE sy-vline
WA_INTWKACTVTYVERSN_STR-WORKCENTER sy-vline
WA_INTWKACTVTYVERSN_STR-ISMARKEDFORDELETION sy-vline
WA_INTWKACTVTYVERSN_STR-PLANT sy-vline
WA_INTWKACTVTYVERSN_STR-PLANTNAME sy-vline
WA_INTWKACTVTYVERSN_STR-LEADTIMEREDUCTIONSTRATEGY sy-vline
WA_INTWKACTVTYVERSN_STR-SUPPLIER sy-vline
WA_INTWKACTVTYVERSN_STR-SUPPLIERNAME sy-vline
WA_INTWKACTVTYVERSN_STR-NETWORKACTIVITYPRICEBASEQTY sy-vline
WA_INTWKACTVTYVERSN_STR-EXTERNALPROCESSINGPRICE sy-vline
WA_INTWKACTVTYVERSN_STR-COSTELEMENT sy-vline
WA_INTWKACTVTYVERSN_STR-NETWORKACTIVITYCURRENCY sy-vline
WA_INTWKACTVTYVERSN_STR-PURCHASINGINFORECORD sy-vline
WA_INTWKACTVTYVERSN_STR-PURCHASINGORGANIZATION sy-vline
WA_INTWKACTVTYVERSN_STR-PURCHASINGORGANIZATIONNAME sy-vline
WA_INTWKACTVTYVERSN_STR-PURCHASINGGROUP sy-vline
WA_INTWKACTVTYVERSN_STR-PURCHASINGGROUPNAME sy-vline
WA_INTWKACTVTYVERSN_STR-MATERIALGROUP sy-vline
WA_INTWKACTVTYVERSN_STR-STANDARDDURATIONISFLEXIBLE sy-vline
WA_INTWKACTVTYVERSN_STR-COMPANYCODE sy-vline
WA_INTWKACTVTYVERSN_STR-COMPANYCODENAME sy-vline
WA_INTWKACTVTYVERSN_STR-CONTROLLINGAREA sy-vline
WA_INTWKACTVTYVERSN_STR-OPERATIONCALCULATIONCONTROL sy-vline
WA_INTWKACTVTYVERSN_STR-COSTCTRACTIVITYTYPE sy-vline
WA_INTWKACTVTYVERSN_STR-NETWORKACTIVITYCOST sy-vline
WA_INTWKACTVTYVERSN_STR-PURCHASEREQUISITION sy-vline
WA_INTWKACTVTYVERSN_STR-PURCHASEREQUISITIONITEM sy-vline
WA_INTWKACTVTYVERSN_STR-FACTORYCALENDAR sy-vline
WA_INTWKACTVTYVERSN_STR-CAPACITYREQUIREMENTDISTRKEY sy-vline
WA_INTWKACTVTYVERSN_STR-NETWORKACTIVITYPRIORITY sy-vline
WA_INTWKACTVTYVERSN_STR-TAXJURISDICTION sy-vline
WA_INTWKACTVTYVERSN_STR-CONTROLLINGOBJECTCLASS sy-vline
WA_INTWKACTVTYVERSN_STR-BUSINESSAREA sy-vline
WA_INTWKACTVTYVERSN_STR-PROGRESSANLYSAGGREGATIONWEIGHT sy-vline
WA_INTWKACTVTYVERSN_STR-NETWORKACTIVITYOBJECTCURRENCY sy-vline
WA_INTWKACTVTYVERSN_STR-REQUISITIONERUSER sy-vline
WA_INTWKACTVTYVERSN_STR-PURGINFORECDDATAISFIXED sy-vline
WA_INTWKACTVTYVERSN_STR-NETWORKACTIVITYQUANTITYUNIT sy-vline
WA_INTWKACTVTYVERSN_STR-ACTIVITYQUANTITY sy-vline
WA_INTWKACTVTYVERSN_STR-PLANNEDDELIVERYDURATIONINDAYS sy-vline
WA_INTWKACTVTYVERSN_STR-STANDARDDURATIONUNIT sy-vline
WA_INTWKACTVTYVERSN_STR-STANDARDDURATION sy-vline
WA_INTWKACTVTYVERSN_STR-MINIMUMDURATION sy-vline
WA_INTWKACTVTYVERSN_STR-MINIMUMDURATIONUNIT sy-vline
WA_INTWKACTVTYVERSN_STR-ACTYBSCSTARTDATECONSTRAINTTYPE sy-vline
WA_INTWKACTVTYVERSN_STR-ACTYBSCENDDATECONSTRAINTTYPE sy-vline
WA_INTWKACTVTYVERSN_STR-NTWKACTIVITYWORKQUANTITYUNIT sy-vline
WA_INTWKACTVTYVERSN_STR-PLANNEDWORKQUANTITY sy-vline
WA_INTWKACTVTYVERSN_STR-ACTUALWORKQUANTITY sy-vline
WA_INTWKACTVTYVERSN_STR-SCHEDLDBASICEARLIESTSTARTDATE sy-vline
WA_INTWKACTVTYVERSN_STR-SCHEDLDBASICEARLIESTENDDATE sy-vline
WA_INTWKACTVTYVERSN_STR-SCHEDLDBASICLATESTSTARTDATE sy-vline
WA_INTWKACTVTYVERSN_STR-SCHEDULEDBASICLATESTENDDATE sy-vline
WA_INTWKACTVTYVERSN_STR-ACTUALSTARTDATE sy-vline
WA_INTWKACTVTYVERSN_STR-ACTUALENDDATE sy-vline
WA_INTWKACTVTYVERSN_STR-FORECASTEDSTARTDATE sy-vline
WA_INTWKACTVTYVERSN_STR-FORECASTEDENDDATE sy-vline
WA_INTWKACTVTYVERSN_STR-CONSTRAINTDATEFORBSCSTARTDATE sy-vline
WA_INTWKACTVTYVERSN_STR-CONSTRAINTDATEFORBSCENDDATE sy-vline
WA_INTWKACTVTYVERSN_STR-SCHEDLDFCSTDEARLIESTSTARTDATE sy-vline
WA_INTWKACTVTYVERSN_STR-SCHEDLDFCSTDEARLIESTENDDATE sy-vline
WA_INTWKACTVTYVERSN_STR-LATESTSCHEDLDFCSTDSTARTDATE sy-vline
WA_INTWKACTVTYVERSN_STR-LATESTSCHEDLDFCSTDENDDATE sy-vline
WA_INTWKACTVTYVERSN_STR-ACTYCONFFCSTDENDDATE sy-vline
WA_INTWKACTVTYVERSN_STR-BASICDATESFREEFLOAT sy-vline
WA_INTWKACTVTYVERSN_STR-TOTALFLOATFORBASICDATES sy-vline
WA_INTWKACTVTYVERSN_STR-TOTALFLOATFORFORECASTEDDATES sy-vline
WA_INTWKACTVTYVERSN_STR-FORECASTEDDATESFREEFLOAT sy-vline
WA_INTWKACTVTYVERSN_STR-FORECASTEDSTANDARDDURATION sy-vline
WA_INTWKACTVTYVERSN_STR-FCSTDSTANDARDDURATIONUNIT sy-vline
WA_INTWKACTVTYVERSN_STR-FORECASTEDMINIMUMDURATION sy-vline
WA_INTWKACTVTYVERSN_STR-FORECASTEDMINIMUMDURATIONUNIT sy-vline
WA_INTWKACTVTYVERSN_STR-ACTYFCSTENDDATECONSTRAINTTYPE sy-vline
WA_INTWKACTVTYVERSN_STR-ACTYFCSTSTARTDTECONSTRAINTTYPE sy-vline
WA_INTWKACTVTYVERSN_STR-FORECASTEDWORKQTY sy-vline
WA_INTWKACTVTYVERSN_STR-STARTDATEOFFSETDURATION sy-vline
WA_INTWKACTVTYVERSN_STR-STARTDATEOFFSETDURATIONUNIT sy-vline
WA_INTWKACTVTYVERSN_STR-ENDDATEOFFSETDURATION sy-vline
WA_INTWKACTVTYVERSN_STR-ENDDATEOFFSETDURATIONUNIT sy-vline
WA_INTWKACTVTYVERSN_STR-ACTIVITYCONFFCSTDDURATION sy-vline
WA_INTWKACTVTYVERSN_STR-ACTIVITYCONFFCSTDDURATIONUNIT sy-vline
WA_INTWKACTVTYVERSN_STR-FUNCTIONALAREA sy-vline
WA_INTWKACTVTYVERSN_STR-TAXJURISDICTIONCALCPROCEDURE sy-vline
WA_INTWKACTVTYVERSN_STR-REMAININGWORKQUANTITY sy-vline
WA_INTWKACTVTYVERSN_STR-WBSELEMENTINTERNALID sy-vline
WA_INTWKACTVTYVERSN_STR-PROJECTOBJECT sy-vline
WA_INTWKACTVTYVERSN_STR-WBSELEMENTOBJECT sy-vline
WA_INTWKACTVTYVERSN_STR-NETWORKACTIVITYOBJECT sy-vline
WA_INTWKACTVTYVERSN_STR-PROJECTNETWORKINTERNALID sy-vline
WA_INTWKACTVTYVERSN_STR-NETWORKACTIVITYINTERNALID sy-vline
WA_INTWKACTVTYVERSN_STR-PROJECTINTERNALID sy-vline
WA_INTWKACTVTYVERSN_STR-ISEXTERNALACTIVITY sy-vline
WA_INTWKACTVTYVERSN_STR-ACTIVITYISACCOUNTASSIGNED sy-vline
WA_INTWKACTVTYVERSN_STR-ISSERVICEACTIVITY sy-vline
WA_INTWKACTVTYVERSN_STR-ISINTERNALACTIVITY sy-vline
WA_INTWKACTVTYVERSN_STR-OBJECTISCONFIRMED sy-vline
WA_INTWKACTVTYVERSN_STR-OBJECTISPARTIALLYCONFIRMED sy-vline
WA_INTWKACTVTYVERSN_STR-NETWORKACTIVITYDESCRIPTION2 sy-vline
WA_INTWKACTVTYVERSN_STR-SCHEDLDBASICLATESTENDTIME sy-vline
WA_INTWKACTVTYVERSN_STR-SCHEDLDBASICLATESTSTARTTIME sy-vline
WA_INTWKACTVTYVERSN_STR-SCHEDLDFCSTDLATESTENDTIME sy-vline
WA_INTWKACTVTYVERSN_STR-SCHEDLDFCSTDLATESTSTARTTIME sy-vline
WA_INTWKACTVTYVERSN_STR-SCHEDLDBASICEARLIESTENDTIME sy-vline
WA_INTWKACTVTYVERSN_STR-SCHEDLDBASICEARLIESTSTARTTIME sy-vline
WA_INTWKACTVTYVERSN_STR-SCHEDLDFCSTDEARLIESTENDTIME sy-vline
WA_INTWKACTVTYVERSN_STR-SCHEDLDFCSTDEARLIESTSTARTTIME sy-vline
WA_INTWKACTVTYVERSN_STR-ACTYCONFFCSTDENDTIME sy-vline
WA_INTWKACTVTYVERSN_STR-CONSTRAINTTIMEFORBASICENDTIME sy-vline
WA_INTWKACTVTYVERSN_STR-CONSTRAINTTIMEFORBSCSTARTTIME sy-vline
WA_INTWKACTVTYVERSN_STR-ACTUALEXECUTIONSTARTTIME sy-vline
WA_INTWKACTVTYVERSN_STR-ACTUALEXECUTIONENDTIME sy-vline
WA_INTWKACTVTYVERSN_STR-FORECASTEDSTARTTIME sy-vline
WA_INTWKACTVTYVERSN_STR-FORECASTEDENDTIME sy-vline
WA_INTWKACTVTYVERSN_STR-DISPATCHEDENDTIME sy-vline
WA_INTWKACTVTYVERSN_STR-DISPATCHEDENDDATE sy-vline
WA_INTWKACTVTYVERSN_STR-DISPATCHEDSTARTTIME sy-vline
WA_INTWKACTVTYVERSN_STR-DISPATCHEDSTARTDATE sy-vline
WA_INTWKACTVTYVERSN_STR-JOINTVENTURE sy-vline
WA_INTWKACTVTYVERSN_STR-JOINTVENTURESUBCLASS sy-vline
WA_INTWKACTVTYVERSN_STR-JOINTVENTURECLASS sy-vline
WA_INTWKACTVTYVERSN_STR-JOINTVENTUREOBJECTTYPE sy-vline
WA_INTWKACTVTYVERSN_STR-JNTVENTUREORIGLCOSTOBJECTTYPE sy-vline
WA_INTWKACTVTYVERSN_STR-FREEDEFINEDINDICATOR2 sy-vline
WA_INTWKACTVTYVERSN_STR-FREEDEFINEDINDICATOR1 sy-vline
WA_INTWKACTVTYVERSN_STR-FREEDEFINEDDATE2 sy-vline
WA_INTWKACTVTYVERSN_STR-FREEDEFINEDDATE1 sy-vline
WA_INTWKACTVTYVERSN_STR-FREEDEFINEDAMOUNT2 sy-vline
WA_INTWKACTVTYVERSN_STR-FREEDEFINEDAMOUNT1 sy-vline
WA_INTWKACTVTYVERSN_STR-FREEDEFINEDQUANTITY2 sy-vline
WA_INTWKACTVTYVERSN_STR-FREEDEFINEDQUANTITY1 sy-vline
WA_INTWKACTVTYVERSN_STR-FREEDEFINEDATTRIBUTE04 sy-vline
WA_INTWKACTVTYVERSN_STR-FREEDEFINEDATTRIBUTE03 sy-vline
WA_INTWKACTVTYVERSN_STR-FREEDEFINEDATTRIBUTE02 sy-vline
WA_INTWKACTVTYVERSN_STR-FREEDEFINEDATTRIBUTE01 sy-vline
WA_INTWKACTVTYVERSN_STR-FREEDEFINEDAMOUNT1CURRENCY sy-vline
WA_INTWKACTVTYVERSN_STR-FREEDEFINEDAMOUNT2CURRENCY sy-vline
WA_INTWKACTVTYVERSN_STR-FREEDEFINEDQUANTITY2UNIT sy-vline
WA_INTWKACTVTYVERSN_STR-FREEDEFINEDQUANTITY1UNIT sy-vline
WA_INTWKACTVTYVERSN_STR-EXCHANGERATE sy-vline
WA_INTWKACTVTYVERSN_STR-GOODSRECIPIENTNAME sy-vline
WA_INTWKACTVTYVERSN_STR-SUPERIORNTWKACTIVITYINTERNALID sy-vline
WA_INTWKACTVTYVERSN_STR-NETWORKACTIVITYCONFIRMATION sy-vline
WA_INTWKACTVTYVERSN_STR-NTWKACTYCONFIRMATIONCOUNT sy-vline
WA_INTWKACTVTYVERSN_STR-EMPLOYEESUITABILITY sy-vline
WA_INTWKACTVTYVERSN_STR-PROJECTTEXTINTERNALID sy-vline
WA_INTWKACTVTYVERSN_STR-OPERATIONIMPORTANCE sy-vline
WA_INTWKACTVTYVERSN_STR-NTWKACTYISRELEVANTFORMATLPLNG sy-vline
WA_INTWKACTVTYVERSN_STR-NTWKACCOUNTASSIGNMENTCODE sy-vline
WA_INTWKACTVTYVERSN_STR-EMPLOYEEWAGETYPE sy-vline
WA_INTWKACTVTYVERSN_STR-STANDARDTEXTINTERNALID sy-vline
WA_INTWKACTVTYVERSN_STR-PURCHASINGDOCUMENTITEM sy-vline
WA_INTWKACTVTYVERSN_STR-PURCHASINGDOCUMENT sy-vline
WA_INTWKACTVTYVERSN_STR-ACTYISTAKENACCTFORPROJSMMRY sy-vline
WA_INTWKACTVTYVERSN_STR-NUMBEROFCAPACITIES sy-vline
WA_INTWKACTVTYVERSN_STR-NUMBEROFEMPLOYEES sy-vline
WA_INTWKACTVTYVERSN_STR-PARTNERCOSTCENTER sy-vline
WA_INTWKACTVTYVERSN_STR-UNLOADINGPOINTNAME sy-vline
WA_INTWKACTVTYVERSN_STR-USAGECODE sy-vline
WA_INTWKACTVTYVERSN_STR-LANGUAGE sy-vline
WA_INTWKACTVTYVERSN_STR-WORKCENTERINTERNALID sy-vline
WA_INTWKACTVTYVERSN_STR-ISCOSTACTIVITY sy-vline
WA_INTWKACTVTYVERSN_STR-PURCHASINGINFORECDADDLGRPGNAME sy-vline
WA_INTWKACTVTYVERSN_STR-MRPCONTROLLER sy-vline
WA_INTWKACTVTYVERSN_STR-RESPCOSTCENTERCONTROLLINGAREA sy-vline
WA_INTWKACTVTYVERSN_STR-RESPONSIBLECOSTCENTER sy-vline
WA_INTWKACTVTYVERSN_STR-REQUESTINGCOSTCENTER sy-vline
WA_INTWKACTVTYVERSN_STR-REQGCOSTCENTERCONTROLLINGAREA sy-vline
WA_INTWKACTVTYVERSN_STR-WBSELEMENTHIERARCHYLEVEL sy-vline
WA_INTWKACTVTYVERSN_STR-PROJECTTYPE sy-vline
WA_INTWKACTVTYVERSN_STR-NETWORKACTIVITYCATEGORY sy-vline
WA_INTWKACTVTYVERSN_STR-FREEDEFINEDTABLEFIELDSEMANTIC sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.