COND
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 ).
Dieses Wiki wird privat in Freizeit nach bestem Wissen und Gewissen gepflegt und dient primär als eigene Wissenssammlung für die tägliche Arbeit im SAP-ERP-Umfeld.
Alle dargestellten Softwareprodukte, auch in Form von Screenshots, sind Eigentum der SAP SE. Ihre Marken, vgl. Link, sind u.a.: SAP®, ABAP®, SAP Fiori®, SAP HANA®, SAP S/4HANA®, SAP S/4HANA® Cloud