DAILY RECORD

欢迎来到DAILY RECORD>>   | 首页 资源中心 | 翻译 | 配置点滴 | 日常问题 | ABAP开发 | 阅读文章 | HR知识 | 生活 | basis | ITPUB论坛

获取人员考勤评估结果的FUNCTION

发表人:chateasy | 发表时间: 2008年五月12日, 22:55

FUNCTION zhrrfc004_lx.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(S_BEGDA) LIKE SY-DATUM DEFAULT SY-DATUM
*" VALUE(S_ENDDA) LIKE SY-DATUM DEFAULT SY-DATUM
*" VALUE(S_SPRSL) LIKE SY-LANGU DEFAULT SY-LANGU
*" VALUE(S_PERNR) LIKE PERNR-PERNR
*" EXPORTING
*" VALUE(RETURN_A) TYPE CHAR200
*" VALUE(E_BEGDA) LIKE SY-DATUM
*" VALUE(E_ENDDA) LIKE SY-DATUM
*" VALUE(E_SPRSL) LIKE SY-LANGU
*" TABLES
*" ITABA STRUCTURE ZHRS003
*"----------------------------------------------------------------------
* INCLUDE rpc2b200.
* DATA: time_results TYPE STANDARD TABLE OF ptm_time_results.
* DATA: time_results_wa LIKE LINE OF time_results.

DATA: BEGIN OF itab_pernr OCCURS 0,
pernr LIKE pa0003-pernr,
END OF itab_pernr.
DATA: BEGIN OF itab_t555f OCCURS 0,
errty LIKE t555f-errty,
error LIKE t555f-error,
etext LIKE t555f-etext,
END OF itab_t555f.

DATA: BEGIN OF fehler_uebergabe OCCURS 10.
INCLUDE STRUCTURE pc2b8.
DATA: END OF fehler_uebergabe.

data flach_fausg like table of t555f with header line.

e_begda = s_begda.
e_endda = s_endda.
e_sprsl = s_sprsl.

CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
EXPORTING
i_date = s_endda
IMPORTING
e_date = s_endda.

*取工资发放期间(主要是根据时间范围获取所在的年月)
SELECT * INTO CORRESPONDING FIELDS OF TABLE error_periods
FROM t549q WHERE
permo = '01'
AND
begda GE s_begda
AND endda LE s_endda
.


IF s_pernr IS INITIAL .

SELECT DISTINCT pa0003~pernr
INTO CORRESPONDING FIELDS OF TABLE itab_pernr
FROM pa0003
WHERE pa0003~mandt EQ sy-mandt.
ELSE.
APPEND s_pernr TO itab_pernr.
ENDIF.

rp-init-buffer.
rp-def-time-period.
* 获取错误的长文本
select * from t555f
into corresponding fields of table flach_fausg
where mobde = 1
and sprsl = sy-langu.
* and errty = fehler-errty
* and error = fehler-error.
*

FREE itaba.
LOOP AT itab_pernr.

PERFORM fehlertabelle_bauen TABLES fehler_uebergabe
error_periods
* using '00902075'.
USING itab_pernr-pernr.
*
fehler[] = fehler_uebergabe[].

* APPEND LINES OF fehler TO itaba.
LOOP AT fehler.
itaba-pernr = itab_pernr .
itaba-ldate = fehler-ldate.
itaba-ltime = fehler-ltime.
itaba-errty = fehler-errty.
itaba-error = fehler-error.
read table flach_fausg with key errty = itaba-errty error = itaba-error BINARY SEARCH.

itaba-etext = flach_fausg-etext.
itaba-aedtm = fehler-aedtm.
itaba-uname = fehler-uname.
APPEND ITABA TO ITABA.

ENDLOOP.

ENDLOOP.
ENDFUNCTION.
*&---------------------------------------------------------------------*
*& Form fehlertabelle_bauen
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->HAJW_FEHLER text
* -->ERROR_PERIODS text
* -->PERSON text
*----------------------------------------------------------------------*
FORM fehlertabelle_bauen
TABLES hajw_fehler STRUCTURE pc2b8
error_periods STRUCTURE ep_str
USING person TYPE p_pernr.


DATA: BEGIN OF a_error_periods OCCURS 0,
srtfd LIKE pcl2-srtfd,
END OF a_error_periods.
DATA: BEGIN OF b_error_periods OCCURS 0,
relid LIKE pcl2-relid,
srtfd LIKE pcl2-srtfd,
srtf2 LIKE pcl2-srtf2,
END OF b_error_periods.

CLEAR a_error_periods[].
LOOP AT error_periods.
CONCATENATE person
error_periods-pabrj
error_periods-pabrp
'1'
INTO a_error_periods-srtfd.
APPEND a_error_periods.
ENDLOOP.

SELECT * INTO CORRESPONDING FIELDS OF TABLE b_error_periods
FROM pcl2 FOR ALL ENTRIES IN a_error_periods
WHERE srtfd = a_error_periods-srtfd
AND relid = 'B2'
AND srtf2 = 0.

CLEAR hajw_fehler[].
LOOP AT b_error_periods.
b2-key = b_error_periods-srtfd.
rp-imp-c2-b2.
APPEND LINES OF fehler TO hajw_fehler.
ENDLOOP.

fehler[] = hajw_fehler[].

ENDFORM. "fehlertabelle_bauen


SAP实施顾问宝典 [回复]

,学习资料下载:www.sap99.com
SAP实施顾问宝典 :http://www.sap99.com/Soft/VIP/200803/182.html

SAP资料下载网 | 15/07/2008, 17:48

发表评论

标题

在此添加评论

称呼

邮箱地址(可选)

个人主页(可选)




Valid XHTML 1.0 Strict and CSS. Powered by pLog
Design by Blog.lvwo.com