Code: Alles auswählen.
REPORT zbc_expiry_check.
DATA: heute TYPE sy-datum,
diff TYPE i,
lt_expiry_check TYPE TABLE OF zbc_expiry_check,
go_tabelle TYPE REF TO cl_salv_table,
go_funktionen TYPE REF TO cl_salv_functions,
lv_dates(10) TYPE c.
DATA: lv_betreff TYPE sodocchgi1,
lt_receivers TYPE STANDARD TABLE OF somlreci1 WITH HEADER LINE,
ls_receivers TYPE somlreci1,
lt_inhalt TYPE STANDARD TABLE OF solisti1 WITH HEADER LINE,
ls_inhalt TYPE solisti1,
lt_kopf TYPE STANDARD TABLE OF solisti1,
ls_kopf TYPE solisti1,
ls_structure_mail TYPE sopcklsti1,
lt_structure_mail TYPE STANDARD TABLE OF sopcklsti1,
ls_objtxt TYPE solisti1, " Message body
w_tab_lines TYPE i. " Table lines
FIELD-SYMBOLS: <g_expiry_check> LIKE LINE OF lt_expiry_check .
heute = sy-datum.
SELECT *
FROM zbc_expiry_check
INTO TABLE lt_expiry_check.
LOOP AT lt_expiry_check ASSIGNING <g_expiry_check>.
diff = <g_expiry_check>-expiry_date - heute.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = <g_expiry_check>-expiry_date
IMPORTING
date_external = lv_dates
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
*Wenn das Objekt abgelaufen ist
IF diff < 0.
CLEAR lt_inhalt[].
CLEAR ls_inhalt.
ls_objtxt-line = |The following object has expired:|.
APPEND ls_objtxt TO lt_inhalt.
ls_objtxt-line = ' '.
APPEND ls_objtxt TO lt_inhalt.
ls_objtxt-line = |CRITICAL - | && sy-sysid && |: | && <g_expiry_check>-type &&
| | && <g_expiry_check>-name && | expired (| && lv_dates && |). | .
APPEND ls_objtxt TO lt_inhalt.
ls_objtxt-line = ' '.
APPEND ls_objtxt TO lt_inhalt.
ls_objtxt-line = |This message was generated in system | && sy-sysid &&
| / report name: | && sy-repid && | (jobname may differ...) |.
APPEND ls_objtxt TO lt_inhalt.
lv_betreff-obj_name = 'EXPIRY CHECK'.
lv_betreff-obj_descr = 'A SAP-OBJECT EXPIRED'.
lv_betreff-obj_langu = 'D'.
lv_betreff-sensitivty = 'F'.
DESCRIBE TABLE lt_inhalt LINES w_tab_lines.
READ TABLE lt_inhalt INDEX w_tab_lines.
lv_betreff-doc_size = ( w_tab_lines - 1 ) * 255 + strlen( lt_inhalt ).
CLEAR lt_receivers[].
ls_receivers-receiver = <g_expiry_check>-email_to.
ls_receivers-rec_type = 'U'.
ls_receivers-express = 'X'.
APPEND ls_receivers TO lt_receivers.
CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
EXPORTING
document_type = 'RAW'
document_data = lv_betreff
put_in_outbox = 'X'
commit_work = 'X'
TABLES
object_header = lt_kopf
object_content = lt_inhalt
receivers = lt_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
IF sy-subrc <> 0.
EXIT.
ENDIF.
ENDIF.
*Wenn das Objekt ausläuft
IF diff <= <g_expiry_check>-warn_thres_d AND diff >= 0.
*<g_expiry_check>-thres_reduced_d = <g_expiry_check>-warn_thres_d - 5.
CLEAR lt_inhalt[].
CLEAR ls_inhalt.
ls_objtxt-line = |The following object is about to expire:|.
APPEND ls_objtxt TO lt_inhalt.
ls_objtxt-line = ' '.
APPEND ls_objtxt TO lt_inhalt.
ls_objtxt-line = |WARNING - | && sy-sysid && |: | && <g_expiry_check>-type &&
| | && <g_expiry_check>-name && | expires in | && diff && | days (| && lv_dates && |). | .
APPEND ls_objtxt TO lt_inhalt.
ls_objtxt-line = ' '.
APPEND ls_objtxt TO lt_inhalt.
ls_objtxt-line = |This message was generated in system | && sy-sysid &&
| / report name: | && sy-repid && | (jobname may differ...) |.
APPEND ls_objtxt TO lt_inhalt.
lv_betreff-obj_name = 'EXPIRY CHECK'.
lv_betreff-obj_descr = 'A SAP-OBJECT IS GOING TO EXPIRE'.
lv_betreff-obj_langu = 'D'.
lv_betreff-sensitivty = 'F'.
DESCRIBE TABLE lt_inhalt LINES w_tab_lines.
READ TABLE lt_inhalt INDEX w_tab_lines.
lv_betreff-doc_size = ( w_tab_lines - 1 ) * 255 + strlen( lt_inhalt ).
CLEAR lt_receivers[].
ls_receivers-receiver = <g_expiry_check>-email_to.
ls_receivers-rec_type = 'U'.
ls_receivers-express = 'X'.
APPEND ls_receivers TO lt_receivers.
CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
EXPORTING
document_type = 'RAW'
document_data = lv_betreff
put_in_outbox = 'X'
commit_work = 'X'
TABLES
object_header = lt_kopf
object_content = lt_inhalt
receivers = lt_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
IF sy-subrc <> 0.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
TRY. "Just for me
cl_salv_table=>factory( IMPORTING r_salv_table = go_tabelle
CHANGING t_table = lt_expiry_check ).
CATCH cx_salv_msg.
ENDTRY.
go_funktionen = go_tabelle->get_functions( ).
go_funktionen->set_all( abap_true ).
go_tabelle->display( ).
Code: Alles auswählen.
data: lt_string type stringtab.
SPLIT <g_expiry_check>-email_to AT ';' INTO lt_string.
LOOP AT lt_string ASSIGNING FIELD-SYMBOL(<ld_string>).
APPEND INITIAL LINE TO lt_receivers ASSIGNING FIELD-SYMBOL(<ls_receiver>).
<ls_receiver>-receiver = <ld_string>.
<ls_receiver>-rec_type = 'U'.
<ls_receiver>-express = 'X'.
ENDLOOP.
Vielen Dank, hat soweit funktioniert Jetzt hätte ich aber noch ne Frage nicht nur an dich sondern an alle und zwar: Wollte ich nun einer Spalte (Spalte1) in meiner Datenbank denselben Wert wie einer bereits vorhandenen Spalte (Spalte2) zuordnen. Spalte2 wird hierbei vom Nutzer befüllt. Spalte1 soll dann automatisch denselben Wert erhalten. Danke schonmala-dead-trousers hat geschrieben:Hi!
Wenn du sagst, dass die Empfänger mit Semikolon eingetragen sind, musst du sie auch erst mal trennen:Ich würde dir aber empfehlen, wenn du das schon umbaust/neu entwickelst auf die BCS-Klassen umzusteigen und dem SO_NEW_DOCUMENT_SEND_API1 lebewohl zu sagen.Code: Alles auswählen.
data: lt_string type stringtab. SPLIT <g_expiry_check>-email_to AT ';' INTO lt_string. LOOP AT lt_string ASSIGNING FIELD-SYMBOL(<ld_string>). APPEND INITIAL LINE TO lt_receivers ASSIGNING FIELD-SYMBOL(<ls_receiver>). <ls_receiver>-receiver = <ld_string>. <ls_receiver>-rec_type = 'U'. <ls_receiver>-express = 'X'. ENDLOOP.
lg ADT
Was hat das mit dem Topic des Threads zu tun?Schäfer_anfänger hat geschrieben:Jetzt hätte ich aber noch ne Frage nicht nur an dich sondern an alle und zwar: Wollte ich nun einer Spalte (Spalte1) in meiner Datenbank denselben Wert wie einer bereits vorhandenen Spalte (Spalte2) zuordnen. Spalte2 wird hierbei vom Nutzer befüllt. Spalte1 soll dann automatisch denselben Wert erhalten. Danke schonmal
Was hat das mit einer Antwort/Hilfe/sinnvollem Beitrag zu tun?black_adept hat geschrieben:Was hat das mit dem Topic des Threads zu tun?Schäfer_anfänger hat geschrieben:Jetzt hätte ich aber noch ne Frage nicht nur an dich sondern an alle und zwar: Wollte ich nun einer Spalte (Spalte1) in meiner Datenbank denselben Wert wie einer bereits vorhandenen Spalte (Spalte2) zuordnen. Spalte2 wird hierbei vom Nutzer befüllt. Spalte1 soll dann automatisch denselben Wert erhalten. Danke schonmal
Was hat dein Benehmen hier im Forum mit Freundlichkeit zu tun? Du hältst dich mehrfach nicht an die Forenregeln, aktuell beginnst du in einem Thread ein neues Thema welches nichts mit dem Thread zu tun hat, was nicht so sein soll und beim Hinweis daruf wirst du direkt aggressiv weil du keine Hilfe bekommst.Schäfer_anfänger hat geschrieben:Was hat das mit einer Antwort/Hilfe/sinnvollem Beitrag zu tun?black_adept hat geschrieben:Was hat das mit dem Topic des Threads zu tun?Schäfer_anfänger hat geschrieben:Jetzt hätte ich aber noch ne Frage nicht nur an dich sondern an alle und zwar: Wollte ich nun einer Spalte (Spalte1) in meiner Datenbank denselben Wert wie einer bereits vorhandenen Spalte (Spalte2) zuordnen. Spalte2 wird hierbei vom Nutzer befüllt. Spalte1 soll dann automatisch denselben Wert erhalten. Danke schonmal