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

using alv's

Former Member
0 Likes
941

hi guru's,

i have got the data displayed in alv. Now i want to call a transaction upon single click on any of the data in alv.

FORM at_user_command USING fp_ucom TYPE sy-ucomm

fp_selfield TYPE slis_selfield. "#EC *

CASE fp_ucom.

WHEN '&IC1'.

READ TABLE i_makt INTO wa_final

INDEX fp_selfield-tabindex.

IF sy-subrc EQ c_0.

SET PARAMETER ID 'MAT' FIELD wa_final-matnr.

CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

ENDIF.

WHEN OTHERS.

MESSAGE i009.

ENDCASE.

-


what additions should i do in alv for using single click option.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
908

Please use this code


*&---------------------------------------------------------------------* 
*& Report  Z_TEST001 
*& 
*&---------------------------------------------------------------------* 

REPORT  Z_TEST001. 
TYPE-POOLS:  slis. 
tables: rseg. 

DATA: begin of TAB_ARSEG occurs 0. 
        INCLUDE STRUCTURE RSEG. 
DATA: END OF TAB_ARSEG. 
DATA: T_FIELDCAT TYPE slis_t_fieldcat_alv. 
DATA: c_user_command TYPE slis_formname VALUE 'USER_COMMAND'. 

START-OF-SELECTION. 

*********  <<<  YOUR CODE  >>> *********************** 
select * from rseg into table tab_arseg where BELNR = '5300000022'. 

END-OF-SELECTION. 

perform build_fieldcat. 

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 
 EXPORTING 
    i_buffer_active                   = space 
    i_callback_program                = sy-repid 
   I_CALLBACK_USER_COMMAND            = c_user_command 
*   I_STRUCTURE_NAME                  = 
*   IS_LAYOUT                         = 
   IT_FIELDCAT                        = T_FIELDCAT[] 
  TABLES 
    T_OUTTAB                          = TAB_ARSEG 
 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. 

**&------------------------------------------------------------------ 
---* 
**&      Form  USER_COMMAND 
**&------------------------------------------------------------------ 
---* 
FORM USER_COMMAND USING F_UCOMM LIKE SY-UCOMM 
                I_SELFIELD TYPE SLIS_SELFIELD. 

  DATA: F_SUBRC LIKE SY-SUBRC, 
        s_arseg like tab_arseg. 
  READ TABLE tab_arseg INDEX i_selfield-tabindex INTO s_arseg. 

    CASE F_UCOMM. 
        WHEN '&IC1'. 
        CASE i_SELFIELD-SEL_TAB_FIELD. 
        WHEN 'TAB_ARSEG-BELNR'. 
          CHECK NOT S_ARSEG-BELNR IS INITIAL. 
          SET PARAMETER ID 'RBN' FIELD S_ARSEG-BELNR. 
          SET PARAMETER ID 'GJR' FIELD S_ARSEG-GJAHR. 
          CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN. 
        ENDCASE. 
    ENDCASE. 
ENDFORM. 

**&------------------------------------------------------------------ 
---* 
**&      Form  build_fieldcat 
**&------------------------------------------------------------------ 
---* 

FORM build_fieldcat . 
 DATA: FIELDCAT TYPE SLIS_FIELDCAT_ALV. 
  CLEAR FIELDCAT. 
  FIELDCAT-FIELDNAME     = 'BELNR'. 
  FIELDCAT-TABNAME       = 'TAB_ARSEG'. 
  FIELDCAT-REF_TABNAME   = 'RSEG'. 
  FIELDCAT-REF_FIELDNAME = 'BELNR'. 
  fieldcat-hotspot   = 'X'. 
  FIELDCAT-COL_POS       = 1. 
  APPEND FIELDCAT TO t_fieldcat. 

  CLEAR FIELDCAT. 
  FIELDCAT-FIELDNAME     = 'GJAHR'. 
  FIELDCAT-TABNAME       = 'TAB_ARSEG'. 
  FIELDCAT-REF_TABNAME   = 'RSEG'. 
  FIELDCAT-REF_FIELDNAME = 'GJAHR'. 
  FIELDCAT-COL_POS       = 2. 
  APPEND FIELDCAT TO t_fieldcat. 

ENDFORM.                    " build_fieldcat 

9 REPLIES 9
Read only

Former Member
0 Likes
908

If you are using

hotspot option then you will be able to go with single click.

fieldcat-hotspot = 'X'. "for matnr field.

Read only

0 Likes
908

can u give me where to add this hotspot option

in detail plz

Read only

Former Member
0 Likes
909

Please use this code


*&---------------------------------------------------------------------* 
*& Report  Z_TEST001 
*& 
*&---------------------------------------------------------------------* 

REPORT  Z_TEST001. 
TYPE-POOLS:  slis. 
tables: rseg. 

DATA: begin of TAB_ARSEG occurs 0. 
        INCLUDE STRUCTURE RSEG. 
DATA: END OF TAB_ARSEG. 
DATA: T_FIELDCAT TYPE slis_t_fieldcat_alv. 
DATA: c_user_command TYPE slis_formname VALUE 'USER_COMMAND'. 

START-OF-SELECTION. 

*********  <<<  YOUR CODE  >>> *********************** 
select * from rseg into table tab_arseg where BELNR = '5300000022'. 

END-OF-SELECTION. 

perform build_fieldcat. 

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 
 EXPORTING 
    i_buffer_active                   = space 
    i_callback_program                = sy-repid 
   I_CALLBACK_USER_COMMAND            = c_user_command 
*   I_STRUCTURE_NAME                  = 
*   IS_LAYOUT                         = 
   IT_FIELDCAT                        = T_FIELDCAT[] 
  TABLES 
    T_OUTTAB                          = TAB_ARSEG 
 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. 

**&------------------------------------------------------------------ 
---* 
**&      Form  USER_COMMAND 
**&------------------------------------------------------------------ 
---* 
FORM USER_COMMAND USING F_UCOMM LIKE SY-UCOMM 
                I_SELFIELD TYPE SLIS_SELFIELD. 

  DATA: F_SUBRC LIKE SY-SUBRC, 
        s_arseg like tab_arseg. 
  READ TABLE tab_arseg INDEX i_selfield-tabindex INTO s_arseg. 

    CASE F_UCOMM. 
        WHEN '&IC1'. 
        CASE i_SELFIELD-SEL_TAB_FIELD. 
        WHEN 'TAB_ARSEG-BELNR'. 
          CHECK NOT S_ARSEG-BELNR IS INITIAL. 
          SET PARAMETER ID 'RBN' FIELD S_ARSEG-BELNR. 
          SET PARAMETER ID 'GJR' FIELD S_ARSEG-GJAHR. 
          CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN. 
        ENDCASE. 
    ENDCASE. 
ENDFORM. 

**&------------------------------------------------------------------ 
---* 
**&      Form  build_fieldcat 
**&------------------------------------------------------------------ 
---* 

FORM build_fieldcat . 
 DATA: FIELDCAT TYPE SLIS_FIELDCAT_ALV. 
  CLEAR FIELDCAT. 
  FIELDCAT-FIELDNAME     = 'BELNR'. 
  FIELDCAT-TABNAME       = 'TAB_ARSEG'. 
  FIELDCAT-REF_TABNAME   = 'RSEG'. 
  FIELDCAT-REF_FIELDNAME = 'BELNR'. 
  fieldcat-hotspot   = 'X'. 
  FIELDCAT-COL_POS       = 1. 
  APPEND FIELDCAT TO t_fieldcat. 

  CLEAR FIELDCAT. 
  FIELDCAT-FIELDNAME     = 'GJAHR'. 
  FIELDCAT-TABNAME       = 'TAB_ARSEG'. 
  FIELDCAT-REF_TABNAME   = 'RSEG'. 
  FIELDCAT-REF_FIELDNAME = 'GJAHR'. 
  FIELDCAT-COL_POS       = 2. 
  APPEND FIELDCAT TO t_fieldcat. 

ENDFORM.                    " build_fieldcat 

Read only

Former Member
0 Likes
908

if you want single filed functionality on any data item then,

declare that field as hot-spot

Read only

Former Member
0 Likes
908

Hi Krishna,

Just use "HOTSPOT" parameter(option) in fieldcatalog for which field you want to use this.

This automatically shows the hand symbol when u place the cursor on the field.

If you want to develop the fieldcatalog manually rather than

using "REUSE_ALV_FIELDCATALOG_MERGE" function module.

Regards,

Chandu.

Read only

0 Likes
908

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = sy-repid

i_structure_name = l_c_struc

i_inclname = sy-repid

CHANGING

ct_fieldcat = fp_l_i_fieldcat

iam using the above function only.

so where should i add the hotspot option

Read only

Former Member
0 Likes
908

iam not yet clear.

Read only

0 Likes
908

hi,

what is not clear to u?

here is the code . check this..



REPORT  zint_alv.

TYPE-POOLS:slis.

TABLES:mara,
       makt,
       mseg.

DATA:BEGIN OF itab OCCURS 0,
      matnr LIKE mara-matnr,
      maktx LIKE makt-maktx,
      cellcolors TYPE lvc_t_scol,
     END OF itab.

DATA:BEGIN OF itab1 OCCURS 0,
      mblnr LIKE mseg-mblnr,
      menge LIKE mseg-menge,
      meins LIKE mseg-meins,
      werks LIKE mseg-werks,
     END OF itab1.

DATA:BEGIN OF itab2 OCCURS 0,
      mblnr LIKE mseg-mblnr,
      budat LIKE mkpf-budat,
     END OF itab2.

DATA:fcat TYPE slis_t_fieldcat_alv,
     fcat1 TYPE slis_t_fieldcat_alv,
     fcat2 TYPE slis_t_fieldcat_alv,
     eve TYPE slis_t_event,
     eve1 TYPE slis_t_event.

DATA:t_mat LIKE mara-matnr,
     t_doc LIKE mseg-mblnr,
     s_mat LIKE mara-matnr,
     g_repid LIKE sy-repid,
     subtot TYPE slis_t_sortinfo_alv,
     g_subtot LIKE LINE OF subtot.

SELECTION-SCREEN:BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:mat FOR mara-matnr OBLIGATORY.
SELECTION-SCREEN:END OF BLOCK blk1.



INITIALIZATION.
  PERFORM build_fcat USING fcat.
  PERFORM build_eve.

START-OF-SELECTION.

  PERFORM get_data.
  PERFORM dis_data.


*&---------------------------------------------------------------------*
*&      Form  build_fcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->T_FCAT     text
*----------------------------------------------------------------------*
FORM build_fcat USING t_fcat TYPE slis_t_fieldcat_alv.

  DATA:wa_fcat TYPE slis_fieldcat_alv.

  wa_fcat-tabname = 'ITAB'.
  wa_fcat-fieldname = 'MATNR'.
  wa_fcat-ref_fieldname = 'MATNR'.
  wa_fcat-ref_tabname = 'MARA'.
  wa_fcat-seltext_m = 'Material'.
  wa_fcat-input = 'X'.
  wa_fcat-hotspot = 'X'.

  APPEND wa_fcat TO t_fcat.
  CLEAR wa_fcat.

  wa_fcat-tabname = 'ITAB'.
  wa_fcat-fieldname = 'MAKTX'.
  wa_fcat-seltext_m = 'Description'.
  APPEND wa_fcat TO t_fcat.
  CLEAR wa_fcat.

ENDFORM.                    "build_fcat

*&---------------------------------------------------------------------*
*&      Form  build_eve
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM build_eve.

  DATA:t_eve TYPE slis_alv_event.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
   EXPORTING
     i_list_type           = 0
   IMPORTING
     et_events             = eve
* EXCEPTIONS
*   LIST_TYPE_WRONG       = 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.                    "build_eve

*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_data.

  SELECT mara~matnr makt~maktx INTO CORRESPONDING FIELDS OF TABLE itab
  FROM mara INNER JOIN makt
  ON mara~matnr = makt~matnr
  WHERE mara~matnr IN mat.
ENDFORM.                    "get_data

*&---------------------------------------------------------------------*
*&      Form  dis_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM dis_data.

  g_repid = sy-repid.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
     i_callback_program                = g_repid         "'ZINT_ALV'
     i_callback_user_command           = 'USER_COMMAND'
     i_grid_title                      = 'Interactive ALV'
     it_fieldcat                       = fcat
     it_events                         = eve
    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.                    "dis_data

*&---------------------------------------------------------------------*
*&      Form  user_command
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->U_COM      text
*----------------------------------------------------------------------*
FORM user_command USING u_com LIKE sy-ucomm sel_field TYPE slis_selfield.

  CLEAR fcat1.

  CASE u_com.
    WHEN '&IC1'.
      READ TABLE itab INDEX sel_field-tabindex.
      IF sel_field-fieldname = 'MATNR'.
          t_mat = itab-matnr.
      SET PARAMETER ID 'MAT' FIELD t_mat.
      CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

      ELSE.
        MESSAGE 'No data' TYPE 'I'.
      ENDIF.
  ENDCASE.

ENDFORM.                    "user_command

reward if usefull....

Read only

Former Member
0 Likes
908

thanks for answering my doubt