Methodenaufruf mit unbekannter Anzahl an Ausprägungen

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Methodenaufruf mit unbekannter Anzahl an Ausprägungen

Beitrag von der_neuling (ForumUser / 86 / 17 / 3 ) »
Hallo,

ich rätsel gerade in bisschen darüber, wie wohl der perfekte Methodenaufruf programmiert ist, wenn es einen oder mehrere Ausprägungen eines Parameters geben kann. Ich würde hier gerne mal in die Runde fragen wie ihr das so handhabt.

Szenario: Es sollen alle gültigen Wareneingangsmengen mit der Bwart = '101' aus der Tabelle EKBE selektiert werden, bei Bedarf auch alle Storno-Mengen mit Bwart = '102'.

Folgender Code bis jetzt für die Eingabe einer einzelnen Bwart:

Code: Alles auswählen.

   DATA(lt_result) = mo_db_data->get_goods_rec_quan(
     EXPORTING
       iv_ebeln     = '55521000'
       iv_pos       = '10'
       iv_budat_von = '01012021'
       iv_budat_bis = '01012021'
       iv_bwart = '101'
   ).

  METHOD get_goods_rec_quan.

  SELECT menge FROM ekbe INTO TABLE rt_quan
  WHERE
   ebeln = iv_ebeln AND
   ebelp = iv_pos AND
   budat >= iv_budat_von AND
   budat <= iv_budat_bis AND
   bwart = iv_bwart.

   If sy-subrc <> 0.
      RAISE EXCEPTION TYPE zcx_XXX_no_data.
   ENDIF.

  ENDMETHOD.
abap_doc_method_dyn_param_call.png
Möglichkeiten gäbe es ja genug, meine Frage wäre nun wie ihr das so handhabt, was ist vom programmierkonzept her das zu empfehlende?

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


Re: Methodenaufruf mit unbekannter Anzahl an Ausprägungen

Beitrag von a-dead-trousers (Top Expert / 4286 / 214 / 1142 ) »
Wenn es dir darum geht unterschiedlich Parameterkombinationen in einem Methodenaufruf zu unterstützen, dann würde ich die Parameter in ein Interface bzw. einer Klassen abbilden und beim Methodenaufruf nur ein Objekt des Interfaces bzw. der Klasse übergeben.
Bei dem Parameter-Objekt kannst du dann zusätzliche Methoden implementieren um die verschiedenen Aufrufszenarien zu unterstüzen.

Code: Alles auswählen.

METHOD get_goods_rec_quan.
* importing
*   !IR_PARAMETER type ref to ZCL_CALL_PARAMETER

  CASE ir_parameter->get_mode( ). "Je nachdem welche Parameter im Objekt gesetzt sind.
    WHEN 'Menge'.
      ...
    WHEN 'Storno'.
      ...
  ENDCASE.
ENDMETHOD.
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: Methodenaufruf mit unbekannter Anzahl an Ausprägungen

Beitrag von black_adept (Top Expert / 3947 / 105 / 886 ) »
Moin,
so wie ich deine Ausführungen lese, solltest du statt des iv_bwart welcher nur einen Einzelwert zulässt lieber einen Parameter verwenden welcher eine Rangetabelle für die Bewegungsart erwartet und dann mit dieser selektieren.

Alternativ kannst du auch gar nichts an der Methode ändern, sondern nach dem 1. Aufruf mit 101 zusätzlich einen 2. Aufruf mit der Stornobewegungsart 102 machen und dann die beiden Ergenbisse zusammenfügen. Ist wahrscheinlich der pragmatischte Ansatz.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Methodenaufruf mit unbekannter Anzahl an Ausprägungen

Beitrag von der_neuling (ForumUser / 86 / 17 / 3 ) »
black_adept hat geschrieben:
17.08.2021 11:48
Moin,
so wie ich deine Ausführungen lese, solltest du statt des iv_bwart welcher nur einen Einzelwert zulässt lieber einen Parameter verwenden welcher eine Rangetabelle für die Bewegungsart erwartet und dann mit dieser selektieren.

Alternativ kannst du auch gar nichts an der Methode ändern, sondern nach dem 1. Aufruf mit 101 zusätzlich einen 2. Aufruf mit der Stornobewegungsart 102 machen und dann die beiden Ergenbisse zusammenfügen. Ist wahrscheinlich der pragmatischte Ansatz.
Okay, aber wie wäre es denn möglich dieser Range Tabelle einen Default Wert mitzugeben, so wie Stand jetzt mit den Einzelwerten?

Re: Methodenaufruf mit unbekannter Anzahl an Ausprägungen

Beitrag von black_adept (Top Expert / 3947 / 105 / 886 ) »

Code: Alles auswählen.

REPORT.

CLASS lcl DEFINITION.
  PUBLIC SECTION.
    CLASS-DATA: mct_r_bwart TYPE fip_t_bwart_range READ-ONLY.
    CLASS-METHODS: class_constructor.
    METHODS demo IMPORTING it_r_bwart TYPE fip_t_bwart_range DEFAULT mct_r_bwart.
ENDCLASS.

CLASS lcl IMPLEMENTATION.
  METHOD class_constructor.
    mct_r_bwart = VALUE #( sign = 'I' option = 'EQ' ( low = '101' ) ).
  ENDMETHOD.
  METHOD demo.
    IF it_r_bwart IS NOT INITIAL.
      BREAK-POINT.
    ENDIF.
  ENDMETHOD.
ENDCLASS.


END-OF-SELECTION.
  NEW lcl( )->demo( ). " Optionaler Parameter it_r_bwart wird nicht versorgt, aber du landest trotzdem im Breakpoint
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

12
Antw.
3347
Views
REUSE_ALV_GRID_DISPLAY_LVC -- methodenaufruf
von SaskuAc » 01.06.2016 08:48 • Verfasst in ABAP® Core
5
Antw.
947
Views
Methodenaufruf in SQL-WHERE-Klausel?
von Patrick1982 » 05.11.2020 14:01 • Verfasst in ABAP® für Anfänger
2
Antw.
164
Views
Methodenaufruf mit TABLE OF
von lualt » 13.10.2023 12:36 • Verfasst in ABAP® für Anfänger
4
Antw.
19490
Views
Dynamischer Methodenaufruf
von Cola » 20.08.2009 14:55 • Verfasst in ABAP Objects®
7
Antw.
3586
Views
dyn. Methodenaufruf, SUPER vs. KIND
von Icke0801 » 20.10.2015 16:43 • Verfasst in ABAP Objects®

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.