将输出报告到内部表

2020-09-04 23:04发布

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

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


嗨,

已经存在由写语句生成的带有输出的报告。 我想将报告输出放入内部表中(输出行将存储为字符串)。 是否有任何功能模块或任何其他方式可以实现这一目标。

我不想移动产生输出的字符串并准备内部表。 我想知道是否有任何直接的机制。

预先感谢

Vishnu Priya

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

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


嗨,

已经存在由写语句生成的带有输出的报告。 我想将报告输出放入内部表中(输出行将存储为字符串)。 是否有任何功能模块或任何其他方式可以实现这一目标。

我不想移动产生输出的字符串并准备内部表。 我想知道是否有任何直接的机制。

预先感谢

Vishnu Priya

付费偷看设置
发送
8条回答
黑丝骑士
1楼 · 2020-09-04 23:48.采纳回答

嗨,

创建一个包装程序,然后提交现有报告。 然后使用" 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

断点。

选择结束。

ZJXianG
2楼-- · 2020-09-04 23:47
Pavel Astashonok 有很多 报告类型。 此答案适用于一种类型的报告。 对于所有类型的报告,都没有"唯一的解决方案"。 请针对您的具体情况提出一个问题。
zhangjiyang1323
3楼-- · 2020-09-04 23:30

嗨,毗湿奴,

我已经开发了这种报告来发送邮件。 请在这里找到我的代码以供参考。

此报告调用另一个报告,并通过电子邮件发送其输出。 我已突出显示该区域。 如有问题请与我讨论。

表格: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。

大道至简
4楼-- · 2020-09-04 23:33

嗨,

感谢您的所有输入。

我已经在上面说明了

我想将报告X的输出作为电子邮件发送,并且将其作为电子邮件发送的逻辑也存在于同一报告X中。

因此,只有一个报告,因此我没有"提交"选项。

感谢与问候,

Vishnu Priya

哎,真难
5楼-- · 2020-09-04 23:44

嗨,

一旦获得输出,在出口屏幕上:

在菜单中:

点击:

列表 >保存/发送 >文件。

提供文件名并使用GUI_upload将输出获取到内部表中。

此致

Rama chary.Pammi

微wx笑
6楼-- · 2020-09-04 23:47

嗨Rama和Joyjit,

这不足以满足我对内部表在同一程序中处理的要求。

确切地说,我已经发送了报告中报告输出的邮件。

这是同一份报告,因此我无法选择提交报告。

谢谢

Vishnu Priya

hengyuye
7楼-- · 2020-09-04 23:46

不,我不认为......没有功能模块或报告可满足您的需求。

一周热门 更多>