Dropdown-Liste zur Monatsauswahl mit VRM_SET_VALUES

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

Dropdown-Liste zur Monatsauswahl mit VRM_SET_VALUES

Beitrag von Julia.hrtm (ForumUser / 11 / 1 / 4 ) »
Hallo,

ich möchte eine Transaktion machen, mit welcher ich Stundenabrechnungen für den jeweiligen Monat mir anzeigen lassen kann.
Dazu nutze ich im Transaktionsfenster eine Dropdown Liste, aus welcher man den Monat wählen kann. Die Monate berechnen sich aus dem aktuellen Datum, sodass am Ende nur die letzten 12 Monate angezeigt werden.
Im Transaktionsfenster kann man den Monat auswählen, jedoch sobald man die Transaktion ausführen möchte springt SAP zurück ins Menü. Aus der Monatsauswahl möchte ich eigentlich zurück aufs Datum im Zahlenformat für erster und letzter Monat zurückführen um diese Werte dann für die weitere Selektion zu nutzen.

Hier der grundlegende Code:

Code: Alles auswählen.

INCLUDE z_pp_payrolltop.
INCLUDE z_pp_payrollc01.
INCLUDE z_pp_payrollf01.
DATA go_event TYPE REF TO lcl_event.
DATA go_controller TYPE REF TO lcl_controller.
*----------------------------------------------------------------------*
* INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.
  zcl_utilities=>initialize( ).
  zcl_utilities=>load_variant( ).
*----------------------------------------------------------------------*
* CREATE DROPDOWN MENU FOR MONTH SELECTION
*----------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
  PERFORM fill_dropdown_pmonat.

*----------------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
  zcl_utilities=>set_runtime( 1 ).
  PERFORM process_selected_month.

...

IF gt_out IS INITIAL.
      MESSAGE s000(z_msg) DISPLAY LIKE 'E'.
      RETURN.
ENDIF.
CREATE OBJECT go_event.
CREATE OBJECT go_controller.
go_controller->main( ).

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
* FORM DROPDOWN MENU
*----------------------------------------------------------------------*
FORM fill_dropdown_pmonat.
  DATA: gt_vrm            TYPE vrm_values,
        gt_vrm_sorted     TYPE TABLE OF vrm_value,
        gs_vrm            TYPE vrm_value,
        gv_month          TYPE d,
        gv_year           TYPE char4,
        gv_text           TYPE char10,
        gv_months         TYPE t5a4a-dlymo,
        gv_sort_key       TYPE char7,
        gv_index          TYPE sytabix.

  gv_date = sy-datum.
  gv_months = -1.

  DO 12 TIMES.
    gv_month = gv_date+4(2).
    gv_year = gv_date(4).

    CALL FUNCTION 'Z_GET_MONTH_NAME'
      EXPORTING
        month           = gv_month
      IMPORTING
        month_name_char = gv_text.

    CONCATENATE gv_year '/' gv_month INTO gv_sort_key.

    gs_vrm-key = gv_sort_key.
    gs_vrm-text = gv_text.
    INSERT gs_vrm INTO TABLE gt_vrm.

    CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
      EXPORTING
        date      = gv_date
        days      = 0
        months    = gv_months
        years     = 0
        signum    = '-'
      IMPORTING
        calc_date = gv_date.
  ENDDO.

  SORT gt_vrm BY key ASCENDING.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id              = 'P_MONAT'
      values          = gt_vrm
    EXCEPTIONS
      id_illegal_name = 1
      OTHERS          = 2.

ENDFORM.                    "fill_dropdown_pmonat

*----------------------------------------------------------------------*
* FORM PROCESS SELECTED MONTH
*----------------------------------------------------------------------*
FORM process_selected_month.
  DATA: gv_sort_key TYPE char7,
        gv_year    TYPE char4,
        gv_month_name TYPE char10,
        gv_month   TYPE d,
        gv_start   TYPE sy-datum,
        gv_end     TYPE sy-datum.

  SPLIT p_monat AT space INTO gv_sort_key gv_month_name.
  gv_year = gv_sort_key(4).

  CALL FUNCTION 'Z_GET_MONTH_NUMBER'
    EXPORTING
      month_name_char = gv_month_name
    IMPORTING
      month           = gv_month.

  CONCATENATE gv_year gv_month '01' INTO gv_start.

  CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
    EXPORTING
      day_in            = gv_start
    IMPORTING
      last_day_of_month = gv_end.

  gv_start_date = gv_start.
  gv_end_date = gv_end.
ENDFORM.                    "process_selected_month
Screenshot 2025-01-17 071032.png
Zuletzt geändert von Julia.hrtm am 17.01.2025 07:11, insgesamt 3-mal geändert.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Dropdown-Liste zur Monatsauswahl mit VRM_SET_VALUES

Beitrag von a-dead-trousers (Top Expert / 4418 / 224 / 1188 ) »
EDIT:
Unter START-OF-SELECTION fehlt eine Verarbeitung die irgendetwas sinnvolles macht.
z.B. WRITE für einen Bildschirmliste oder CALL SCREEN für ein eigenes Dynpro.
In der jetztigen Form wird nur das Start- und Endedatum berechnet, die zwei Instanzen go_event und go_controller instanziert und das wars.

EDIT 2:
Wenn überhaupt würde ich mir die MAIN-Methode mal anschauen. Da scheint eher was nicht zu passen weil das der einzige Code ist der überhaupt ausgeführt wird..
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Dropdown-Liste zur Monatsauswahl mit VRM_SET_VALUES

Beitrag von DeathAndPain (Top Expert / 1964 / 261 / 415 ) »
Ich finde es auch schade, dass Du in ein Programm mit offenbar objektorientiertem Ansatz doch wieder olle Formroutinen reinmischst. Da wäre eine nette lokale Klasse (die es ja anscheinend sogar in Form von lcl_controller gibt) besser. (Auch der Inhalt der Form fill_dropdown_monat ist in altertümlichem ABAP geschrieben und enthält zudem komplett nutzlose CLEAR-Befehle (lokale Variablen starten bei jedem Aufruf stets in initialisierter Form (außer sie werden mit STATICS anstelle von DATA deklariert)).

Re: Dropdown-Liste zur Monatsauswahl mit VRM_SET_VALUES

Beitrag von Julia.hrtm (ForumUser / 11 / 1 / 4 ) »
a-dead-trousers hat geschrieben:
16.01.2025 17:08
EDIT:
Unter START-OF-SELECTION fehlt eine Verarbeitung die irgendetwas sinnvolles macht.
z.B. WRITE für einen Bildschirmliste oder CALL SCREEN für ein eigenes Dynpro.
In der jetztigen Form wird nur das Start- und Endedatum berechnet, die zwei Instanzen go_event und go_controller instanziert und das wars.
Unter START-OF-SELECTION wird Code ausgeführt, bei welchem Daten aus zwei Tabellen geladen wird. Mit der Instanz go_controller und dem Aufruf go_controller->main() wird die ALV gebildet, die am Ende die Ausgabe bildet.
Der Aufruf von Main sollte nicht das Problem dein, da ich diese Kronstruktion genauso in anderen Programmen verwende und dort alles Funktioniert.


Da sich hier immer gern alle darüber beschweren, dass der Code nicht ihren Wünschen entspricht: Ich arbeite mit SAP und ABAP erst seit 4 Monaten und musste mir alles anhand von vorhandenen Programmen selbst beibringen. Mein Vorgänger hat nun mal in diesem Stil die Programme geschrieben. Des Weiteren ist es nicht immer möglich neue Codings zu machen, da dafür die SAP Version die ich benutze nicht neu genug ist.

Re: Dropdown-Liste zur Monatsauswahl mit VRM_SET_VALUES

Beitrag von Julia.hrtm (ForumUser / 11 / 1 / 4 ) »
Habe den Fehler selbst gefunden. p_monat hat nur den Inhalt aus dem key gespeichert und nicht den dazugehörigen Text, dadurch konnte kein Monat ermittelt werden und das Datum war 00.00.2024 was kein gültiges Datum ist. Habe das vorher nicht gesehen, da die Fehlermeldung bei dem normalen Transaktionsaufruf über den Transaktionsbefehl nicht angezeigt wird. Erst als ich die Transaktion über SE38 ausgeführt habe konnte ich debuggen und den Fehler sehen.
Dadurch, dass ich statt nur das Jahr, das Jahr mit Monatszahl und Monatsnamen als Auswahl anzeige, konnte ich daraus den Monat auslesen für die Weiterverarbeitung.

Re: Dropdown-Liste zur Monatsauswahl mit VRM_SET_VALUES

Beitrag von DeathAndPain (Top Expert / 1964 / 261 / 415 ) »
Da sich hier immer gern alle darüber beschweren, dass der Code nicht ihren Wünschen entspricht: Ich arbeite mit SAP und ABAP erst seit 4 Monaten und musste mir alles anhand von vorhandenen Programmen selbst beibringen.
Aber es hat ja geklappt; Du arbeitest mit Klassen und Methoden und hast offenbar verstanden, wie man sie einsetzt. Deshalb verstehe ich nicht, weshalb Du dann noch alte Formroutinen dazwischenmischst.
Des Weiteren ist es nicht immer möglich neue Codings zu machen, da dafür die SAP Version die ich benutze nicht neu genug ist.
Die ganzen neuen Syntaxen kamen mit Release 7.40. Meines Wissens war das im Jahr 2013, also vor mehr als 10 Jahren. Ich weiß, dass es steinalte Systeme gibt, aber die sind doch recht selten. Bist Du wirklich sicher, dass Du noch auf einem so alten Release sitzt?

Seite 1 von 1

Vergleichbare Themen

10
Antw.
5138
Views
Dropdown Liste Debuggen
von erubadhron » 29.03.2017 09:50 • Verfasst in ABAP® Core
4
Antw.
3631
Views
Fehler bei der Dropdown-Liste
von LadyRosely » 24.10.2016 14:21 • Verfasst in Dialogprogrammierung
5
Antw.
5775
Views
Dropdown-Liste & Workprozess durchgestartet
von ChrisB85 » 06.09.2007 08:10 • Verfasst in Dialogprogrammierung
2
Antw.
1474
Views
CL_GUI_ALV_GRID - Dropdown Liste mit Hotspot
von Aba » 29.07.2020 10:16 • Verfasst in ABAP® für Anfänger
3
Antw.
6011
Views
editierbares ALV DropDown Liste Alias => Anzeigeproblem
von ABAPStud » 24.10.2012 20:39 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag



Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Post-Methode für API´s
Gestern von Bright4.5 1 / 105

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.