Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Abap 如何确定变量是结构变量还是标量变量?_Abap - Fatal编程技术网

Abap 如何确定变量是结构变量还是标量变量?

Abap 如何确定变量是结构变量还是标量变量?,abap,Abap,现在我正在编写一个ABAP报告,用户在其中输入他的ABAP报告的名称,我的报告应该检查命名约定 基本上是编码准则检查 在我的团队中有一个命名约定,比如说数据:spfli的表类型标准表是错误的,正确的形式应该是数据:lt\u表类型spfli的标准表 我知道在这种特殊情况下,我可以将lt\ucode>放在变量名之前,因为有类型标准表 下面是我如何解决这个问题的简短代码 我所做的是将源代码读入字符串表,然后用源代码在该表中循环,我有一个条件,如果行包含字符串数据文本\u TAB类型标准表或类似表等

现在我正在编写一个ABAP报告,用户在其中输入他的ABAP报告的名称,我的报告应该检查命名约定

基本上是编码准则检查

在我的团队中有一个命名约定,比如说
数据:spfli的表类型标准表
是错误的,正确的形式应该是
数据:lt\u表类型spfli的标准表

我知道在这种特殊情况下,我可以将
lt\ucode>放在变量名之前,因为有
类型标准表

下面是我如何解决这个问题的简短代码

我所做的是将源代码读入字符串表,然后用源代码在该表中循环,我有一个条件,如果行包含字符串
数据文本\u TAB类型标准表
类似表
等,然后将该行拆分为3个变量;第一个将包含
数据
,第二个将包含
文本选项卡
(基本上是变量名称),第三个将包含数据声明的其余部分
,如表
。然后我添加前缀和表行,并将它们连接在一起
数据LT\u TEXT\u表,就像文本表一样
。“如果它起作用就不傻了”:D

现在我遇到了变量的问题。例如:

DATA: variable01 TYPE string,
      variable02 TYPE spfli.
它们看起来一样,但一个是可变的,另一个是结构/工作区

我的问题是。。。如何确定以下变量是结构变量还是变量

我知道有class
cl\u abap\u typedescr
带有方法,但它不适用于
READ REPORT

更多信息。。。我有测试报告

REPORT ZMH_TEST_SOURCE_CODE.


DATA string01 TYPE string.
DATA: string02 TYPE string,
      string03 TYPE string.
data class04 TYPE REF TO ZMH_CR_CL_SPPM.
data class05 LIKE class04.
DATA: class06 TYPE REF TO ZMH_CR_CL_SPPM.
DATA: table07 TYPE STANDARD TABLE OF spfli,
      table08 TYPE STANDARD TABLE OF spfli,
      table09 TYPE STANDARD TABLE OF spfli,
      table10 TYPE STANDARD TABLE OF spfli.
DATA: lt_table11 TYPE STANDARD TABLE OF spfli,
      lt_table12 TYPE STANDARD TABLE OF spfli.
DATA structure13 LIKE LINE OF table07.
data structure14 LIKE REF TO class05.


CONSTANTS constant15 TYPE i VALUE '13'.
CONSTANTS: constant16 TYPE i VALUE '14'.
DATA text(10) TYPE c.
DATA text_tab LIKE TABLE OF text.
到目前为止,我的命名约定报告的输出

Row:30 DATA LT_TEXT_TAB LIKE TABLE OF TEXT.
Row:17 DATA: LT_TABLE07 TYPE STANDARD TABLE OF SPFLI,
Row:18 LT_TABLE08 TYPE STANDARD TABLE OF SPFLI,
Row:19 LT_TABLE09 TYPE STANDARD TABLE OF SPFLI,
Row:20 LT_TABLE10 TYPE STANDARD TABLE OF SPFLI.
Row:24 DATA LO_STRUCTURE14 LIKE REF TO CLASS05.
Row:14 DATA LO_CLASS04 TYPE REF TO ZMH_CR_CL_SPPM.
Row:16 DATA: LO_CLASS06 TYPE REF TO ZMH_CR_CL_SPPM.
Row:27  CONSTANTS LC_CONSTANT15 TYPE I VALUE '13'.
Row:28  CONSTANTS: LC_CONSTANT16 TYPE I VALUE '14'.
Row:23 DATA WA_STRUCTURE13 LIKE LINE OF TABLE07.

谢谢。

您的问题太深,无法处理浅字符串。添加到图片中,以获取有关语句中各个标记的含义的更多信息。

字段中是否有结构/变量的名称?您可以对表DD02L(它包含DB表和结构)进行选择,如果有一个条目比您有一个结构,如果没有,则比它是一个变量。是,true。。。就像你之前说的“如果有一个条目,那么你就有一个结构,如果没有,那么它就是一个变量。”但是如果我的报告中有一些局部结构呢?类型:结构开始、日期类型sy基准、结构结束。数据工作区类型结构。你是对的,我没有考虑到这一点。我假设本地/全局类型(如lty、gty或ty等)有一个命名约定。你可以检查名字是否是这样开头的。另一方面,在检查代码时,您可以跟踪声明的类型。您真的需要重新创建标准SAP code Inspector命名约定检查吗?请不要发布代码截图。将代码作为文本发布。