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: 

how to use call transaction 'XD03' in abap.

Former Member
0 Kudos

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

10 REPLIES 10

Former Member
0 Kudos

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

0 Kudos

ALV LIST

0 Kudos

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

0 Kudos

Using above code programme doesn't call the transaction XD03.

0 Kudos

Hi

Can you post your code where you call the ALV function?

Max

0 Kudos

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.

0 Kudos

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

0 Kudos

Again doesnt show me output.

0 Kudos

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

0 Kudos

This message was moderated.