adesso orange🍊Stellenangebote:
Software Engineer Trainee · Senior
| (Senior) Cloud Software Engineer BTP
(Senior) Consultant Technologie · Consultant ABAP
Werkstudent Softwareentwicklung · Fiori / UI5 · Consulting · Application Management
COND: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „Kategorie:Schlüsselbegriffe 175px|thumb|right|Erklärungsvideo|link=https://m.youtube.com/watch?v=hxyudwzHCBo Seit ABAP 7…“) |
|||
Zeile 8: | Zeile 8: | ||
Hier wird das COND bei einem Methodenaufruf verwendet, um ein Parameter wie ein Unterobjekt für den Anwendungslog zu übergeben: | Hier wird das COND bei einem Methodenaufruf verwendet, um ein Parameter wie ein Unterobjekt für den Anwendungslog zu übergeben: | ||
<syntaxhighlight lang="abap" line start="1"> | |||
me->_go_bal = cf_reca_message_list=>create( | me->_go_bal = cf_reca_message_list=>create( | ||
EXPORTING id_object = 'ZMONITUTIL' | EXPORTING id_object = 'ZMONITUTIL' | ||
Zeile 17: | Zeile 17: | ||
) "ELSE ist optional | ) "ELSE ist optional | ||
). | ). | ||
</syntaxhighlight> | |||
Nach COND ist der Datentyp zu sehen. Hier hätte man auch mit # arbeiten können, da der Typ bei id_suboject bereits bekannt ist. Würde man eine Inline Deklaration durchführen, wo der Typ garnicht bekannt ist, müsste man diesen hinter COND angeben. | Nach COND ist der Datentyp zu sehen. Hier hätte man auch mit # arbeiten können, da der Typ bei id_suboject bereits bekannt ist. Würde man eine Inline Deklaration durchführen, wo der Typ garnicht bekannt ist, müsste man diesen hinter COND angeben. | ||
Aktuelle Version vom 12. August 2021, 11:55 Uhr
Seit ABAP 7.40 kann COND verwendet werden. Dies stellt eine Alternative zum IF da, vorallem weil der Code wesentlich kürzer, aber zum Teil auch unübersichtlicher wird.
Der Vorteil ist eine Bedingung direkt bei Wertzuweisung einer Variable oder bei Parameter bei Methoden zu setzen.
Mit COND
Hier wird das COND bei einem Methodenaufruf verwendet, um ein Parameter wie ein Unterobjekt für den Anwendungslog zu übergeben:
me->_go_bal = cf_reca_message_list=>create(
EXPORTING id_object = 'ZMONITUTIL'
id_subobject = COND balsubobj( WHEN me->get_current_mode( ) = me->gcs_mode_is-dump THEN 'DUMPS'
WHEN me->get_current_mode( ) = me->gcs_mode_is-slg1 THEN 'BAL'
WHEN me->get_current_mode( ) = me->gcs_mode_is-idoc THEN 'IDOC'
ELSE THROW zcx_monitoring_utilities( )
) "ELSE ist optional
).
Nach COND ist der Datentyp zu sehen. Hier hätte man auch mit # arbeiten können, da der Typ bei id_suboject bereits bekannt ist. Würde man eine Inline Deklaration durchführen, wo der Typ garnicht bekannt ist, müsste man diesen hinter COND angeben.
Mit IFs
Ohne COND müsste man z.B. mi IFs abfragen welcher Modus gerade aktiv ist, um das jeweilige richtige Unterobjekt zuzuordnen:
DATA: lv_subobject TYPE balsubobj. IF me->get_current_mode( ) = me->gcs_mode_is-dump. lv_subobject = 'DUMPS' ELSEIF me->get_current_mode( ) = me->gcs_mode_is-slg1. lv_subobject = 'BAL' ELSEIF me->get_current_mode( ) = me->gcs_mode_is-idoc. lv_subobject = 'IDOC' ELSE RAISE EXCEPTION TYPE zcx_... . ENDIF. me->_go_bal = cf_reca_message_list=>create( EXPORTING id_object = 'ZMONITUTIL' id_subobject = lv_subobject ).