MS Outlook和OLE2

2020-09-10 17:30发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)尊敬的专家, 我使用Outlo...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


尊敬的专家,

我使用Outlook将电子邮件中的主题读入内部表中,并且工作正常!

最后,还有2个问题,我希望有人能帮助我:

1)我需要知道标准收件箱中的电子邮件数量。

2)我想将电子邮件从Standort-Inbox移到名为" NEW"的子文件夹中。

Microsoft说,Outlook具有" Count-"和" Move-Methods"。 但是如何在ABAP中使用这种方法?

最诚挚的问候,

马丁

6条回答
clever101
2020-09-10 17:57

我自己找到了。 这是我的解决方案,现在必须将其集成到我的主程序中:

 REPORT Z_TEST2。

 包括:ole2incl。
 类型:BEGIN OF type_email,
           mailsen TYPE c LENGTH 1024," +电子邮件弃权者
           mailhdc TYPE c LENGTH 1024," +电子邮件标题komplett inkl。票证编号和Timestemp
           mailhdr TYPE c长度2048," +电子邮件标题原始(原始)
           maildat TYPE字符串," +电子邮件数据"
           mailtim TYPE字符串," +电子邮件通知"
           mailjah TYPE c LENGTH 4," +电子邮件Jahr
         END OF type_email。
 * ###############################################  #############################
 数据:l_oleoutlook TYPE ole2_object,
       l_olenmspace TYPE ole2_object,
       l_oleeingang TYPE ole2_object," + Posteingang
       l_olemainpth TYPE ole2_object," + Zielordner
       l_oleemail01 TYPE ole2_object," +电子邮件
       l_oledtarget TYPE ole2_object,
       l_hdrrawvers TYPE C LENGTH 2048," +标头RAW(原始)
       l_laengeabs1 TYPE i," +遗弃者姓氏(列尔Datensätzefestzustellen)
       l_dszaehler1 TYPE sy-tabix," +Zählerfürdie电子邮件
       l_origdatum1 TYPE字符串," +原始数据aus电子邮件
       l_pfadmailcp TYPE字符串," +保留Windows-Verzeichnisfürdie gespeicherten电子邮件
       l_sendername TYPE字符串," +弃权者电子邮件
       l_hdrcomplet TYPE字符串," +页眉"。票证编号和时间戳
       l_timestamp1 TYPE字符串," +时间戳"
       l_sendreceiv TYPE i。  " +标志,ob" R"(电子邮件Eingang)或" S"(Gesendete电子邮件)ausgelesen werden soll

 * + Variablen(符合Erstellung时间戳):

 数据:l_emaildatum TYPE字符串," +数据表Tabelle it_emails
       l_emailuhrze TYPE字符串," +在Internet上进行的合并it_emails
       l_tempjahr01 TYPE C LENGTH 4," + Jahr
       l_tempmonat1 TYPE C LENGTH 2," + Monat
       l_temptag001 TYPE C LENGTH 2," +标记"
       l_tempstunde TYPE c LENGTH 2," +刚度"
       l_tempminute TYPE c LENGTH 2," +分钟
       l_tempsekund TYPE c长度2。" + Sekunde

 数据:type_email的lit_emails TYPE STANDARD TABLE,
       w_lit_emails TYPE类型的电子邮件。
 * ###############################################  #############################

 " + Wird nur zu Testzweckenbenötigt:
 ******************************************************  **********
 参数:p_pronum TYPE字符串义务。  " + Projekt-Nr。
 参数:p_sndrec类型c默认'R'强制性。  " + Eingang/Gesendet
 ******************************************************  **********
 选择开始。
 将p_sndrec转换为大写。

 如果p_sndrec NE'R'和p_sndrec NE'S'。
   信息" RfürErhalten oder SfürGesendet eingeben" TYPE" E"。
 万一。

 如果p_sndrec EQ为'R'。
   l_sendreceiv = 6。
 其他。
   l_sendreceiv = 5。
 万一。

 刷新lit_emails。

 创建对象l_oleoutlook'Outlook.Application'。
 l_oleoutlook'GetNameSpace'= l_olenmspace的调用方法
   出口
     #1 ='MAPI'。
 l_olenmspace'GetDefaultFolder'= l_oleeingang的调用方法
   出口
     #1 = l_sendreceiv。  " 3:已删除邮件-4:发件箱-5:已发送邮件-6:收件箱-9:日历-10:联系人-11:日志-12:注释-13:任务
 l_olenmspace'文件夹'的调用方法= l_olemainpth
   出口
     #1 ='PersönlicherOrdner'。
 l_olemainpth'文件夹'的调用方法= l_oledtarget
   出口
     #1 ='_Tickets'。

 ULINE。
 清除:l_dszaehler1。

 做。
   l_dszaehler1 = l_dszaehler1 + 1。
   l_oleeingang'项目'的呼叫方法= l_oleemail01" + Zugriff auf电子邮件编号l_dszaehler1
     出口
       #1 = l_dszaehler1。

     如果sy-subrc = 0。
       获取l_oleemail01'SenderName'= l_sendername的属性。  " +弃权者
       CONDENSE l_sendername。
       将Strlen(l_sendername)移动到l_laengeabs1。
         如果l_laengeabs1 NE 0。
           如果p_sndrec EQ为'R'。
             获取l_oleemail01'ReceivedTime'= l_origdatum1的属性。  " + Datum + Zeit Empfang
           其他。
             获取l_oleemail01'SentOn'的属性= l_origdatum1。  " + Datum + Zeit Gesendet
           万一。

           获取l_oleemail01'Subject'= l_hdrrawvers的属性。  " + Betreff

           在空间中将l_origdatum1拆分为l_emaildatum l_emailuhrze。
           l_tempjahr01 = l_emaildatum + 6(4)。
           l_tempmonat1 = l_emaildatum + 3(2)。
           l_temptag001 = l_emaildatum(2)。
           l_tempstunde = l_emailuhrze(2)。
           l_tempminute = l_emailuhrze + 3(2)。
           l_tempsekund = l_emailuhrze + 6(2)。
           浓缩:l_hdrrawvers。
           合并l_tempjahr01 l_tempmonat1 l_temptag001 l_tempstunde l_tempminute l_tempsekund'+'到l_timestamp1。
           连接p_pronum'+'l_timestamp1 l_hdrrawvers INTO l_hdrcomplet。
 ** [Speichern der E-Mail als Datei:]
           将l_hdrcomplet中':'的所有出现替换为'_'。
           用l -hdrcomplet替换'/'的所有出现。
           用l + h替换l_hdrcomplet中所有'&'事件。
           用l替换l_hdrcomplet中所有'"'的事件。
           将l_hdrcomplet中所有'\'的事件替换为'-'。
           用l + h替换l_hdrcomplet中所有'*'事件。
           替换所有出现的"?" 在带有" +"的l_hdrcomplet中。
           将l_hdrcomplet中所有'<'出现的地方替换为'_'。
           替换所有出现的" |" 在带有"-"的l_hdrcomplet中。
           将l_hdrcomplet中所有'>'事件替换为'_'。

           CONCATENATE'U:/Tickets/Mails/'l_hdrcomplet'.mht'INTO l_pfadmailcp。  " + Verzeichnis,请发送电子邮件给außerhalbvon Outlook
            " + gespeichert werden脚
           l_oleemail01'SAVEAS'的呼叫方法
             出口
               #1 = l_pfadmailcp
               #2 = 10。

 * **Füllender internen Tabelle:
           浓缩:l_emaildatum,l_emailuhrze。
           w_lit_emails-mailsen = l_sendername。
           w_lit_emails-maildat = l_emaildatum。
           w_lit_emails-mailtim = l_emailuhrze。
           w_lit_emails-mailjah = l_tempjahr01。
           w_lit_emails-mailhdc = l_hdrcomplet。
           w_lit_emails-mailhdr = l_hdrrawvers。
           APPEND w_lit_emails至lit_emails。
           免费对象l_oleemail01。
         万一。
       其他。
         出口。
     万一。

   清除:w_lit_emails,l_emailuhrze,l_emaildatum,l_pfadmailcp,l_hdrrawvers,l_laengeabs1,l_sendername。
   清除:l_hdrcomplet,l_origdatum1,l_tempjahr01,l_tempmonat1,l_temptag001,l_tempstunde,l_tempminute,l_tempsekund。

 ENDDO。

 ULINE。
 清除l_dszaehler1。

 * Ergebnisse aus interner Tabelle ausgeben:

 环聊lit_emails INTO w_lit_emails。
   l_dszaehler1 = l_dszaehler1 + 1。
   写:/w_lit_emails-maildat,w_lit_emails-mailtim,w_lit_emails-mailsen,w_lit_emails-mailhdr,w_lit_emails-mailhdc。
   l_oleeingang'项目'的呼叫方法= l_oleemail01" + Zugriff auf电子邮件编号l_dszaehler1
     出口
       #1 = l_dszaehler1。
   l_oleemail01"移动"的呼叫方法
     出口
       #1 = l_oledtarget。

     如果sy-subrc EQ 0。
       l_dszaehler1 = l_dszaehler1-1。
     万一。

   清除w_lit_emails。
   免费对象l_oleemail01。
 结局。

 免费对象l_oleoutlook。
 免费对象l_olenmspace。
 免费对象l_oleeingang。
 免费对象l_olemainpth。
 免费对象l_oledtarget。
 

一周热门 更多>