代码之家  ›  专栏  ›  技术社区  ›  jcjr Thunder-KC Inc

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

  •  2
  • jcjr Thunder-KC Inc  · 技术社区  · 7 年前

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

    3 回复  |  直到 6 年前
        1
  •  4
  •   divScorp    7 年前

    功能模块 so_new_document_send_api1 create and export a new object_id for every new message sent,as you can see in here-

    new_object_id stored at bcst_sr table in scom_key field.从 bcst_sr table you've to get doc_oid ,using doc_oid you can get details from sood table.(reference field in sood >是- if_Doc_BCS )then use the object number objno to get the details from sost >strong>table.

    此外,您还可以参考t-code sbwp >strong>来检查邮件状态。

    -

    enter image description here

    这个 NEW_OBJECT_ID 存储于 BCST_SR SCOM_KEY 字段。从 密苏里州 你必须得到的桌子 DOC_OID ,使用 医生 你可以从 SOOD 表。(中的参考字段 苏德 是- IF_DOC_BCS )然后使用对象编号 OBJNO 从中获取详细信息 SOST 表。

    也可以参考T代码 SBWP 检查邮件状态。

        2
  •  1
  •   Oguz    7 年前

    对于cl_bcs类,可以检查send_request对象的方法doc_wrapper_id。这将返回sood结构器。

    enter image description here

    enter image description here

        3
  •  1
  •   jcjr Thunder-KC Inc    7 年前

    另外两个答案给了我一些有用的线索来完成它(+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 表。

    使用so_new_document_发送_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 )是字符(17),其中包含连接的 苏德 结构 OBJTP+OBJYR+OBJNO .当划分为多个部分时,它可用于查找 苏德 表。(我没在里面找到它 BCST_SR-SCOM_KEY ,但没有必要。)

    推荐文章