打开SQL:具有动态字段列表的SELECT

2020-09-04 20:19发布

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

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


你好

我必须编写一个带有动态字段列表的SELECT。 我使用传统的SELECT命令做了几次:

传统选择

 DATA:lv_fields TYPE字符串。
 单选(lv_fields)
          从马拉
          INTO ls_mara
         matnr = lv_matnr。

我希望使用新的语法编写相同的select(在这种情况下,我正在使用7.52,但我仍然有以前的版本的客户),

 TYPES:类型ty_mara,
          matnr TYPE mara-matnr,
          laeda TYPE mara-laeda,
          pstat TYPE mara-pstat,
          mbrsh TYPE mara-mbrsh,
        结束于ty_mara。
 数据:ty_mara的lt_mara类型标准表。
 数据:lv_fields类型为char1024。

 * LV_FIELDS是例程的结果,我在这里显示为静态变量
 *仅用于样品目的
 lv_fields ='MATNR,LAEDA,PSTAT,MBRSH'。

 选择@lv_fields
        从马拉
        进入表@lt_mara
       在@s_matnr中的位置。

此代码可以进行语法检查,但是如果运行它,表LT_MARA如下所示:

 ---------------------------------------------------  ---------
 | MATNR |  LAEDA |  PSTAT |  MBRSH |
 --------------------------------------------------  ------
 | MATNR,LAEDA,PSTAT,MBRSH |  00000000 |  |  |
 | MATNR,LAEDA,PSTAT,MBRSH |  00000000 |  |  |
 | MATNR,LAEDA,PSTAT,MBRSH |  00000000 |  |  |
 | MATNR,LAEDA,PSTAT,MBRSH |  00000000 |  |  |
 | MATNR,LAEDA,PSTAT,MBRSH |  00000000 |  |  |
 | MATNR,LAEDA,PSTAT,MBRSH |  00000000 |  |  |
 | MATNR,LAEDA,PSTAT,MBRSH |  00000000 |  |  |
 | MATNR,LAEDA,PSTAT,MBRSH |  00000000 |  |  |
 --------------------------------------------------  ------ 

(根据WHERE条件应读取的MARA中记录的行数)

您可以想象,对我来说,这个结果不正确;-)

我怎么解决这个问题?

谢谢您,并致以最诚挚的问候!

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

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


你好

我必须编写一个带有动态字段列表的SELECT。 我使用传统的SELECT命令做了几次:

传统选择

 DATA:lv_fields TYPE字符串。
 单选(lv_fields)
          从马拉
          INTO ls_mara
         matnr = lv_matnr。

我希望使用新的语法编写相同的select(在这种情况下,我正在使用7.52,但我仍然有以前的版本的客户),

 TYPES:类型ty_mara,
          matnr TYPE mara-matnr,
          laeda TYPE mara-laeda,
          pstat TYPE mara-pstat,
          mbrsh TYPE mara-mbrsh,
        结束于ty_mara。
 数据:ty_mara的lt_mara类型标准表。
 数据:lv_fields类型为char1024。

 * LV_FIELDS是例程的结果,我在这里显示为静态变量
 *仅用于样品目的
 lv_fields ='MATNR,LAEDA,PSTAT,MBRSH'。

 选择@lv_fields
        从马拉
        进入表@lt_mara
       在@s_matnr中的位置。

此代码可以进行语法检查,但是如果运行它,表LT_MARA如下所示:

 ---------------------------------------------------  ---------
 | MATNR |  LAEDA |  PSTAT |  MBRSH |
 --------------------------------------------------  ------
 | MATNR,LAEDA,PSTAT,MBRSH |  00000000 |  |  |
 | MATNR,LAEDA,PSTAT,MBRSH |  00000000 |  |  |
 | MATNR,LAEDA,PSTAT,MBRSH |  00000000 |  |  |
 | MATNR,LAEDA,PSTAT,MBRSH |  00000000 |  |  |
 | MATNR,LAEDA,PSTAT,MBRSH |  00000000 |  |  |
 | MATNR,LAEDA,PSTAT,MBRSH |  00000000 |  |  |
 | MATNR,LAEDA,PSTAT,MBRSH |  00000000 |  |  |
 | MATNR,LAEDA,PSTAT,MBRSH |  00000000 |  |  |
 --------------------------------------------------  ------ 

(根据WHERE条件应读取的MARA中记录的行数)

您可以想象,对我来说,这个结果不正确;-)

我怎么解决这个问题?

谢谢您,并致以最诚挚的问候!

付费偷看设置
发送
2条回答
小灯塔
1楼-- · 2020-09-04 20:53

代替@像旧语法一样使用括号:

 SELECT(lv_fields)
        从马拉
        进入表@lt_mara
       在@s_matnr中的matnr。
 

当您要用对象的值填充结果集中每一行的特定字段时,请使用在列列表中转义变量/常量。

悠然的二货
2楼-- · 2020-09-04 20:54

我很确定自己已经尝试过了,但是也许当我这样做时,我在其他地方犯了更多的错误...

当然可以,当然也可以为您提供帮助!

一周热门 更多>