带内联声明的FOR迭代

2020-08-24 09:21发布

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

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


我最近遇到了将内部表的某些项目(在选择语句中内联声明)复制到另一个项的要求。

首先,我认为我可以使用FILTER语句。 事实证明,我找不到以可以使用过滤方式内联声明表的语法(仅SORTED或HASHED表)。

好吧,接下来尝试一下:FOR迭代。 结果是:
不能从上下文中为运算符" VALUE"派生任何类型。

首先,我认为它与lt_workcenter的select语句中的内联声明有关。
结果与之无关。 更有可能是因为FOR迭代至少在ABAP 750中没有提供类似WITH EMPTY KEY的正确键入?

还是我在这里遗漏了什么?

示例:

 SELECT crhd〜objty,
            crhd〜objid,
            crhd〜arbpl,
            crhd〜werks,
            crtx〜ktext
       插入表@DATA(lt_workcenter)
       从crhd左外连接crtx ON crhd〜objty = crtx〜objty
                                      AND crhd〜objid = crtx〜objid
       在哪里crhd〜werks在@mr_werks
         AND crhd〜matyp ='0004'
         AND crtx〜spras = @ sy-langu。

     DATA(lt_workcenter_nodesc)= VALUE#(FOR 在lt_workcenter中(ktext ='')(fs>)))。

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

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


我最近遇到了将内部表的某些项目(在选择语句中内联声明)复制到另一个项的要求。

首先,我认为我可以使用FILTER语句。 事实证明,我找不到以可以使用过滤方式内联声明表的语法(仅SORTED或HASHED表)。

好吧,接下来尝试一下:FOR迭代。 结果是:
不能从上下文中为运算符" VALUE"派生任何类型。

首先,我认为它与lt_workcenter的select语句中的内联声明有关。
结果与之无关。 更有可能是因为FOR迭代至少在ABAP 750中没有提供类似WITH EMPTY KEY的正确键入?

还是我在这里遗漏了什么?

示例:

 SELECT crhd〜objty,
            crhd〜objid,
            crhd〜arbpl,
            crhd〜werks,
            crtx〜ktext
       插入表@DATA(lt_workcenter)
       从crhd左外连接crtx ON crhd〜objty = crtx〜objty
                                      AND crhd〜objid = crtx〜objid
       在哪里crhd〜werks在@mr_werks
         AND crhd〜matyp ='0004'
         AND crtx〜spras = @ sy-langu。

     DATA(lt_workcenter_nodesc)= VALUE#(FOR 在lt_workcenter中(ktext ='')(fs>)))。
付费偷看设置
发送
1条回答
歪着头看世界
1楼-- · 2020-08-24 09:56

问题出在DATA(lt_workcenter_nodesc)= VALUE#(...):

#意味着编译器必须推断lt_workcenter_nodesc的类型,并且如果目标类型是 内部表,因为它可以是标准的,排序的或散列的,并且键也未定义。

解决方案:您必须显式定义类型:

 SELECT ... INTO 表@DATA(lt_workcenter)...
 类型tt_workcenter喜欢lt_workcenter。
 DATA(lt_workcenter_nodesc)= VALUE tt_workcenter(...)。

一周热门 更多>