表中的行数有限

2020-09-09 00:47发布

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

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


你好

我正在尝试通过电子邮件发送表内容,但是该表有926行,但并未显示所有行和列。我正在尝试将其转换为xstring,并且现在正在显示所有列,但不仅是所有行 一半。

有人可以帮我吗?

在lt_contents_bin处循环播放。
  通话功能'SCMS_STRING_TO_XSTRING'
  出口
  文字= lt_contents_bin
  输入
  缓冲区= lt_contents
  例外情况
  失败= 1
  其他= 2。
 *将表内容从xstring转换为二进制
  通话功能'SCMS_XSTRING_TO_BINARY'
  出口
  缓冲区= lt_contents
  APPEND_TO_TABLE ='X'
  桌子
  binary_tab = lt_contents_hex。

   循环至lt_contents_hex。
       将lt_contents_hex附加到gt_contents_hex。
     结局。
   结局。

   gt_contents_text = lt_contents_text。

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

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


你好

我正在尝试通过电子邮件发送表内容,但是该表有926行,但并未显示所有行和列。我正在尝试将其转换为xstring,并且现在正在显示所有列,但不仅是所有行 一半。

有人可以帮我吗?

在lt_contents_bin处循环播放。
  通话功能'SCMS_STRING_TO_XSTRING'
  出口
  文字= lt_contents_bin
  输入
  缓冲区= lt_contents
  例外情况
  失败= 1
  其他= 2。
 *将表内容从xstring转换为二进制
  通话功能'SCMS_XSTRING_TO_BINARY'
  出口
  缓冲区= lt_contents
  APPEND_TO_TABLE ='X'
  桌子
  binary_tab = lt_contents_hex。

   循环至lt_contents_hex。
       将lt_contents_hex附加到gt_contents_hex。
     结局。
   结局。

   gt_contents_text = lt_contents_text。
付费偷看设置
发送
9条回答
huskylover
1楼 · 2020-09-09 01:24.采纳回答

友好地使用了波纹管程序发送大表电子邮件


 数据:lo_send_request类型参考cl_bcs,

         lv_date(10),

         lv_text TYPE char255,"文字

         lv_subject TYPE so_obj_des,

         lo_document类型参考cl_document_bcs,

         lv_binary_content TYPE solix_tab,

         lv_size TYPE so_obj_len,

         lv_string TYPE字符串,

         lt_main_text TYPE bcsy_text,

         lo_recipient类型参考if_recipient_bcs,

         lv_sent_to_all TYPE os_boolean,

         lo_bcs_exception类型参考cx_bcs,

         lv_email TYPE ad_smtpadr,

         lv_lines类型i。

 选择屏幕:b2块的开头为FRAME TITLE文本-010。
 选择选项:s_ercpt for catsxt_sf-电子邮件无间隔。
 b2块的选择屏幕结束。
 *内部表:移动内部表

 数据:开始于gt_up_file OCCURS 0,
           线(200)
        gt_up_file的结尾。

 *电子表格附件的分隔符

   CLASS:cl_abap_char_utilities定义加载。

   常量:gc_tab类型c值cl_bcs_convert => gc_tab,

              gc_crlf类型c值cl_bcs_convert => gc_crlf。

   数据:gv_tab类型c值cl_abap_char_utilities => horizo​​ntal_tab,

         gv_newline TYPE c VALUE cl_abap_char_utilities =>换行符,

         gv_line_feed类型c值cl_abap_char_utilities => cr_lf。


   将sy-datum写入lv_date DD/MM/YYYY。
   lv_lines =行(gt_up_file)。
   如果lv_lines GT 65000。

     讯息i000(zmm)与
     '报告有65,000多行。 电子邮件不能为'
     "已发送-报告只能显示。"
     "为了通过电子邮件发送报告"
     "请更改您的选择标准。"。

     出口。

   万一。


   循环至gt_up_file。

     CONCATENATE lv_string gt_up_file gc_crlf gv_newline

            INTO lv_string。

   结局。

 * -------------------------------------------------  -------------

 *将文本字符串转换为UTF-16LE二进制数据,包括

 *字节顺序标记。  Mircosoft Excel更喜欢这些设置

 *所有这些都是由新类cl_bcs_convert完成的(请参阅注释1151257)

   尝试。
       cl_bcs_convert => string_to_solix(
         出口
           iv_string = lv_string
           iv_codepage ='4103'"适用于MS Excel,请留空
           iv_add_bom ='X'"用于其他文档类型
         输入
           et_solix = lv_binary_content
           ev_size = lv_size)。

     捕捉cx_bcs。

       讯息e445(如此)。

   ENDTRY。

   尝试。


 * --------创建持久发送请求------------------------

       lo_send_request = cl_bcs => create_persistent()。


 * --------创建并设置带有附件的文档---------------

 *使用文本从内部表创建文档对象

       lv_text = lv_date。

       附加lv_text至lt_main_text。

       在lt_main_text后面添加初始行。

       lv_text ='已附加客户价格表'。

       附加lv_text至lt_main_text。


       合并"客户价目表" sy-datum sy-uzeit

                              INTO lv_subject以" _"分隔。

       lo_document = cl_document_bcs => create_document(

         i_type ='RAW'

         i_text = lt_main_text

         i_subject = lv_subject)。


 *将电子表格作为附件添加到文档对象

       lo_document-> add_attachment(

       i_attachment_type ='XLS'"

       i_attachment_subject = lv_subject

       i_attachment_size = lv_size

       i_att_content_hex = lv_binary_content)。



 *添加文档对象以发送请求

       lo_send_request-> set_document(lo_document)。


 * ---------添加收件人(电子邮件地址)-----------------------

 *创建收件人对象

       环回s_ercpt。

         lv_email = s_ercpt-low。

         lo_recipient = cl_cam_address_bcs => create_internet_address(

         lv_email)。

 *添加收件人对象以发送请求

         lo_send_request-> add_recipient(lo_recipient)。

       结局。

 * ----------发送文件-------------------------------------  -

       lv_sent_to_all = lo_send_request-> send(i_with_error_screen ='X')。


       提交工作。

       如果lv_sent_to_all是INITIAL。

         使用''的消息s500(sbcoms)。

       其他。

         讯息s022(so)。

       万一。



 *    -  -  -  -  -  -  异常处理  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 

     捕获cx_bcs INTO lo_bcs_exception。

       使用lo_bcs_exception-> error_type的消息i865(so)。

   ENDTRY。

关于

Nawa

Baoming ROSE
2楼-- · 2020-09-09 01:09

我可以发送电子邮件,但仍然不能使用OO方法显示所有列

Climb_Ma
3楼-- · 2020-09-09 01:33

对于解决您的问题,我发现时间很长:您最好发布一个易于执行的程序。 因此,我接受了 Nawanandana Edirisinghe 发布的测试程序,做了很少的修改,使其与任何 ABAP系统> = 7.02,您可以对其进行调整,以便我们可以重现与您相同的问题?

这个想法是,我们需要5分钟才能解决该问题。

请注意使您的测试程序包含重现该问题所需的最少行,并且不要使用系统中没有的自定义表和自定义数据元素。

abap-email-johnu-blatvasky.txt

Alawn_Xu
4楼-- · 2020-09-09 01:26

我可以发送多封电子邮件吗?

闻人可可
5楼-- · 2020-09-09 01:32

嗨,

您可以尝试使用OO选项在Binary(而不是功能模块)中生成附件。 要使用的类CL_DOCUMENT_BCS和CL_BCS。 请查看以下附件部分的帖子: https://wiki.scn.sap.com/wiki/display/ABAP/Send+Emails+with+Attachments+of+any+Format

粗暴的香蕉
6楼-- · 2020-09-09 01:28

Johnu Blatvasky 论坛包含答案(将电子邮件发送给多个人?站点: sap.com

xfwsx85
7楼-- · 2020-09-09 01:20

您的问题缺少很多信息。

SCMS_STRING_TO_XSTRING转换为STRING 进入UTF-8(默认情况下)。

SCMS_XSTRING_TO_BINARY将XSTRING分成X行表格。

但是变量是什么类型?

那又是什么? 您将字节数传递给ADD_ATTACHMENT方法的参数I_ATTACHMENT_SIZE吗?

一周热门 更多>