Skip to Content
Author's profile photo Henryk Skrobol

Long Texts in Plant Maintenance – extraction


As most of you know, in many objects related to plant maintenance module (technical objects as equipment, functional location but also notifications, orders, confirmations) we can fulfill long text field. The functionality itself is really nice and helpful but very painful in terms of reporting / extraction activities.

Long text reporting / extraction

We have 2 options to get long text in PM reports

1. Development done on standard reports – adding additional column(s) for long text – this activity needs to be done by developers 

2. Creation of SAP query with small piece of ABAP coding inside. This is the scenario which I will describe bellow.

As the background, you should be familiar with SAP Queries functionality (SQ01, SQ02, SQ03 transactions).

Following links can be helpful:

SAP Adhoc Query SQ01 SQ02 SQ03

Using Infoset Query, SAP Query and Quick Viewer

Steps to be done:

Step 1. Create Infoset (SQ02)

I will not describe this step, as setup of tables can be different for each requirement. You should base here documents linked above.

Step 2. Create and program additional field in infoset.

In this step, you need to add new field to infoset.

From the main screen you need to navigate to ‘Extras’


Than create new field …


And define parameters for this field


From list of additional fields select the newly created one (by placing the cursor on it and ‘click’) and go to coding section


Here you have to place a little bit of ABAP code …


The example code (in case of extraction long text for operation within PM order) looks like bellow.

CLEAR ltext.


* Data definition for input parameters



         name LIKE theadtdname,

         spras like STXHtdspras.


* Data definition for output


DATA BEGIN OF txtheader.

         INCLUDE STRUCTURE thead.

DATA END OF txtheader.


         INCLUDE STRUCTURE tline.

DATA END OF txtlines.


* Getting parameter ‘name’ which in case of operation long text

* is combination of mandant, routing number and general counter


CONCATENATE afvcmandt afvcaufpl afvcaplzl

         INTO name.


* Determining language which has been used for long text

* (assuming, that there is only one used ๐Ÿ™‚


Select single TDspras into spras from STXH where TDOBJECT = ‘AUFK’

   AND TDID = ‘AVOT’ and TDNAME = name.


* Reading long text into internal table




     client                  = symandt

     id                      = ‘AVOT’

     language                = SPRAS

     name                    = name

     object                  = ‘AUFK’

     archive_handle          = 0

*   LOCAL_CAT               = ‘ ‘


     header                  = txtheader


     lines                   = txtlines


     id                      = 1

     language                = 2

     name                    = 3

     not_found               = 4

     object                  = 5

     reference_check         = 6

     wrong_access_to_archive = 7

     OTHERS                  = 8.

IF sysubrc <> 0.

* Implement suitable error handling here



* Concatenating long text rows from internal table

* into one, output field


LOOP AT txtlines.

   CONCATENATE ltext txtlinestdline INTO ltext SEPARATED BY space.


REFRESH txtlines.

As you can see, they work is done by function module READ_TEXT.

At the end of this post I will describe the way how to get feeding parameters for this FM in case of different reference objects for Long Text.

Step 3. Add new field to fields group.

This action is as for the standard fields. Basically you will see newly created field in catalog on the left side of the screen and you need to add this field to one of the catalogs which will be visible in Query. Use drag&drop technique …


Step 4. Assign infoset to user group (SQ03 or SQ02)

Step 5. Create Query based on newly created infoset (SQ01)

Step 6. Enjoy ….

In the order we have:


And in Query :


Parameters for FM READ_TEXT

To get the parameters for function module, while being in long text editor please choose following path.


All 3 parameters marked bellow will be different for different reference object of long text.

Parameters in red are describing type of object (AUFK – Orders, AVOT – operations in order).

Text name (In yellow) is identifying single long text segment (in this case single operation). This field is tricky one and in fact you have to resolve the quiz how it’s build (sometimes it’s easy – ex. are materials or equipments, sometimes more complicated …)


Example for equipment long text (text name is pure equipment number with leading zeroes)


And … That’s All Folks !!!

Hope it will help you a little bit with long text reporting & extraction.


I’m not  ABAP consultant, so for sure this piece of code is not optimized and could be done in better way

In case of really long long texts you can face some issues due to capacity of ALV field (I think, it can contain up to 255 characters. In this case maybe you will need to split long text into 2 display fields (each for 255 characters)


Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Ishani Goel
      Ishani Goel

      Very informative and helpful ๐Ÿ™‚ I was wondering how TDname is formed for AVOT (operation long text) and this document helped me .. Thank You!

      Author's profile photo K Jogeswara Rao
      K Jogeswara Rao


      This post may also be of use to you: Retrieving Longtext-lines for Reporting



      Author's profile photo Ashraf Mahfooz Usmani
      Ashraf Mahfooz Usmani

      Hello Henryk,

      I have also used the same logic to read the long text in smart-form but some time it is not reflecting with the recent changes when the ORDER Type = REP,

      could you please tell me why it is not reading the recent changes.

      Thanks in advance!

      Ashraf Usmani