获取已发送电子邮件的SOST数据库ID

时间:2018-06-11 15:12:15

标签: email sap abap identification

我有一个发送电子邮件的ABAP程序。已发送的电子邮件存储在SOOD表中。发送电子邮件后,我想获得一些电子邮件ID,以便稍后检查其状态(在SOST表中)。我看到了更多发送电子邮件的函数/方法(例如cl_bcs / send,SO_NEW_DOCUMENT_SEND_API1),但它们都没有返回任何ID。有可靠的方法来获得它吗?

3 个答案:

答案 0 :(得分:4)

功能模块SO_NEW_DOCUMENT_SEND_API1为每个发送的新邮件创建并导出新的OBJECT_ID,正如您在此处所见 -

enter image description here

NEW_OBJECT_ID存储在BCST_SR字段中的 SCOM_KEY 表中。在 BCST_SR 表中,您可以DOC_OID使用DOC_OID获取 SOOD 的详细信息表。 ( SOOD 中的参考字段为 - IF_DOC_BCS)然后使用对象编号OBJNO SOST 表。

您也可以参考代码 SBWP 来检查您的邮件状态。

答案 1 :(得分:1)

对于CL_BCS类,您可以检查send_request对象的方法doc_wrapper_id。这将返回sood structer。

enter image description here

enter image description here

答案 2 :(得分:1)

另外两个答案给了我一些有价值的线索来完成它(+1)。但是两者都错过了一些准确性和代码片段,所以我总结了我的答案。

使用cl_bcs

DATA gr_send_request  TYPE REF TO cl_bcs.
DATA emailid LIKE soodk.
gr_send_request = cl_bcs=>create_persistent( ).

" ...

CALL METHOD gr_send_request->send(EXPORTING i_with_error_screen = 'X'
                                  RECEIVING result = gv_sent_to_all ).

IF gv_sent_to_all = 'X'.
  emailid = gr_send_request->send_request->doc_wrapper_id( ).
ENDIF.

SOODK(非sood)是包含三个组件(OBJTPOBJYROBJNO)的结构,它们是SOOD表中的键。< / p>

使用SO_NEW_DOCUMENT_SEND_API1

DATA LT_OBJECTID TYPE SOFOLENTI1-OBJECT_ID.

CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
  EXPORTING
    DOCUMENT_DATA              = LT_MAILSUBJECT
    DOCUMENT_TYPE              = 'HTM'
  IMPORTING
    new_object_id              = lt_objectid
" ...

lt_objectidSOFOLENTI1-OBJECT_ID)是char(17),其中包含连接的SOODK结构OBJTP+OBJYR+OBJNO。当划分为部分时,它可用于查找SOODK表中的记录。 (我没有在BCST_SR-SCOM_KEY中找到它,但没有必要。)