2020-09-10 17:30发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
尊敬的专家,
我使用Outlook将电子邮件中的主题读入内部表中,并且工作正常!
最后,还有2个问题,我希望有人能帮助我:
1)我需要知道标准收件箱中的电子邮件数量。
2)我想将电子邮件从Standort-Inbox移到名为" NEW"的子文件夹中。
Microsoft说,Outlook具有" Count-"和" Move-Methods"。 但是如何在ABAP中使用这种方法?
最诚挚的问候,
马丁
这是您的VBA代码和ABAP代码之间的等效项:
Sub MoveItems()FORM moveitems。 将OutlookApp调暗为Outlook.Application数据outlookapp类型ole2_object。 将myNamespace设置为Outlook.NameSpace DATA mynamespace TYPE ole2_object。 将myFolder设置为Outlook.MAPIFolder DATA myfolder TYPE ole2_object。 Dim destFolder作为Outlook.MAPIFolder DATA destfolder TYPE ole2_object。 Dim count As Long,n作为Long DATA count TYPE i。 将movItems设置为Outlook.Items DATA movitems类型ole2_object。 Dim mItem作为对象DATA模式ole2_object。 设置OutlookApp =新的CREATE OBJECT outlookapp Outlook.Application'Outlook.Application'。 设置myNamespace = Outlookapp的调用方法'GetNameSpace'= OutlookApp.GetNamespace(" MAPI")mynamespace导出#1 ='MAPI'。 设置myFolder =调用mynamespace的方法 myNamespace.GetDefaultFolder(6)''GetDefaultFolder'= myfolder导出#1 默认收件箱= 6。 设置destFolder = myfolder的调用方法'Folders'= myFolder.Folders(" NEW")'destfolder导出#1的子文件夹='NEW'。 默认收件箱 设置movItems = myFolder.Items获取myfolder'Items'= movitems的属性。 count = movItems.count获取movitems的属性'Count'=计数。 对于n = count To 1 Step-1,请计算TIMES。 movItems(n)。移动destFolder myfolder'Items'= mitem的调用方法 导出#1 = sy-index。 模仿"移动"导出#1的呼叫方法 =解除文件夹。 下一个ENDDO。 结束子ENDFORM。
对不起,我的错。
这是我在ABAP中需要的代码(在VBA中可以正常工作,早期绑定):
子MoveItems() 将OutlookApp调暗为Outlook.Application 设置OutlookApp =新的Outlook.Application 将myNamespace调暗为Outlook.NameSpace 设置myNamespace = OutlookApp.GetNamespace(" MAPI") 将myFolder调暗为Outlook.MAPIFolder Dim destFolder作为Outlook.MAPIFolder 昏暗计数长,n长 将movItems设置为Outlook.Items Dim mItem作为对象 '源文件夹和目标文件夹的定义 设置myFolder = myNamespace.GetDefaultFolder(6)'默认收件箱 设置destFolder = myFolder.Folders(" NEW")'默认收件箱的子文件夹 设置movItems = myFolder.Items 计数= movItems.count 对于n =计数到1步骤-1 movItems(n)。移动destFolder 下一个 结束子
我自己找到了。 这是我的解决方案,现在必须将其集成到我的主程序中:
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。
为什么不首先创建并测试所需的VBA代码? 然后我可以将其翻译为工作版本? 使用上面的代码,也许生成的ABAP不会包括您需要的所有VBA到ABAP转换规则。 或者,如果您愿意,可以按照我在这里提供的建议自己进行转换: https://answers.sap.com/questions/287201/como-eliminar-filas-vacias-en-ole-abap.html
亲爱的 桑德拉,
感谢您的耐心;-)我已经在上面修改了代码。
调用附件的方法'物品'=附件导出#1 = y。
最多设置5个标签!
这是您的VBA代码和ABAP代码之间的等效项:
对不起,我的错。
这是我在ABAP中需要的代码(在VBA中可以正常工作,早期绑定):
我自己找到了。 这是我的解决方案,现在必须将其集成到我的主程序中:
为什么不首先创建并测试所需的VBA代码? 然后我可以将其翻译为工作版本? 使用上面的代码,也许生成的ABAP不会包括您需要的所有VBA到ABAP转换规则。 或者,如果您愿意,可以按照我在这里提供的建议自己进行转换: https://answers.sap.com/questions/287201/como-eliminar-filas-vacias-en-ole-abap.html
亲爱的 桑德拉,
感谢您的耐心;-)我已经在上面修改了代码。
一周热门 更多>