11-25-2011 9:35 AM
Hi Experts,
I am use call transaction xd03 in programme but when i click on any customer number the transaction xd03 is called and it show only one customer details. i.e 1 st in row . other customer details not show. so please write code to solved my problems
11-25-2011 9:38 AM
Hi
After doublecling you need to get the data of the selected line.
How to get it depends on how you managed the list:
- Classic list?
- ALV list?
Max
11-25-2011 9:39 AM
11-25-2011 9:43 AM
So
you need to manage it in the form for USER_COMMAND
This form have an USING parameter defined like structure SLIS_SELFIELD, where there's the field TABINDEX with the value of the selected line:
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN <double click>.
READ TABLE ITAB INDEX RS_SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
SET PARAMETER ID 'KUN' FIELD ITAB-KUNNR.
CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
Max
11-25-2011 9:52 AM
11-25-2011 9:58 AM
11-25-2011 10:07 AM
FORM f_out.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gv_repid
i_grid_title = gv_title
is_layout = gv_layout
it_fieldcat = gt_fielcat[]
it_special_groups = gd_tabgroup
IT_EVENTS = GT_XEVENTS
i_save = 'X'
is_variant = z_template
TABLES
t_outtab = gt_final
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.
*******************************************
*call transaction
*******************************************
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN 'kunnr'.
READ TABLE GT_FINAL INTO GWA_FINAL INDEX RS_SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
SET PARAMETER ID 'KUN' FIELD GWA_FINAL-KUNNR.
CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM.
11-25-2011 10:19 AM
Hi
It's not clear where you set the USER_COMMAND routine and where you set the OK_CODE for doubleclick.
I suppose you set the routine in the importing parameter I_CALLBACK_USER_COMMAND (?) becasue you aren't use the parameter for the event, but for OK_CODE?
Remember the OK_CODE should be upper case:
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
"WHEN 'kunnr'. <--------------- UPPER CASE
WHEN 'KUNNR'.
See my sample:
TYPE-POOLS SLIS.
DATA: BEGIN OF GT_FINAL OCCURS 0,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
END OF GT_FINAL.
* ALV
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
GT_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_REPID LIKE SY-REPID.
START-OF-SELECTION.
SELECT KUNNR NAME1 INTO TABLE GT_FINAL
UP TO 20 ROWS
FROM KNA1.
GT_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = GT_REPID
I_INTERNAL_TABNAME = 'GT_FINAL'
I_INCLNAME = GT_REPID
CHANGING
CT_FIELDCAT = GT_FIELDCAT[].
GT_LAYOUT-F2CODE = 'KUNNR'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = GT_REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = GT_LAYOUT
IT_FIELDCAT = GT_FIELDCAT
TABLES
T_OUTTAB = GT_FINAL.
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA: GWA_FINAL LIKE GT_FINAL.
CASE R_UCOMM.
WHEN 'KUNNR'.
READ TABLE GT_FINAL INTO GWA_FINAL INDEX RS_SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
SET PARAMETER ID 'KUN' FIELD GWA_FINAL-KUNNR.
CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM.TYPE-POOLS SLIS.
DATA: BEGIN OF GT_FINAL OCCURS 0,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
END OF GT_FINAL.
* ALV
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
GT_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_REPID LIKE SY-REPID.
DATA: FL_INPUT_OFF.
START-OF-SELECTION.
SELECT KUNNR NAME1 INTO TABLE GT_FINAL
UP TO 20 ROWS
FROM KNA1.
GT_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = GT_REPID
I_INTERNAL_TABNAME = 'GT_FINAL'
I_INCLNAME = GT_REPID
CHANGING
CT_FIELDCAT = GT_FIELDCAT[].
GT_LAYOUT-F2CODE = 'KUNNR'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = GT_REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = GT_LAYOUT
IT_FIELDCAT = GT_FIELDCAT
TABLES
T_OUTTAB = GT_FINAL.
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA: GWA_FINAL LIKE GT_FINAL.
CASE R_UCOMM.
WHEN 'KUNNR'.
READ TABLE GT_FINAL INTO GWA_FINAL INDEX RS_SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
SET PARAMETER ID 'KUN' FIELD GWA_FINAL-KUNNR.
CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM. TYPE-POOLS SLIS.
DATA: BEGIN OF GT_FINAL OCCURS 0,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
END OF GT_FINAL.
* ALV
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
GT_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_REPID LIKE SY-REPID.
DATA: FL_INPUT_OFF.
START-OF-SELECTION.
SELECT KUNNR NAME1 INTO TABLE GT_FINAL
UP TO 20 ROWS
FROM KNA1.
GT_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = GT_REPID
I_INTERNAL_TABNAME = 'GT_FINAL'
I_INCLNAME = GT_REPID
CHANGING
CT_FIELDCAT = GT_FIELDCAT[].
GT_LAYOUT-F2CODE = 'KUNNR'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = GT_REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = GT_LAYOUT
IT_FIELDCAT = GT_FIELDCAT
TABLES
T_OUTTAB = GT_FINAL.
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA: GWA_FINAL LIKE GT_FINAL.
CASE R_UCOMM.
WHEN 'KUNNR'.
READ TABLE GT_FINAL INTO GWA_FINAL INDEX RS_SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
SET PARAMETER ID 'KUN' FIELD GWA_FINAL-KUNNR.
CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM.
Max
11-25-2011 10:55 AM
11-25-2011 12:28 PM
As my understanding, you want to call transactions depending on the field double-clicked on (or single-clicked if defined as hotspot in field catalog) so i suggest only to change the user_command form.
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'. " default value (if layout-f2code is initial)
READ TABLE gt_final INTO gwa_final INDEX rs_selfield-tabindex.
IF sy-subrc NE 0.
MESSAGE 'Please, use double-click only in the grid area.' TYPE 'S' DISPLAY LIKE 'W'.
ELSE.
CASE rs_selfield-fieldname.
WHEN 'KUNNR'.
IF gwa_final-kunnr IS INITIAL.
MESSAGE 'Customer field is initial.' TYPE 'S' DISPLAY LIKE 'W'.
ELSE.
CALL FUNCTION 'AUTHORITY_CHECK_TCODE'
EXPORTING
tcode = 'XD03'
EXCEPTIONS
ok = 0
OTHERS = 1.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
DISPLAY LIKE sy-msgty.
ELSE.
SET PARAMETER ID 'KUN' FIELD gwa_final-kunnr.
CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
" Other fields go here
WHEN OTHERS.
MESSAGE 'Double-click not managed on this field' TYPE 'S' DISPLAY LIKE 'W'.
ENDCASE.
ENDIF.
" Other function codes go here
WHEN OTHERS.
ENDCASE.
ENDFORM. "USER_COMMAND
Warning messages should help you to test the report.
Regards,
Raymond
05-16-2016 9:08 AM