获取已发送电子邮件的 SOST 数据库 ID
Get SOST database ID of sent emails
我有一个发送电子邮件的 ABAP 程序。已发送的电子邮件存储在 SOOD table 中。发送电子邮件后,我想获取电子邮件的一些 ID,以便稍后检查其状态(在 SOST table 中)。我看到更多 functions/methods 发送电子邮件(例如 cl_bcs/send、SO_NEW_DOCUMENT_SEND_API1),但其中 none returns 任何 ID。有没有可靠的方法来获得它?
功能模块 SO_NEW_DOCUMENT_SEND_API1
为每条发送的新消息创建并导出一个新的 OBJECT_ID
,正如您在此处看到的 -
此 NEW_OBJECT_ID
存储在 BCST_SR
table 的 SCOM_KEY
字段中。从 BCST_SR
table 你必须得到 DOC_OID
,使用 DOC_OID
你可以从 SOOD
table。 (SOOD
中的参考字段是 - IF_DOC_BCS
)然后使用对象编号 OBJNO
从 [=22 中获取详细信息=]table.
您也可以参考t-code SBWP
来查看您的邮件状态。
对于classCL_BCS,可以查看send_request对象的方法doc_wrapper_id。这将 return sood 构造器。
其他两个答案为我提供了完成它的宝贵线索 (+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)是包含三个组件(OBJTP
、OBJYR
、OBJNO
)的结构,它们一起构成 SOOD
中的键 table.
使用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_objectid
(SOFOLENTI1-OBJECT_ID
) 是 char(17),包含串联的 SOODK
结构 OBJTP+OBJYR+OBJNO
。拆分后,可以用来查找SOODK
table中的一条记录。 (我在BCST_SR-SCOM_KEY
里没找到,不过没必要。)
我有一个发送电子邮件的 ABAP 程序。已发送的电子邮件存储在 SOOD table 中。发送电子邮件后,我想获取电子邮件的一些 ID,以便稍后检查其状态(在 SOST table 中)。我看到更多 functions/methods 发送电子邮件(例如 cl_bcs/send、SO_NEW_DOCUMENT_SEND_API1),但其中 none returns 任何 ID。有没有可靠的方法来获得它?
功能模块 SO_NEW_DOCUMENT_SEND_API1
为每条发送的新消息创建并导出一个新的 OBJECT_ID
,正如您在此处看到的 -
此 NEW_OBJECT_ID
存储在 BCST_SR
table 的 SCOM_KEY
字段中。从 BCST_SR
table 你必须得到 DOC_OID
,使用 DOC_OID
你可以从 SOOD
table。 (SOOD
中的参考字段是 - IF_DOC_BCS
)然后使用对象编号 OBJNO
从 [=22 中获取详细信息=]table.
您也可以参考t-code SBWP
来查看您的邮件状态。
对于classCL_BCS,可以查看send_request对象的方法doc_wrapper_id。这将 return sood 构造器。
其他两个答案为我提供了完成它的宝贵线索 (+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)是包含三个组件(OBJTP
、OBJYR
、OBJNO
)的结构,它们一起构成 SOOD
中的键 table.
使用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_objectid
(SOFOLENTI1-OBJECT_ID
) 是 char(17),包含串联的 SOODK
结构 OBJTP+OBJYR+OBJNO
。拆分后,可以用来查找SOODK
table中的一条记录。 (我在BCST_SR-SCOM_KEY
里没找到,不过没必要。)