Code: Alles auswählen.
CLEAR rv_fehler.
If is_struktur-wert_eins is initial.
rv_fehler = abap_true.
elseif is_struktur-wert_zwei is initial.
rv_fehler = abap_true.
elseif ...
.
.
.
else.
rv_fehler = abap_false.
endif.
Code: Alles auswählen.
IF is_struktur-wert_eins IS INITIAL OR is_struktur-wert_zwei IS INITIAL.
rv_fehler = abap_true.
ENDIFCode: Alles auswählen.
case space.
when strukt-wert1.
...
when strukt-wert2.
...
when strukt-wert3 or strukt-wert4.
...
when others.
...
endcase.Du hast aber schon das kleine aber feine OR in meinem Coding bemerkt oder?gs3rr4 hat geschrieben:Das Case-Beispiel scheint mir vernünftig, jedoch habe ich auf mehr Einsparung von Code gehofft.
Code: Alles auswählen.
rv_fehler = abap_false.
CASE space.
WHEN is_struktur-wert_eins OR is_struktur-wert_zwei OR is_struktur-wert_drei.
rv_fehler = abap_true.
ENDCASE.Code: Alles auswählen.
REPORT z_empty.
*----------------------------------------------------------------------*
* CLASS lcx_initial DEFINITION
*----------------------------------------------------------------------*
CLASS lcx_initial DEFINITION INHERITING FROM cx_static_check.
PUBLIC SECTION.
DATA fieldinfo TYPE string.
METHODS constructor IMPORTING fieldinfo TYPE string.
ENDCLASS. "lcx_initial DEFINITION
*----------------------------------------------------------------------*
* CLASS lcx_initial IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcx_initial IMPLEMENTATION.
METHOD constructor.
super->constructor( ).
me->fieldinfo = fieldinfo.
ENDMETHOD. "constructor
ENDCLASS. "lcx_initial IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS lcl_check DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_check DEFINITION.
PUBLIC SECTION.
CLASS-METHODS initial IMPORTING field TYPE clike OPTIONAL
value TYPE any
PREFERRED PARAMETER value
RAISING lcx_initial.
ENDCLASS. "lcl_check DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_check IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_check IMPLEMENTATION.
METHOD initial.
IF value IS INITIAL.
IF field IS INITIAL.
RAISE EXCEPTION TYPE lcx_initial EXPORTING fieldinfo = space.
ELSE.
RAISE EXCEPTION TYPE lcx_initial EXPORTING fieldinfo = field.
ENDIF.
ENDIF.
ENDMETHOD. "initial
ENDCLASS. "lcl_check IMPLEMENTATION
START-OF-SELECTION.
DATA gx_error TYPE REF TO lcx_initial.
TABLES t000.
t000-mtext = 'ABAPFORUM'.
TRY .
lcl_check=>initial( field = 'MTEXT' value = t000-mtext ).
lcl_check=>initial( field = 'ORT01' value = t000-ort01 ).
lcl_check=>initial( field = 'MWAER' value = t000-mwaer ).
CATCH lcx_initial INTO gx_error.
MESSAGE i000(oo) WITH 'leeres Feld:' gx_error->fieldinfo.
ENDTRY.
IF gx_error IS NOT BOUND.
MESSAGE 'alles okay' TYPE 'I'.
ENDIF.Code: Alles auswählen.
DATA t_felder TYPE STANDARD TABLE OF string.
FIELD-SYMBOLS <feld> TYPE string.
FIELD-SYMBOLS <wert> TYPE any.
DATA fehlerfeld TYPE string.
APPEND 'EINS' to t_felder.
APPEND 'DREI' to t_felder.
LOOP AT t_felder ASSIGNING <feld>.
ASSIGN COMPONENT <feld> OF STRUCTURE xyz TO <wert>.
IF sy-subrc = 0 AND <wert> is initial.
fehlerfeld = <feld>.
EXIT.
ENDIF.
ENDLOOP.
if fehlerfeld is not initial.
"FEHLER!!
endif.