CalendarControl
Das Kalendercontrol wird in diesem Beispiel als Date-Picker für eine Woche angewendet. ein kurzes Programm, das eine Anwendungsmöglichkeit des CalendarControls demonstriert.
Zum Eingabefeld auf dem Selektionsbild wird eine eigene F4-Wertsuchhilfe angeboten. In dem Kalender wird die Kalenderwoche angezeigt und ebenso ausgewählt werden, wir das Datum .
Dynpro 100 Ablauflogik
PROCESS BEFORE OUTPUT.
MODULE status_0100.
*
PROCESS AFTER INPUT.
MODULE user_command_0100 AT EXIT-COMMAND.
MODULE user_command_0100.
Auf dem Dynpro muss ein CustomContainer mit Namen “CAL” angelegt werden. Als Variable für OG_CODE wird SY-UCOMM eingetragen.
Coding
PARAMETERS p_week TYPE spwoc.
DATA container TYPE REF TO cl_gui_custom_container.
*———————————————————————-*
* CLASS lcl_main DEFINITION
*———————————————————————-*
CLASS lcl_main DEFINITION.
PUBLIC SECTION.
DATA:
calendar TYPE REF TO cl_gui_calendar,
style TYPE i,
ievents TYPE cntl_simple_events,
xevents LIKE LINE OF ievents.
METHODS:
start,
on_date_selected FOR EVENT date_selected OF cl_gui_calendar
IMPORTING sender
date_begin
date_end,
get_week
exporting week type buper.
ENDCLASS. “lcl_main DEFINITION
*———————————————————————-*
CLASS lcl_main IMPLEMENTATION.
METHOD start.
* Events des Calendar-Controls beim CFW registrieren
xevents-eventid = cl_gui_calendar=>m_id_date_selected.
xevents-appl_event = ‘X’.
APPEND xevents TO ievents.
* alle aktuellen und zukünftigen Objekte beim Handler registrieren
SET HANDLER on_date_selected FOR ALL INSTANCES.
* Wochenauswahl
style = cnca_sel_week.
CREATE OBJECT calendar
EXPORTING
parent = container
selection_style = style
view_style = cnca_style_v_navigator.
calendar->set_registered_events( events = ievents ).
ENDMETHOD. “start
*———————————————————————-*
METHOD on_date_selected.
ENDMETHOD. “on_date_selected
METHOD get_week.
DATA lv_date_c(8).
DATA lv_date TYPE sydatum.
CLEAR lv_date_c.
CALL METHOD calendar->get_selection
IMPORTING
date_begin = lv_date_c
EXCEPTIONS
OTHERS = 2.
IF lv_date_c IS NOT INITIAL.
lv_date = lv_date_c.
CALL FUNCTION ‘DATE_GET_WEEK’
EXPORTING
date = lv_date
IMPORTING
week = week.
ENDIF.
ENDMETHOD. “get_week
ENDCLASS. “lcl_main IMPLEMENTATION
DATA ref_cal TYPE REF TO lcl_main.
*———————————————————————-*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_week.
CALL SCREEN 100 STARTING AT 5 5.
*———————————————————————-*
START-OF-SELECTION.
WRITE / p_week.
*&———————————————————————*
*& Module STATUS_0100 OUTPUT
*&———————————————————————*
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘STLI’ OF PROGRAM ‘SAPMSSY0’.
IF ref_cal IS INITIAL.
CREATE OBJECT container
EXPORTING
container_name = ‘CAL’
EXCEPTIONS
OTHERS = 6.
CREATE OBJECT ref_cal.
CALL METHOD ref_cal->start.
ENDIF.
ENDMODULE. ” STATUS_0100 OUTPUT
*&———————————————————————*
*& Module USER_COMMAND_0100 INPUT
*&———————————————————————*
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN ‘BACK’ OR ‘%EX’ OR ‘RW’.
SET SCREEN 0.
LEAVE SCREEN.
WHEN others.
if sy-ucomm(4) = ‘%_GC’.
CALL METHOD ref_cal->get_week
IMPORTING
week = p_week.
SET SCREEN 0.
LEAVE SCREEN.
endif.
ENDCASE.
ENDMODULE. ” USER_COMMAND_0100 INPUT
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024