将符号字段中的数据添加到自定义表类型ABAP

时间:2017-03-31 09:14:46

标签: sap abap

我尝试将内部表格中的数据添加到自定义表格中。

 DATA: BEGIN OF TMP_CTRYGRP_T OCCURS 1000,
  CTYGR TYPE /SAPSLL/CTYGR,
  TEXT1 TYPE /SAPSLL/TEXT60,
  END OF TMP_CTRYGRP_T.

SELECT ctygr, text1 FROM /SAPSLL/CTYGPT INTO TABLE @DATA(lt_countryGroupsTable)


LOOP AT lt_countryGroupsTable ASSIGNING FIELD-SYMBOL(<ls_countryGroups>).
  APPEND <ls_countryGroups> TO TMP_CTRYGRP_T.
ENDLOOP.

然后我想在自定义表类型ZZ_T_TAB

中添加该行

Custom Table Type Structure

所以我试图创建一个这个表的字段符号,从中创建一个内部表,但我尝试过的解决方案都没有允许我在Custom表中添加行(即使程序中的那个有线条。)

我主要遇到的问题是:

  

在unicode程序中不可相互转换。节目......

所以我的问题是:

  • 为什么会发生这种错误?谷歌搜索它并没有给我一个可以理解的答案
  • 目前我使用的内部表限制为1000行。但我事先并不知道搜索可以提供的行数。有什么办法可以改善吗?
  • 如何将任何解决方案中的行添加到我的ZZ_T_TAB呢?然后,如何在已存在的行中为同一个表添加其他字段?

正如你们中的一些人可能理解的那样,我在ABAP中是一个相当新秀的人。 因此,如果有任何有用的链接可以理解所有这些,我会很高兴,如果你能与我分享。

2 个答案:

答案 0 :(得分:0)

  1. 你为什么不直接选择进入桌子?
  2. 不要使用OCCURS,因为它已被宣布为过时且已在类中禁止使用。
  3. 将您自己的结构声明为类型,并将自定义内部表标记为TYPE STANDARD TABLE OF struct_type。这样,就没有上限

    TYPES:
    BEGIN OF struct_type,
        CTYGR TYPE /SAPSLL/CTYGR,
        TEXT1 TYPE /SAPSLL/TEXT60,
    END OF struct_type.
    
    DATA tmp_ctrygrp_t TYPE STANDARD TABLE OF struct_type WITH EMPTY KEY.
    

答案 1 :(得分:0)

  

为什么会发生这种错误?谷歌搜索它没有提供给我一个   可以理解的答案

您不能将APPEND用于不相同的结构。你必须&#34;转换&#34;它之前。在ABAP帮助中查找命令MOVE-CORRESPODING(在编辑器中命令F1)。

  

目前我使用的内部表限制为1000行。但是我   事先并不知道搜索的行数   提供。有什么办法可以改善吗?

不要使用OCCURS扩展名,不推荐使用(如lausek所写),旧语法。

  

然后如何将任何解决方案中的行添加到我的ZZ_T_TAB?和   之后如何在同一个表中添加其他字段   行已存在?

您可以通过各种方式修改数据库表。:

1,使用UPDATE语句直接更新字段值 2,使用MODIFY语句修改(例如)预先选择的字段值 结构

在ABAP帮助中查找UPDATE和MODIFY命令,有非常有用的代码示例。