ABAP中的WITH HEADER LINE用于什么



我一直在研究这本书,并从中引用:

DATA: BEGIN OF CUSTOMER_TAB OCCURS 5,
         KUNNR TYPE KNA1-KUNNR,
         NAME1 TYPE KNA1-NAME1,
      END OF CUSTOMER_TAB.
This declaration creates an internal table and a structure using the same name: CUSTOMER_TAB.

然后在以下页面中:

Declaring Both an Internal Table and a Structure by Referring to a Structured 
Local/Global TYPE or Local/Global Structure
DATA <internal table name> {TYPE|LIKE} <structure name> OCCURS <number> WITH HEADER LINE.
WITH HEADER LINE is a reserved key phrase. The addition of this phrase creates a structure.

此刻我很困惑。第一个例子是只声明一个内部表,还是声明一个具有相同名称的内部表和结构?

问题应该是"在ABAP中WITH HEADER LINE用于什么"。您应该只在遗留代码中看到它们。它们只允许在类外使用,而且无论如何都已过时。

回答你的问题。两者兼而有之。它声明了一个内部表customer_tab[]和一个结构customer_tab

然后你就可以做这样"神奇"的事情了。

 LOOP AT customer_tab. "loops at tab CUSTOMER_TAB and stores current record in header line structure CUSTOMER_TAB. :]
   "do something with header line
 END LOOP.

 APPEND customer_tab.

正如你所看到的,它更短,而且由于简洁而非常吸引人。尽管它很难阅读和混淆,因此被标记为过时。

哦,还有一点!你还应该了解之间的区别

CLEAR customer_tab.

REFRESH customer_tab.

您正在显示的两个声明都创建了一个带有标题行的表。第一个声明没有特别声明"WITH HEADER LINE",但它确实创建了一个工作区和一个表,就像您也使用了"WITH EADER LINE"语句一样。有关标题行的信息,请参阅本SAP帮助。您所引用的文档是过时的语法。由于遗留代码,您将看到它,因此您需要理解它,但要避免使用此语法。

types:
  begin of typ_functions,
  funcname type rs38l_fnam,
  pname    type pname,
  fmode    type fmode,
  stext    type rs38l_ftxt,
  end of typ_functions,
  typ_functions_t type standard table of typ_functions initial size 0.
  data:   
           "Global Structure using structure type
           gs_function   type typ_functions,   
           "Global Table using table type typ_functions_t
           gt_functions  type typ_functions_t,
           "Global Table using data dictionary structure
           gt_exp        type standard table of rsdsexpr initial size 0.

我个人的偏好是使用如上所示的语法,在TYPES中,我创建了结构类型和表类型。然后在DATA中,我将创建实际的表和结构。在示例中,我声明了一个全局结构和表。为了从数据字典引用中声明一个表,我使用了GT_EXP所示的声明。内联注释仅用于此讨论,我不会在程序中使用此格式。

相关内容

  • 没有找到相关文章

最新更新