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

Email 获取已发送电子邮件的SOST数据库ID,email,abap,identification,Email,Abap,Identification,我有一个发送电子邮件的ABAP程序。发送的电子邮件存储在SOOD表中。发送电子邮件后,我想获得一些电子邮件的ID,以便以后能够检查其状态(在SOST表中)。我见过更多发送电子邮件的功能/方法(例如cl_bcs/send,SO_NEW_DOCUMENT_send_API1),但它们都不返回任何ID。有可靠的方法获取它吗 功能模块SO\u NEW\u DOCUMENT\u SEND\u API1为每个发送的新消息创建并导出一个新的对象ID,如您在此处所见- 此新对象\u ID存储在SCOM\u K

我有一个发送电子邮件的ABAP程序。发送的电子邮件存储在SOOD表中。发送电子邮件后,我想获得一些电子邮件的ID,以便以后能够检查其状态(在SOST表中)。我见过更多发送电子邮件的功能/方法(例如cl_bcs/send,SO_NEW_DOCUMENT_send_API1),但它们都不返回任何ID。有可靠的方法获取它吗

功能模块
SO\u NEW\u DOCUMENT\u SEND\u API1
为每个发送的新消息创建并导出一个新的
对象ID
,如您在此处所见-

新对象\u ID
存储在
SCOM\u KEY
字段的
BCST\u SR
表中。从
BCST\u SR
表中,您必须获得
文档OID
,使用
文档OID
您可以从
SOOD
表中获得详细信息。(SOOD
中的参考字段是-
如果文档BCS
),然后使用对象编号
OBJNO
SOST
表中获取详细信息


您还可以参考t-code
SBWP
检查邮件状态。

对于类CL\u BCS,您可以检查发送请求对象的方法文档包装器id。这将返回sood结构器


另外两个答案为我提供了完成任务的宝贵线索(+1)。但两者都遗漏了一些准确性和代码片段,所以我在回答中总结了这一切

使用cl_bcs
SOODK
(非sood)是包含三个组件(
OBJTP
OBJYR
OBJNO
)的结构,这三个组件一起构成
sood
表中的键

使用SO\u新建\u文档\u发送\u API1
lt\u objectid
SOFOLENTI1-OBJECT\u ID
)是字符(17),包含连接的
SOODK
结构
OBJTP+OBJYR+OBJNO
。当划分为多个部分时,它可用于查找
SOODK
表中的记录。(我在
BCST\U SR-SCOM\U键中找不到它,但它不是必需的。)

是否可以将它与过程控制案例guid关联?
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.
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
" ...