文件读入内部表时没有定义结构

2020-09-15 15:56发布

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

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


尊敬的专家

我正在尝试实现从演示服务器动态读取文件。 仅在运行时才知道文件结构。 我试图做到这一点,但我在每列之间都得到了#。 请在下面找到代码。


 跨度 {
 字体家族:" Courier New";
 字体大小:10pt;
 颜色:#000000;
 背景:#FFFFFF;
 }
 .L0S31 {
 字体样式:斜体;
 颜色:#808080;
 }
 .L0S33 {
 颜色:#4DA619;
 }
 .L0S52 {
 颜色:#0000FF;
 }
 .L0S55 {
 颜色:#800080;
 }
 .L0S70 {
 颜色:#808080;
 }

 参数:p_tabnam TYPE标签名,

             p_selfl1 TYPE edpline,

             p_value TYPE edpline,

             p_where1 TYPE edpline。



 参数:p_file类型ibipparms-path。

 数据:文件类型字符串。



 数据:z_file的it_tab类型表,

       wa_tab TYPE zfile。





 数据:lt_where edpline TYPE TABLE,

       lt_sel_list edpline类型表,

       l_wa_name TYPE字符串,

       ls_where TYPE edpline,

       l_具有TYPE字符串,

       dref TYPE REF TO数据,

       itab_type类型参考cl_abap_tabledescr,

       struct_type类型参考cl_abap_structdescr,

       elem_type类型参考cl_abap_elemdescr,

       comp_tab TYPE cl_abap_structdescr => component_table,

       comp_fld TYPE cl_abap_structdescr =>组件。



 类型:f_count个类型i。



 FIELD-SYMBOLS: TYPE ANY TABLE,

                 " *  TYPE ANY,

                  TYPE任意。







 在p_file的VALUE-REQUEST的SELECTION屏幕上。

   通话功能'F4_FILENAME'

     出口

       field_name ='P_FILE'

     输入

       file_name = p_file。

   文件= p_file。




 跨度 {
 字体家族:" Courier New";
 字体大小:10pt;
 颜色:#000000;
 背景:#FFFFFF;
 }
 .L0S31 {
 字体样式:斜体;
 颜色:#808080;
 }
 .L0S33 {
 颜色:#4DA619;
 }
 .L0S52 {
 颜色:#0000FF;
 }
 .L0S55 {
 颜色:#800080;
 }

  通话功能'GUI_UPLOAD'

     出口

       文件名=文件

       文件类型='ASC'

       has_field_separator =''

 * HEADER_LENGTH = 0

 * READ_BY_LINE ='X'

 * DAT_MODE =''

 * CODEPAGE =''

 * IGNORE_CERR = ABAP_TRUE

 *替换='#'

 * CHECK_BOM =''

 * VIRUS_SCAN_PROFILE =

 * NO_AUTH_CHECK =''

 *重要

 *文件长度=

 *标题=

     桌子

       data_tab = it_tab。

在IT_TAB中,我用#获得字段名称。 甚至我都尝试用#替换所有出现的空白,但不能正常工作。

如何删除它。 由于该结构被声明为char999。我越来越像这样。 请让我知道如何实现这一目标。

感谢和问候

维杰

(15.1 kB)

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

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


尊敬的专家

我正在尝试实现从演示服务器动态读取文件。 仅在运行时才知道文件结构。 我试图做到这一点,但我在每列之间都得到了#。 请在下面找到代码。


 跨度 {
 字体家族:" Courier New";
 字体大小:10pt;
 颜色:#000000;
 背景:#FFFFFF;
 }
 .L0S31 {
 字体样式:斜体;
 颜色:#808080;
 }
 .L0S33 {
 颜色:#4DA619;
 }
 .L0S52 {
 颜色:#0000FF;
 }
 .L0S55 {
 颜色:#800080;
 }
 .L0S70 {
 颜色:#808080;
 }

 参数:p_tabnam TYPE标签名,

             p_selfl1 TYPE edpline,

             p_value TYPE edpline,

             p_where1 TYPE edpline。



 参数:p_file类型ibipparms-path。

 数据:文件类型字符串。



 数据:z_file的it_tab类型表,

       wa_tab TYPE zfile。





 数据:lt_where edpline TYPE TABLE,

       lt_sel_list edpline类型表,

       l_wa_name TYPE字符串,

       ls_where TYPE edpline,

       l_具有TYPE字符串,

       dref TYPE REF TO数据,

       itab_type类型参考cl_abap_tabledescr,

       struct_type类型参考cl_abap_structdescr,

       elem_type类型参考cl_abap_elemdescr,

       comp_tab TYPE cl_abap_structdescr => component_table,

       comp_fld TYPE cl_abap_structdescr =>组件。



 类型:f_count个类型i。



 FIELD-SYMBOLS: TYPE ANY TABLE,

                 " *  TYPE ANY,

                  TYPE任意。







 在p_file的VALUE-REQUEST的SELECTION屏幕上。

   通话功能'F4_FILENAME'

     出口

       field_name ='P_FILE'

     输入

       file_name = p_file。

   文件= p_file。




 跨度 {
 字体家族:" Courier New";
 字体大小:10pt;
 颜色:#000000;
 背景:#FFFFFF;
 }
 .L0S31 {
 字体样式:斜体;
 颜色:#808080;
 }
 .L0S33 {
 颜色:#4DA619;
 }
 .L0S52 {
 颜色:#0000FF;
 }
 .L0S55 {
 颜色:#800080;
 }

  通话功能'GUI_UPLOAD'

     出口

       文件名=文件

       文件类型='ASC'

       has_field_separator =''

 * HEADER_LENGTH = 0

 * READ_BY_LINE ='X'

 * DAT_MODE =''

 * CODEPAGE =''

 * IGNORE_CERR = ABAP_TRUE

 *替换='#'

 * CHECK_BOM =''

 * VIRUS_SCAN_PROFILE =

 * NO_AUTH_CHECK =''

 *重要

 *文件长度=

 *标题=

     桌子

       data_tab = it_tab。

在IT_TAB中,我用#获得字段名称。 甚至我都尝试用#替换所有出现的空白,但不能正常工作。

如何删除它。 由于该结构被声明为char999。我越来越像这样。 请让我知道如何实现这一目标。

感谢和问候

维杰

(15.1 kB)
付费偷看设置
发送
7条回答
哎,真难
1楼-- · 2020-09-15 16:22

由于您没有提供不上传文件的线索,因此上传文件已正确上传了文件。

  • 读取第1行,将记录吐到分隔符#上(据说 cl_abap_char_utilities => horizo​​ntal_tab)并在确定字段后构建内部表( rtts
  • 然后将在同一分隔符处的其他行彼此拆分成新的最终表记录或文本表。 将第二种情况用于具有转换退出功能的字段,或更常见的是使用不同于内部格式的外部格式的字段,因此您必须自己将这些字段映射为SAP期望的格式(调用 conversion_xxx_输入类型为FM)

NB:同样,用方法cl_gui_frontend_services => gui_upload替换FM gui_upload。

木偶小白
2楼-- · 2020-09-15 16:08

嗨,

请考虑以下参数或FM ALSM_EXCEL_TO_INTERNAL_TABLE

 has_field_separator ='X'"文件以TAB分隔

关于,

N-Moskvin
3楼-- · 2020-09-15 16:17

我认为水平标签中存在#,即CL_ABAP_CHAR_UTILITIES => HORIZONTAL_TAB。 你可以这样尝试吗?

 REPLACE CL_ABAP_CHAR_UTILITIES =>带有空格的ls_tab中的HORIZONTAL_TAB。
Alawn_Xu
4楼-- · 2020-09-15 16:19

发布代码时,请右键单击"粘贴为纯文本"。

Bunny_CDM
5楼-- · 2020-09-15 16:02

嗨,

请考虑以下参数或FM ALSM_EXCEL_TO_INTERNAL_TABLE

 has_field_separator ='X'"文件以TAB分隔

此致

bbpeas
6楼-- · 2020-09-15 16:15

所以您应该更仔细地阅读问题,他问到在将文件上传到abap时如何解决#字符的替换问题,以上是我建议实现的问题。 显然,正如我们看到他的代码一样,他将使用RTTS来创建动态表。

一周热门 更多>