ABAP-无法下载内部表(循环错误)

2020-08-16 21:41发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嘿 我试图下载内部表,该表也起...

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

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


我试图下载内部表,该表也起作用,但是复制了数据库的全部内容,而不仅仅是复制了我在内部表(在循环中)中指定的内容。

我的代码:

数据:lekud的lt_lekud TYPE表,ls_lekud TYPE lekud。

 ...

 循环到lt_lekud进入ls_lekud。
   写:(20)ls_lekud名称,(20)ls_lekud编号,(20)ls_lekud-plz,(20)ls_lekud描述。
   新队。
 结局。

 如果sy-subrc = 0。

   呼叫方法cl_gui_frontend_services => file_save_dialog
     出口
       default_extension ='csv'
       default_file_name ='成员'
       file_filter = | Excel文件(* .csv)\ | * .csv \ | {cl_gui_frontend_services => filetype_all} |
     改变
       文件名= lv_filename
       路径= lv_path
       fullpath = lv_fullpath。

   呼叫方法cl_gui_frontend_services => gui_download
     出口
       文件名= lv_filename
       文件类型='ASC'
       write_field_separator ='X'
       bin_filesize = lv_size
     改变
       data_tab = lt_lekud
     例外情况
       file_write_error = 1
       其他= 22。

 万一。
 

下载工作正常,但尽管显示了内部表,但不仅显示了名称,编号,plz和描述,还有完整的lekud表。

预先感谢;)

3条回答
粗暴的香蕉
2020-08-16 22:23

您对以下陈述有印象吗?

 LOOP AT lt_lekud INTO ls_lekud。
   写:(20)ls_lekud名称,(20)ls_lekud编号,(20)ls_lekud-plz,(20)ls_lekud描述。
   新队。
 ENDLOOP。

上面的语句只是在一个内部表上循环,并将部分内容写在屏幕上。 每条记录一行。 这与以后实际下载的内容无关。

这是您进行下载时发生的,它发生在内部表lt_lekud上,包括所有记录和所有列。

调用方法cl_gui_frontend_services => gui_download
     出口
       文件名= lv_filename
       文件类型='ASC'
       write_field_separator ='X'
       bin_filesize = lv_size
     改变
       data_tab = lt_lekud
     例外情况
       file_write_error = 1
       OTHERS = 22。

如果要将列限制为仅包含名称,数字,plz和描述,最简单的方法是创建另一个内部表,但仅包含上述字段并从中复制记录 lt_lekud到新表中:

数据:lt_lekud TYPE TABLE OF lekud,
       ls_lekud TYPE lekud,
       ls_lekud_short的开头,"具有选择性列的新结构
        像ls_lekud-name这样的名称,
        像ls_lekud-number这样的数字,
        像ls_lekud-plz,
        描述类似ls_lekud-description,
      ls_lekud_short的结尾,
      lt_lekud_short类似ls_lekud_short的表。  "您的新表具有结构

 ....

 循环到lt_lekud进入ls_lekud。
   写:(20)ls_lekud名称,(20)ls_lekud编号,(20)ls_lekud-plz,(20)ls_lekud描述。
   新队。

   将ls_lekud移动到ls_lekud_short。 复制特定列的行内容
   插入ls_lekud_short插入表lt_lekud_short中。  "将行内容插入新表
 结局。

 如果sy-subrc = 0。

  CALLMETHOD cl_gui_frontend_services =>文件保存对话框
     出口
       default_extension ='csv'
       default_file_name ='成员'
       file_filter = | Excel文件(* .csv)\ | * .csv \ | {cl_gui_frontend_services => filetype_all} |更改
       文件名= lv_filename
       路径= lv_path
       fullpath = lv_fullpath。

   CALLMETHOD cl_gui_frontend_services => gui_download
     出口
       文件名= lv_filename
       文件类型='ASC'
       write_field_separator ='X'
       bin_filesize = lv_size
     改变
       data_tab = lt_lekud_short"现在,您仅传递所需的列
     例外情况
       file_write_error = 1
       其他= 22。

 ENDIF。

一周热门 更多>