Hallo zusammen,
ich als Personalerin soll mich jetzt ersthaft mit der ABAP Programmierung auseinandersetzten... :P
Naja, wie auch immer. Ich habe ja auch schon ein bisschen programmiert, nämlich eine Liste, die auf der logischen Datenbank pnp basiert (Personal Stammdaten)
Jetzt soll ich die Liste aber mittels eines ALV Grits ausgeben. Irgendwie habe ich im hinterkopf das man das mit einem Funktionsbaustein macht!
Hat jemand Erfahrung damit oder kann mir mal weiterhelfen.
Auch hier das bisherige Coding (ich weiß ist ein wenig chaotisch - fang gerade erst wieder an und konnte es wohl auch nie so richtig!!!)
Lieben Dank
Heike
*&---------------------------------------------------------------------*
*& Report ZHEIKE *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ZHEIKE .
Tables: pernr,t555v.
data: Dienstj(3) type n,
Alter(3) type n,
Geschlecht type c,
Abwesenheit type c value 'Y',
Datum type d.
Infotypes: 0000,
0001,
0002,
0041,
0007,
2001 Mode n.
SELECTION-SCREEN BEGIN OF BLOCK Zusatz with frame title text-t00.
Parameters: P_Dienst like Dienstj obligatory.
Select-options P_Abwes for p2001-subty obligatory.
SELECTION-SCREEN end of block Zusatz.
Initialization.
PNPSTAT2-LOW = '3'.
Append pnpstat2.
pnpxpgpk-low = '*r1'.
PNPXPGPK-option = 'NE'.
* pnpxpgpk-high = '*r1'. sonst steht im Intervall von *r1 bis *r1,
* was aber vorne ausgeschlossen wird
append PNPXPGPK.
start-of-selection.
get pernr.
* Clear
Abwesenheit = 'Y'.
Provide * from p0041 between pn-begda and pn-endda.
If p0041-DAR01 = '01'.
Dienstj = sy-datum(4) - p0041-DAT01(4).
Else.
Dienstj = '0000'.
endif.
endprovide.
Provide * from p0002 between pn-begda and pn-endda.
If p0002-ANRED = 'Herr'.
Geschlecht = 'M'.
else.
Geschlecht = 'W'.
endif.
Alter = sy-datum(4) - p0002-GBPAS(4).
RP_READ_ALL_TIME_ity pn-begda pn-endda.
datum(4) = sy-datum(4) - 1.
datum+4(4) = '0101'.
* Provide * from p2001 between Datum and sy-Datum
* where p2001-subty = '0220'.
*
* if p2001_valid eq 'X'.
* Abwesenheit = 'Y'.
* endif.
* endprovide.
* rp-provide-from-last p2001 0220 datum sy-datum.
* if pnp-sw-found = '0'.
* Abwesenheit = 'Y'.
* endif.
loop at p2001 where subty = '0220'
* ohne größer und kleiner Genau 1 Datensatz von bis +
* vor get pernr Initialisieren!!!!!
and begda GE datum
and endda LE sy-datum.
Abwesenheit = 'N'.
exit.
endloop.
If p0002 ge P_abwes-low and p0002 le P_abwes-high.
If Dienstj ge P_dienst.
If Alter between '030' and '060'.
If p0007-wostd gt '20'.
If p2001-subty ne '0210'.
If p0001-PERSG = '1' or p0001-persg = '2' or
p0001-persg ='3'.
If Abwesenheit = 'Y'.
perform print.
endif.
endif.
endif.
endif.
endif.
endif.
endif.
endprovide.
end-of-selection.
*&---------------------------------------------------------------------*
*& Form print
*&---------------------------------------------------------------------*
* Ausgabe
*----------------------------------------------------------------------*
form print.
write: / p0002-pernr no-zero,
sy-vline,
(15) p0002-nachn,
sy-vline,
(15) p0002-Vorna,
sy-vline,
p0002-GBPAS,
sy-vline,
p0001-vdsk1,
sy-vline,
p0001-WERKS,
sy-vline,
p0001-KOSTL,
sy-vline,
(3) Geschlecht,
sy-vline,
Dienstj no-zero,
sy-vline,
p0007-SCHKZ,
Dienstj.
endform. "print