Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

need clarification on AT LINE SELECTION & AT USER COMMAND

Former Member
0 Likes
920

Hi all,

can we use AT LINE SELECTION and AT USER COMMAND events in the same report? If yes what r the precautions that we have to take?

Thanks in advance

venkat

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
727

Hi Venkat,

Definitely you can use AT LINE SELECTION and AT USER COMMAND in the same report.

You need to assign the F2 key to function code PICK (in caps) in the Menu Painter GUI status.

Assign the following function settings in SE41 Menu Painter.

-


<b>Recommended function key settings</b>

<b>F2 PICK Choose</b>

F9

Shift-F2

Shift-F4

Shift-F5

-


This will allow you to use both AT LINE SELECTION and AT USER COMMAND.

Regards,

Arun Sambargi.

Hi all,

can we use AT LINE SELECTION and AT USER COMMAND events in the same report? If yes what r the precautions that we have to take?

Thanks in advance

venkat

4 REPLIES 4
Read only

Former Member
0 Likes
727

we can use.

In the sametime the function code PICK is reserved for AT LINE-SELCTION> so don't use it in at user-command.

Read only

Former Member
0 Likes
727

Hi,

We can use both of them in the same report.

For more details. Read this-

<b>AT LINE-SELECTION.</b>

It is an Event in interactive reporting

This event is processed whenever the user chooses a valid line in the list (i.e. a line generated by statements such as WRITE,ULINE, or SKIP) with the cursor and presses the function key which has the function PICK in the interface definition. This should normally be the function key F2, because it has the same effect as double-clicking the mouse, or clicking once in the case of a hotspot.

The processing for the event AT LINE-SELECTION usually generates further list output (the details list) which completely covers the current list display. If you want the current list display to remain visible (to aid user orientation), you can do this with the key word WINDOW.

In most cases, the information from the selected line is used to retrieve more comprehensive information by direct reading. When displaying the original list, you store the key terms needed for this in the HIDE area of the output line.

Eg:-

DATA TEXT(20).

START-OF-SELECTION.

PERFORM WRITE_AND_HIDE USING SPACE SPACE.

AT LINE-SELECTION.

CASE TEXT.

WHEN 'List index'.

PERFORM WRITE_AND_HIDE USING 'X' SPACE.

WHEN 'User command'.

PERFORM WRITE_AND_HIDE USING SPACE 'X'.

WHEN OTHERS.

SUBTRACT 2 FROM SY-LSIND.

PERFORM WRITE_AND_HIDE USING SPACE SPACE.

ENDCASE.

CLEAR TEXT.

FORM WRITE_AND_HIDE USING P_FLAG_LSIND P_FLAG_UCOMM.

WRITE / 'SY-LSIND:'.

PERFORM WRITE_WITH_COLOR USING SY-LSIND P_FLAG_LSIND.

TEXT = 'List index'.

HIDE TEXT.

WRITE / 'SY-UCOMM:'.

PERFORM WRITE_WITH_COLOR USING SY-UCOMM P_FLAG_UCOMM.

TEXT = 'User command'.

HIDE TEXT.

IF SY-LSIND > 0.

WRITE / 'PICK here to go back one list level'.

ENDIF.

ENDFORM.

FORM WRITE_WITH_COLOR USING P_VALUE

P_FLAG_POSITIVE.

IF P_FLAG_POSITIVE = SPACE.

WRITE P_VALUE COLOR COL_NORMAL.

ELSE.

WRITE P_VALUE COLOR COL_POSITIVE.

ENDIF.

ENDFORM.

<b>AT USER-COMMAND.</b>

Event in interactive reporting

This event is executed whenever the user presses a function key in the list or makes an entry in the command field.

Some functions are executed directly by the system and thus cannot be processed by programs. These include:

PICK

See variant AT LINE-SELECTION

PFn

See variant AT PFn

/...

System command

%...

System command

PRI

Print

BACK

Back

RW

Cancel

P...

Scroll function (e.g.: P+ , P- , PP+3, PS-- etc.)

Instead of this functions, you can use the SCROLL statement in programs.

Since many of these system functions begin with "P", you should avoid using this letter to start your own function codes.

Otherwise, the effect is as for AT LINE-SELECTION; also, the current function code is stored in the system field SY-UCOMM.

Example

DATA: NUMBER1 TYPE I VALUE 20,

NUMBER2 TYPE I VALUE 5,

RESULT TYPE I.

START-OF-SELECTION.

WRITE: / NUMBER1, '?', NUMBER2.

AT USER-COMMAND.

CASE SY-UCOMM.

WHEN 'ADD'.

RESULT = NUMBER1 + NUMBER2.

WHEN 'SUBT'.

RESULT = NUMBER1 - NUMBER2.

WHEN 'MULT'.

RESULT = NUMBER1 * NUMBER2.

WHEN 'DIVI'.

RESULT = NUMBER1 / NUMBER2.

WHEN OTHERS.

WRITE 'Unknown function code'.

EXIT.

ENDCASE.

WRITE: / 'Result:', RESULT.

After entry of a function code, the appropriate processing is performed under the event AT USER-COMMAND and the result is displayed in the details list.

<b>This is from ABAP Documentation.</b>

Mark useful answers.

Regards,

Tanuja.

Message was edited by: Tanuja Sarraju

Read only

Former Member
0 Likes
728

Hi Venkat,

Definitely you can use AT LINE SELECTION and AT USER COMMAND in the same report.

You need to assign the F2 key to function code PICK (in caps) in the Menu Painter GUI status.

Assign the following function settings in SE41 Menu Painter.

-


<b>Recommended function key settings</b>

<b>F2 PICK Choose</b>

F9

Shift-F2

Shift-F4

Shift-F5

-


This will allow you to use both AT LINE SELECTION and AT USER COMMAND.

Regards,

Arun Sambargi.

Read only

Former Member
0 Likes
727

Hi Venkat,

I had written this code while I was learning Menu Painter. It will help help you.


*&---------------------------------------------------------------------*
*& Report  YTEST_MENUPAINTER                                           *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  ztest.

*Consider  a scenario when the user asks for Material Details(Table : MARA )
*displayed in one List and based on the Material selected he wants the corresponding
*Storage Location Data for that Material (Table : MARD ).
TABLES : mara.
TYPES :  BEGIN OF tp_mara,
         matnr TYPE mara-matnr,
         mtart TYPE mara-mtart,
         mbrsh TYPE mara-mbrsh,
         matkl TYPE mara-matkl,
         END OF tp_mara.


TYPES : BEGIN OF tp_marc,
        matnr TYPE marc-matnr,
        werks TYPE marc-werks,
        pstat TYPE marc-pstat,
        ekgrp TYPE marc-ekgrp,
        dispr TYPE marc-dispr,
        END OF tp_marc.


TYPES : BEGIN OF tp_mard,
        matnr TYPE mard-matnr,
        werks TYPE mard-werks,
        lgort TYPE mard-lgort,
        lfgja TYPE mard-lfgja,
        labst TYPE mard-labst,
        umlme TYPE mard-umlme,
        END OF tp_mard.

DATA : t_mara TYPE STANDARD TABLE OF tp_mara,
       t_marc TYPE STANDARD TABLE OF tp_marc,
       t_mard TYPE STANDARD TABLE OF tp_mard,
       wa_mara TYPE tp_mara,
       wa_marc TYPE tp_marc,
       wa_mard TYPE tp_mard.
DATA : w_werks TYPE werks .

DATA : itab TYPE TABLE OF sy-ucomm.



START-OF-SELECTION.

*Collecting the material details form Table MARA

  SELECT matnr
         mtart
         mbrsh
         matkl
         FROM mara
         INTO TABLE t_mara
         UP TO 200 ROWS.

END-OF-SELECTION.

  SET PF-STATUS 'DETAIL'.
*Now I am Dispalying the Material Details in the Primary List
  CLEAR wa_mara.
  LOOP AT t_mara INTO wa_mara.
    IF sy-tabix EQ 1.
      FORMAT INTENSIFIED ON.
      FORMAT COLOR COL_KEY.
      WRITE : /5(16)  'Material Number'.
      FORMAT COLOR COL_NORMAL.
      WRITE :          24(15) 'Material Type',
               40(18) 'Industry Sector',
               58(18) 'Material Group' .
    ENDIF.
    FORMAT INTENSIFIED OFF.
    FORMAT COLOR COL_KEY.
    WRITE : /5(16)   wa_mara-matnr.
    FORMAT COLOR COL_NORMAL.
    WRITE :  24(15)  wa_mara-mtart,
             40(18)  wa_mara-mbrsh,
             58(18)  wa_mara-matkl.


*You can assume some sort of buffer is created in the memory  and the values of
* wa_mara-matnr are put into it when you use the HIDE command
    HIDE wa_mara-matnr.


  ENDLOOP.


*Now when user Double clicks a line (AT LINE-SELECTION event is trigerred) and
*the line contents of the line selected and the contents buffered using
*command  interact and the value for the hidden variable is got into the variable
*refrenced using the HIDE command i.e..  wa_mara-matnr in our case

AT LINE-SELECTION.


  IF sy-lsind = 1.

    FORMAT INTENSIFIED ON.
    WRITE:     'Plant Data for Material  '  COLOR COL_NORMAL,
                35   wa_mara-matnr COLOR COL_TOTAL.

    REFRESH t_marc.

* Now I have the value of the Material in my hidden variable wa_mara-matnr
* Based on this I am selecting the Storage Location Data

    SELECT matnr
           werks
           pstat
           ekgrp
           dispr
           FROM marc
           INTO TABLE t_marc
           WHERE matnr = wa_mara-matnr.

    CLEAR wa_marc.
    FORMAT INTENSIFIED OFF.
    FORMAT COLOR COL_NORMAL.
    LOOP AT t_marc INTO wa_marc.

      IF sy-tabix EQ 1.

        FORMAT INTENSIFIED ON.
        FORMAT COLOR COL_NORMAL.
        WRITE :  /24(6)  'Plant',
                 30(22) 'Maintenance status',
                 52(20) 'Purchasing Group',
                 72(27)  'Material: MRP profile'.

      ENDIF.

      WRITE : /24(6)   wa_marc-werks,
               30(22)  wa_marc-pstat,
               52(20)  wa_marc-ekgrp,
               72(27) wa_marc-dispr.


      CLEAR wa_marc.

    ENDLOOP.

    SKIP 5.

    FORMAT INTENSIFIED ON.
    WRITE:     'Storage Data for Material  '  COLOR COL_NORMAL,
              35     wa_mara-matnr COLOR COL_TOTAL.
    REFRESH t_mard.
    SELECT matnr
           werks
           lgort
           lfgja
           labst
           umlme
           FROM mard
           INTO TABLE t_mard
           WHERE matnr = wa_mara-matnr.

    CLEAR wa_mard.
    FORMAT COLOR COL_NORMAL.


* Display the Storage Location Data in the Secondary List

    LOOP AT t_mard INTO wa_mard.

      IF sy-tabix EQ 1.

        FORMAT INTENSIFIED ON.
        FORMAT COLOR COL_NORMAL.
        WRITE :  /24(6)  'Plant',
                 30(20) 'Storage Location',
                 50(12) 'Fiscal Year',
                 62(15) 'Valuated stock',
                 77(20)    'Stock in transfer'.
      ENDIF.




      WRITE : /24(6)  wa_mard-werks,
               30(20) wa_mard-lgort,
               50(12)  wa_mard-lfgja,
               62(15) wa_mard-labst,
               77(20) wa_mard-labst.


    ENDLOOP.

  ENDIF.





AT USER-COMMAND.

  CASE sy-ucomm.

    WHEN 'PLANT'.


      REFRESH itab. CLEAR itab.
      APPEND 'PLANT' TO itab.
      APPEND 'STORAGE' TO itab.
      SET PF-STATUS 'DETAIL' EXCLUDING itab .


      FORMAT INTENSIFIED ON.
      WRITE:     'Plant Data for Material  '  COLOR COL_NORMAL,
                  35   wa_mara-matnr COLOR COL_TOTAL.

      REFRESH t_marc.
      SELECT matnr
             werks
             pstat
             ekgrp
             dispr
             FROM marc
             INTO TABLE t_marc
             WHERE matnr = wa_mara-matnr.

      CLEAR wa_marc.
      FORMAT INTENSIFIED OFF.
      FORMAT COLOR COL_NORMAL.
      LOOP AT t_marc INTO wa_marc.

        IF sy-tabix EQ 1.

          FORMAT INTENSIFIED ON.
          FORMAT COLOR COL_NORMAL.
          WRITE : /24(6)  'Plant',
                   30(22) 'Maintenance status',
                   52(20) 'Purchasing Group',
                   72(27)  'Material: MRP profile'.
        ENDIF.

        WRITE : /24(6)   wa_marc-werks,
                 30(22)  wa_marc-pstat,
                 52(20)  wa_marc-ekgrp,
                 72(27) wa_marc-dispr.


        CLEAR wa_marc.

      ENDLOOP.


    WHEN 'STORAGE'.


      REFRESH itab. CLEAR itab.
      APPEND 'PLANT' TO itab.
      APPEND 'STORAGE' TO itab.
      SET PF-STATUS 'DETAIL' EXCLUDING itab .




      FORMAT INTENSIFIED ON.
      WRITE:     'Storage Data for Material  '  COLOR COL_NORMAL,
                35     wa_mara-matnr COLOR COL_TOTAL.
      REFRESH t_mard.
      SELECT matnr
             werks
             lgort
             lfgja
             labst
             umlme
             FROM mard
             INTO TABLE t_mard
             WHERE matnr = wa_mara-matnr.

      CLEAR wa_mard.
      FORMAT COLOR COL_NORMAL.

      LOOP AT t_mard INTO wa_mard.

        IF sy-tabix EQ 1.

          FORMAT INTENSIFIED ON.
          FORMAT COLOR COL_NORMAL.
          WRITE : /24(6)  'Plant',
                   30(20) 'Storage Location',
                   50(12) 'Fiscal Year',
                   62(15) 'Valuated stock',
                   77(20)    'Stock in transfer'.
        ENDIF.




        WRITE : /24(6)  wa_mard-werks,
                 30(20) wa_mard-lgort,
                 50(12)  wa_mard-lfgja,
                 62(15) wa_mard-labst,
                 77(20) wa_mard-labst.


      ENDLOOP.




  ENDCASE.

My SE41 settings are.


                                                                                Application toolbar                 Test for Material Detail Display                                                                                
Items  1 -  7            STORAGE    PLANT                                                                                
STORAG     PLANT                                                                                
Items  8 - 14                                                                                
Items 15 - 21                                                                                
Items 22 - 28                                                                                
Items 29 - 35                                                                                
Function keys                       Test for Material Detail Display                                                                                
Standard Toolbar                                                                                
SAVE       BACK       EXIT       CANCEL     PRINT      FIND       FIND NEXT                                                                                
Recommended function key settings                                                                 
 F2                             PICK       Choose                                                 
 F9                             <..>       Select                                                 
 Shift-F2                       <..>       Delete                                                 
 Shift-F4                       <..>       Save without check                                     
 Shift-F5                       <..>       Other <object>                                                                                
Freely assigned function keys                                         
 F5                             STORAGE    STORAGE                    
 F6                             PLANT      PLANT                      
 F7                                                                   
 F8                                                                   
 Shift-F1                                                             

Hope this will help you.

Regards,

Arun Sambargi.

Message was edited by: Arun Sambargi