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.
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.
Okay, aber wie wäre es denn möglich dieser Range Tabelle einen Default Wert mitzugeben, so wie Stand jetzt mit den Einzelwerten?black_adept hat geschrieben: ↑17.08.2021 11:48Moin,
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.
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