在ABAP中将新记录添加到内部表中

时间:2012-06-12 13:33:55

标签: sap abap

我正在尝试向我的内部表添加一条新记录,而且这段代码给了我一个错误,但我的做法与我在SAP的书中完全相同。我做错了什么?

TYPES : BEGIN OF personel_bilgileri,
  Ad TYPE c LENGTH 20,
  Soyad TYPE c LENGTH 20,
  Telefon_no Type n LENGTH 12,
  END OF personel_bilgileri.

TYPES personel_bilgi_tablo_tipi TYPE STANDARD TABLE OF
personel_bilgileri WITH NON-UNIQUE KEY ad soyad.

DATA : personel_bilgi_kaydi TYPE personel_bilgileri,
       personel_bilgi_tablosu TYPE personel_bilgi_tablo_tipi.

personel_bilgi_kaydi-ad = 'Murat'.
personel_bilgi_kaydi-soyad = 'Sahin'.
personel_bilgi_kaydi-telefon_no = '5556677'.

APPEND personel_bilgi_kaydi TO personel_bilgileri.

personel_bilgi_kaydi-ad  = 'Ayse'.
personel_bilgi_kaydi-soyad = 'Bil'.
personel_bilgi_kaydi-telefon_no = '5556611'.

APPEND personel_bilgi_kaydi TO personel_bilgileri.

personel_bilgi_kaydi-ad = 'Mehmet'.
personel_bilgi_kaydi-soyad = 'Kalan'.
personel_bilgi_kaydi-telefon_no = '5556622'.

APPEND personel_bilgi_kaydi TO personel_bilgileri.

实际上,我不知道应该使用哪种添加记录方法。我的意思是有太多的方法来做这个操作。哪种方法是真的?

我收到此错误:

The field Personel_bilgileri is unknown, but there are following fields similar names...

此外,我可以使用LOOP AT执行此操作,但我不了解LOOP AT的用法。它做了什么?

2 个答案:

答案 0 :(得分:4)

在您的代码示例中,您首先将PERSONEL_BILGILERI定义为TYPE,然后将PERSONEL_BILGI_TABLO_TIPI定义为TYPE的内部表PERSONEL_BILGILERI

到目前为止,还没有声明变量。只有数据类型。

然后:

  • PERSONEL_BILGI_KAYDI定义为PERSONEL_BILGILERI类型。这是一个用作工作区的结构(很好)。
  • PERSONEL_BILGI_TABLOSU定义为PERSONEL_BILGI_TABLO_TIPI类型。所以PERSONEL_BILGI_TABLOSU是你的内部表格。

当您附加工作区时,您必须附加到内部表,而不是数据类型。尝试使用PERSONEL_BILGI_TABLOSU而不是类型PERSONEL_BILGI

APPEND personel_bilgi_kaydi TO personel_bilgileri_tablosu.

答案 1 :(得分:1)

您需要将WA(workarea,personel_bilgi_kaydi)附加到您的表格(personel_bilgi_tablosu)。你不能将WA附加到定义的类型。

所以看起来应该是这样的:

APPEND personel_bilgi_kaydi TO personel_bilgi_tablosu.

您也可以使用此代码在页面上显示它们。

    LOOP AT personel_bilgi_tablosu into personel_bilgi_kaydi.

       write: / 'İSİM: ' ,personel_bilgi_kaydi-ad,
             'SOYİSİM: ',personel_bilgi_kaydi-soyad,
              'TEL NO: ', personel_bilgi_kaydi-telefon_no.

    ENDLOOP.

您可以使用其他方法在页面上显示您的表格,例如REUSE_ALV_GRID_DISPLAY。您可以在scn.sap.com

中获取有关该信息的更多信息

希望它有用。

Kolay gelsin。

塔尔哈