Custom ABAP program code for SAP Email list SOST
REPORT ZEMAIL_LIST.
tables : SOOS, soes, sood.
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.
DATA: gt_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_cnt, gv_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 = strlen( gs_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 = strlen( gs_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=>display( gt_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.
0 Comments