Skip to Content

Introduction

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’

SQ02_1.jpg

Than create new field …

SQ02_2.jpg

And define parameters for this field

SQ02_3.jpg

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

SQ02_4.jpg

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

SQ02_5.jpg

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

CLEAR ltext.

***************************************************

* Data definition for input parameters

***************************************************

DATA:

         name LIKE theadtdname,

         spras like STXHtdspras.

***************************************************

* Data definition for output

***************************************************

DATA BEGIN OF txtheader.

         INCLUDE STRUCTURE thead.

DATA END OF txtheader.

DATA BEGIN OF txtlines OCCURS 15.

         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

***************************************************

CALL FUNCTION ‘READ_TEXT’

   EXPORTING

     client                  = symandt

     id                      = ‘AVOT’

     language                = SPRAS

     name                    = name

     object                  = ‘AUFK’

     archive_handle          = 0

*   LOCAL_CAT               = ‘ ‘

   IMPORTING

     header                  = txtheader

   TABLES

     lines                   = txtlines

   EXCEPTIONS

     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

ENDIF.

***************************************************

* Concatenating long text rows from internal table

* into one, output field

***************************************************

LOOP AT txtlines.

   CONCATENATE ltext txtlinestdline INTO ltext SEPARATED BY space.

ENDLOOP.

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 …

SQ02_6.jpg

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:

SQ02_7.jpg

And in Query :

SQ02_8.jpg

Parameters for FM READ_TEXT

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

SQ02_9.jpg

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 …)

SQ02_10.jpg

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

SQ02_11.jpg

And … That’s All Folks !!!

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

Remarks:

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)

heniek

To report this post you need to login first.

3 Comments

You must be Logged on to comment or reply to a post.

  1. ishani Gupta

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

    (0) 
  2. Ashraf 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!

    Regards
    Ashraf Usmani

     

    (0) 

Leave a Reply