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

Query regarding selection screen

Former Member
0 Likes
798

Hi experts,

I have a requirement that once I get my output on a selection screen, suppose it has just 1 row and 4 columns. If I click on each of these 4 columns, a new transaction/report etc. needs to be called. How can I achieve this functionality?

Thanks,

Ajay.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
767

Hi,

try this way

REPORT YTEST NO STANDARD PAGE HEADING.

DATA:
        itab TYPE TABLE OF spfli,
        fs TYPE spfli,
        itab1 TYPE TABLE OF sbook,
        fs1 TYPE sbook.

START-OF-SELECTION.
  SELECT * FROM spfli INTO TABLE itab.

END-OF-SELECTION.
  LOOP AT itab INTO fs.
    WRITE:/ fs-carrid,
              fs-connid.
    HIDE:
        fs-carrid,
        fs-connid.
  ENDLOOP.


AT LINE-SELECTION.

  READ LINE sy-lilli FIELD VALUE fs-carrid INTO fs-carrid.  
                                                            " ---> Reads the selected line in list displayed
  SELECT * FROM sbook INTO TABLE itab1 WHERE carrid = fs-carrid.
  LOOP AT itab1 INTO fs1.
    WRITE:/ fs1-carrid,
            fs1-bookid,
            fs1-customid.
  ENDLOOP.

If it's a ALV

Use the Event Double click

Regards

sarves

6 REPLIES 6
Read only

Former Member
0 Likes
767

If you use Statement 'WRITE' to output, try the event 'AT LINE-SELECTION'

Elseif you use ALV to output, try the event 'Doubleclick'

Endif

Read only

awin_prabhu
Active Contributor
0 Likes
767

Hi,

Use 'AT LINE-SELECTION' event and 'SUBMIT ztest AND RETURN'.

Ex:

AT LINE-SELECTION.

GET CURSOR FIELD cus VALUE val.

IF val = 'COLUMN1'. <----


'COLUMN1' is column name

SUBMIT ztest AND RETURN.

ENDIF.

Read only

Former Member
0 Likes
768

Hi,

try this way

REPORT YTEST NO STANDARD PAGE HEADING.

DATA:
        itab TYPE TABLE OF spfli,
        fs TYPE spfli,
        itab1 TYPE TABLE OF sbook,
        fs1 TYPE sbook.

START-OF-SELECTION.
  SELECT * FROM spfli INTO TABLE itab.

END-OF-SELECTION.
  LOOP AT itab INTO fs.
    WRITE:/ fs-carrid,
              fs-connid.
    HIDE:
        fs-carrid,
        fs-connid.
  ENDLOOP.


AT LINE-SELECTION.

  READ LINE sy-lilli FIELD VALUE fs-carrid INTO fs-carrid.  
                                                            " ---> Reads the selected line in list displayed
  SELECT * FROM sbook INTO TABLE itab1 WHERE carrid = fs-carrid.
  LOOP AT itab1 INTO fs1.
    WRITE:/ fs1-carrid,
            fs1-bookid,
            fs1-customid.
  ENDLOOP.

If it's a ALV

Use the Event Double click

Regards

sarves

Read only

Former Member
0 Likes
767

Hi ajay singh,

In FM CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

pass a value in this parameter as follows

i_callback_user_command = 'DOUBLE_CLICK' then in

Form DOUBLE_CLICK USING p_ucomm LIKE sy-ucomm

p_selfield TYPE slis_selfield.

CASE p_ucomm.

WHEN '&IC1'.

PERFORM call_transction USING rs_selfield. " For calling a T-code

PERFORM call_report. " For calling a Report

ENDCASE.

FORM CALL_TRANSACTION.

CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.

ENDFORM.

FORM CALL_REPORT.

submit ZPROGRAM with Parameters in -


with P_PRINT = ' '

and return.

ENDFORM.

Regards,

SG

Read only

Former Member
0 Likes
767

Hi,

try this for calling transaction through parameter id.

AT USER-COMMAND.

CASE sy-ucomm.

WHEN 'CUSTINFO'. (column name )

READ CURRENT LINE FIELD VALUE fs_customer-kunnr INTO w_kunnr.

" ( move the selected value to w_kunnr )

SET PARAMETER ID 'KUN' FIELD w_kunnr.

CALL TRANSACTION 'XD03'. (TCODE )

endcase.

Read only

I355602
Product and Topic Expert
Product and Topic Expert
0 Likes
767

Hi,

Say you have an internal table with fields as:

VBELN (sales order)

POSNR (sales order line item)

WERKS (plant)

MATNR (matnr)

And you write all these fields on output screen using reporting and when you click on any column field then a particular transaction/report should be called, then follow the below mentioned logic:-


DATA : BEGIN OF it_final OCCURS 0,
         vbeln TYPE vbap-vbeln,
         posnr TYPE vbap-posnr,
         werks TYPE vbap-werks,
         matnr TYPE vbap-matnr,
       END OF it_final.

DATA : fldname(25) TYPE c,
       fldvalue(25) TYPE c.

START-OF-SELECTION.

  "select query into it_final internal table

AT LINE-SELECTION.

  GET CURSOR FIELD fldname VALUE fldvalue.

  CASE fldname.
    WHEN 'IT_FINAL-VBELN'.
      WRITE : / fldvalue.
      "code to call transaction/report
    WHEN 'IT_FINAL-POSNR'.
      WRITE : / fldvalue.
      "code to call transaction/report
    WHEN 'IT_FINAL-WERKS'.
      WRITE : / fldvalue.
      "code to call transaction/report
    WHEN 'IT_FINAL-MATNR'.
      WRITE : / fldvalue.
      "code to call transaction/report
  ENDCASE.

END-OF-SELECTION.

  ULINE.
  FORMAT HOTSPOT.
  LOOP AT it_final.
    WRITE : /1 it_final-vbeln, 10 it_final-posnr, 20 it_final-werks, 30 it_final-matnr.
    HIDE : it_final-vbeln, it_final-posnr, it_final-werks, it_final-matnr.
  ENDLOOP.
  ULINE.

Now to call a transaction user:-


SET PARAMETER ID '<param_id>' FIELD '<field_value>'.
CALL TRANSACTION '<t_code>' AND SKIP FIRST SCREEN.

To call a report use:-


SUBMIT <report_name> WITH <parameter_name1> = <field_value1>
                     WITH <parameter_name2> = <field_value2>
                     "and so on use parameters
                     AND RETURN.

<paramater_name> refer to the parameter of the called report <report_name>

and <field_value> refer to value for the parameter to be passed.

Hope this helps you.

Regards,

Tarun