SAP MDG: Custom Report - To get data of USER Status Ready & Some Fields data, & download in Excel or Req. Format. By Help of input Change Request/s.

Suggu Sandeep's photo
·

3 min read

Table of contents


Scenario

I Chosen Spread Sheet, In this Blog

If You are Choosing Mail

A file will be sent along with body which written, I written HI

After Previewing of File


Code


TABLES: sscrfields.

TYPES : BEGIN OF ls_work_id,
          cr_no      TYPE  usmd_crequest,
          wi_id      TYPE  sww_wiid,
          wi_crt     TYPE  XUBNAME,
          wi_aagent     TYPE  sww_aagent,
          wi_cd_ftd  TYPE  swr_cd_f,
          wi_stat    TYPE  sww_wistat,
          wi_forw_by TYPE  sww_forwby,
        END OF ls_work_id.

DATA : iv_cr_id  TYPE usmd_crequest.

SELECT-OPTIONS: so_id FOR iv_cr_id.

**********************************************************************
*** Soon After Entering of CR Number - Pressing of enter will directly display O/P,
*** without any action on Execute Button
AT SELECTION-SCREEN.
  IF sscrfields-ucomm EQ space.
    sscrfields-ucomm = 'ONLI'.
  ENDIF.

START-OF-SELECTION.
**********************************************************************


  DATA :lt_wi_depd TYPE TABLE OF swr_wihdr,

        ls_top_wdr TYPE swr_wihdr,

        lt_stat    TYPE swfartwista,
        lt_data    TYPE swr_struct-workitemid,

        lt_work_id TYPE TABLE OF ls_work_id,
        ls_work_id LIKE LINE OF lt_work_id,

        lt_agent   TYPE TABLE OF swragent,
        ls_agent   TYPE swragent,

        lo_table   TYPE REF TO cl_salv_table.

**********************************************************************

START-OF-SELECTION.
  SELECT  usmd_crequest,
          top_wi_id
           FROM usmd2400
           INTO TABLE @DATA(lt_top_id)
  WHERE usmd_crequest IN @so_id.

  IF sy-subrc EQ  0 AND lt_top_id IS NOT INITIAL.

    LOOP AT lt_top_id INTO DATA(ls_top_id).

      REFRESH lt_wi_depd.

*to get dependent workitems
      CALL FUNCTION 'SAP_WAPI_GET_DEPENDENT_WIS'
        EXPORTING
          workitem_id = ls_top_id-top_wi_id
          status      = lt_stat
        TABLES
          items       = lt_wi_depd.

      IF lt_wi_depd IS NOT INITIAL.

        LOOP AT lt_wi_depd INTO DATA(ls_wi_ded) WHERE wi_stat = 'READY'.


          CALL FUNCTION 'SAP_WAPI_WORKITEM_RECIPIENTS'
            EXPORTING
              workitem_id = ls_wi_ded-wi_id
            TABLES
              recipients  = lt_agent.
          ls_agent    = lt_agent[ 1 ].

**********************************************************************


SELECT SINGLE USMD_CREATED_BY
          FROM USMD120C INTO @data(lv_crt_by) WHERE usmd_crequest IN @so_id.



          APPEND VALUE #(  cr_no  = ls_top_id-usmd_crequest
                           wi_id  = ls_wi_ded-wi_id

                           wi_crt = lv_crt_by

                           wi_aagent = ls_agent-objid
                           wi_cd_ftd  = ls_wi_ded-wi_cd_ftd
                           wi_stat = ls_wi_ded-wi_stat
                           wi_forw_by = ls_wi_ded-wi_forw_by ) TO lt_work_id.

        ENDLOOP.

      ENDIF.
    ENDLOOP.

  ELSE.
    MESSAGE 'Enter valid CR Number' TYPE 'I' DISPLAY LIKE 'E'.
    EXIT.

  ENDIF.

**********************************************************************

* Exporting - Spread Sheet

  DATA:
* global reference table for salv table
    go_table            TYPE REF TO cl_salv_table,
* Columns refernce table for salv table
    go_columns          TYPE REF TO cl_salv_columns_table,
* Functions list refernce table for salv table
    go_functions        TYPE REF TO cl_salv_functions_list,
* Error handling class for factory method
    g_cx_salv_msg       TYPE REF TO cx_salv_msg,
* Message to display error
    gv_message          TYPE string,
* Columns refernce table for salv table
    go_cols             TYPE REF TO cl_salv_columns,
* Columns list refernce table for salv table
    gr_column           TYPE REF TO cl_salv_column_list,
* Error handling class
    g_cx_salv_not_found TYPE REF TO cx_salv_not_found,

    lo_aggrs            TYPE REF TO cl_salv_aggregations,
    gr_layout           TYPE REF TO cl_salv_layout,
    key                 TYPE salv_s_layout_key,
    lf_variant          TYPE slis_vari,
    gr_content          TYPE REF TO cl_salv_form_element.

  TRY.
      CALL METHOD cl_salv_table=>factory
        IMPORTING
          r_salv_table = go_table
        CHANGING
          t_table      = lt_work_id.
    CATCH cx_salv_msg INTO g_cx_salv_msg.
      IF g_cx_salv_msg IS NOT INITIAL.
        gv_message = g_cx_salv_msg->if_message~get_longtext( ).
      ENDIF.
  ENDTRY.

  go_cols = go_table->get_columns( ).

* Here setting all toorbar functions visible
  go_functions = go_table->get_functions( ).
  go_functions->set_all( abap_true ).
  go_functions->set_view_lotus( abap_false ).
  go_functions->set_view_excel( abap_false ).

* Here setting column width optimized
  go_columns = go_table->get_columns( ).
  go_columns->set_optimize( abap_true ).
  go_table->display( ).

Thanks & Regards,

Suggu Sandeep.