2020-09-04 23:04发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
已经存在由写语句生成的带有输出的报告。 我想将报告输出放入内部表中(输出行将存储为字符串)。 是否有任何功能模块或任何其他方式可以实现这一目标。
我不想移动产生输出的字符串并准备内部表。 我想知道是否有任何直接的机制。
预先感谢
Vishnu Priya
创建一个包装程序,然后提交现有报告。 然后使用" LIST_FROM_MEMORY"获取生成的列表,然后使用FM" LIST_TO_TXT"转换为文本。
检查此示例程序以获取详细信息:
报告ZKK_LIST2。
类型:从tt开始,
line(202),
tt的结尾。
数据:xlist类型的abaplist在标题行出现0。
数据:xtext类型tt的标题行出现0。
选择开始。
将zkk_list1导出列表提交到内存并返回。
CALL FUNCTION'LIST_FROM_MEMORY'
表格
LISTOBJECT = xlist
例外
NOT_FOUND = 1
OTHERS = 2
。
CALL FUNCTION'LIST_TO_TXT'
导出
LIST_INDEX = -1
LISTTXT = xtext
EMPTY_LIST = 1
LIST_INDEX_INVALID = 2
OTHERS = 3
断点。
选择结束。
嗨,毗湿奴,
此报告调用另一个报告,并通过电子邮件发送其输出。 我已突出显示该区域。 如有问题请与我讨论。
表格:kna1。
数据声明
数据:诸如sodocchgi1之类的docdata,
像sopcklsti1这样的objpack在标题行中出现1,
objhead之类的solisti1出现在标题行中,
objtxt类似于solisti1出现在标题行10,
类似于solisti1的objbin在标题行出现10次,
像solix这样的objhex在标题行出现10次,
像somlreci1一样的relist在标题行出现1。
数据:像abaplist这样的listobject在标题行中出现1。
数据:tab_lines输入i,
doc_size类型i,
att_type类似于soodk-objtp。
数据:it_cust的开头出现0,
像kna1-kunnr一样的kunnr,
name1,例如kna1-name1,
ort01,如kna1-ort01,
it_cust的结尾。
选择屏幕从b1块开始,帧标题为text-000。
select-options:kna1-kunnr的p_kunnr。
b1块的选择屏幕结尾。
刷新it_cust。
清除it_cust。
选择kunnr name1 ort01
放入表it_cust
来自kna1
p_kunnr中的kunnr。
在it_cust循环。
刷新:objpack,objhead,objtxt,objbin,objhex,reclist,listobject。
清除:objpack,objhead,objtxt,objbin,objhex,reclist,listobject。
objbin ='| '。 附加objbin。
objpack-head_start = 1。
注意:在假脱机中创建ALI/OTF文档
ALI文档可以通过显示列表并选择
菜单系统->列表->打印(仅放入假脱机)。
可以在系统中运行报表SF_EXAMPLE_01来创建OTF文档。
*
描述表格对象行tab_lines。
此处使用的示例:
在内存中创建列表
使用s_kunnr = it_cust-kunnr提交zsd_cust_os_mail_att
将列表导出到内存并返回。
并将列表从内存中读取到表中
调用函数" LIST_FROM_MEMORY"
listobject = listobject
其他= 1。
如果sy-subrc <> 0。
继续。
endif。
* packing_list = objpack。
因为列表对象的大小为RAW(1000)
并且objbin的大小为CHAR(255),我们将此表复制了
调用函数" TABLE_COMPRESS"
导入
COMPRESSED_SIZE =
in = listobject
out = objbin
消息ID" 61",键入" E",数字为" 731"
和" TABLE_COMPRESS"。
* ELSE。
注意:附件的创建已完成。
对于您的报告,附件应放在表格中
objtxt用于纯文本或
二进制内容的objbin。
现在创建消息并发送"收件人"文档。
创建邮件正文
标题和说明
docdata-obj_name ='PI_CUST_REMINDER'。
docdata-obj_descr ='温和付款提醒'。
正文
objtxt ='尊敬的客户'。
附加objtxt。
objtxt ='请找到上面的附件。'
objtxt + 0(255)=''。
objtxt ='今天愉快。'
objtxt ='问候'。
objtxt ='PI Industries Ltd。'。
串联"此电子邮件/传真包含机密信息,并且是"
'供收件人专用。 如果您不是'
"收件人,那么此电子邮件/传真的任何分发,复制或使用都是"
'禁止。 如果收到错误消息,请告知objtxt中用空格隔开的内容。
连接'sender并立即将其删除/销毁。 我们对'
"任何人因使用此工具而遭受的任何损失或损害"
"电子邮件/传真"。 到objtxt中,并用空格分隔。
装箱清单(主)
描述表objtxt行tab_lines。
读取表objtxt索引tab_lines。
docdata-doc_size =(tab_lines-1)* 255 + strlen(objtxt)。
清除objpack-transf_bin。
objpack-head_num = 0。
objpack-body_start = 1。
objpack-body_num = tab_lines。
objpack-doc_type ='RAW'。
附加objpack。
创建邮件附件
撰写装箱单(附件)
att_type ='ALI'。
读取表objbin索引tab_lines。
objpack-doc_size =(tab_lines-1)* 255 + strlen(objbin)。
objpack-transf_bin ='X'。
objpack-doc_type = att_type。
objpack-obj_name ='ATTACHMENT'。
objpack-obj_descr ='附加的文档'。
创建收件人列表
reclist-receiver ='电子邮件地址'。 " <-更改地址
reclist-rec_type ='U'。
追加清单。
* reclist-receiver = sy-uname。 " <-更改内部用户
* reclist-rec_type ='B'。
* APPEND清单。
发送消息
调用函数" SO_NEW_DOCUMENT_ATT_SEND_API1"
document_data = docdata
put_in_outbox ='X'
commit_work ='X'
SENT_TO_ALL =
NEW_OBJECT_ID =
包装清单= objpack
object_header = objhead
contents_bin = objbin
contents_txt = objtxt
CONTENTS_HEX = objhex
OBJECT_PARA =
OBJECT_PARB =
接收者=列入清单。
例外情况
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
DOCUMENT_TYPE_NOT_EXIST = 3
OPERATION_NO_AUTHORIZATION = 4
PARAMETER_ERROR = 5
X_ERROR = 6
ENQUEUE_ERROR = 7
其他= 8。
消息ID'SO'类型'S'数字'023'
具有docdata-obj_name。
endloop。
感谢您的所有输入。
我已经在上面说明了
我想将报告X的输出作为电子邮件发送,并且将其作为电子邮件发送的逻辑也存在于同一报告X中。
因此,只有一个报告,因此我没有"提交"选项。
感谢与问候,
一旦获得输出,在出口屏幕上:
在菜单中:
点击:
列表 >保存/发送 >文件。
提供文件名并使用GUI_upload将输出获取到内部表中。
此致
Rama chary.Pammi
嗨Rama和Joyjit,
这不足以满足我对内部表在同一程序中处理的要求。
确切地说,我已经发送了报告中报告输出的邮件。
这是同一份报告,因此我无法选择提交报告。
谢谢
不,我不认为......没有功能模块或报告可满足您的需求。
最多设置5个标签!
嗨,
创建一个包装程序,然后提交现有报告。 然后使用" LIST_FROM_MEMORY"获取生成的列表,然后使用FM" LIST_TO_TXT"转换为文本。
检查此示例程序以获取详细信息:
报告ZKK_LIST2。
类型:从tt开始,
line(202),
tt的结尾。
数据:xlist类型的abaplist在标题行出现0。
数据:xtext类型tt的标题行出现0。
选择开始。
将zkk_list1导出列表提交到内存并返回。
CALL FUNCTION'LIST_FROM_MEMORY'
表格
LISTOBJECT = xlist
例外
NOT_FOUND = 1
OTHERS = 2
。
CALL FUNCTION'LIST_TO_TXT'
导出
LIST_INDEX = -1
表格
LISTTXT = xtext
LISTOBJECT = xlist
例外
EMPTY_LIST = 1
LIST_INDEX_INVALID = 2
OTHERS = 3
。
断点。
选择结束。
嗨,毗湿奴,
我已经开发了这种报告来发送邮件。 请在这里找到我的代码以供参考。此报告调用另一个报告,并通过电子邮件发送其输出。 我已突出显示该区域。 如有问题请与我讨论。
表格:kna1。
数据声明
数据:诸如sodocchgi1之类的docdata,
像sopcklsti1这样的objpack在标题行中出现1,
objhead之类的solisti1出现在标题行中,
objtxt类似于solisti1出现在标题行10,
类似于solisti1的objbin在标题行出现10次,
像solix这样的objhex在标题行出现10次,
像somlreci1一样的relist在标题行出现1。
数据:像abaplist这样的listobject在标题行中出现1。
数据:tab_lines输入i,
doc_size类型i,
att_type类似于soodk-objtp。
数据:it_cust的开头出现0,
像kna1-kunnr一样的kunnr,
name1,例如kna1-name1,
ort01,如kna1-ort01,
it_cust的结尾。
选择屏幕从b1块开始,帧标题为text-000。
select-options:kna1-kunnr的p_kunnr。
b1块的选择屏幕结尾。
刷新it_cust。
清除it_cust。
选择kunnr name1 ort01
放入表it_cust
来自kna1
p_kunnr中的kunnr。
在it_cust循环。
刷新:objpack,objhead,objtxt,objbin,objhex,reclist,listobject。
清除:objpack,objhead,objtxt,objbin,objhex,reclist,listobject。
objbin ='| '。 附加objbin。
objpack-head_start = 1。
注意:在假脱机中创建ALI/OTF文档
ALI文档可以通过显示列表并选择
菜单系统->列表->打印(仅放入假脱机)。
可以在系统中运行报表SF_EXAMPLE_01来创建OTF文档。
*
描述表格对象行tab_lines。
此处使用的示例:
在内存中创建列表
使用s_kunnr = it_cust-kunnr提交zsd_cust_os_mail_att
将列表导出到内存并返回。
并将列表从内存中读取到表中
调用函数" LIST_FROM_MEMORY"
表格
listobject = listobject
例外
其他= 1。
如果sy-subrc <> 0。
继续。
endif。
* packing_list = objpack。
因为列表对象的大小为RAW(1000)
并且objbin的大小为CHAR(255),我们将此表复制了
调用函数" TABLE_COMPRESS"
导入
COMPRESSED_SIZE =
表格
in = listobject
out = objbin
例外
其他= 1。
如果sy-subrc <> 0。
消息ID" 61",键入" E",数字为" 731"
和" TABLE_COMPRESS"。
endif。
* ELSE。
注意:附件的创建已完成。
对于您的报告,附件应放在表格中
objtxt用于纯文本或
二进制内容的objbin。
现在创建消息并发送"收件人"文档。
创建邮件正文
标题和说明
docdata-obj_name ='PI_CUST_REMINDER'。
docdata-obj_descr ='温和付款提醒'。
正文
objtxt ='尊敬的客户'。
附加objtxt。
objtxt ='请找到上面的附件。'
附加objtxt。
objtxt + 0(255)=''。
附加objtxt。
objtxt ='今天愉快。'
附加objtxt。
objtxt + 0(255)=''。
附加objtxt。
objtxt ='问候'。
附加objtxt。
objtxt + 0(255)=''。
附加objtxt。
objtxt ='PI Industries Ltd。'。
附加objtxt。
objtxt + 0(255)=''。
附加objtxt。
objtxt + 0(255)=''。
附加objtxt。
objtxt + 0(255)=''。
附加objtxt。
串联"此电子邮件/传真包含机密信息,并且是"
'供收件人专用。 如果您不是'
"收件人,那么此电子邮件/传真的任何分发,复制或使用都是"
'禁止。 如果收到错误消息,请告知objtxt中用空格隔开的内容。
附加objtxt。
连接'sender并立即将其删除/销毁。 我们对'
不承担任何责任"任何人因使用此工具而遭受的任何损失或损害"
"电子邮件/传真"。 到objtxt中,并用空格分隔。
附加objtxt。
装箱清单(主)
描述表objtxt行tab_lines。
读取表objtxt索引tab_lines。
docdata-doc_size =(tab_lines-1)* 255 + strlen(objtxt)。
清除objpack-transf_bin。
objpack-head_start = 1。
objpack-head_num = 0。
objpack-body_start = 1。
objpack-body_num = tab_lines。
objpack-doc_type ='RAW'。
附加objpack。
创建邮件附件
撰写装箱单(附件)
att_type ='ALI'。
描述表格对象行tab_lines。
读取表objbin索引tab_lines。
objpack-doc_size =(tab_lines-1)* 255 + strlen(objbin)。
objpack-transf_bin ='X'。
objpack-head_start = 1。
objpack-head_num = 0。
objpack-body_start = 1。
objpack-body_num = tab_lines。
objpack-doc_type = att_type。
objpack-obj_name ='ATTACHMENT'。
objpack-obj_descr ='附加的文档'。
附加objpack。
创建收件人列表
reclist-receiver ='电子邮件地址'。 " <-更改地址
reclist-rec_type ='U'。
追加清单。
* reclist-receiver = sy-uname。 " <-更改内部用户
* reclist-rec_type ='B'。
* APPEND清单。
发送消息
调用函数" SO_NEW_DOCUMENT_ATT_SEND_API1"
导出
document_data = docdata
put_in_outbox ='X'
commit_work ='X'
导入
SENT_TO_ALL =
NEW_OBJECT_ID =
表格
包装清单= objpack
object_header = objhead
contents_bin = objbin
contents_txt = objtxt
CONTENTS_HEX = objhex
OBJECT_PARA =
OBJECT_PARB =
接收者=列入清单。
例外情况
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
DOCUMENT_TYPE_NOT_EXIST = 3
OPERATION_NO_AUTHORIZATION = 4
PARAMETER_ERROR = 5
X_ERROR = 6
ENQUEUE_ERROR = 7
其他= 8。
如果sy-subrc <> 0。
消息ID'SO'类型'S'数字'023'
具有docdata-obj_name。
endif。
endloop。
嗨,
感谢您的所有输入。
我已经在上面说明了
我想将报告X的输出作为电子邮件发送,并且将其作为电子邮件发送的逻辑也存在于同一报告X中。
因此,只有一个报告,因此我没有"提交"选项。
感谢与问候,
Vishnu Priya
嗨,
一旦获得输出,在出口屏幕上:
在菜单中:
点击:
列表
>保存/发送>文件。提供文件名并使用GUI_upload将输出获取到内部表中。
此致
Rama chary.Pammi
嗨Rama和Joyjit,
这不足以满足我对内部表在同一程序中处理的要求。
确切地说,我已经发送了报告中报告输出的邮件。
这是同一份报告,因此我无法选择提交报告。
谢谢
Vishnu Priya
不,我不认为......没有功能模块或报告可满足您的需求。
一周热门 更多>