Application Development 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: 

ALV hot spot to open a transaction when clicked on a row

Former Member
0 Kudos

hi all

can you please suggest me where i can get the best code for

adding hotspot functionality in ALV display in which I have to open a

related transaction as we click on any row of ALV.

Thanks in Advance.

Naval bhatt

5 REPLIES 5

raymond_giuseppi
Active Contributor
0 Kudos

Look at <a href="http://sap.ittoolbox.com/code/archives.asp?i=10&d=3411&a=s">ALV Grid Control Responding to Hotspot Click Events</a>

Regards

Former Member
0 Kudos

try this code


*&---------------------------------------------------------------------*
*& Report  ZBATCHNO21N                                                 *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  ZBATCHNO21N LINE-SIZE 280    .
TABLES : CHVW,ZMMSE_BATCH,LFA1,MAKT,MARA.
tables : godynpro.
TYPE-POOLS : SLIS.
DATA : IMMSE LIKE ZMMSE_BATCH OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF ITAB OCCURS 0,
       CHARG  LIKE CHVW-CHARG,
       MATNR  LIKE CHVW-MATNR,
       LEVEL TYPE I,
       MACID  LIKE ZMMSE_BATCH-MACID,
       LEGNO  LIKE ZMMSE_BATCH-LEGNO,
       FEDID  LIKE ZMMSE_BATCH-FEDID,
       MAKTX  LIKE MAKT-MAKTX,
       PRDATE LIKE ZMMSE_BATCH-PRDATE,
       LICHA  LIKE CHVW-LICHA,
       NAME1  LIKE LFA1-NAME1,
       LIFNR  LIKE CHVW-LIFNR,
       MBLNR LIKE CHVW-MBLNR,
       BISMT  LIKE MARA-BISMT,
       END OF ITAB.
DATA : LEVEL TYPE I VALUE 1.
DATA: PA_MATNR LIKE CHVW-MATNR,
      PA_CHARG1 LIKE CHVW-CHARG,
      PA_CHARG LIKE CHVW-CHARG,
      PA_MBLNR LIKE CHVW-MBLNR,
      CH_MATNR LIKE CHVW-MATNR.
DATA : TTABIX LIKE SY-TABIX.
DATA : V_CHARG LIKE CHVW-CHARG.
DATA : IFIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
       WFIELDCAT TYPE SLIS_FIELDCAT_ALV,
       ILAYOUT   TYPE SLIS_LAYOUT_ALV.

DATA : COUNTER TYPE I VALUE 1.

DATA : V_MBLNR LIKE CHVW-MBLNR.
SELECT-OPTIONS: MATNR FOR CHVW-MATNR OBLIGATORY NO INTERVALS NO-EXTENSION,
                CHARG1 FOR CHVW-CHARG OBLIGATORY NO INTERVALS NO-EXTENSION,
                WERKS FOR CHVW-WERKS OBLIGATORY NO INTERVALS NO-EXTENSION.

START-OF-SELECTION.

SELECT * FROM ZMMSE_BATCH INTO TABLE IMMSE WHERE ACHARG IN CHARG1 AND OMATNR IN MATNR.

SELECT SINGLE * FROM CHVW WHERE MATNR IN MATNR AND
                         CHARG IN CHARG1 AND WERKS IN WERKS AND
                         ( BWART EQ '131' OR BWART EQ '931' ).

    MOVE CHVW-MATNR TO PA_MATNR.
    MOVE CHVW-MATNR TO CH_MATNR.
    MOVE CHVW-CHARG TO PA_CHARG.
    MOVE CHVW-MBLNR TO PA_MBLNR.
    SELECT SINGLE BISMT FROM MARA INTO MARA-BISMT WHERE MATNR EQ PA_MATNR .
    SELECT SINGLE MAX( PRDATE ) INTO ZMMSE_BATCH-PRDATE FROM ZMMSE_BATCH
    WHERE OMATNR IN MATNR AND ACHARG IN CHARG1.
*    APPEND ITAB.
*ENDSELECT.
CLEAR : CHVW.
SELECT MBLNR CHARG MATNR INTO CORRESPONDING FIELDS OF  ITAB FROM CHVW
                              WHERE MBLNR = PA_MBLNR AND BWART = '261'.


*READ TABLE IMMSE INDEX COUNTER.
*SELECT SINGLE MACID LEGNO FEDID PRDATE INTO CORRESPONDING FIELDS OF ITAB FROM ZMMSE_BATCH
*              WHERE IMATNR EQ ITAB-MATNR AND CHARG EQ ITAB-CHARG AND ACHARG EQ PA_CHARG
*              AND SBATCH = IMMSE-SBATCH.
*COUNTER = COUNTER + 1.
ITAB-LEVEL = 1.
APPEND ITAB.
ENDSELECT.
SORT ITAB BY MATNR CHARG.
SORT IMMSE BY IMATNR CHARG.
DATA : WTAB LIKE ITAB,
       TABIX LIKE SY-TABIX,
       WTAB1 LIKE ITAB.

LOOP AT ITAB.
TABIX = SY-TABIX.
MOVE-CORRESPONDING ITAB TO WTAB.
AT NEW MATNR.
LOOP AT IMMSE WHERE IMATNR = WTAB-MATNR AND CHARG = WTAB-CHARG.
WTAB-LEGNO = IMMSE-LEGNO.
WTAB-MACID = IMMSE-MACID.
WTAB-FEDID = IMMSE-FEDID.
WTAB-PRDATE = IMMSE-PRDATE.
MODIFY ITAB FROM WTAB INDEX TABIX.
TABIX = TABIX + 1.
READ TABLE ITAB INTO WTAB1 INDEX TABIX.
IF WTAB1-MATNR NE IMMSE-IMATNR.
EXIT.
ENDIF.

ENDLOOP.
ENDAT.
ENDLOOP.

LOOP AT ITAB.
*ITAB-LEVEL = LEVEL.

SELECT SINGLE MAKTX INTO ITAB-MAKTX FROM MAKT WHERE MATNR = ITAB-MATNR.
SELECT SINGLE LICHA LIFNR FROM CHVW INTO (ITAB-LICHA, ITAB-LIFNR) WHERE MATNR
             EQ ITAB-MATNR AND ( BWART EQ '105' OR BWART EQ '101' )
             AND CHARG EQ ITAB-CHARG.
IF ITAB-CHARG CP '2IN*'.
V_CHARG = ITAB-CHARG.
REPLACE FIRST OCCURRENCE OF '2IN' IN V_CHARG WITH '500' .
SELECT SINGLE LIFNR INTO ITAB-LIFNR FROM MSEG WHERE MBLNR = V_CHARG.
ENDIF.

SELECT SINGLE NAME1 INTO ITAB-NAME1 FROM LFA1 WHERE LIFNR = ITAB-LIFNR.
SELECT SINGLE MBLNR INTO ITAB-MBLNR FROM CHVW WHERE MATNR = ITAB-MATNR AND
                                             CHARG = ITAB-CHARG AND
                                             BWART IN ('101','105','561').

MODIFY ITAB.
TTABIX = SY-TABIX.
PERFORM GET_DATA.
ENDLOOP.
PERFORM BUILDFIELDCAT.
PERFORM BUILDLAYOUT.
PERFORM DISPLAYDATA.

*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA .

SELECT SINGLE * FROM CHVW WHERE MATNR = ITAB-MATNR AND
                         CHARG EQ ITAB-CHARG AND WERKS IN WERKS AND
                         ( BWART EQ '131' OR BWART EQ '931' ).
  IF SY-SUBRC = 0.
    MOVE CHVW-MATNR TO PA_MATNR.
    MOVE CHVW-MATNR TO CH_MATNR.
    MOVE CHVW-CHARG TO PA_CHARG.
    MOVE CHVW-MBLNR TO PA_MBLNR.
    ITAB-LEVEL = ITAB-LEVEL + 1.

SELECT MBLNR CHARG MATNR INTO CORRESPONDING FIELDS OF  ITAB FROM CHVW
                              WHERE MBLNR = PA_MBLNR AND BWART = '261'.



SELECT SINGLE MACID LEGNO FEDID PRDATE INTO CORRESPONDING FIELDS OF ITAB FROM ZMMSE_BATCH
              WHERE IMATNR EQ ITAB-MATNR AND CHARG EQ ITAB-CHARG AND ACHARG EQ PA_CHARG.
TTABIX = TTABIX + 1.

INSERT ITAB INDEX TTABIX.
ENDSELECT.
ELSE.
EXIT.
ENDIF.

ENDFORM.                    " GET_DATA
*&---------------------------------------------------------------------*
*&      Form  BUILDFIELDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILDFIELDCAT .
WFIELDCAT-FIELDNAME = 'LEVEL'.
WFIELDCAT-COL_POS = 1.
WFIELDCAT-SELTEXT_L = 'Level'.
WFIELDCAT-OUTPUTLEN = 5.
wfieldcat-key = 'X'.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MACID'.
WFIELDCAT-COL_POS = 2.
WFIELDCAT-SELTEXT_L = 'Machine Id'.
*WFIELDCAT-OUTPUTLEN = 5.
wfieldcat-key = 'X'.

APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.


WFIELDCAT-FIELDNAME = 'LEGNO'.
WFIELDCAT-COL_POS = 3.
WFIELDCAT-SELTEXT_L = 'Legend No'.
*WFIELDCAT-OUTPUTLEN = 5.
wfieldcat-key = 'X'.

APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.


WFIELDCAT-FIELDNAME = 'FEDID'.
WFIELDCAT-COL_POS = 4.
WFIELDCAT-SELTEXT_L = 'Feeder Identification'.
*WFIELDCAT-OUTPUTLEN = 5.
wfieldcat-key = 'X'.

APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'CHARG'.
WFIELDCAT-COL_POS = 5.
WFIELDCAT-SELTEXT_L = 'Batch No'.
*WFIELDCAT-OUTPUTLEN = 5.
wfieldcat-key = 'X'.

APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MATNR'.
WFIELDCAT-COL_POS = 6.
WFIELDCAT-SELTEXT_L = 'Part No'.
*WFIELDCAT-OUTPUTLEN = 5.
wfieldcat-key = 'X'.

APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MAKTX'.
WFIELDCAT-COL_POS = 7.
WFIELDCAT-SELTEXT_L = 'Part Name'.
*WFIELDCAT-OUTPUTLEN = 5.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'LICHA'.
WFIELDCAT-COL_POS = 8.
WFIELDCAT-SELTEXT_L = 'Supplier Lot No'.
*WFIELDCAT-OUTPUTLEN = 5.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'NAME1'.
WFIELDCAT-COL_POS = 9.
WFIELDCAT-SELTEXT_L = 'Supplier Name'.
*WFIELDCAT-OUTPUTLEN = 5.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'PRDATE'.
WFIELDCAT-COL_POS = 10.
WFIELDCAT-SELTEXT_L = 'Production Date & Time'.
*WFIELDCAT-OUTPUTLEN = 5.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

WFIELDCAT-FIELDNAME = 'MBLNR'.
WFIELDCAT-COL_POS = 11.
WFIELDCAT-SELTEXT_L = 'Material Document No'.
WFIELDCAT-HOTSPOT = 'X'.
WFIELDCAT-NO_OUT = 'X'.

**WFIELDCAT-OUTPUTLEN = 5.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.

ENDFORM.                    " BUILDFIELDCAT
*&---------------------------------------------------------------------*
*&      Form  BUILDLAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILDLAYOUT .
ILAYOUT-ZEBRA = 'X'.
ILAYOUT-COLWIDTH_OPTIMIZE = 'X'.
*ILAYOUT-F2CODE = '&IC1'.

ENDFORM.                    " BUILDLAYOUT
*&---------------------------------------------------------------------*
*&      Form  DISPLAYDATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DISPLAYDATA .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
   I_CALLBACK_PROGRAM                = SY-REPID
**   I_CALLBACK_PF_STATUS_SET          = 'PFSTATUS'
   I_CALLBACK_USER_COMMAND           = 'USERCOMMAND'
   I_CALLBACK_TOP_OF_PAGE            = 'TOPOFPAGE'
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*   I_STRUCTURE_NAME                  =
*   I_BACKGROUND_ID                   = ' '
*   I_GRID_TITLE                      =
*   I_GRID_SETTINGS                   =
   IS_LAYOUT                         = ILAYOUT
   IT_FIELDCAT                       = IFIELDCAT
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
*   IT_SORT                           =
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         = 'X'
*   I_SAVE                            = ' '
*   IS_VARIANT                        =
*   IT_EVENTS                         =
*   IT_EVENT_EXIT                     =
*   IS_PRINT                          =
*   IS_REPREP_ID                      =
*   I_SCREEN_START_COLUMN             = 0
*   I_SCREEN_START_LINE               = 0
*   I_SCREEN_END_COLUMN               = 0
*   I_SCREEN_END_LINE                 = 0
*   IT_ALV_GRAPHICS                   =
*   IT_HYPERLINK                      =
*   IT_ADD_FIELDCAT                   =
*   IT_EXCEPT_QINFO                   =
*   I_HTML_HEIGHT_TOP                 =
*   I_HTML_HEIGHT_END                 =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER           =
*   ES_EXIT_CAUSED_BY_USER            =
  TABLES
    T_OUTTAB                          = ITAB
* EXCEPTIONS
*   PROGRAM_ERROR                     = 1
*   OTHERS                            = 2
          .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.


ENDFORM.                    " DISPLAYDATA

FORM TOPOFPAGE.
DATA : ILISTHEADER TYPE SLIS_T_LISTHEADER,
       WLISTHEADER TYPE SLIS_LISTHEADER,
       TEXT(100),
       TEXT1(50),
       SPACES(5).

SPACES = '     '.

WLISTHEADER-INFO = 'LOGAN Product Traceablity Report'.
WLISTHEADER-TYP = 'H'.
APPEND WLISTHEADER TO ILISTHEADER.

CONCATENATE 'NIP Code :' CHARG1-LOW INTO TEXT SEPARATED BY SPACE.
CONCATENATE 'Pricol Part No :' MATNR-LOW INTO TEXT1 SEPARATED BY SPACE.
CONCATENATE TEXT TEXT1 INTO TEXT SEPARATED BY SPACE.

WLISTHEADER-INFO = TEXT.
WLISTHEADER-TYP = 'S'.
APPEND WLISTHEADER TO ILISTHEADER.

CLEAR TEXT.



SELECT SINGLE BISMT FROM MARA INTO MARA-BISMT WHERE MATNR IN MATNR.
SELECT SINGLE MAX( PRDATE ) INTO ZMMSE_BATCH-PRDATE FROM ZMMSE_BATCH
  WHERE OMATNR IN MATNR AND ACHARG IN CHARG1.

CONCATENATE 'Customer Part No :'  MARA-BISMT INTO TEXT SEPARATED BY SPACE.

WLISTHEADER-INFO = TEXT.
WLISTHEADER-TYP = 'S'.
APPEND WLISTHEADER TO ILISTHEADER.

CLEAR TEXT.

CONCATENATE 'Date & Time:'
            ZMMSE_BATCH-PRDATE INTO TEXT SEPARATED BY SPACE.



WLISTHEADER-INFO = TEXT.
WLISTHEADER-TYP = 'S'.
APPEND WLISTHEADER TO ILISTHEADER.


CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
  EXPORTING
    IT_LIST_COMMENTARY       = ILISTHEADER
*   I_LOGO                   =
*   I_END_OF_LIST_GRID       =
          .


ENDFORM.

FORM USERCOMMAND USING PUCOM LIKE SY-UCOMM SELFIELD TYPE SLIS_SELFIELD.

CASE PUCOM.
WHEN '&IC1'.
IF SELFIELD-FIELDNAME = 'MBLNR'.
SET PARAMETER ID 'MBN' FIELD SELFIELD-VALUE.

CALL TRANSACTION 'MIGO' AND SKIP FIRST SCREEN.
*GODYNPRO-ACTION = 'Display'.
ENDIF.
ENDCASE.


ENDFORM.

*FORM PFSTATUS USING EXTAB TYPE SLIS_T_EXTAB.
*SET PF-STATUS 'ZSTANDARD'.
*ENDFORM.

regards

shiba dutta

p291102
Active Contributor
0 Kudos

Hi,

This is the simple example for your requirement.

REPORT YMS_INTERACTIVETEST LINE-SIZE 50 NO STANDARD PAGE HEADING.

TABLES: VBAP,KNA1,VBAK.

SELECT-OPTIONS: CUST FOR KNA1-KUNNR.

DATA: BEGIN OF ITAB OCCURS 0,

KUNNR LIKE KNA1-KUNNR,

NAME1 LIKE KNA1-NAME1,

VBELN LIKE VBAK-VBELN,

AUDAT LIKE VBAK-AUDAT,

AUART LIKE VBAK-AUART,

POSNR LIKE VBAP-POSNR,

POSAR LIKE VBAP-POSAR,

END OF ITAB.

DATA: ITAB1 LIKE ITAB OCCURS 0 WITH HEADER LINE.

INITIALIZATION.

START-OF-SELECTION.

SELECT KNA1KUNNR KNA1NAME1 INTO CORRESPONDING FIELDS OF TABLE ITAB1

FROM KNA1 WHERE KNA1~KUNNR IN CUST.

LOOP AT ITAB1.

WRITE:/10 ITAB1-KUNNR HOTSPOT, 30 ITAB1-NAME1.

HIDE: ITAB1-KUNNR.

ENDLOOP.

AT LINE-SELECTION.

CASE SY-LSIND.

WHEN '1'.

SELECT KNA1KUNNR VBAKVBELN VBAKAUDAT VBAKERDAT INTO CORRESPONDING FIELDS OF TABLE ITAB1

FROM KNA1 INNER JOIN VBAK ON KNA1KUNNR = VBAKKUNNR.

LOOP AT ITAB1.

WRITE:/ ITAB1-VBELN HOTSPOT, ITAB1-AUDAT, ITAB1-AUART.

HIDE: ITAB1-VBELN, ITAB1-AUDAT, ITAB1-AUART.

ENDLOOP.

WHEN '2'.

SELECT VBAKVBELN VBAPPOSNR VBAP~POSAR

INTO CORRESPONDING FIELDS OF TABLE ITAB1 FROM VBAK INNER JOIN VBAP ON VBAKVBELN = VBAPVBELN.

LOOP AT ITAB1.

WRITE:/ ITAB1-POSNR, ITAB1-POSAR.

ENDLOOP.

ENDCASE.

TOP-OF-PAGE.

WRITE:/ SY-VLINE,TEXT-001 COLOR COL_NEGATIVE.

ULINE.

Thanks,

Shankar

Clemenss
Active Contributor
0 Kudos

Hi Sankar,

try to avoid internal tables with header line. This is obsolete,forbidden in OO context, and definitely last millenium technology.

If someone asks for 'best code', do not offer this.

If you post any code, select it using mouse and click the "Code" button on top of message window.

This enables readability.

Thanks a lot,

Regards,

Clemens

Former Member
0 Kudos

every answer was help ful