03-17-2007 9:02 AM
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
03-17-2007 9:05 AM
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
03-17-2007 9:13 AM
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
03-17-2007 9:34 AM
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
03-17-2007 11:56 AM
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
03-19-2007 1:52 PM