2015 Mar 10 9:46 AM
Hi,
I'm trying to insert a doble click function, in an ALV position, to acces to a specific transaction but i cannot achieve it. The system do a dump when i doble click at the position.
¿Can you help me?
DUMP
CODE
REPORT zmmr0021.
*Define data
TABLES: eban.
TYPE-POOLS: slis.
*Define fields
DATA: ls_matnr TYPE mara-matnr,
ls_stlnr TYPE mast-stlnr.
*Define Work areas
DATA: wa_eban TYPE eban,
wa_mast TYPE mast,
wa_mara TYPE mara,
wa_makt TYPE makt,
wa_mard TYPE mard,
wa_stpo TYPE stpo.
*Define data types for itab lines
TYPES: BEGIN OF lnalv_type,
idnrk TYPE stpo-idnrk,
maktx TYPE makt-maktx,
zzmolde TYPE mara-zzmolde,
zzplano TYPE mara-zzplano,
zzverplano TYPE mara-zzverplano,
zzespecificacion TYPE mara-zzespecificacion,
zzverespecificacion TYPE mara-zzverespecificacion,
labst TYPE i,
END OF lnalv_type.
*Define data types for itabs
TYPES itab01_type TYPE STANDARD TABLE OF lnalv_type.
*Define itab without header line
DATA itab01 TYPE itab01_type.
*Define work areas for itabs
DATA wa_itab01 TYPE lnalv_type.
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid,
g_save TYPE c VALUE 'X',
g_variant TYPE disvariant,
gx_variant TYPE disvariant,
g_exit TYPE c,
ispfli TYPE TABLE OF spfli.
INITIALIZATION.
**SELECTION SCREEN DETAILS
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002 .
PARAMETERS: pm_banfn TYPE eban-banfn.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
*CHECK VALUES FOR SOLPED
SELECT SINGLE * FROM eban INTO wa_eban WHERE banfn = pm_banfn.
IF sy-subrc NE 0.
MESSAGE text-001 TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
*ALV FUNCTION MODULE
gx_variant-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = g_save
CHANGING
cs_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 0.
pm_banfn = gx_variant-variant.
ENDIF.
START-OF-SELECTION.
PERFORM data_retrivel.
PERFORM build_fieldcatalog.
PERFORM display_alv_report.
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_fieldcatalog.
fieldcatalog-fieldname = 'IDNRK'.
fieldcatalog-col_pos = 1.
fieldcatalog-seltext_m = 'Mat.estándar'.
fieldcatalog-outputlen = 18.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog .
fieldcatalog-fieldname = 'MAKTX'.
fieldcatalog-col_pos = 2.
fieldcatalog-seltext_m = 'Descripción'.
fieldcatalog-outputlen = 30.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog .
fieldcatalog-fieldname = 'ZZMOLDE'.
fieldcatalog-col_pos = 3.
fieldcatalog-seltext_m = 'Molde'.
fieldcatalog-outputlen = 15.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog .
fieldcatalog-fieldname = 'ZZPLANO'.
fieldcatalog-col_pos = 4.
fieldcatalog-seltext_m = 'Plano'.
fieldcatalog-outputlen = 20.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog .
fieldcatalog-fieldname = 'ZZVERPLANO'.
fieldcatalog-col_pos = 5.
fieldcatalog-seltext_m = 'Versión plano'.
fieldcatalog-outputlen = 10.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog .
fieldcatalog-fieldname = 'ZZESPECIFICACION'.
fieldcatalog-col_pos = 6.
fieldcatalog-seltext_m = 'Especificación'.
fieldcatalog-outputlen = 20.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog .
fieldcatalog-fieldname = 'ZZVERESPECIFICACION'.
fieldcatalog-col_pos = 7.
fieldcatalog-seltext_m = 'Ver.especific.'.
fieldcatalog-outputlen = 10.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog .
fieldcatalog-fieldname = 'LABST'.
fieldcatalog-col_pos = 8.
fieldcatalog-seltext_m = 'Stck.alm.1000'.
fieldcatalog-outputlen = 13.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog .
ENDFORM. "BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*& Form HANDLE_DOUBLE_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_ROW text
* -->P_E_COLUMN text
* -->P_ES_ROW_NO text
*----------------------------------------------------------------------*
FORM handle_double_click USING i_row TYPE lvc_s_row
i_column TYPE lvc_s_col
is_row_no TYPE lvc_s_roid.
DATA itab02 TYPE lnalv_type.
READ TABLE itab01 INTO itab02 INDEX is_row_no-row_id .
IF sy-subrc = 0 AND ( i_column-fieldname = 'IDNRK' OR
i_column-fieldname = 'MAKTX' ).
SET PARAMETER ID 'MAT' FIELD itab02-idnrk.
SET PARAMETER ID 'WRK' FIELD '1000'.
CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN.
ENDIF .
ENDFORM.
Regards.
Hi,
I'm trying to insert a doble click function, in an ALV position, to acces to a specific transaction but i cannot achieve it. The system do a dump when i doble click at the position.
¿Can you help me?
DUMP
CODE
REPORT zmmr0021.
*Define data
TABLES: eban.
TYPE-POOLS: slis.
*Define fields
DATA: ls_matnr TYPE mara-matnr,
ls_stlnr TYPE mast-stlnr.
*Define Work areas
DATA: wa_eban TYPE eban,
wa_mast TYPE mast,
wa_mara TYPE mara,
wa_makt TYPE makt,
wa_mard TYPE mard,
wa_stpo TYPE stpo.
*Define data types for itab lines
TYPES: BEGIN OF lnalv_type,
idnrk TYPE stpo-idnrk,
maktx TYPE makt-maktx,
zzmolde TYPE mara-zzmolde,
zzplano TYPE mara-zzplano,
zzverplano TYPE mara-zzverplano,
zzespecificacion TYPE mara-zzespecificacion,
zzverespecificacion TYPE mara-zzverespecificacion,
labst TYPE i,
END OF lnalv_type.
*Define data types for itabs
TYPES itab01_type TYPE STANDARD TABLE OF lnalv_type.
*Define itab without header line
DATA itab01 TYPE itab01_type.
*Define work areas for itabs
DATA wa_itab01 TYPE lnalv_type.
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid,
g_save TYPE c VALUE 'X',
g_variant TYPE disvariant,
gx_variant TYPE disvariant,
g_exit TYPE c,
ispfli TYPE TABLE OF spfli.
INITIALIZATION.
**SELECTION SCREEN DETAILS
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002 .
PARAMETERS: pm_banfn TYPE eban-banfn.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
*CHECK VALUES FOR SOLPED
SELECT SINGLE * FROM eban INTO wa_eban WHERE banfn = pm_banfn.
IF sy-subrc NE 0.
MESSAGE text-001 TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
*ALV FUNCTION MODULE
gx_variant-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = g_save
CHANGING
cs_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 0.
pm_banfn = gx_variant-variant.
ENDIF.
START-OF-SELECTION.
PERFORM data_retrivel.
PERFORM build_fieldcatalog.
PERFORM display_alv_report.
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_fieldcatalog.
fieldcatalog-fieldname = 'IDNRK'.
fieldcatalog-col_pos = 1.
fieldcatalog-seltext_m = 'Mat.estándar'.
fieldcatalog-outputlen = 18.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog .
fieldcatalog-fieldname = 'MAKTX'.
fieldcatalog-col_pos = 2.
fieldcatalog-seltext_m = 'Descripción'.
fieldcatalog-outputlen = 30.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog .
fieldcatalog-fieldname = 'ZZMOLDE'.
fieldcatalog-col_pos = 3.
fieldcatalog-seltext_m = 'Molde'.
fieldcatalog-outputlen = 15.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog .
fieldcatalog-fieldname = 'ZZPLANO'.
fieldcatalog-col_pos = 4.
fieldcatalog-seltext_m = 'Plano'.
fieldcatalog-outputlen = 20.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog .
fieldcatalog-fieldname = 'ZZVERPLANO'.
fieldcatalog-col_pos = 5.
fieldcatalog-seltext_m = 'Versión plano'.
fieldcatalog-outputlen = 10.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog .
fieldcatalog-fieldname = 'ZZESPECIFICACION'.
fieldcatalog-col_pos = 6.
fieldcatalog-seltext_m = 'Especificación'.
fieldcatalog-outputlen = 20.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog .
fieldcatalog-fieldname = 'ZZVERESPECIFICACION'.
fieldcatalog-col_pos = 7.
fieldcatalog-seltext_m = 'Ver.especific.'.
fieldcatalog-outputlen = 10.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog .
fieldcatalog-fieldname = 'LABST'.
fieldcatalog-col_pos = 8.
fieldcatalog-seltext_m = 'Stck.alm.1000'.
fieldcatalog-outputlen = 13.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog .
ENDFORM. "BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*& Form HANDLE_DOUBLE_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_ROW text
* -->P_E_COLUMN text
* -->P_ES_ROW_NO text
*----------------------------------------------------------------------*
FORM handle_double_click USING i_row TYPE lvc_s_row
i_column TYPE lvc_s_col
is_row_no TYPE lvc_s_roid.
DATA itab02 TYPE lnalv_type.
READ TABLE itab01 INTO itab02 INDEX is_row_no-row_id .
IF sy-subrc = 0 AND ( i_column-fieldname = 'IDNRK' OR
i_column-fieldname = 'MAKTX' ).
SET PARAMETER ID 'MAT' FIELD itab02-idnrk.
SET PARAMETER ID 'WRK' FIELD '1000'.
CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN.
ENDIF .
ENDFORM.
Regards.
2015 Mar 10 10:25 AM
Make sure you have mentioned the correct name of subroutine,
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
it_fieldcat = gt_fieldcat[]
it_events = gt_events[]
i_callback_user_command = 'HANDLE_DOUBLE_CLICK' "Form to execute
i_save = 'A'
is_variant = g_variant
TABLES
t_outtab = itab.
2015 Mar 10 10:46 AM
I've modified as you mentioned but different dump appears. The program needs one additional parameter but i don't know which.
gd_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
* i_callback_pf_status_set = 'PF_STATUS_SET'
i_callback_user_command = 'HANDLE_DOUBLE_CLICK'
it_fieldcat = fieldcatalog[]
i_save = 'X'
is_variant = g_variant
TABLES
t_outtab = itab01
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
2015 Mar 10 10:50 AM
You should declare your subroutine like this:-
FORM HANDLE_DOUBLE_CLICK USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
ENDFORM.
2015 Mar 10 10:11 PM
Sorry, but I've done a mistake. FM REUSE_ALV_GRID_DISPLAY is not an objetcs oriented FM, but FORM HANDLE_DOBLE_CLICK is.
I need a user command for non object oriented to insert in my program to allow call transactions.
Thanks.