Code: Alles auswählen.
***Deklarationen***
NODES: pernr.
*Typen
TYPES: BEGIN OF ty_out,
pernr TYPE persno, "Personalnummer"
infty TYPE infty, "Infotyp"
begda TYPE d, "Beginndatum
endda TYPE d, "Endedatum
awart TYPE awart, "Abwesenheitsart"
atext TYPE abwtxt, "Abwesenheitstext"
uname TYPE aenam, "letzter Änderer"
sprps TYPE sprps, "Merkmal Sperrkennzeichen"
bemer TYPE char255, "Bemerkungen
END OF ty_out.
*Variablen
DATA: gv_luw_mode TYPE c,
sprps TYPE sprps,
lv_new_begda TYPE begda,
lv_new_endda TYPE endda.
*Workareas
DATA: lw_p2001 TYPE p2001,
lw_out TYPE ty_out.
*Tabellen
DATA: lt_pa2001 TYPE TABLE OF p2001,
gt_out TYPE TABLE OF ty_out.
***Selektionsbild***
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE title1.
DATA: a_dummy_abwtyp TYPE t554s-subty.
TYPES: ty_abwtyp_range TYPE RANGE OF t554s-subty.
SELECT-OPTIONS: abwtyp FOR a_dummy_abwtyp NO INTERVALS.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE title2.
PARAMETERS: p_test TYPE c AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b2.
*Initialisierung des Bildes
INITIALIZATION.
title1 = 'Abwesenheitsart'.
title2 = 'Test'.
***Hauptprogramm***
START-OF-SELECTION.
* Testmodus ohne Ausgabe
IF p_test IS INITIAL.
gv_luw_mode = '1'.
ELSE.
gv_luw_mode = '3'.
ENDIF.
*personenebezogene Verarbeitung
GET pernr.
SELECT * FROM pa2001 INTO CORRESPONDING FIELDS OF TABLE lt_pa2001 WHERE pernr = pernr-pernr.
LOOP AT lt_pa2001 INTO lw_p2001
where endda >= pnpbegda
and sprps = sprps.
lw_out-pernr = lw_p2001-pernr.
lw_out-infty = '2001'.
PERFORM update_infotype2001 USING lw_p2001
gv_luw_mode
CHANGING lw_out.
ENDLOOP.
FORM update_infotype2001 USING uw_p2001 TYPE p2001
uv_luw_mode LIKE gv_luw_mode
CHANGING uw_out TYPE ty_out.
DATA: ls_return TYPE bapireturn,
lt_modified_keys TYPE TABLE OF pskey,
lt_proposed_values TYPE TABLE OF pprop,
lw_modified_keys TYPE pskey,
lw_proposed_values TYPE pprop.
FIELD-SYMBOLS: <ls_proposed_values> TYPE pprop.
DATA: lv_actio TYPE actio.
CLEAR lt_proposed_values.
**Alten Datensatz ändern
lv_actio = 'EDQ'.
lw_proposed_values-infty = '2001'.
lw_proposed_values-fname = 'SPRPS'.
lw_proposed_values-fval = ' '.
APPEND lw_proposed_values TO lt_proposed_values.
CALL FUNCTION 'HR_MAINTAIN_MASTERDATA'
EXPORTING
pernr = uw_p2001-pernr
actio = lv_actio
begda = uw_p2001-begda "<===== !!!
endda = uw_p2001-endda "<===== !!!
subty = uw_p2001-subty
seqnr = uw_p2001-seqnr
no_enqueue = ''
dialog_mode = '0'
luw_mode = uv_luw_mode
IMPORTING
return = ls_return
TABLES
proposed_values = lt_proposed_values
modified_keys = lt_modified_keys.
IF ls_return IS INITIAL.
CONCATENATE 'Infotypsatz 2001 für PerNr.' uw_p2001-pernr 'erfolgreich abgegrenzt' INTO uw_out-bemer SEPARATED BY space.
ELSE.
CONCATENATE ls_return-type ls_return-code ls_return-message INTO uw_out-bemer SEPARATED BY space.
ENDIF.
lw_out-begda = uw_p2001-begda.
lw_out-endda = uw_p2001-endda.
APPEND uw_out TO gt_out.
ENDFORM.