BW转换开始例程-读取内部表多个条件

2020-09-27 23:46发布

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

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


您好Abap/BW专家

我具有以下要求和编写的代码,但是从具有多个条件的Internal表读取时,我得到了语法。 任何人都可以纠正我在哪里犯了错误。

要求:我想标记员工出差日期(0TV_DEPDATE)是否介于或等于员工休假开始日期和休假结束日期之间。

存储员工请假信息的DSO1(表1)

DSO2,用于存储员工在旅程开始日期提出的费用

以下粗体显示语法错误:

使用KEY将表lt_empleave读入ls_empleave

/BIC/ZEMPLOYEE = -EMPLOYEE。

/BIC/Z_IBEGDA <= TV_DEPDATE。
/BIC/Z_IENDDA> = TV_DEPDATE


 TYPES:t_empleave的开头,
 /BIC/ZEMPLOYEE类型/BIC/OIZEMPLOYEE,
 /BIC/Z_IBEGDA类型/BIC/OIZ_IBEGDA
 /BIC/Z_IENDDA类型/BIC/OIZ_IENDDA,
 t_empleave的结尾。

 数据:t_empleave的lt_empleave类型标准表。
 数据:ls_empleave类型为t_empleave。

 ***仅读取3年数据
 调用函数" RP_CALC_DATE_IN_INTERVAL"
   出口
     日期= sy-datum
     天= 0
     个月= 0
     signum ='-'
     年= 3
   输入
     calc_date = l_date。

 ***从DSO1中选择数据(员工请假日期)

 从以下位置选择/BIC/ZEMPLOYEE/BIC/Z_IBEGDA/BIC/Z_IENDDA
/BIC/ADS01
        进入表lt_empleave
        对于SOURCE_PACKAGE WHERE中的所有条目
       /BIC/ZEMPLOYEE EQ SOURCE_PACKAGE-EMPLOYEE
   AND/BIC/Z_IBEGDA> = l_date。

/BIC/ZEMPLOYEE升序/BIC/Z_IBEGDA降序对SORT lt_empleave进行排序。
   从lt_empleave比较中删除相邻的副本/BIC/ZEMPLOYEE
 /BIC/Z_IBEGDA。

 在SOURCE_PACKAGE ASSIGNING 处循环播放。
 清除ls_empleave。

  使用KEY将表lt_empleave读入ls_empleave
     /BIC/ZEMPLOYEE =  -EMPLOYEE。
     /BIC/Z_IBEGDA <= TV_DEPDATE。
     /BIC/Z_IENDDA> = TV_DEPDATE

           如果SY-SUBRC = 0。
   
       -/BIC/Z_IFLAG ='X'。

       万一。
       结局。



 最好的祝福
 斯里

(210.6 kB)

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

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


您好Abap/BW专家

我具有以下要求和编写的代码,但是从具有多个条件的Internal表读取时,我得到了语法。 任何人都可以纠正我在哪里犯了错误。

要求:我想标记员工出差日期(0TV_DEPDATE)是否介于或等于员工休假开始日期和休假结束日期之间。

存储员工请假信息的DSO1(表1)

DSO2,用于存储员工在旅程开始日期提出的费用

以下粗体显示语法错误:

使用KEY将表lt_empleave读入ls_empleave

/BIC/ZEMPLOYEE = -EMPLOYEE。

/BIC/Z_IBEGDA <= TV_DEPDATE。
/BIC/Z_IENDDA> = TV_DEPDATE


 TYPES:t_empleave的开头,
 /BIC/ZEMPLOYEE类型/BIC/OIZEMPLOYEE,
 /BIC/Z_IBEGDA类型/BIC/OIZ_IBEGDA
 /BIC/Z_IENDDA类型/BIC/OIZ_IENDDA,
 t_empleave的结尾。

 数据:t_empleave的lt_empleave类型标准表。
 数据:ls_empleave类型为t_empleave。

 ***仅读取3年数据
 调用函数" RP_CALC_DATE_IN_INTERVAL"
   出口
     日期= sy-datum
     天= 0
     个月= 0
     signum ='-'
     年= 3
   输入
     calc_date = l_date。

 ***从DSO1中选择数据(员工请假日期)

 从以下位置选择/BIC/ZEMPLOYEE/BIC/Z_IBEGDA/BIC/Z_IENDDA
/BIC/ADS01
        进入表lt_empleave
        对于SOURCE_PACKAGE WHERE中的所有条目
       /BIC/ZEMPLOYEE EQ SOURCE_PACKAGE-EMPLOYEE
   AND/BIC/Z_IBEGDA> = l_date。

/BIC/ZEMPLOYEE升序/BIC/Z_IBEGDA降序对SORT lt_empleave进行排序。
   从lt_empleave比较中删除相邻的副本/BIC/ZEMPLOYEE
 /BIC/Z_IBEGDA。

 在SOURCE_PACKAGE ASSIGNING 处循环播放。
 清除ls_empleave。

  使用KEY将表lt_empleave读入ls_empleave
     /BIC/ZEMPLOYEE =  -EMPLOYEE。
     /BIC/Z_IBEGDA <= TV_DEPDATE。
     /BIC/Z_IENDDA> = TV_DEPDATE

           如果SY-SUBRC = 0。
   
       -/BIC/Z_IFLAG ='X'。

       万一。
       结局。



 最好的祝福
 斯里

(210.6 kB)
付费偷看设置
发送
3条回答
愤怒的猪头君
1楼-- · 2020-09-28 00:14

Shreekanth,您好,

READ TABLE语句错误。 您不能将比较条件与READ TABLE一起使用。 仅等于条件。 或者,可以使用LOOP语句,如果找到正确的数据集,则可以使用EXIT语句。

问候

Frank Albaum

My梦
2楼-- · 2020-09-28 00:18

从297行到302

如果ls_empleave-/BIC/Z_IBEGDA <= TV_DEPDATE AND

ls_empleave-/BIC/Z_IENDDA> = TV_DEPDATE。

-/BIC/Z_IFLAG ='X'。

ENDIF。

悠然的二货
3楼-- · 2020-09-28 00:17

嗨,Shreekanth

请尝试这个

数据:t_empleave的lt_empleave类型标准表。
 数据:ls_empleave与lt_empleave类似。

一周热门 更多>