SAP email list SOST Custom Program

 Custom ABAP program code for SAP Email list SOST


REPORT ZEMAIL_LIST.

tables SOOSsoessood.

types begin of tp_list.
        INCLUDE STRUCTURE SOXSP2.
types sel,
        sr type i,
        from(75),
        to(500),
        cc(500),
        subject(125),
        end of tp_list.

data gt_SOXSP2TAB  type SOXSP2TAB,
       gt_SOXSP2TAB1 type SOXSP2TAB,
       gs_SOXSP2 type SOXSP2,
       gs_SOXSP21 type SOXSP2,
       snd_date TYPE sxdatrngt,
       date TYPE sxdatrngl,
       gs_status type soststatus.

DATAgt_sost TYPE STANDARD TABLE OF sost,
      gs_sost TYPE sost,
      gt_soos TYPE STANDARD TABLE OF soos,
      gs_soos TYPE soos,
      gt_sood TYPE STANDARD TABLE OF sood,
      gs_sood TYPE sood,
      gt_data TYPE soxsp2tab,
      gs_data TYPE LINE OF soxsp2tab,
      gt_list type STANDARD TABLE OF tp_list,
      gs_list type tp_list,
      gt_nast TYPE STANDARD TABLE OF nast,
      gs_nast TYPE nast,
      gt_BCST_SR type STANDARD TABLE OF BCST_SR,
      gs_BCST_SR type BCST_SR,
      formname(40),
      repid(40),
      g_marked_counter TYPE i,
      lx_bcs TYPE REF TO cx_bcs.

DATA GV_CNT TYPE I.
DATA GV_sr TYPE I.
"alv fieldcatalog
DATA:  GT_FCAT    TYPE LVC_T_FCAT,               "slis_t_fieldcat_alv,
       GS_FCAT    LIKE LINE OF GT_FCAT,
       GS_LAYOUT  TYPE LVC_S_LAYO,               "slis_layout_alv,
       GS_VARIANT TYPE DISVARIANT.               "for save variant

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
 select-OPTIONS s_date for soos-SDDAT DEFAULT sy-datum OBLIGATORY.
SELECTION-SCREEN end of BLOCK b1.

START-OF-SELECTION.
    perform get_data.
    perform display_data.
end-of-SELECTION.
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA .

  gs_status-WAIT      'X'.
  gs_status-TRANSIT   'X'.
  gs_status-OK        'X'.
  gs_status-ERROR     'X'.
  gs_status-INCONS    'X'.
  gs_status-FUTURE    'X'.
  gs_status-RETRY     'X'.
  gs_status-DIRECT    'X'.
  gs_status-ACTIVE    'X'.

  loop at s_date.
   append s_date to SND_DATE.
  endloop.

  CALL FUNCTION 'SX_SNDREC_SELECT'
   EXPORTING
*     SND_ART             =
     SND_DATE            SND_DATE
*     SND_TIME            =
*     DEL_DATE            =
*     DEL_TIME            =
     STATUS              gs_status
*     NOTIFICATIONS       =
*     SENDER              =
*     MAXSEL              =
*     ALL_WAITING         = 'X'
*     DESCRIPTION         =
   IMPORTING
     SNDRECS             gt_SOXSP2TAB.

   if GT_SOXSP2TAB is NOT INITIAL.
      select from sost into CORRESPONDING FIELDS OF TABLE gt_sost
      FOR ALL ENTRIES IN GT_SOXSP2TAB WHERE OBJTP GT_SOXSP2TAB-OBJTP
                                        and OBJYR GT_SOXSP2TAB-OBJYR
                                        and OBJNO GT_SOXSP2TAB-OBJNO.

      select from soos into CORRESPONDING FIELDS OF TABLE gt_soos
      FOR ALL ENTRIES IN GT_SOXSP2TAB WHERE OBJTP GT_SOXSP2TAB-OBJTP
                                        and OBJYR GT_SOXSP2TAB-OBJYR
                                        and OBJNO GT_SOXSP2TAB-OBJNO.


   endif.

    gt_soxsp2tab1 gt_soxsp2tab.
    sort gt_soxsp2tab1 by sndreq.
    delete adjacent duplicates from gt_soxsp2tab1 comparing sndreq.

    clear gv_cntgv_sr.

    loop at gt_soxsp2tab1 into gs_soxsp21.
    clear gs_list.
    MOVE-CORRESPONDING GS_SOXSP21 to gs_list.

   if gs_list-TITEL 'Send status for document:'.
      CONTINUE.
   endif.

    gv_sr gv_sr + 1.
    gs_list-sr gv_sr.

    loop at gt_soos into gs_soos WHERE OBJTP gs_list-OBJTP
                                   and OBJYR gs_list-OBJYR
                                   and OBJNO gs_list-OBJNO
*                                   and SNDEX = 'X'.
                                   and SNDCP ' '
                                   and SNDBC ' '.
   clear gs_sost.
   read TABLE gt_sost into gs_sost with key OBJTP gs_list-OBJTP
                                            OBJYR gs_list-OBJYR
                                            OBJNO gs_list-OBJNO
                                            RECTP gs_soos-rectp
                                            RECYR gs_soos-RECYR
                                            RECNO gs_soos-RECNO.

    CONCATENATE gs_list-to ';' gs_sost-MSGV1 into gs_list-to.

   clear gs_soos.
   endloop.

    loop at gt_soos into gs_soos WHERE OBJTP gs_list-OBJTP
                                   and OBJYR gs_list-OBJYR
                                   and OBJNO gs_list-OBJNO
                                   and SNDCP 'X'.
   clear gs_sost.
   read TABLE gt_sost into gs_sost with key OBJTP gs_list-OBJTP
                                            OBJYR gs_list-OBJYR
                                            OBJNO gs_list-OBJNO
                                            RECTP gs_soos-rectp
                                            RECYR gs_soos-RECYR
                                            RECNO gs_soos-RECNO.

    CONCATENATE gs_list-cc ';' gs_sost-MSGV1 into gs_list-cc.

   clear gs_soos.
    endloop.

     CONDENSE gs_list-to.
     CONDENSE gs_list-cc.

     gv_cnt strlengs_list-to ).

     do gv_cnt TIMES.
     if gs_list-to+0(1';'.
        gs_list-to+0(1' '.
        CONDENSE gs_list-to.
     else.
       exit.
     endif.
     enddo.

     gv_cnt strlengs_list-cc ).

     do gv_cnt TIMES.
     if gs_list-cc+0(1';'.
        gs_list-cc+0(1' '.
        CONDENSE gs_list-cc.
     else.
       exit.
     endif.
     enddo.

"for subject
     if gs_list-SNDREQ is NOT INITIAL and gs_list-TITEL is INITIAL.
     select SINGLE subject from bcst_sr into gs_list-TITEL
     WHERE OS_GUID gs_list-SNDREQ.
     endif.

    append gs_list to gt_list.

    clear gs_soxsp21.
    endloop.


ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM DISPLAY_DATA .

  CLEAR GV_CNT.

  GS_LAYOUT-CWIDTH_OPT 'X'.
  GS_LAYOUT-BOX_FNAME     'SEL'.
  GS_VARIANT-REPORT  SY-REPID.

  GV_CNT GV_CNT + 1.
  GS_FCAT-COL_POS   =  GV_CNT .
  GS_FCAT-FIELDNAME 'SR'.
  GS_FCAT-COLTEXT   'Ticket ID'.
  GS_FCAT-HOTSPOT   'X'.
  APPEND GS_FCAT TO GT_FCAT.
  CLEAR GS_FCAT.

  GV_CNT GV_CNT + 1.
  GS_FCAT-COL_POS   =  GV_CNT .
  GS_FCAT-FIELDNAME 'STAT_DATE'.
  GS_FCAT-COLTEXT   'Date'.
  APPEND GS_FCAT TO GT_FCAT.
  CLEAR GS_FCAT.

  GV_CNT GV_CNT + 1.
  GS_FCAT-COL_POS   =  GV_CNT .
  GS_FCAT-FIELDNAME 'STAT_TIME'.
  GS_FCAT-COLTEXT   'Time'.
  APPEND GS_FCAT TO GT_FCAT.
  CLEAR GS_FCAT.

  GV_CNT GV_CNT + 1.
  GS_FCAT-COL_POS   =  GV_CNT .
  GS_FCAT-FIELDNAME 'TITEL'.
  GS_FCAT-COLTEXT   'Subject'.
  APPEND GS_FCAT TO GT_FCAT.
  CLEAR GS_FCAT.

  GV_CNT GV_CNT + 1.
  GS_FCAT-COL_POS   =  GV_CNT .
  GS_FCAT-FIELDNAME 'SENDER'.
  GS_FCAT-COLTEXT   'Sender'.
  APPEND GS_FCAT TO GT_FCAT.
  CLEAR GS_FCAT.

  GV_CNT GV_CNT + 1.
  GS_FCAT-COL_POS   =  GV_CNT .
  GS_FCAT-FIELDNAME 'TO'.
  GS_FCAT-COLTEXT   'To'.
  APPEND GS_FCAT TO GT_FCAT.
  CLEAR GS_FCAT.

  GV_CNT GV_CNT + 1.
  GS_FCAT-COL_POS   =  GV_CNT .
  GS_FCAT-FIELDNAME 'CC'.
  GS_FCAT-COLTEXT   'Cc'.
  APPEND GS_FCAT TO GT_FCAT.
  CLEAR GS_FCAT.

  GV_CNT GV_CNT + 1.
  GS_FCAT-COL_POS   =  GV_CNT .
  GS_FCAT-FIELDNAME 'SNDREQ'.
  GS_FCAT-COLTEXT   'SNDREQ'.
  APPEND GS_FCAT TO GT_FCAT.
  CLEAR GS_FCAT.

  GV_CNT GV_CNT + 1.
  GS_FCAT-COL_POS   =  GV_CNT .
  GS_FCAT-FIELDNAME 'OBJTP'.
  GS_FCAT-COLTEXT   'OBJTP'.
  APPEND GS_FCAT TO GT_FCAT.
  CLEAR GS_FCAT.

  GV_CNT GV_CNT + 1.
  GS_FCAT-COL_POS   =  GV_CNT .
  GS_FCAT-FIELDNAME 'OBJYR'.
  GS_FCAT-COLTEXT   'OBJYR'.
  APPEND GS_FCAT TO GT_FCAT.
  CLEAR GS_FCAT.

  GV_CNT GV_CNT + 1.
  GS_FCAT-COL_POS   =  GV_CNT .
  GS_FCAT-FIELDNAME 'OBJNO'.
  GS_FCAT-COLTEXT   'OBJNO'.
  APPEND GS_FCAT TO GT_FCAT.
  CLEAR GS_FCAT.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      I_CALLBACK_PROGRAM      SY-REPID
      I_CALLBACK_USER_COMMAND 'USER_COMMAND'
*     I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
      IS_LAYOUT_LVC           GS_LAYOUT
      IT_FIELDCAT_LVC         GT_FCAT[]
*     IT_EVENTS               = lt_evts[]
      I_DEFAULT               'X'
      I_SAVE                  'A'
      IS_VARIANT              GS_VARIANT
* IMPORTING
*     E_EXIT_CAUSED_BY_CALLER =
*     ES_EXIT_CAUSED_BY_USER  =
    TABLES
      T_OUTTAB                GT_LIST
    EXCEPTIONS
      PROGRAM_ERROR           1
      OTHERS                  2.

  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.


ENDFORM.

FORM USER_COMMAND  USING R_UCOMM LIKE SY-UCOMM
                          RS_SELFIELD TYPE SLIS_SELFIELD.

  clear GT_SOXSP2TAB[].

  CASE R_UCOMM.

    WHEN '&IC1'.
      READ TABLE GT_LIST INTO GS_LIST INDEX RS_SELFIELD-TABINDEX.
      if gs_list-SNDREQ is NOT INITIAL.
         MOVE-CORRESPONDING gs_list to GS_SOXSP2.
         append GS_SOXSP2 to gt_soxsp2tab.

        TRY.
            cl_sndrec_bcs=>displaygt_SOXSP2TAB ).

          CATCH cx_bcs INTO lx_bcs.
            MESSAGE ID lx_bcs->msgid TYPE 'S' NUMBER lx_bcs->msgno
              WITH 'Display document' space space space.

        ENDTRY.


      endif.

  ENDCASE.

  CLEAR SY-UCOMM.
ENDFORM.

FORM PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
  SET PF-STATUS 'ZSTANDARD'.
ENDFORM.




Post a Comment

0 Comments

Total Pageviews