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

ALV HTML interactive report

Former Member
0 Likes
529

Hi,

I have automail scheduled for an ALV report. Is it possible to have the HTML report as interactive such that when I click on a field , an automail is generated that goes to concerned person ?

Please help if it is possible or if you can provide some alternative.

Thanks & Regards,

Sharbani

5 REPLIES 5
Read only

sai_krishna24
Active Participant
0 Likes
501

Hi,

If I understood correctly, you need an interactive report which need to send a mail when user click on a field in alv.

for that you can do it in ALV grid/ control with usercommand.

In below example

FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

  CASE R_UCOMM.

    WHEN '&IC1'.

Here by checking your field name and value you can send a mail to concern person by adding your email logic here.

Example:

REPORT  YMS_ALVINTERSAMPLE NO STANDARD PAGE HEADING LINE-SIZE 650

MESSAGE-ID ZZ_9838.

TYPE-POOLS: SLIS.

*type declaration for values from ekko

TYPES: BEGIN OF I_EKKO,

       EBELN LIKE EKKO-EBELN,

       AEDAT LIKE EKKO-AEDAT,

       BUKRS LIKE EKKO-BUKRS,

       BSART LIKE EKKO-BSART,

       LIFNR LIKE EKKO-LIFNR,

       END OF I_EKKO.

DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,

      WA_EKKO TYPE I_EKKO.

*type declaration for values from ekpo

TYPES: BEGIN OF I_EKPO,

       EBELN LIKE EKPO-EBELN,

       EBELP LIKE EKPO-EBELP,

       MATNR LIKE EKPO-MATNR,

       MENGE LIKE EKPO-MENGE,

       MEINS LIKE EKPO-MEINS,

       NETPR LIKE EKPO-NETPR,

       END OF I_EKPO.

DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,

      WA_EKPO TYPE I_EKPO .

*variable for Report ID

DATA: V_REPID LIKE SY-REPID .

*declaration for fieldcatalog

DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

      WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.

* declaration for events table where user comand or set PF status will

* be defined

DATA: V_EVENTS TYPE SLIS_T_EVENT,

      WA_EVENT TYPE SLIS_ALV_EVENT.

* declartion for layout

DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.

* declaration for variant(type of display we want)

DATA: I_VARIANT TYPE DISVARIANT,

      I_VARIANT1 TYPE DISVARIANT,

      I_SAVE(1) TYPE C.

*PARAMETERS : p_var TYPE disvariant-variant.

*Title displayed when the alv list is displayed

DATA:  I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.

DATA:  I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.

INITIALIZATION.

  V_REPID = SY-REPID.

  PERFORM BUILD_FIELDCATLOG.

  PERFORM EVENT_CALL.

  PERFORM POPULATE_EVENT.

START-OF-SELECTION.

  PERFORM DATA_RETRIEVAL.

  PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.

  PERFORM DISPLAY_ALV_REPORT.

*&--------------------------------------------------------------------*

*&      Form  BUILD_FIELDCATLOG

*&--------------------------------------------------------------------*

*       Fieldcatalog has all the field details from ekko

*---------------------------------------------------------------------*

FORM BUILD_FIELDCATLOG.

  WA_FIELDCAT-TABNAME = 'IT_EKKO'.

  WA_FIELDCAT-FIELDNAME = 'EBELN'.

  WA_FIELDCAT-SELTEXT_M = 'PO NO.'.

  APPEND WA_FIELDCAT TO I_FIELDCAT.

  CLEAR WA_FIELDCAT.

  WA_FIELDCAT-TABNAME = 'IT_EKKO'.

  WA_FIELDCAT-FIELDNAME = 'AEDAT'.

  WA_FIELDCAT-SELTEXT_M = 'DATE.'.

  APPEND WA_FIELDCAT TO I_FIELDCAT.

  CLEAR WA_FIELDCAT.

  WA_FIELDCAT-TABNAME = 'IT_EKKO'.

  WA_FIELDCAT-FIELDNAME = 'BUKRS'.

  WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.

  APPEND WA_FIELDCAT TO I_FIELDCAT.

  CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

  WA_FIELDCAT-FIELDNAME = 'BUKRS'.

  WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.

  APPEND WA_FIELDCAT TO I_FIELDCAT.

  CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

  WA_FIELDCAT-FIELDNAME = 'LIFNR'.

  WA_FIELDCAT-NO_OUT    = 'X'.

  WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.

  APPEND WA_FIELDCAT TO I_FIELDCAT.

  CLEAR WA_FIELDCAT.

ENDFORM.                    "BUILD_FIELDCATLOG

*&--------------------------------------------------------------------*

*&      Form  EVENT_CALL

*&--------------------------------------------------------------------*

*   we get all events - TOP OF PAGE or USER COMMAND in table v_events

*---------------------------------------------------------------------*

FORM EVENT_CALL.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

   EXPORTING

     I_LIST_TYPE           = 0

   IMPORTING

     ET_EVENTS             = V_EVENTS

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

ENDFORM.                    "EVENT_CALL

*&--------------------------------------------------------------------*

*&      Form  POPULATE_EVENT

*&--------------------------------------------------------------------*

*      Events populated for TOP OF PAGE & USER COMAND

*---------------------------------------------------------------------*

FORM POPULATE_EVENT.

  READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.

  IF SY-SUBRC EQ 0.

    WA_EVENT-FORM = 'TOP_OF_PAGE'.

    MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =

WA_EVENT-FORM.

  ENDIF.

  READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.

  IF SY-SUBRC EQ 0.

    WA_EVENT-FORM = 'USER_COMMAND'.

    MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =

WA_EVENT-NAME.

  ENDIF.

ENDFORM.                    "POPULATE_EVENT

*&--------------------------------------------------------------------*

*&      Form  data_retrieval

*&--------------------------------------------------------------------*

*   retreiving values from the database table ekko

*---------------------------------------------------------------------*

FORM DATA_RETRIEVAL.

  SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.

ENDFORM.                    "data_retrieval

*&--------------------------------------------------------------------*

*&      Form  bUild_listheader

*&--------------------------------------------------------------------*

*       text

*---------------------------------------------------------------------*

*      -->I_LISTHEADEtext

*---------------------------------------------------------------------*

FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.

  DATA HLINE TYPE SLIS_LISTHEADER.

  HLINE-INFO = 'this is my first alv pgm'.

  HLINE-TYP = 'H'.

ENDFORM.                    "build_listheader

*&--------------------------------------------------------------------*

*&      Form  display_alv_report

*&--------------------------------------------------------------------*

*       text

*---------------------------------------------------------------------*

FORM DISPLAY_ALV_REPORT.

  V_REPID = SY-REPID.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

   EXPORTING

     I_CALLBACK_PROGRAM                = V_REPID

*   I_CALLBACK_PF_STATUS_SET          = ' '

     I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'

     I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'

     I_GRID_TITLE                      = I_TITLE_EKKO

*   I_GRID_SETTINGS                   =

*   IS_LAYOUT                         = ALV_LAYOUT

     IT_FIELDCAT                       = I_FIELDCAT[]

*   IT_EXCLUDING                      =

*   IT_SPECIAL_GROUPS                 =

*   IT_SORT                           =

*   IT_FILTER                         =

*   IS_SEL_HIDE                       =

*     i_default                         = 'ZLAY1'

     I_SAVE                            = 'A'

*     is_variant                        = i_variant

     IT_EVENTS                         = V_EVENTS

    TABLES

      T_OUTTAB                          = IT_EKKO

* 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.                    "display_alv_report

*&--------------------------------------------------------------------*

*&      Form  TOP_OF_PAGE

*&--------------------------------------------------------------------*

*       text

*---------------------------------------------------------------------*

FORM TOP_OF_PAGE.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

    EXPORTING

      IT_LIST_COMMENTARY       = IT_LISTHEADER

*    i_logo                   =

*    I_END_OF_LIST_GRID       =

            .

ENDFORM.                    "TOP_OF_PAGE

*&--------------------------------------------------------------------*

*&      Form  USER_COMMAND

*&--------------------------------------------------------------------*

*       text

*---------------------------------------------------------------------*

*      -->R_UCOMM    text

*      -->,          text

*      -->RS_SLEFIELDtext

*---------------------------------------------------------------------*

FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

  CASE R_UCOMM.

    WHEN '&IC1'.

      READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.

      PERFORM BUILD_FIELDCATLOG_EKPO.

      PERFORM EVENT_CALL_EKPO.

      PERFORM POPULATE_EVENT_EKPO.

      PERFORM DATA_RETRIEVAL_EKPO.

      PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.

      PERFORM DISPLAY_ALV_EKPO.

  ENDCASE.

ENDFORM.                    "user_command

*&--------------------------------------------------------------------*

*&      Form  BUILD_FIELDCATLOG_EKPO

*&--------------------------------------------------------------------*

*       text

*---------------------------------------------------------------------*

FORM BUILD_FIELDCATLOG_EKPO.

  WA_FIELDCAT-TABNAME = 'IT_EKPO'.

  WA_FIELDCAT-FIELDNAME = 'EBELN'.

  WA_FIELDCAT-SELTEXT_M = 'PO NO.'.

  APPEND WA_FIELDCAT TO I_FIELDCAT.

  CLEAR WA_FIELDCAT.

  WA_FIELDCAT-TABNAME = 'IT_EKPO'.

  WA_FIELDCAT-FIELDNAME = 'EBELP'.

  WA_FIELDCAT-SELTEXT_M = 'LINE NO'.

  APPEND WA_FIELDCAT TO I_FIELDCAT.

  CLEAR WA_FIELDCAT.

  WA_FIELDCAT-TABNAME = 'I_EKPO'.

  WA_FIELDCAT-FIELDNAME = 'MATNR'.

  WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.

  APPEND WA_FIELDCAT TO I_FIELDCAT.

  CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.

  WA_FIELDCAT-FIELDNAME = 'MENGE'.

  WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.

  APPEND WA_FIELDCAT TO I_FIELDCAT.

  CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.

  WA_FIELDCAT-FIELDNAME = 'MEINS'.

  WA_FIELDCAT-SELTEXT_M = 'UOM'.

  APPEND WA_FIELDCAT TO I_FIELDCAT.

  CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.

  WA_FIELDCAT-FIELDNAME = 'NETPR'.

  WA_FIELDCAT-SELTEXT_M = 'PRICE'.

  APPEND WA_FIELDCAT TO I_FIELDCAT.

  CLEAR WA_FIELDCAT.

ENDFORM.                    "BUILD_FIELDCATLOG_EKPO

*&--------------------------------------------------------------------*

*&      Form  event_call_ekpo

*&--------------------------------------------------------------------*

*   we get all events - TOP OF PAGE or USER COMMAND in table v_events

*---------------------------------------------------------------------*

FORM EVENT_CALL_EKPO.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

   EXPORTING

     I_LIST_TYPE           = 0

   IMPORTING

     ET_EVENTS             = V_EVENTS

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

ENDFORM.                    "event_call_ekpo

*&--------------------------------------------------------------------*

*&      Form  POPULATE_EVENT

*&--------------------------------------------------------------------*

*        Events populated for TOP OF PAGE & USER COMAND

*---------------------------------------------------------------------*

FORM POPULATE_EVENT_EKPO.

  READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.

  IF SY-SUBRC EQ 0.

    WA_EVENT-FORM = 'TOP_OF_PAGE'.

    MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =

WA_EVENT-FORM.

  ENDIF.

  ENDFORM.                    "POPULATE_EVENT

*&--------------------------------------------------------------------*

*&      Form  TOP_OF_PAGE

*&--------------------------------------------------------------------*

*       text

*---------------------------------------------------------------------*

FORM F_TOP_OF_PAGE.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

    EXPORTING

      IT_LIST_COMMENTARY       = IT_LISTHEADER

*    i_logo                   =

*    I_END_OF_LIST_GRID       =

            .

ENDFORM.                    "TOP_OF_PAGE

*&--------------------------------------------------------------------*

*&      Form  USER_COMMAND

*&--------------------------------------------------------------------*

*       text

*---------------------------------------------------------------------*

*      -->R_UCOMM    text

*      -->,          text

*      -->RS_SLEFIELDtext

*---------------------------------------------------------------------*

*retreiving values from the database table ekko

FORM DATA_RETRIEVAL_EKPO.

SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.

ENDFORM.

FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.

DATA: HLINE1 TYPE SLIS_LISTHEADER.

HLINE1-TYP = 'H'.

HLINE1-INFO = 'CHECKING PGM'.

ENDFORM.

FORM DISPLAY_ALV_EKPO.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

*   I_INTERFACE_CHECK                 = ' '

*   I_BYPASSING_BUFFER                = ' '

*   I_BUFFER_ACTIVE                   = ' '

   I_CALLBACK_PROGRAM                = V_REPID

*   I_CALLBACK_PF_STATUS_SET          = ' '

*   I_CALLBACK_USER_COMMAND           = 'F_USER_COMMAND'

   I_CALLBACK_TOP_OF_PAGE            = '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_TITLE_EKPO

*   I_GRID_SETTINGS                   =

*   IS_LAYOUT                         =

   IT_FIELDCAT                       = I_FIELDCAT[]

*   IT_EXCLUDING                      =

*   IT_SPECIAL_GROUPS                 =

*   IT_SORT                           =

*   IT_FILTER                         =

*   IS_SEL_HIDE                       =

*   I_DEFAULT                         =

   I_SAVE                            = 'A'

*   IS_VARIANT                        =

   IT_EVENTS                         = V_EVENTS

  TABLES

    T_OUTTAB                          = IT_EKPO

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.

Thanks

Sai



Read only

0 Likes
501

Hi,

Thanks for ur reply. But this I have implemented earlier, I dont need this. My requirement is that the user is receiving an automail through sm37. Now when the user is viewing the  report in HTML , if he clicks on a field,  another automail is trigerred to a different user. I know the question might be stupid but I just want to know if there is any way out by which we can implement this.

Regards,

Sharbani

Read only

0 Likes
501

Interesting requirement!!!. Once the mail gone from background job  it will be out of SAP control.

Right now I feel may be with workflow your requirement can be doable .

Thanks

SaiKrishna

Read only

0 Likes
501

Ya right that it will be out of SAP control. And for workflow in this case, I think there wont be much difference if I do it simple ALV interactive report . Thanks but please let me know if there is any other way out.

Regards,

Sharbani

Read only

0 Likes
501

Hi sharbani sengupta

Not possible..... but you can try with adobe forms...