SAP 在职员工的生日人员清单

25 篇文章 4 订阅

 

FUNCTION ZRFC_HR_PA_BIR_LST.
*"----------------------------------------------------------------------
*"*"局部接口:
*"  IMPORTING
*"     VALUE(BIRTH4) TYPE  CHAR4 DEFAULT SY-DATUM+4(4)
*"  EXPORTING
*"     VALUE(STATUS) TYPE  CHAR1
*"     VALUE(RETMSG) TYPE  CHAR70
*"  TABLES
*"      RETITEM STRUCTURE  ZSTRU_PA_BIR_INFO OPTIONAL
*"----------------------------------------------------------------------
  DATA:STRBIR(5) TYPE C.
  STRBIR = '%' && BIRTH4.
  DATA:LT_0000 TYPE STANDARD TABLE OF PA0000,
  LW_0000 TYPE  PA0000,
  LT_0001 TYPE STANDARD TABLE OF PA0001,
  LW_0001 TYPE  PA0001,
  LT_1000 TYPE STANDARD TABLE OF HRP1000,
  LW_1000 TYPE  HRP1000,
  LT_0105 TYPE STANDARD TABLE OF PA0105,
  LW_0105 TYPE  PA0105.

  data:lcnt TYPE i.
  DATA:LT0002 LIKE PA0002 OCCURS 0 WITH HEADER LINE.

  SELECT * INTO TABLE LT0002
    FROM PA0002
    WHERE GBDAT LIKE STRBIR AND BEGDA <= SY-DATUM AND  ENDDA >= SY-DATUM.

  SELECT *
  INTO TABLE  LT_0000
  FROM PA0000 WHERE BEGDA <= SY-DATUM AND  ENDDA >= SY-DATUM.

  SELECT *
  INTO TABLE  LT_0001
  FROM PA0001 WHERE BEGDA <= SY-DATUM AND  ENDDA >= SY-DATUM.

  SELECT *
  INTO TABLE LT_0105
  FROM PA0105 WHERE BEGDA <= SY-DATUM AND  ENDDA >= SY-DATUM AND USRTY = '1008'.

  SELECT *
  FROM HRP1000
  INTO TABLE LT_1000
  WHERE LANGU = SY-LANGU AND BEGDA <= SY-DATUM AND  ENDDA >= SY-DATUM.

  LOOP AT LT0002.
    RETITEM-PERNR = LT0002-PERNR."人员编号
    RETITEM-NAME1 = LT0002-NCHMC && LT0002-VNAMC."姓名
    RETITEM-OAID = RETITEM-PERNR.
    SHIFT RETITEM-OAID LEFT DELETING LEADING '0'.
    LOOP AT LT_0105 INTO LW_0105 WHERE PERNR = LT0002-PERNR.
      RETITEM-OAID = LW_0105-USRID."工号
    ENDLOOP.
    "直属部门
    LOOP AT LT_0001 INTO LW_0001 WHERE PERNR = LT0002-PERNR.
      RETITEM-DEPTID = LW_0001-ORGEH.
      READ TABLE LT_1000 INTO LW_1000  WITH KEY OBJID =  LW_0001-ORGEH OTYPE = 'O'.
      IF SY-SUBRC = 0.
        RETITEM-STEXT = LW_1000-STEXT.
      ENDIF.
    ENDLOOP.

    LOOP AT LT_0000 INTO LW_0000 WHERE PERNR = LT0002-PERNR.
      IF LW_0000-MASSN <> 'Z7' AND LW_0000-MASSN <> 'Z8'."非离职状态
        APPEND RETITEM.
      ENDIF.
    ENDLOOP.
  ENDLOOP.

  SORT RETITEM BY OAID ASCENDING.

  DESCRIBE TABLE RETITEM LINES lcnt.
  IF LCNT > 0 .
    STATUS  = 'S'.
    RETMSG = '获取到' &&  LCNT && '个条目'.
  ELSE.
     STATUS  = 'E'.
    RETMSG = '获取到' &&  LCNT && '个条目,请检查输入'.
  ENDIF.
ENDFUNCTION.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gavin_gxh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值