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

regarding interactive report

Former Member
0 Likes
649

hi,

if i have two lines on basic list than how can i get different different

secondary list for these two lines on double clicking ?

6 REPLIES 6
Read only

ak_upadhyay
Contributor
0 Likes
604

Hi,

Use AT-LINE-SELECTION.....

Example...


                                                                                *&---------------------------------------------------------------------*
*& Report  ZNAV_INTRACTIVE                                             *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  ZNAV_INTRACTIVE                         .

TABLES: VBAP, LIPS, VBRP.

*PARAMETERS : V1 TYPE C RADIOBUTTON GROUP A1,
*             V2 TYPE C RADIOBUTTON GROUP A1,
*             V3 AS CHECKBOX ,
*             V4 AS CHECKBOX .

SELECT-OPTIONS: S_VBELN FOR VBAP-VBELN.

DATA:  BEGIN OF IT OCCURS 0,
       VBELN LIKE VBAP-VBELN,
       L_VBELN LIKE LIPS-VBELN,
       B_VBELN LIKE VBRP-VBELN,

       END OF IT.

       DATA: BEGIN OF IT1 OCCURS 0,
             VBELN LIKE VBAP-VBELN,
             POSNR LIKE VBAP-POSNR,
             KWMENG LIKE VBAP-KWMENG,
             END OF IT1.



             DATA: C(10).

             START-OF-SELECTION.

             SELECT
                   VBAP~VBELN
                   LIPS~VBELN
                   VBRP~VBELN FROM LIPS
                   INNER JOIN VBAP ON
                   VBAP~VBELN = LIPS~VGBEL AND
                   VBAP~POSNR = LIPS~VGPOS
                   INNER JOIN VBRP ON
                   VBRP~VGBEL = LIPS~VBELN AND
                   VBRP~VGPOS = LIPS~POSNR
                   INTO TABLE IT
                   WHERE VBAP~VBELN IN S_VBELN.

END-OF-SELECTION.

LOOP AT IT.

WRITE:/ IT-VBELN, IT-L_VBELN , IT-B_VBELN.
HIDE : IT-VBELN, IT-L_VBELN, IT-B_VBELN.
ENDLOOP.

AT LINE-SELECTION.


GET CURSOR FIELD C.



CASE C.
WHEN 'IT-VBELN'.

SELECT
      VBELN
      POSNR
      KWMENG FROM VBAP INTO TABLE IT1
      WHERE VBELN = IT-VBELN.

LOOP AT IT1.
WRITE:/ IT1-VBELN , IT1-POSNR, IT1-KWMENG.
ENDLOOP.

WHEN 'IT-L_VBELN'.


SELECT
      VBELN
      POSNR
      LFIMG FROM LIPS INTO TABLE IT1
      WHERE VBELN = IT-L_VBELN.

LOOP AT IT1.
WRITE:/ IT1-VBELN , IT1-POSNR, IT1-KWMENG.
ENDLOOP.

WHEN 'IT-B_VBELN'.


SELECT
      VBELN
      POSNR
      FKIMG FROM VBRP INTO TABLE IT1
      WHERE VBELN = IT-B_VBELN.

LOOP AT IT1.
WRITE:/ IT1-VBELN , IT1-POSNR, IT1-KWMENG.
ENDLOOP.

ENDCASE.

Reward points if useful....

Regards

AK

Read only

Former Member
0 Likes
604

hi,

check this example.

REPORT ZALV_NAG.

TYPE-POOLS: SLIS.

tables: znagempl, znagemplsal.

types: begin of ty_znagempl,

eno type zeno,

ename type zename,

city type zename,

country type zename,

phone type zeno,

email type zename,

end of ty_znagempl.

types: begin of ty_znagemplsal,

eno type zeno,

  • ename type zename,

basic type zbasic,

hra type zhra,

ta type zta,

da type zda,

gross type zgross,

net type znet,

end of ty_znagemplsal.

types: tt_znagempl type STANDARD TABLE OF ty_znagempl,

tt_znagemplsal type STANDARD TABLE OF ty_znagemplsal.

data: it_znagempl type tt_znagempl,

it_znagemplsal type tt_znagemplsal,

wa_znagempl type ty_znagempl,

wa_znagemplsal type ty_znagemplsal.

selection-screen begin of block b1 with frame title text-001.

select-options: s_eno for znagempl-eno.

parameters: p_ename like znagempl-ename.

selection-screen end of block b1.

if not s_eno is initial.

perform get_empl_data.

else.

message e001(znagmsg).

endif.

data: it_events type SLIS_T_EVENT,

  • it_event type SLIS_T_EVENT,

wa_events type SLIS_alv_EVENT.

data: wa_selfield type SLIS_SELFIELD,

g_ucomm type sy-ucomm.

data: it_eve type SLIS_T_EVENT.

DATA : it_field TYPE slis_t_fieldcat_alv,

it_field1 type slis_t_fieldcat_alv,

wa_field TYPE slis_fieldcat_alv,

wa_field1 type slis_fieldcat_alv.

wa_field-tabname = 'it_znagempl'.

wa_field-fieldname = 'ENO'.

wa_field-seltext_m = 'emp_num'.

*wa_field-key = 'x'.

append wa_field to it_field.

wa_field-tabname = 'it_znagempl'.

wa_field-fieldname = 'ENAME'.

wa_field-seltext_m = 'empname'.

*wa_field-key = 'x'.

append wa_field to it_field.

wa_field-tabname = 'it_znagempl'.

wa_field-fieldname = 'COUNTRY'.

wa_field-seltext_m = 'empcountry'.

*wa_field-key = 'x'.

append wa_field to it_field.

wa_field-tabname = 'it_znagempl'.

wa_field-fieldname = 'CITY'.

wa_field-seltext_m = 'empcity'.

*wa_field-key = 'x'.

append wa_field to it_field.

wa_field-tabname = 'it_znagempl'.

wa_field-fieldname = 'PHONE'.

WA_FIELD-EDIT = 'X'.

wa_field-seltext_m = 'empphone'.

*wa_field-key = 'x'.

append wa_field to it_field.

wa_field-tabname = 'it_znagempl'.

wa_field-fieldname = 'EMAIL'.

wa_field-seltext_m = 'empmail'.

*wa_field-key = 'x'.

append wa_field to it_field.

*CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

  • EXPORTING

  • I_LIST_TYPE = 0

  • IMPORTING

  • ET_EVENTS = it_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.

wa_events-name = 'USER_COMMAND'.

wa_events-form = 'SUB_SEC_LIST'.

append wa_events to it_events.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = 'ZALV_NAG'

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME = 'znagempl'

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE =

  • I_GRID_SETTINGS =

  • IS_LAYOUT =

IT_FIELDCAT = it_field

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

IT_EVENTS = it_events

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_HTML_HEIGHT_TOP = 0

  • I_HTML_HEIGHT_END = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • IR_SALV_FULLSCREEN_ADAPTER =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = it_znagempl

  • 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 SUB_SEC_LIST

&----


  • text

----


  • -->G_UCOMM text

  • -->WA_SELFIELD text

----


form SUB_SEC_LIST using g_ucomm type syucomm

wa_selfield type SLIS_SELFIELD.

if wa_selfield-fieldname = 'ENO'.

select eno basic hra ta da gross net from znagemplsal into table it_znagemplsal

where eno = wa_selfield-value.

endif.

wa_field1-tabname = 'znagemplsal'.

wa_field1-fieldname = 'ENO'.

wa_field1-seltext_m = 'emp num'.

*wa_field1-key = 'x'.

append wa_field1 to it_field1.

*wa_field1-tabname = 'it_znagemplsal'.

*wa_field1-fieldname = 'ename'.

*wa_field1-seltext_m = 'emp name'.

*wa_field1-key = 'x'.

*append wa_field1 to it_field1.

wa_field1-tabname = 'znagemplsal'.

wa_field1-fieldname = 'BASIC'.

wa_field1-seltext_m = 'emp basic'.

*wa_field1-key = 'x'.

append wa_field1 to it_field1.

wa_field1-tabname = 'znagemplsal'.

wa_field1-fieldname = 'HRA'.

wa_field1-seltext_m = 'emp hra'.

*wa_field1-key = 'x'.

append wa_field1 to it_field1.

wa_field1-tabname = 'znagemplsal'.

wa_field1-fieldname = 'TA'.

wa_field1-seltext_m = 'emp ta'.

*wa_field1-key = 'x'.

append wa_field1 to it_field1.

wa_field1-tabname = 'znagemplsal'.

wa_field1-fieldname = 'DA'.

wa_field1-seltext_m = 'emp da'.

*wa_field1-key = 'x'.

append wa_field1 to it_field1.

wa_field1-tabname = 'znagemplsal'.

wa_field1-fieldname = 'GROSS'.

wa_field1-seltext_m = 'emp gross salary'.

*wa_field1-key = 'x'.

append wa_field1 to it_field1.

wa_field1-tabname = 'znagemplsal'.

wa_field1-fieldname = 'NET'.

wa_field1-edit = 'X'.

wa_field1-seltext_m = 'emp netsalary'.

*wa_field1-key = 'x'.

append wa_field1 to it_field1.

*CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

  • EXPORTING

    • I_INTERFACE_CHECK = ' '

    • I_BYPASSING_BUFFER =

    • I_BUFFER_ACTIVE = ' '

    • I_CALLBACK_PROGRAM = ' '

    • I_CALLBACK_PF_STATUS_SET = ' '

    • I_CALLBACK_USER_COMMAND = ' '

    • I_STRUCTURE_NAME =

    • IS_LAYOUT =

  • IT_FIELDCAT = it_field1

    • IT_EXCLUDING =

    • IT_SPECIAL_GROUPS =

    • IT_SORT =

    • IT_FILTER =

    • IS_SEL_HIDE =

    • I_DEFAULT = 'X'

    • I_SAVE = ' '

    • IS_VARIANT =

    • IT_EVENTS =

    • IT_EVENT_EXIT =

    • IS_PRINT =

    • IS_REPREP_ID =

    • I_SCREEN_START_COLUMN = 0

    • I_SCREEN_START_LINE = 0

    • I_SCREEN_END_COLUMN = 0

    • I_SCREEN_END_LINE = 0

    • IR_SALV_LIST_ADAPTER =

    • IT_EXCEPT_QINFO =

    • I_SUPPRESS_EMPTY_DATA = ABAP_FALSE

    • IMPORTING

    • E_EXIT_CAUSED_BY_CALLER =

    • ES_EXIT_CAUSED_BY_USER =

  • TABLES

  • T_OUTTAB = it_znagemplsal

    • 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.

*clear it_field1.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

  • I_CALLBACK_PROGRAM = ' '

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE =

  • I_GRID_SETTINGS =

  • IS_LAYOUT =

IT_FIELDCAT = it_field1

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS = it_eve

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_HTML_HEIGHT_TOP = 0

  • I_HTML_HEIGHT_END = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • IR_SALV_FULLSCREEN_ADAPTER =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = it_znagemplsal

  • 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.

clear it_field1.

endform. "SUB_SEC_LIST

&----


*& Form get_empl_data

&----


  • text

----


form get_empl_data.

select eno ename city country phone email from znagempl into table it_znagempl

where eno in s_eno." and ename = p_ename.

endform.

regards,

sreelakshmi

Read only

Former Member
0 Likes
604

Hi,

We get the interactive list by hiding the the field values and can be used to select the data for the secondary list.

loop at itab.

write: / itab-field1,

itab-field2.

hide: itab-field1,

itab-field2.

endloop.

At line-selection.

select * from dbtable

into table it_detail

where field = itab-field1.

loop at it_detail.

write: it_detail-fld1,

it_detail-fld2.

endloop.

For example if itab contains only two records, and if the user selects a record it will be stored in the hide area with the name of the internal table. But The hide statement will be the after the write statement.

The values stored in the hide fields are from work area of the internal table.

If the record changes the secondary list changes.

Also we get different secondary lists by using command

get cursor field <fieldname> value <fieldvalue>

In this case the for field1 the fieldname is different and for field2 fieldname is different.

In this case according to the cursor position the the lists are defferent

ex: field1 is lifnr and the detail list is display vendor details,

field2 is ebeln and the detail list is PO details.

and also we get detail lists by selecting the pushbutton.

In the basic list there are buttons like vendor general details, banking details. If you select a vendor and select a button, then that vendor is stored in the so called hide area and detail list by checking the sy-ucomm field in the event at user-command.

Reward.

Read only

Former Member
0 Likes
604

Hi,

Execute the following code and debugg, You can easily get some idea.

TABLES: KNA1,VBAK,VBAP,MARA,MAKT.

DATA: FLDNAME(15).

DATA: LEAD(10) VALUE '0000000000'.

DATA: CNO(10),DNO(10),MNO(18).

ULINE /(58).

SELECT * FROM KNA1.

WRITE:/ SY-VLINE,(15) KNA1-NAME1 COLOR 2,SY-VLINE,(15) KNA1-ORT01 COLOR 2,SY-VLINE,

KNA1-KUNNR COLOR 1,SY-VLINE,(5) KNA1-LAND1 COLOR 2,SY-VLINE.

ENDSELECT.

ULINE /(58).

TOP-OF-PAGE DURING LINE-SELECTION.

IF SY-LSIND = 1.

WRITE:(76) 'CUSTOMER TRANSACTIONS LIST' COLOR 7 CENTERED.

ULINE /(40).

WRITE:/ SY-VLINE,(10) 'VBELN' COLOR 4,SY-VLINE,(10) 'KUNNR' COLOR 4,SY-VLINE,

(10) 'ERDAT' COLOR 4,SY-VLINE.

ULINE /(40).

ENDIF.

IF SY-LSIND = 2.

WRITE:(76) 'MATERIAL INFO SALES DOC NUM' COLOR 7 CENTERED.

ULINE /(35).

WRITE:/ SY-VLINE,(10) 'VBELN' COLOR 4,SY-VLINE,(18) 'MATNR' COLOR 4,SY-VLINE.

ULINE /(35).

ENDIF.

IF SY-LSIND = 3.

WRITE:(76) 'MATERIAL MASTER DATA NUM' COLOR 7 CENTERED.

ULINE /(46).

WRITE:/ SY-VLINE,(18) 'MATNR' COLOR 4,SY-VLINE,'MBRSH' COLOR 4,SY-VLINE,

'MTART' COLOR 4,SY-VLINE,'MEINS' COLOR 4,SY-VLINE.

ULINE /(46).

ENDIF.

IF SY-LSIND = 4.

WRITE:(76) 'MATERIAL DESCRIPTION' COLOR 7 CENTERED.

ULINE /(65).

WRITE:/ SY-VLINE,(18) 'MATNR' COLOR 4,SY-VLINE,(40) 'MAKTX' COLOR 4,SY-VLINE.

ULINE /(65).

ENDIF.

AT LINE-SELECTION.

IF SY-LSIND = 1.

GET CURSOR FIELD FLDNAME.

IF FLDNAME = 'KNA1-KUNNR'.

CNO = SY-LISEL+38(10).

SHIFT CNO RIGHT DELETING TRAILING SPACE.

OVERLAY CNO WITH LEAD.

SELECT * FROM VBAK WHERE KUNNR = CNO.

WRITE:/ SY-VLINE,VBAK-VBELN COLOR 1,SY-VLINE,VBAK-KUNNR COLOR 2,SY-VLINE,VBAK-ERDAT COLOR 2,SY-VLINE.

ENDSELECT.

ULINE /(40).

ENDIF.

ENDIF.

IF SY-LSIND = 2.

GET CURSOR FIELD FLDNAME.

IF FLDNAME = 'VBAK-VBELN'.

DNO = SY-LISEL+2(10).

SHIFT DNO RIGHT DELETING TRAILING SPACE.

OVERLAY DNO WITH LEAD.

SELECT * FROM VBAP WHERE VBELN = DNO.

WRITE:/ SY-VLINE,VBAP-VBELN COLOR 1,SY-VLINE,VBAP-MATNR COLOR 1.

ENDSELECT.

ULINE /(35).

ENDIF.

ENDIF.

IF SY-LSIND = 3.

GET CURSOR FIELD FLDNAME.

IF FLDNAME = 'VBAP-MATNR'.

MNO = SY-LISEL+15(18).

SHIFT MNO RIGHT DELETING TRAILING SPACE.

OVERLAY MNO WITH LEAD.

SELECT * FROM MARA WHERE MATNR = MNO.

WRITE:/ SY-VLINE,MARA-MATNR COLOR 1,SY-VLINE,(5) MARA-MBRSH,SY-VLINE,(5) MARA-MTART,

SY-VLINE,(5) MARA-MEINS,SY-VLINE.

ENDSELECT.

ULINE /(46).

ENDIF.

ENDIF.

IF SY-LSIND = 4.

GET CURSOR FIELD FLDNAME.

IF FLDNAME = 'MARA-MATNR'.

SELECT * FROM MAKT WHERE MATNR = MNO AND SPRAS = 'E'.

WRITE:/ SY-VLINE,MAKT-MATNR,SY-VLINE,MAKT-MAKTX,SY-VLINE.

ENDSELECT.

ULINE /(65).

ENDIF.

ENDIF.

Reward,if it is useful.

Thanks,

Chandu

Read only

Former Member
0 Likes
604

hi...

I L attach u a piece of code that will help u sure..

Here i am selecting a line and hold it By HIDE statement... after that In AT Line Selection i m doing one program with wat i ve selected...



 LOOP AT it_ekko.

            FORMAT COLOR 3.
            FORMAT HOTSPOT ON.

            WRITE:/ w_check AS CHECKBOX,
              sy-vline,
              it_ekko-ebeln,
              23 sy-vline,
              it_ekko-bukrs,
              38 sy-vline,
              it_ekko-bsart,
              59 sy-vline,
              it_ekko-lifnr,
              76 sy-vline,
              it_ekko-zterm,
              96 sy-vline,
              it_ekko-llief,
              115 sy-vline.
        HIDE it_ekko-ebeln. " Here i am Capturing a Row value.


      FORMAT HOTSPOT OFF.
    ENDLOOP.

  ELSE.

    MESSAGE text-004 TYPE 'E'.

  ENDIF.

  CLEAR it_ekko.


SET PF-STATUS 'DISPLAY'.



AT LINE-SELECTION. " Here i m doing with value captured with hide..

                SELECT konnr
                       banfn
                       matnr
                       ktmng
                       werks
                       lgort
               FROM ekpo
               INTO TABLE it_ekpo
               WHERE ebeln = it_ekko-ebeln.


              IF sy-subrc EQ 0.
                  SORT it_ekpo BY matnr.
              ENDIF.

              PERFORM display USING: 'IT_EKPO-MATNR'.  

Read only

Former Member
0 Likes
604

Hi,

U can also do like below........

data :   col like sy-cucol,
         lin like sy-curow.

do 5 times.
write: / sy-index,'Hi' .
enddo.

AT LINE-SELECTION.
  col = sy-cucol + 40.
  lin = sy-curow + 2.

  WINDOW STARTING AT sy-cucol sy-curow
         ENDING   AT col lin.

  write: 'u hav selected-',sy-curow,'th line'.

Cheers,

jose.