Wednesday, 7 August 2019

How to create your own DMEE Tree Type? Part 1 of 2

Introduction


Almost every SAP consultant in Finance area associates DMEE transaction with building own DME Trees for payment using the most commonly used Tree Type PAYD.

In some countries consultants also see that other tree types are used like DSLH / UMS1/ ASLD etc. for providing VAT statements/ EC Sales list etc.

It looks like DME could be used to build any type of XML based on any information. This leads to searching on internet questions like ‘how to create your own DME tree type’ and to be honest this is also what I was trying to look for. This question remains mostly unanswered because there is nowhere a description on how to create/ customize and most of all – successfully run your own tree type.

Curiosity pushed me to investigate on that matter and having successfully created an own DME Tree Type I would like to share this knowledge so that all fellow consultants can get this low hanging fruit and use it in their future ideas how to handle both legal and non-legal requirements of XML file creation.

An Idea


Extensible Mark-up Language – XML – is the abbreviation that currently all tax and financial authorities are focused on in Europe (and not only). Country by country, type by type everything needs to be shared by each company with authorities so that big data analysis and easier fraud detection can be conducted.

Every ERP system must be able to produce XMLs with required data otherwise huge penalties threaten. This includes SAP – so SAP developed a tool called eDocument to extract / map / receive information. This tool is offered in Basic and Full version. It is paid by package of documents and requires additional licences and fees for the SAP Cloud Integration with financial authorities. This is quite a handy tool but it cannot handle all information like for example extracts of simple FI documents which were not created by means of SD document.

Therefore quite some number of SAP Partners developed additional tools to produce the files in desired format and interface them with tax authorities.

Standard Audit File requested by countries like Poland, Portugal and some others is another example of Tax data to be delivered – unfortunately not in every country SAP is delivering solution in standard – for example in Poland it is an add-on that needs to be purchased additionally and undergoes a separate license fee.

All that resulted in companies taking over the development and building own solutions. This requires some extraction tables/ reports and XML creation. Developers would probably tend to use XML transformation which is quite an uncomplicated tool but then the whole mapping logic/ conditions would need to done in the extraction reports making it less flexible to adjustments (as practice shows – almost each year authorities adjust the file structure).

How to start


DMEE tree definition is not complicated but there are some rules to follow which will be presented further.

The definition created for usage of this blog will be an extraction of invoice data – lines, header and deliveries.

Create communication structure


At first the communication structure should be defined – there could be in total 3 different structures:

1. Main communication structure
2. Additional information structure
3. Format specific structure

The structures defined here will be structured in following way:

1. Main communication structure:

i. Data from VBRK
ii. Data from VBRP
iii. Data from LIKP and LIPS

2. Additional information structure:

i. Company Code Data

Format specific structure will not be used in this example in data creation.

Main communication structure


This structure is normally used as main comfort DME file that contains header/ item etc. information and is used to build XML structure based on delivered items.

Here 3 structures were created:

ZDMEE_INVOICE_HEADER – containing some of the VBRK fields

ZDMEE_INVOICE_LINE – containing some of the VBRP fields

ZDMEE_DELIVERY_LINE – containing mix of field from LIKP and LIPS

These will be used to pass information to DME Tree for items creation.

As there will be 3 data sources for main communication structure there must be a data type (here ZDMEE_INVOICE_DATA) that groups them:

SAP ABAP Certifications, SAP ABAP Study Materials, SAP ABAP Tutorial and Materials, SAP ABAP Learning, SAP ABAP Online Guides

Pay attention to component naming because it must have the same name as the type! The reason for that is that DME Tool tries to dynamically create the structure based on the component name and fields included in the corresponding type.

If component names would vary from the component type, like in example below:

SAP ABAP Certifications, SAP ABAP Study Materials, SAP ABAP Tutorial and Materials, SAP ABAP Learning, SAP ABAP Online Guides

Then during execution of DME Engine a dump would be generated that the type is unknow.

Additional information structure


This structure is normally used to pass additional information that is not changeable based on items – like company data / analysis period etc.

In this example we will pass company code data using structure ZDMEE_ADD_PARAMS:

SAP ABAP Certifications, SAP ABAP Study Materials, SAP ABAP Tutorial and Materials, SAP ABAP Learning, SAP ABAP Online Guides

That use underlying structure ZDMEE_INVOICE_ADD_DATA where communication fields were entered:

SAP ABAP Certifications, SAP ABAP Study Materials, SAP ABAP Tutorial and Materials, SAP ABAP Learning, SAP ABAP Online Guides

DME configuration allows to create 2 additional communication structures – second is for example used in PAYM Tree to pass Note To Payee data (DMEE_PAYM_IF_TAB).

In our example we will not use a second communication structure as it is not needed for the tree type presented.

Create own DME Tree Type


Having prepared communication structures we are ready to create own DME Tree Type in customizing.

There is no IMG access to this customizing so direct table maintenance via SM30 is required. View used for definition of DME Tree Types is V_DMEE_TREE_TYPE:

SAP ABAP Certifications, SAP ABAP Study Materials, SAP ABAP Tutorial and Materials, SAP ABAP Learning, SAP ABAP Online Guides

Pay attention while doing changes in this table that the standard delivery provided by SAP is not changed – otherwise existing DME Trees will stop working.

For usage of this blog DME Tree Type ‘ZZIV” will be created – start names of your types either with Z or Y or with / – these are unused by SAP. It will be foreseen only for outgoing information.

Add new entry in the table with specification of interface types:

SAP ABAP Certifications, SAP ABAP Study Materials, SAP ABAP Tutorial and Materials, SAP ABAP Learning, SAP ABAP Online Guides

In this case the sequence of interface types is as stated above main communication structure followed by first and second additional communication structure.

In next fields specify the description of your type:

SAP ABAP Certifications, SAP ABAP Study Materials, SAP ABAP Tutorial and Materials, SAP ABAP Learning, SAP ABAP Online Guides

As additional information specify:

SAP ABAP Certifications, SAP ABAP Study Materials, SAP ABAP Tutorial and Materials, SAP ABAP Learning, SAP ABAP Online Guides

The documentation object- default is DMEE_TREE_TEMPLATE but pay attention that this is mainly foreseen for Tree Type PAYM.

In addition each DME Tree that will be created using this type can have own documentation specified.  These texts are stored in SE61 under type ‘TX’ (General text).

Also authorization group for maintenance of DME can be specified.

As last information that the key fields do not need to be sorted in the output can be specified. This controls the usage of field ‘No Sorting’ in DME Parameters:

SAP ABAP Certifications, SAP ABAP Study Materials, SAP ABAP Tutorial and Materials, SAP ABAP Learning, SAP ABAP Online Guides

The DME Tree Type created can be saved afterwards – from this moment on it is possible to use it.

Create own DMEE Tree


As a last step in DME creation a specific tree should be created – for this use DMEE transaction and specify your Tree Type:

SAP ABAP Certifications, SAP ABAP Study Materials, SAP ABAP Tutorial and Materials, SAP ABAP Learning, SAP ABAP Online Guides

Then just give it a name and create a new tree.

SAP ABAP Certifications, SAP ABAP Study Materials, SAP ABAP Tutorial and Materials, SAP ABAP Learning, SAP ABAP Online Guides

In this example following XML tree will be created:

SAP ABAP Certifications, SAP ABAP Study Materials, SAP ABAP Tutorial and Materials, SAP ABAP Learning, SAP ABAP Online Guides

All the fields defined in communication structures are available:

SAP ABAP Certifications, SAP ABAP Study Materials, SAP ABAP Tutorial and Materials, SAP ABAP Learning, SAP ABAP Online Guides

Unfortunately XML file cannot be uploaded to this blog but please find below XML of DME which can be saved in your PC and then uploaded in DMEE. File was generated with ‘Target-release 4.6C’ to ensure that everyone can upload the file into own system.

<?xml version="1.0" encoding="utf-8"?>
<Document>
<Converted Target="46C">
<BasisRelease>740</BasisRelease>
</Converted>
<Header>
<Attribute>
<Type>ZZIV</Type>
<Name>INVOICE_DATA</Name>
<XMLTree>X</XMLTree>
<Description>Invoice data extraction</Description>
<TableName/>
<XSLTProgram/>
<FieldType/>
<SegmentGroupDelimiter/>
<SegementDelimiter/>
<CompositeDelimiter/>
<Collapse/>
<Escape/>
<PrintSheet/>
</Attribute>
<FileData>
<SegmentCR/>
<SegmentLF/>
</FileData>
<Level>
<LevelNumber>000</LevelNumber>
<Limit>9999999</Limit>
</Level>
<Level>
<LevelNumber>001</LevelNumber>
<Limit>0000001</Limit>
</Level>
<Level>
<LevelNumber>002</LevelNumber>
<Limit>9999999</Limit>
</Level>
<Level>
<LevelNumber>003</LevelNumber>
<Limit>9999999</Limit>
</Level>
<Level>
<LevelNumber>004</LevelNumber>
<Limit>9999999</Limit>
</Level>
<Sort>
<SortOrder>001</SortOrder>
<KeyField>X</KeyField>
<KeyOnly/>
<TableName>ZDMEE_INVOICE_HEADER</TableName>
<FieldName>BUKRS</FieldName>
<LevelNumber>001</LevelNumber>
</Sort>
<Sort>
<SortOrder>002</SortOrder>
<KeyField>X</KeyField>
<KeyOnly/>
<TableName>ZDMEE_INVOICE_HEADER</TableName>
<FieldName>VBELN</FieldName>
<LevelNumber>002</LevelNumber>
</Sort>
<Sort>
<SortOrder>003</SortOrder>
<KeyField>X</KeyField>
<KeyOnly/>
<TableName>ZDMEE_INVOICE_LINE</TableName>
<FieldName>POSNR</FieldName>
<LevelNumber>003</LevelNumber>
</Sort>
<Sort>
<SortOrder>004</SortOrder>
<KeyField>X</KeyField>
<KeyOnly/>
<TableName>ZDMEE_DELIVERY_LINE</TableName>
<FieldName>VBELN</FieldName>
<LevelNumber>004</LevelNumber>
</Sort>
</Header>
<Details>
<Element>
<Name>Invoice_Data</Name>
<Description>Invoice data</Description>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>001</LevelNumber>
<Convert/>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>8</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName/>
<FieldName/>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
<Element>
<Name>Reporting_Company</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>001</LevelNumber>
<Convert/>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>8</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName/>
<FieldName/>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
<Element>
<Name>Company_Name</Name>
<Description/>
<ReferenzID/>
<Length>0025</Length>
<Type>C</Type>
<Status/>
<LevelNumber>001</LevelNumber>
<Convert>CLURP    X</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_ADD_DATA</TableName>
<FieldName>BUTXT</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Company_Address</Name>
<Description/>
<ReferenzID/>
<Length>0080</Length>
<Type>C</Type>
<Status/>
<LevelNumber>001</LevelNumber>
<Convert>CLURP    X</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>6</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName/>
<FieldName/>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
<AtomHandl>02</AtomHandl>
<Atom>
<Name>Postal_Code</Name>
<Description/>
<ReferenzID/>
<Length>0008</Length>
<Type>C</Type>
<Status/>
<Convert/>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_ADD_DATA</TableName>
<FieldName>POST_CODE1</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Atom>
<Atom>
<Name>City</Name>
<Description/>
<ReferenzID/>
<Length>0020</Length>
<Type>C</Type>
<Status/>
<Convert/>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_ADD_DATA</TableName>
<FieldName>ORT01</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Atom>
<Atom>
<Name>Street</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<Convert>CLURP    X</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_ADD_DATA</TableName>
<FieldName>HOUSE_NUM1</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Atom>
<Atom>
<Name>House_Number</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<Convert/>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_ADD_DATA</TableName>
<FieldName>HOUSE_NUM1</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Atom>
</Element>
</Element>
<Element>
<Name>Header</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>002</LevelNumber>
<Convert/>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>1</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName/>
<FieldName/>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
<Element>
<Name>Invoice_Number</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>002</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_HEADER</TableName>
<FieldName>VBELN</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Sales_Organization</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>002</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_HEADER</TableName>
<FieldName>VKORG</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Distribution_Channel</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>002</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_HEADER</TableName>
<FieldName>VTWEG</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Division</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>002</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_HEADER</TableName>
<FieldName>SPART</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Incoterms</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>002</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_HEADER</TableName>
<FieldName>INCO1</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Payment_Terms</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>002</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_HEADER</TableName>
<FieldName>ZTERM</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Creator</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>002</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_HEADER</TableName>
<FieldName>ERNAM</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Purchase_Order_Number</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>002</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_HEADER</TableName>
<FieldName>BSTNK_VF</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Tax_Departure_Country</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>002</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_HEADER</TableName>
<FieldName>LANDTX</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Tax_Destinaton_Country</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>002</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_HEADER</TableName>
<FieldName>LAND1</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Payer</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>002</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_HEADER</TableName>
<FieldName>KUNRG</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Sold_to</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>002</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_HEADER</TableName>
<FieldName>KUNAG</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Line</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>003</LevelNumber>
<Convert/>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>8</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName/>
<FieldName/>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
<Element>
<Name>Position_number</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>003</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_LINE</TableName>
<FieldName>POSNR</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Amount</Name>
<Description/>
<ReferenzID/>
<Length>0015</Length>
<Type>V</Type>
<Status/>
<LevelNumber>003</LevelNumber>
<Convert>AL,2</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_LINE</TableName>
<FieldName>NETWR</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Tax_Amount</Name>
<Description/>
<ReferenzID/>
<Length>0015</Length>
<Type>V</Type>
<Status/>
<LevelNumber>003</LevelNumber>
<Convert>AL,2</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_LINE</TableName>
<FieldName>MWSBP</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Price</Name>
<Description/>
<ReferenzID/>
<Length>0015</Length>
<Type>P</Type>
<Status/>
<LevelNumber>003</LevelNumber>
<Convert>AL.2 R</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_LINE</TableName>
<FieldName>CMPRE</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Pricing_date</Name>
<Description/>
<ReferenzID/>
<Length>0010</Length>
<Type>C</Type>
<Status/>
<LevelNumber>003</LevelNumber>
<Convert>D.DDMMYYYY</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_LINE</TableName>
<FieldName>PRSDT</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Unit_of_Measure</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>003</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_LINE</TableName>
<FieldName>GEWEI</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Pricing_unit</Name>
<Description/>
<ReferenzID/>
<Length>0003</Length>
<Type>C</Type>
<Status/>
<LevelNumber>003</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_LINE</TableName>
<FieldName>VRKME</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Billed_quantity</Name>
<Description/>
<ReferenzID/>
<Length>0012</Length>
<Type>C</Type>
<Status/>
<LevelNumber>003</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_LINE</TableName>
<FieldName>FKIMG</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Gross_weight</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>003</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_LINE</TableName>
<FieldName>BRGEW</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Weight_Unit_of_Measure</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>003</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_LINE</TableName>
<FieldName>GEWEI</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Material_Number</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>003</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_LINE</TableName>
<FieldName>MATNR</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Sales_item_descirption</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>003</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_LINE</TableName>
<FieldName>ARKTX</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Plant</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>003</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_LINE</TableName>
<FieldName>WERKS</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Cash_discount_ellgible_amount</Name>
<Description/>
<ReferenzID/>
<Length>0015</Length>
<Type>V</Type>
<Status/>
<LevelNumber>003</LevelNumber>
<Convert>AL,2</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_LINE</TableName>
<FieldName>SKFBP</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Service_rendered_date</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>003</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_LINE</TableName>
<FieldName>FBUDA</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>EAN</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>003</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_LINE</TableName>
<FieldName>EAN11</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Previous_invoice_number</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status>2</Status>
<LevelNumber>003</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Condition>
<Type1>2</Type1>
<Argument1Field1>ZDMEE_INVOICE_LINE</Argument1Field1>
<Argument1Field2>VGTYP</Argument1Field2>
<Operator>=</Operator>
<Type2>1</Type2>
<Argument2Field1>'M'</Argument2Field1>
<Argument2Field2/>
<LinkOperator>AND</LinkOperator>
</Condition>
<Condition>
<Type1>2</Type1>
<Argument1Field1>ZDMEE_INVOICE_HEADER</Argument1Field1>
<Argument1Field2>VBTYP</Argument1Field2>
<Operator>=</Operator>
<Type2>1</Type2>
<Argument2Field1>'O'</Argument2Field1>
<Argument2Field2/>
<LinkOperator>OR</LinkOperator>
</Condition>
<Condition>
<Type1>2</Type1>
<Argument1Field1>ZDMEE_INVOICE_HEADER</Argument1Field1>
<Argument1Field2>VBTYP</Argument1Field2>
<Operator>=</Operator>
<Type2>1</Type2>
<Argument2Field1>'P'</Argument2Field1>
<Argument2Field2/>
<LinkOperator/>
</Condition>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_INVOICE_LINE</TableName>
<FieldName>AUBEL</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Delivery</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status/>
<LevelNumber>004</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>8</MappingProcedure>
<Condition>
<Type1>2</Type1>
<Argument1Field1>ZDMEE_DELIVERY_LINE</Argument1Field1>
<Argument1Field2>VBELN</Argument1Field2>
<Operator>&lt;&gt;</Operator>
<Type2>1</Type2>
<Argument2Field1>SPACE</Argument2Field1>
<Argument2Field2/>
<LinkOperator/>
</Condition>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName/>
<FieldName/>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
<Element>
<Name>Delivery_Date</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status>2</Status>
<LevelNumber>004</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant>20190101</Constant>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_DELIVERY_LINE</TableName>
<FieldName>LFDAT</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Delivery_Number</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status>2</Status>
<LevelNumber>004</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_DELIVERY_LINE</TableName>
<FieldName>VBELN</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Delivery_Position</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status>2</Status>
<LevelNumber>004</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_DELIVERY_LINE</TableName>
<FieldName>POSNR</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Delivery_Creator</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status>2</Status>
<LevelNumber>004</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_DELIVERY_LINE</TableName>
<FieldName>ERNAM</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Loading_Date</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status>2</Status>
<LevelNumber>004</LevelNumber>
<Convert>D.DDMMYYYY</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_DELIVERY_LINE</TableName>
<FieldName>LDDAT</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Picking_date</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status>2</Status>
<LevelNumber>004</LevelNumber>
<Convert>D.DDMMYYYY</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_DELIVERY_LINE</TableName>
<FieldName>KODAT</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Ship_to</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status>2</Status>
<LevelNumber>004</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_DELIVERY_LINE</TableName>
<FieldName>KUNNR</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Delivery_Date</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status>2</Status>
<LevelNumber>004</LevelNumber>
<Convert>D.DDMMYYYY</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_DELIVERY_LINE</TableName>
<FieldName>WADAT_IST</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Storage_location</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status>2</Status>
<LevelNumber>004</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_DELIVERY_LINE</TableName>
<FieldName>LGORT</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Batch_number</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status>2</Status>
<LevelNumber>004</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_DELIVERY_LINE</TableName>
<FieldName>CHARG</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Customer_material_name</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status>2</Status>
<LevelNumber>004</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_DELIVERY_LINE</TableName>
<FieldName>KDMAT</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Actual_quantiity_delivered</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status>2</Status>
<LevelNumber>004</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_DELIVERY_LINE</TableName>
<FieldName>LFIMG</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Material_movement</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status>2</Status>
<LevelNumber>004</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_DELIVERY_LINE</TableName>
<FieldName>BWART</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Warehouse_number</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status>2</Status>
<LevelNumber>004</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_DELIVERY_LINE</TableName>
<FieldName>LGNUM</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
<Element>
<Name>Issuing_plant</Name>
<Description/>
<ReferenzID/>
<Length>0000</Length>
<Type>C</Type>
<Status>2</Status>
<LevelNumber>004</LevelNumber>
<Convert>CL</Convert>
<TargetOffset>000</TargetOffset>
<Formular/>
<MappingProcedure>2</MappingProcedure>
<Constant/>
<SourceOffset>000</SourceOffset>
<TableName>ZDMEE_DELIVERY_LINE</TableName>
<FieldName>WERKS</FieldName>
<Keyfield/>
<EntireTable/>
<ExitFunction/>
</Element>
</Element>
</Element>
</Element>
</Element>
</Details>
</Document>            
   
To upload this XML copy it to notepad, save as XML and upload using DMEE Transaction.

This concludes the customizing steps for creation of own DMEE Tree Type. In second part of DMEE handling topic I will present how to call it in simple custom program.

1 comment: