IF-Abfragen

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
17 Beiträge • Seite 1 von 2 (current) Nächste
17 Beiträge Seite 1 von 2 (current) Nächste

IF-Abfragen

Beitrag von Rantantan (ForumUser / 8 / 6 / 0 ) »
Hallo liebe Experten =o)
Ich bin noch totale Programmieranfängerin und arbeite gerade an meinem ersten Projekt.
Bei diesem gibt es im Selektionsbildschirm die Möglichkeit die Art der Behandlungsdiagnosen auswählen.
Es sind 6 Checkboxen möglich, macht insgesamt 63 kombinatorische Möglichkeiten.
In meiner Unzulänglichkeit habe ich nun ohne Ende IF-Abfragen aufgebaut, kann mir aber nicht vorstellen, dass dieses Problem nicht viel einfacher zu lösen wäre.
Hier der komplette "Kindergarten-Code" =o)

Code: Alles auswählen.

*--------------------------------------------------*
*Behandlungsdiagnosen mit vorhandener DRG-Kategorie*
*--------------------------------------------------*
    ELSEIF NOT bhdia IS INITIAL AND
           NOT drg_cat1 IS INITIAL.
      SELECT falnr ewdia bhdia afdia endia fhdia khdia opdia lfdnr dia_link dkat1 dkey1 diadt diazt drg_category dtyp1 FROM ndia INTO TABLE ndia_tab
            FOR ALL ENTRIES IN nbew_tab
            WHERE falnr = nbew_tab-falnr
            AND bhdia = 'X'
            AND dkat1 IN sc_dkat
            AND drg_category NE ''
            AND storn = ''
            AND dkey1 IN sc_dkey1.

*--------------------------------------------------*
*Behandlungsdiagnosen ohne vorhandene DRG-Kategorie*
*--------------------------------------------------*
    ELSEIF NOT bhdia IS INITIAL AND                                           "Behandlungsdiagnosen ohne vorhandene DRG-Kategorie
           NOT drg_cat2 IS INITIAL.
      SELECT falnr ewdia bhdia afdia endia fhdia khdia opdia lfdnr dia_link dkat1 dkey1 diadt diazt drg_category dtyp1 FROM ndia INTO TABLE ndia_tab
             FOR ALL ENTRIES IN nbew_tab
             WHERE falnr = nbew_tab-falnr
             AND bhdia = 'X'
             AND dkat1 IN sc_dkat
             AND drg_category EQ ''
             AND storn = ''
             AND dkey1 IN sc_dkey1.

*--------------------------------------------------*
*Behandlungsdiagnosen mit+ohne DRG-Kategorie-------*
*--------------------------------------------------*
    ELSEIF NOT bhdia IS INITIAL AND                                           "Alle Behandlungsdiagnosen mit und ohne DRG-Kategorie
           NOT drg_cat3 IS INITIAL.
      SELECT falnr ewdia bhdia afdia endia fhdia khdia opdia lfdnr dia_link dkat1 dkey1 diadt diazt drg_category dtyp1 FROM ndia INTO TABLE ndia_tab
                            FOR ALL ENTRIES IN nbew_tab
                            WHERE falnr = nbew_tab-falnr
                            AND bhdia = 'X'
                            AND dkat1 IN sc_dkat
                            AND storn = ''
                            AND dkey1 IN sc_dkey1.

    ENDIF.


    ndia_filter_table( CHANGING ndia_tab = ndia_tab ).
*---------------------------------------------------------------------------------*
*                                                                                 *
*---------------------------------------------------------------------------------*

  ENDMETHOD.                    "FILL_ndia_table


*----------------------------------------------------------------------------*
*----Nicht erwünschte Behandlungsdiagnosen aussortieren----------------------*
*----------------------------------------------------------------------------*

  METHOD ndia_filter_table.

    DATA  ndias_line    TYPE tndia_line.
    DATA  neu_ndia_line TYPE tndia_line.
    TYPES tndias_tab    TYPE STANDARD TABLE OF tndia_line.
    TYPES tneu_ndia_tab TYPE STANDARD TABLE OF tndia_line.
    DATA  ndias_tab     TYPE tndias_tab.
    DATA  neu_ndia_tab  TYPE tneu_ndia_tab.
    DATA  ndia_line     TYPE tndia_line.

    ndias_tab = ndia_tab.

*------------------Ohne Nebendiagnosen--------------------*

    IF bhdia IS NOT INITIAL AND sonstige IS INITIAL.
      DELETE ndia_tab
        WHERE
        bhdia = 'X' AND
        afdia = ''  AND
        endia = ''  AND
        fhdia = ''  AND
        khdia = ''  AND
        opdia = ''.
    ENDIF.

*----------------Ohne Aufnahmediagnosen------------------*

    IF bhdia IS NOT INITIAL AND afdia IS INITIAL.
      DELETE ndia_tab
        WHERE
        bhdia = 'X' AND
        afdia = 'X' AND
        endia = ''  AND
        fhdia = ''  AND
        khdia = ''  AND
        opdia = ''.
    ENDIF.

*--------------Ohne Entlassungsdiagnosen-----------------*
 IF bhdia IS NOT INITIAL AND endia IS INITIAL.
    DELETE ndia_tab
      WHERE
      bhdia = 'X' AND
      afdia = ''  AND
      endia = 'X' AND
      fhdia = ''  AND
      khdia = ''  AND
      opdia = ''.
  ENDIF.

*-------------Ohne Fachabteilungsdiagnosen---------------*
IF bhdia IS NOT INITIAL AND fhdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      bhdia = 'X' AND
      afdia = ''  AND
      endia = ''  AND
      fhdia = 'X' AND
      khdia = ''  AND
      opdia = ''.
    ENDIF.

*-------------Ohne Hauptdiagnosen------------------------*
IF bhdia IS NOT INITIAL AND khdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      bhdia = 'X' AND
      afdia = ''  AND
      endia = ''  AND
      fhdia = ''  AND
      khdia = 'X' AND
      opdia = ''.
    ENDIF.

*-----------Ohne OP-Diagnosen----------------------------*
IF bhdia IS NOT INITIAL AND opdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      bhdia = 'X' AND
      afdia = ''  AND
      endia = ''  AND
      fhdia = ''  AND
      khdia = ''  AND
      opdia = 'X'.
   ENDIF.

*-----------Nur Aufnahmediagnosen-------------------------*
IF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                          AND sonstige IS INITIAL
                          AND endia IS INITIAL
                          AND fhdia IS INITIAL
                          AND khdia IS INITIAL
                          AND opdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      afdia = ''.


*-----------Nur Entlassungsdiagnosen------------------------*
ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                             AND sonstige IS INITIAL
                             AND endia IS NOT INITIAL
                             AND fhdia IS INITIAL
                             AND khdia IS INITIAL
                             AND opdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      endia = ''.


*-----------Nur Fachabteilungsdiagnosen-----------------------*
ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                           AND sonstige IS INITIAL
                           AND endia IS INITIAL
                           AND fhdia IS NOT INITIAL
                           AND khdia IS INITIAL
                           AND opdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      fhdia = ''.


*-----------Nur Hauptdiagnosen--------------------------------*
ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                        AND sonstige IS INITIAL
                        AND endia IS INITIAL
                        AND fhdia IS INITIAL
                        AND khdia IS NOT INITIAL
                        AND opdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      khdia = ''.


*-----------Nur OP-Diagnosen----------------------------------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                          AND sonstige IS INITIAL
                          AND endia IS INITIAL
                          AND fhdia IS INITIAL
                          AND khdia IS INITIAL
                          AND opdia IS NOT INITIAL.
    DELETE ndia_tab
      WHERE
      opdia = ''.

*-----------Nur Nebendiagnosen---------------------------------*
  ELSEIF bhdia IS NOT INITIAL AND sonstige IS NOT INITIAL
                          AND afdia IS INITIAL
                          AND endia IS INITIAL
                          AND fhdia IS INITIAL
                          AND khdia IS INITIAL
                          AND opdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      afdia NE ''.
    DELETE ndia_tab
     WHERE
     endia NE ''.
    DELETE ndia_tab
    WHERE
    fhdia NE ''.
    DELETE ndia_tab
   WHERE
   khdia NE ''.
    DELETE ndia_tab
  WHERE
  opdia NE ''.


*-----------Aufnahme+Einweisungsdiagnosen------------------------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                          AND endia IS NOT INITIAL
                          AND sonstige IS INITIAL
                          AND fhdia IS INITIAL
                          AND khdia IS INITIAL
                          AND opdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      endia NE 'X'.



*-----------Aufnahme+Fachabtdiagnosen------------------------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                                 AND endia IS INITIAL
                                 AND fhdia IS NOT INITIAL
                                 AND sonstige IS INITIAL
                                 AND khdia IS INITIAL
                                 AND opdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      fhdia NE 'X'.


*-----------Aufnahme+Hauptdiagnosen------------------------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                           AND endia IS INITIAL
                           AND fhdia IS INITIAL
                           AND sonstige IS INITIAL
                           AND khdia IS NOT INITIAL
                           AND opdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      khdia NE 'X'.


*-----------Aufnahme+Opdiagnosen------------------------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                              AND endia IS INITIAL
                              AND fhdia IS INITIAL
                              AND sonstige IS INITIAL
                              AND khdia IS INITIAL
                              AND opdia IS NOT INITIAL.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      opdia NE 'X'.


*-----------Aufnahme+Zusatzdiagnosen------------------------*
  ELSEIF bhdia IS NOT INITIAL AND sonstige IS NOT INITIAL
                          AND afdia IS NOT INITIAL
                          AND endia IS INITIAL
                          AND fhdia IS INITIAL
                          AND khdia IS INITIAL
                          AND opdia IS INITIAL.
    DELETE ndia_tab
     WHERE
     afdia NE 'X' AND
     endia NE ''.
    DELETE ndia_tab
    WHERE
    afdia NE 'X' AND
    fhdia NE ''.
    DELETE ndia_tab
   WHERE
   afdia NE 'X' AND
   khdia NE ''.
    DELETE ndia_tab
  WHERE
  afdia NE 'X' AND
  opdia NE ''.

*-----------Fachabt+Einweisungsdiagnosen------------------------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                                   AND endia IS NOT INITIAL
                                   AND fhdia IS NOT INITIAL
                                   AND sonstige IS INITIAL
                                   AND khdia IS INITIAL
                                   AND opdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      fhdia NE 'X'.
*    ENDIF.

*-----------Haupt+Einweisungsdiagnosen------------------------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                               AND endia IS NOT INITIAL
                               AND fhdia IS INITIAL
                               AND sonstige IS INITIAL
                               AND khdia IS NOT INITIAL
                               AND opdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      khdia NE 'X'.
*    ENDIF.

*-----------OP+Einweisungsdiagnosen------------------------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                             AND endia IS NOT INITIAL
                             AND fhdia IS INITIAL
                             AND sonstige IS INITIAL
                             AND khdia IS INITIAL
                             AND opdia IS NOT INITIAL.
    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      opdia NE 'X'.
*    ENDIF.

*-----------Zusatz+Einweisungsdiagnosen------------------------*
  ELSEIF bhdia IS NOT INITIAL AND sonstige IS NOT INITIAL
                          AND afdia IS INITIAL
                          AND endia IS NOT INITIAL
                          AND fhdia IS INITIAL
                          AND khdia IS INITIAL
                          AND opdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      afdia NE ''.
    DELETE ndia_tab
    WHERE
    endia NE 'X' AND
    fhdia NE ''.
    DELETE ndia_tab
   WHERE
   endia NE 'X' AND
   khdia NE ''.
    DELETE ndia_tab
  WHERE
  endia NE 'X' AND
  opdia NE ''.
*    ENDIF.

*-----------Fachabt+Hauptdiagnosen------------------------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                           AND endia IS INITIAL
                           AND fhdia IS NOT INITIAL
                           AND sonstige IS INITIAL
                           AND khdia IS NOT INITIAL
                           AND opdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      fhdia NE 'X' AND
      khdia NE 'X'.
*    ENDIF.

*-----------Fachabt+Opdiagnosen------------------------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                         AND endia IS INITIAL
                         AND fhdia IS NOT INITIAL
                         AND sonstige IS INITIAL
                         AND khdia IS INITIAL
                         AND opdia IS NOT INITIAL.
    DELETE ndia_tab
      WHERE
      fhdia NE 'X' AND
      opdia NE 'X'.
*    ENDIF.

*-----------Fachabt+Zusatzdiagnosen------------------------*
  ELSEIF bhdia IS NOT INITIAL AND sonstige IS NOT INITIAL
                          AND afdia IS INITIAL
                          AND endia IS INITIAL
                          AND fhdia IS NOT INITIAL
                          AND khdia IS INITIAL
                          AND opdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      fhdia NE 'X' AND
      afdia NE ''.
    DELETE ndia_tab
     WHERE
     fhdia NE 'X' AND
     endia NE ''.
    DELETE ndia_tab
   WHERE
   fhdia NE 'X' AND
   khdia NE ''.
    DELETE ndia_tab
  WHERE
  fhdia NE 'X' AND
  opdia NE ''.
*    ENDIF.


*-----------OP+Hauptdiagnosen------------------------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                           AND endia IS INITIAL
                           AND fhdia IS INITIAL
                           AND sonstige IS INITIAL
                           AND khdia IS NOT INITIAL
                           AND opdia IS NOT INITIAL.
    DELETE ndia_tab
      WHERE
      khdia NE 'X' AND
      opdia NE 'X'.
*    ENDIF.

*-----------Zusatz+Hauptdiagnosen------------------------*
  ELSEIF bhdia IS NOT INITIAL AND sonstige IS NOT INITIAL
                          AND afdia IS INITIAL
                          AND endia IS INITIAL
                          AND fhdia IS INITIAL
                          AND khdia IS NOT INITIAL
                          AND opdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      khdia NE 'X' AND
      afdia NE ''.
    DELETE ndia_tab
     WHERE
     khdia NE 'X' AND
     endia NE ''.
    DELETE ndia_tab
    WHERE
    khdia NE 'X' AND
    fhdia NE ''.
    DELETE ndia_tab
   WHERE
   khdia NE 'X' AND
   opdia NE ''.
*    ENDIF.

*-----------Zusatz+Opdiagnosen------------------------*
  ELSEIF bhdia IS NOT INITIAL AND sonstige IS NOT INITIAL
                          AND afdia IS INITIAL
                          AND endia IS INITIAL
                          AND fhdia IS INITIAL
                          AND khdia IS INITIAL
                          AND opdia IS NOT INITIAL.
    DELETE ndia_tab
      WHERE
      opdia NE 'X' AND
      afdia NE ''.
    DELETE ndia_tab
     WHERE
     opdia NE 'X' AND
     endia NE ''.
    DELETE ndia_tab
    WHERE
    opdia NE 'X' AND
    fhdia NE ''.
    DELETE ndia_tab
   WHERE
   opdia NE 'X' AND
   khdia NE ''.
*    ENDIF.

*-----------Aufnahme+Entlassungs+Fachabtdiagnosen---------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                              AND endia IS NOT INITIAL
                              AND fhdia IS NOT INITIAL
                              AND sonstige IS INITIAL
                              AND khdia IS INITIAL
                              AND opdia IS INITIAL.

    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      endia NE 'X' AND
      fhdia NE 'X'.
*    ENDIF.

*-----------Aufnahme+Entlassungs+Hauptdiagnosen---------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                             AND endia IS NOT INITIAL
                             AND fhdia IS INITIAL
                             AND sonstige IS INITIAL
                             AND khdia IS NOT INITIAL
                             AND opdia IS INITIAL.

    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      endia NE 'X' AND
      khdia NE 'X'.
*    ENDIF.

*-----------Aufnahme+Entlassungs+Opdiagnosen---------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                             AND endia IS NOT INITIAL
                             AND fhdia IS INITIAL
                             AND sonstige IS INITIAL
                             AND khdia IS INITIAL
                             AND opdia IS NOT INITIAL.

    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      endia NE 'X' AND
      opdia NE 'X'.
*    ENDIF.

*-----------Aufnahme+Entlassungs+Zusatzdiagnosen---------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                                 AND endia IS NOT INITIAL
                                 AND fhdia IS INITIAL
                                 AND sonstige IS NOT INITIAL
                                 AND khdia IS INITIAL
                                 AND opdia IS INITIAL.

    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      endia NE 'X' AND
      fhdia NE ''.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      endia NE 'X' AND
      opdia NE ''.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      endia NE 'X' AND
      khdia NE ''.
*    ENDIF.

*-----------Aufnahme+Haupt+Fachabtdiagnosen---------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                                 AND endia IS  INITIAL
                                 AND fhdia IS NOT INITIAL
                                 AND sonstige IS INITIAL
                                 AND khdia IS NOT INITIAL
                                 AND opdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      fhdia NE 'X' AND
      khdia NE 'X'.
*    ENDIF.

*-----------Aufnahme+OP+Fachabtdiagnosen---------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                             AND endia IS INITIAL
                             AND fhdia IS NOT INITIAL
                             AND sonstige IS INITIAL
                             AND khdia IS INITIAL
                             AND opdia IS NOT INITIAL.

    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      fhdia NE 'X' AND
      opdia NE 'X'.
*    ENDIF.

*-----------Aufnahme+Zusatz+Fachabtdiagnosen---------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                                     AND endia IS INITIAL
                                     AND fhdia IS NOT INITIAL
                                     AND sonstige IS NOT INITIAL
                                     AND khdia IS INITIAL
                                     AND opdia IS INITIAL.

    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      fhdia NE 'X' AND
      endia NE ''.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      fhdia NE 'X' AND
      khdia NE ''.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      fhdia NE 'X' AND
      opdia NE ''.
*    ENDIF.

*-----------Aufnahme+Haupt+Opdiagnosen---------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                             AND endia IS INITIAL
                             AND fhdia IS INITIAL
                             AND sonstige IS INITIAL
                             AND khdia IS NOT INITIAL
                             AND opdia IS NOT INITIAL.

    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      khdia NE 'X' AND
      opdia NE 'X'.
*    ENDIF.

*-----------Aufnahme+Haupt+Zusatzdiagnosen---------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                             AND endia IS INITIAL
                             AND fhdia IS INITIAL
                             AND sonstige IS NOT INITIAL
                             AND khdia IS NOT INITIAL
                             AND opdia IS INITIAL.

    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      khdia NE 'X' AND
      endia NE ''.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      khdia NE 'X' AND
      fhdia NE ''.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      khdia NE 'X' AND
      opdia NE ''.
*    ENDIF.

*-----------Aufnahme+OP+Zusatzdiagnosen---------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                                AND endia IS INITIAL
                                AND fhdia IS INITIAL
                                AND sonstige IS NOT INITIAL
                                AND khdia IS INITIAL
                                AND opdia IS NOT INITIAL.

    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      opdia NE 'X' AND
      endia NE ''.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      opdia NE 'X' AND
      fhdia NE ''.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      opdia NE 'X' AND
      khdia NE ''.
*    ENDIF.

*-----------Entlassung+Fachabt+Hauptdiagnosen---------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                             AND endia IS NOT INITIAL
                             AND fhdia IS NOT INITIAL
                             AND sonstige IS INITIAL
                             AND khdia IS NOT INITIAL
                             AND opdia IS INITIAL.
    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      fhdia NE 'X' AND
      khdia NE 'X'.
*    ENDIF.

*-----------Entlassung+Fachabt+Opdiagnosen---------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                             AND endia IS NOT INITIAL
                             AND fhdia IS NOT INITIAL
                             AND sonstige IS INITIAL
                             AND khdia IS INITIAL
                             AND opdia IS NOT INITIAL.

    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      fhdia NE 'X' AND
      opdia NE 'X'.
*    ENDIF.

*-----------Entlassung+Fachabt+Zusatzdiagnosen---------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                                AND endia IS NOT INITIAL
                                AND fhdia IS NOT INITIAL
                                AND sonstige IS NOT INITIAL
                                AND khdia IS INITIAL
                                AND opdia IS INITIAL.

    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      fhdia NE 'X' AND
      afdia NE ''.
    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      fhdia NE 'X' AND
      khdia NE ''.
    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      fhdia NE 'X' AND
      opdia NE ''.
*    ENDIF.

*-----------Entlassung+Haupt+Opdiagnosen---------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                           AND endia IS NOT INITIAL
                           AND fhdia IS INITIAL
                           AND sonstige IS INITIAL
                           AND khdia IS NOT INITIAL
                           AND opdia IS NOT INITIAL.
    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      khdia NE 'X' AND
      opdia NE 'X'.
*    ENDIF.

*-----------Entlassung+Haupt+Zusatzdiagnosen---------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                                  AND endia IS NOT INITIAL
                                  AND fhdia IS INITIAL
                                  AND sonstige IS NOT INITIAL
                                  AND khdia IS NOT INITIAL
                                  AND opdia IS INITIAL.

    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      khdia NE 'X' AND
      afdia NE ''.
    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      khdia NE 'X' AND
      fhdia NE ''.
    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      khdia NE 'X' AND
      opdia NE ''.
*    ENDIF.

*-----------Entlassung+OP+Zusatzdiagnosen---------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                                  AND endia IS NOT INITIAL
                                  AND fhdia IS INITIAL
                                  AND sonstige IS NOT INITIAL
                                  AND khdia IS INITIAL
                                  AND opdia IS NOT INITIAL.

    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      opdia NE 'X' AND
      afdia NE ''.
    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      khdia NE 'X' AND
      fhdia NE ''.
    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      khdia NE 'X' AND
      opdia NE ''.
*    ENDIF.

*-----------Fachabt+Haupt+Opdiagnosen---------------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                           AND endia IS INITIAL
                           AND fhdia IS NOT INITIAL
                           AND sonstige IS INITIAL
                           AND khdia IS NOT INITIAL
                           AND opdia IS NOT INITIAL.
    DELETE ndia_tab
      WHERE
      fhdia NE 'X' AND
      khdia NE 'X' AND
      opdia NE 'X'.
*    ENDIF.

*-----------Fachabt+Haupt+Zusatzdiagnosen-----------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                                 AND endia IS INITIAL
                                 AND fhdia IS NOT INITIAL
                                 AND sonstige IS NOT INITIAL
                                 AND khdia IS NOT INITIAL
                                 AND opdia IS INITIAL.

    DELETE ndia_tab
      WHERE
      fhdia NE 'X' AND
      khdia NE 'X' AND
      afdia NE ''.
    DELETE ndia_tab
      WHERE
      fhdia NE 'X' AND
      khdia NE 'X' AND
      endia NE ''.
    DELETE ndia_tab
      WHERE
      fhdia NE 'X' AND
      khdia NE 'X' AND
      opdia NE ''.
*    ENDIF.

*-----------Fachabt+Op+Zusatzdiagnosen-----------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                                 AND endia IS INITIAL
                                 AND fhdia IS NOT INITIAL
                                 AND sonstige IS NOT INITIAL
                                 AND khdia IS INITIAL
                                 AND opdia IS NOT INITIAL.

    DELETE ndia_tab
      WHERE
      fhdia NE 'X' AND
      opdia NE 'X' AND
      afdia NE ''.
    DELETE ndia_tab
      WHERE
      fhdia NE 'X' AND
      opdia NE 'X' AND
      endia NE ''.
    DELETE ndia_tab
      WHERE
      fhdia NE 'X' AND
      opdia NE 'X' AND
      khdia NE ''.
*    ENDIF.

*-----------Haupt+Op+Zusatzdiagnosen-------------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                                  AND endia IS INITIAL
                                  AND fhdia IS INITIAL
                                  AND sonstige IS NOT INITIAL
                                  AND khdia IS NOT INITIAL
                                  AND opdia IS NOT INITIAL.

    DELETE ndia_tab
      WHERE
      khdia NE 'X' AND
      opdia NE 'X' AND
      afdia NE ''.
    DELETE ndia_tab
      WHERE
      khdia NE 'X' AND
      opdia NE 'X' AND
      endia NE ''.
    DELETE ndia_tab
      WHERE
      khdia NE 'X' AND
      opdia NE 'X' AND
      fhdia NE ''.
*    ENDIF.

*-----------Aufnahme+Entlassung+Fachabt+Hauptdiagnosen---------*
    IF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                               AND endia IS NOT INITIAL
                               AND fhdia IS NOT INITIAL
                               AND sonstige IS INITIAL
                               AND khdia IS NOT INITIAL
                               AND opdia IS INITIAL.
      DELETE ndia_tab
        WHERE
        afdia NE 'X' AND
        endia NE 'X' AND
        fhdia NE 'X' AND
        khdia NE 'X'.
    ENDIF.

*-----------Aufnahme+Entlassung+Fachabt+Opdiagnosen-----------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                          AND endia IS NOT INITIAL
                          AND fhdia IS NOT INITIAL
                          AND sonstige IS INITIAL
                          AND khdia IS INITIAL
                          AND opdia IS NOT INITIAL.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      endia NE 'X' AND
      fhdia NE 'X' AND
      opdia NE 'X'.
*    ENDIF.

*-----------Aufnahme+Entlassung+Fachabt+Zusatzdiagnosen-----------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                                 AND endia IS NOT INITIAL
                                 AND fhdia IS NOT INITIAL
                                 AND sonstige IS NOT INITIAL
                                 AND khdia IS INITIAL
                                 AND opdia IS INITIAL.

    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      endia NE 'X' AND
      fhdia NE 'X' AND
      khdia NE ''.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      endia NE 'X' AND
      fhdia NE 'X' AND
      opdia NE ''.
*    ENDIF.

*-----------Aufnahme+Entlassung+Haupt+Opdiagnosen-----------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                              AND endia IS NOT INITIAL
                              AND fhdia IS INITIAL
                              AND sonstige IS INITIAL
                              AND khdia IS NOT INITIAL
                              AND opdia IS NOT INITIAL.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      endia NE 'X' AND
      khdia NE 'X' AND
      opdia NE 'X'.
*    ENDIF.

*-----------Aufnahme+Entlassung+Haupt+Zusatzdiagnosen-------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                                    AND endia IS NOT INITIAL
                                    AND fhdia IS INITIAL
                                    AND sonstige IS NOT INITIAL
                                    AND khdia IS NOT INITIAL
                                    AND opdia IS INITIAL.

    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      endia NE 'X' AND
      khdia NE 'X' AND
      fhdia NE ''.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      endia NE 'X' AND
      khdia NE 'X' AND
      opdia NE ''.
*    ENDIF.

*-----------Aufnahme+Entlassung+Fachabt+Hauptdiagnosen-----------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                                    AND endia IS NOT INITIAL
                                    AND fhdia IS INITIAL
                                    AND sonstige IS NOT INITIAL
                                    AND khdia IS INITIAL
                                    AND opdia IS NOT INITIAL.

    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      endia NE 'X' AND
      opdia NE 'X' AND
      fhdia NE ''.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      endia NE 'X' AND
      opdia NE 'X' AND
      khdia NE ''.
*   ENDIF.

*-----------Aufnahme+Fachabt+Haupt+Opdiagnosen-----------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                              AND endia IS INITIAL
                              AND fhdia IS NOT INITIAL
                              AND sonstige IS INITIAL
                              AND khdia IS NOT INITIAL
                              AND opdia IS NOT INITIAL.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      fhdia NE 'X' AND
      khdia NE 'X' AND
      opdia NE 'X'.
*    ENDIF.

*-----------Aufnahme+Fachabt+Haupt+Zusatzdiagnosen-----------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                                    AND endia IS INITIAL
                                    AND fhdia IS NOT INITIAL
                                    AND sonstige IS NOT INITIAL
                                    AND khdia IS NOT INITIAL
                                    AND opdia IS INITIAL.

    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      fhdia NE 'X' AND
      khdia NE 'X' AND
      endia NE ''.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      fhdia NE 'X' AND
      khdia NE 'X' AND
      opdia NE ''.
*    ENDIF.

*-----------Aufnahme+Fachabt+OP+Zusatzdiagnosen-----------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                                    AND endia IS INITIAL
                                    AND fhdia IS NOT INITIAL
                                    AND sonstige IS NOT INITIAL
                                    AND khdia IS INITIAL
                                    AND opdia IS NOT INITIAL.

    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      fhdia NE 'X' AND
      opdia NE 'X' AND
      endia NE ''.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      fhdia NE 'X' AND
      opdia NE 'X' AND
      khdia NE ''.
*    ENDIF.

*-----------Aufnahme+Haupt+OP+Zusatzdiagnosen-----------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS NOT INITIAL
                                    AND endia IS INITIAL
                                    AND fhdia IS INITIAL
                                    AND sonstige IS NOT INITIAL
                                    AND khdia IS NOT INITIAL
                                    AND opdia IS NOT INITIAL.

    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      khdia NE 'X' AND
      opdia NE 'X' AND
      endia NE ''.
    DELETE ndia_tab
      WHERE
      afdia NE 'X' AND
      khdia NE 'X' AND
      opdia NE 'X' AND
      fhdia NE ''.
*    ENDIF.

*-----------Entlassung+Fachabt+Haupt+OPdiagnosen-----------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                                AND endia IS NOT INITIAL
                                AND fhdia IS NOT INITIAL
                                AND sonstige IS INITIAL
                                AND khdia IS NOT INITIAL
                                AND opdia IS NOT INITIAL.
    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      fhdia NE 'X' AND
      khdia NE 'X' AND
      opdia NE 'X'.
*    ENDIF.

*-----------Entlassung+Fachabt+Haupt+Zusatzdiagnosen-----------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                                     AND endia IS NOT INITIAL
                                     AND fhdia IS NOT INITIAL
                                     AND sonstige IS NOT INITIAL
                                     AND khdia IS NOT INITIAL
                                     AND opdia IS INITIAL.

    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      fhdia NE 'X' AND
      khdia NE 'X' AND
      afdia NE ''.
    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      fhdia NE 'X' AND
      khdia NE 'X' AND
      opdia NE ''.
*    ENDIF.

*-----------Entlassung+Fachabt+OP+Zusatzdiagnosen-----------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                                     AND endia IS NOT INITIAL
                                     AND fhdia IS NOT INITIAL
                                     AND sonstige IS NOT INITIAL
                                     AND khdia IS INITIAL
                                     AND opdia IS NOT INITIAL.

    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      fhdia NE 'X' AND
      opdia NE 'X' AND
      afdia NE ''.
    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      fhdia NE 'X' AND
      opdia NE 'X' AND
      khdia NE ''.
*    ENDIF.

*-----------Entlassung+Fachabt+Haupt+Opdiagnosen---------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                                     AND endia IS NOT INITIAL
                                     AND fhdia IS INITIAL
                                     AND sonstige IS NOT INITIAL
                                     AND khdia IS NOT INITIAL
                                     AND opdia IS NOT INITIAL.

    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      khdia NE 'X' AND
      opdia NE 'X' AND
      afdia NE ''.
    DELETE ndia_tab
      WHERE
      endia NE 'X' AND
      khdia NE 'X' AND
      opdia NE 'X' AND
      fhdia NE ''.
*    ENDIF.

*-----------Fachabt+Haupt+Op+Zusatzdiagnosen---------*
  ELSEIF bhdia IS NOT INITIAL AND afdia IS INITIAL
                                     AND endia IS INITIAL
                                     AND fhdia IS NOT INITIAL
                                     AND sonstige IS NOT INITIAL
                                     AND khdia IS NOT INITIAL
                                     AND opdia IS NOT INITIAL.

    DELETE ndia_tab
      WHERE
      fhdia NE 'X' AND
      khdia NE 'X' AND
      opdia NE 'X' AND
      afdia NE ''.
    DELETE ndia_tab
      WHERE
      fhdia NE 'X' AND
      khdia NE 'X' AND
      opdia NE 'X' AND
      endia NE ''.
  ENDIF.


  neu_ndia_tab = ndia_tab.
  LOOP AT ndia_tab INTO ndia_line.
    IF ndia_line-dia_link IS NOT INITIAL.
      READ TABLE neu_ndia_tab
                 WITH KEY falnr = ndia_line-falnr
                 lfdnr = ndia_line-dia_link
                 TRANSPORTING NO FIELDS.
      IF sy-subrc NE 0.
        LOOP AT ndias_tab INTO ndias_line
                WHERE falnr = ndia_line-falnr
                  AND lfdnr = ndia_line-dia_link.
          APPEND ndias_line TO neu_ndia_tab.
        ENDLOOP.
      ENDIF.
    ENDIF.

    LOOP AT ndias_tab INTO ndias_line
            WHERE falnr = ndia_line-falnr
              AND dia_link = ndia_line-lfdnr.

      READ TABLE neu_ndia_tab
                 WITH KEY falnr = ndias_line-falnr
                          lfdnr = ndias_line-lfdnr
                 TRANSPORTING NO FIELDS.
      IF sy-subrc NE 0.
        APPEND ndias_line TO neu_ndia_tab.
      ENDIF.
    ENDLOOP.
  ENDLOOP.

  ndia_tab = neu_ndia_tab.

ENDMETHOD.                    "ndia_filter_table
Das Problem ist nämlich, dass eine Diagnose nicht eineindeutig ist, sondern eben mehrfach-Diagnosen beinhalten kann.

Für Ratschläge und Tipps wäre ich sehr dankbar!
MFG
Zuletzt geändert von Rantantan am 14.11.2013 16:41, insgesamt 1-mal geändert.

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


Re: IF-Abfragen

Beitrag von 1337 (ForumUser / 99 / 33 / 0 ) »
Ich bin auch nicht unbedingt der Profi was ABAP angeht. Aber ich könnte mir vorstellen, dass man mit Schleifen oder Rekursion arbeiten könnte.

Re: IF-Abfragen

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »
hallo Rantantan,

ich fasse mal zusammen zur besseren Verständnis. Du hast sechs Checkboxen: bhdia, afdia, endia, fhdia, khdia und opdia (im Quellcode erscheint noch hin und wieder mal die Abfrage der Option "sonstige"). Über die Checkboxen selektierst du welche Daten angezeigt werden sollen, die Daten wurden bereits im Vorfeld selektiert und liegen in der Tabelle ndia_tab.

Wie stellst du dir die Logik vor: wenn jetzt die Optionen bhdia und afdia markiert sind, sollen dann nur die Datensätze angezeigt werden in denen beide Werte mit einem X belegt sind, oder aber auch die bei denen nur eins von beiden ein X hat? Und wie hast du im Vorfeld die Tabelle ndia_tab gefüllt?
schöne Grüße
Alexander

ECC 6.0 EHP 7

Re: IF-Abfragen

Beitrag von Rantantan (ForumUser / 8 / 6 / 0 ) »
Hallo Alexander,
es sind sechs Checkboxen(AFDIA,ENDIA,FHDIA,KHDIA,OPDIA und SONSTIGE). All diese Diagnosen sind mit einem X als BHDIA deklariert.
Wenn nur AFDIA angeklickt ist, dürfen eben nur Diagnosen auftauchen, die bei BHDIA und AFDIA ein X haben, aber es ist möglich das eine AFDIA Diagnose auch ein X bei FHDIA oder etwas anderem hat. Sprich diese dürfen nicht rausfallen.
Wenn also nur eine Diagnose ausgewählt ist, ist das Problem ja schnell gelöst, dann wird alles aus der ndia_tab geschmissen, was bei AFDIA kein X hat.
Sind allerdings zum Beispiel AFDIA, OPDIA und SONSTIGE ausgewählt, müssen alle Diagnosen auftauchen die in AFDIA oder OPDIA ein X haben und die Sonstigen haben nur bei BHDIA ein X. Abgesehen von den Sonstigen kann aber jede Diagnose noch mehr Diagnosen angekreuzt haben.
Hilft das fürs Verständnis?

Re: IF-Abfragen

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
hi!

Ich würde zu jeden Feld das du prüfen möchstest eine Range-Tabelle erstellen.
Dann bei deinem "DELETE ndia_tab" die einzelnen Felder mit "IN range_tab" abfragen.

Wie man eine Range-Tabelle aufbaut, sollte es hier im Forum und in der Hilfe genug Anhaltspunkte geben.
Dank der Rangetabelle kannst du nun alle "drei" Möglichkeiten abfragen:
Alle Werte mit "X" werden gesucht = In der Range-Tabelle einen Eintrag mit "X" einfügen.
Alle Werte mit <leer> werden gesucht = In der Range-Tabelle einen Eintrag mit <leer> einfügen.
Alle Werte werden gesucht (egal ob "X" oder <leer>) = Die Rangetabelle leer lassen.

Du befüllst also pro Parameter eine Range-Tabelle und kannst dann alles auf einmal ohne umständlicher IF-Abfrage löschen.

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Rantantan

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: IF-Abfragen

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »
Rantantan hat geschrieben: Hilft das fürs Verständnis?
wenn ich ganz ehrlich sein soll, dann nicht ganz :-) Unter Umständen kommst du hier mit einer dynamischen WHERE-Bedingung weiter, ich käme aber erst morgen Nachmittag dazu das bei uns mal auszuprobieren.

Schau mal hier, vielleicht hilft es ja erstmal weiter: http://www.abapforum.com/forum/viewtopi ... =1&t=18715

Folgende Benutzer bedankten sich beim Autor Alexander D. für den Beitrag:
Rantantan

schöne Grüße
Alexander

ECC 6.0 EHP 7

Re: IF-Abfragen

Beitrag von Rantantan (ForumUser / 8 / 6 / 0 ) »
Bisher habe ich mich noch überhaupt nicht mit Range-Tabellen beschäftigt, aber ich werde mich gleich morgen einlesen!
Auch mit der dynamischen where-bedingung habe ich mich noch nicht auseinandergesetzt, werde mich aber auch darüber informieren!
Vielen Dank schon mal für eure Antworten, werde mich dann gleich morgen draufstürzen und hoffentlich eine elegantere Lösung finden, als die bisherige.
Euch allen einen schönen Feierabend!

Re: IF-Abfragen

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Solche Programme mit sovielen Checkboxen koennen leicht zu Horror Coding ausarten.

Ein Rekord den ich gefunden hatte: 79 IF-ELSEIF-Zeilen. Nicht Pflegbar oder aenderbar.


OK, wenn moeglich wandele jede Checkbox bereits vor der SELECT Anweisung der Datenbank in Range-Tabellen.

Die Select-Anweisung bleibt dadurch immer gleich, nur die Inhalte der Rangetabellen aendern sich.

Folgende Benutzer bedankten sich beim Autor Unit605 für den Beitrag:
Rantantan


Re: IF-Abfragen

Beitrag von Rantantan (ForumUser / 8 / 6 / 0 ) »
Ich lese immer wieder, dass diese Range-Tabellen starke Einschränkungen im Umfang haben?
In diesem Programm werden definitiv mehr als 2000 Datensätze eingelesen.
Nu bin ich verwirrt, kann ich dennoch die Range-Tabelle für mein Problem nutzen?
LG

Re: IF-Abfragen

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Hallo Rantantan,

hier ein Vorschlag(!) wie man es angehen koennte, falls moeglich. Dazu kenne ich Dein Coding zu wenig und die Anforderung.

Versuch mal zu verstehen, was ich versuche Dir zu zeigen.

Als Info: Wenn eine RANGE Tabelle LEER ist (der Tabellerumpf, nicht die Kopfzeile) bedeutet das immer, ALLES SELEKTIEREN.
Im Prinzip fuellst Du die RANGE Tabellen immer nur dann wenn die Checkbox angekreuzt ist.
Und zwar mit: I EQ 'X'. " Also alles mit einem X

Der Sinn meines Vorschlages ist, dass Du immer nur einen SELECT auf die Datenbank brauchst und immer mit der gleichen WHERE Bedingung, da nur die Inhalte der RANGE Tabellen angepasst werden.

Keine Gewaehr auf Vollstaendigkeit :-)
Ich hoffe, dass ich selber nicht den Ueberblick im Coding verloren habe :-)


Dieses: &#91;&#93;. ist []

Code: Alles auswählen.

data: rt_bhdiap type range of bhdia,
      rt_afdia  type range of afdia,
      rt_endia  type range of endia,
      rt_fhdia  type range of fhdia,
      rt_khdia  type range of khdia,
      rt_opdia  type range of opdia,
      RT_drg_category type range of drg_category......USW. USW...



***Evtl: clear: rt_bhdiap[], rt_afdia[], rt_endia[], rt_fhdia[], rt_khdia[], rt_opdia[].



 .

If bhdia is not initial.              " CHECKBOX ist angekreuzt
   rt_bhdia-sign    = 'I'.
   rt_bhdia-option  = 'EQ'.
   rt_bhdia-low     = abap_true. "'X"
   clear rt_bhdia_high. 
   append rt_bhdia to rt_bhdia.
else.
   clear: rt_bhdiap[].     " CHECKBOX ist NICHT angekreuzt
endif.



Fuer alle anderen RANGE Tabellen die gleiche Vorgehensweise
Auch fuer drg_cat1 und drg_cat2 und drg_cat3 anwenden!?!?


If opdia is not initial.              " CHECKBOX ist angekreuzt
   rt_opdia-sign    = 'I'.
   rt_opdia-option  = 'EQ'.
   rt_opdialow     = abap_true.    "'X"
   clear rt_opdialow_high. 
   append rt_ opdia to rt_ opdia.
else.
   clear: rt_ opdia[].     " CHECKBOX ist NICHT angekreuzt
endif.

*--------------------------------------------------*
*Behandlungsdiagnosen  
*--------------------------------------------------*

      SELECT falnr ewdia bhdia afdia endia fhdia khdia opdia lfdnr dia_link dkat1 dkey1 diadt diazt drg_category dtyp1 FROM ndia INTO TABLE ndia_tab
            FOR ALL ENTRIES IN nbew_tab
            WHERE falnr = nbew_tab-falnr
            AND dkat1 IN sc_dkat
            AND drg_category NE ''
            AND storn = ''
            AND dkey1 IN sc_dkey
            AND bhdia in rt_bhdia
            AND afdia in rt_afdia
            AND endia in rt_endia
            AND fhdia in rt_fhdia
            AND opdia in rt_opdia.



Folgende Benutzer bedankten sich beim Autor Unit605 für den Beitrag:
Rantantan


Re: IF-Abfragen

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Noch etwa zusaetzliches: Gewoehne Dir an, einen gewissen Standard zu benutzen, sog. Programmierrichtlinien:

Auch hier nur Beispiele

P_test fuer Selectionsscreen PARAMETER
S_test fuer Selectionsscreen SELECT-OPTIONS
TY_test fuer Types
GV_test fuer Global Variale
LV_test fuer Lokale Variable
GT_test fuer Global Tabelle
LT_test fuer Lokale Tabelle
etc. etc ....usw. usw.


Siehe auch: http://www.abapforum.com/forum/viewtopi ... ien#p63896

Folgende Benutzer bedankten sich beim Autor Unit605 für den Beitrag:
Rantantan


Re: IF-Abfragen

Beitrag von Rantantan (ForumUser / 8 / 6 / 0 ) »
Hallo Unit,
was die Programmierrichtlinien betrifft, benutze ich sc_ für die Select-Options, weil das hier in der Firma so Standard ist.
Und auch bei den anderen Deklarationen halte ich mich an die internen Richtlinien. Ich weiß, dass es noch nicht optimal ist, kann aber schlecht als Praktikantin mich dem entgegenstellen.
Was deinen Vorschlag angeht, habe ich das Problem, dass die Syntax-Meldung mir sagt
"Der Typ "BHDIA" ist unbekannt.
Seltsamerweise erkennt er den Typ AFDIA an, ENDIA dann wieder nicht.
Hier ein Auszug aus dem Selektionsbildschirm, eventuell habe ich dort falsch codiert?

Code: Alles auswählen.

PARAMETERS        bhdia TYPE ndia-bhdia RADIOBUTTON GROUP rad2 USER-COMMAND bhd.                          "Nur Behandlungsdiagnose
SELECTION-SCREEN COMMENT 03(31) text-010 FOR FIELD bhdia.
SELECTION-SCREEN POSITION 34.
PARAMETERS        ewdia TYPE ndia-ewdia RADIOBUTTON GROUP rad2.                                          "Nur Einweisungsdiagnose
SELECTION-SCREEN COMMENT 35(30) text-011 FOR FIELD ewdia.
SELECTION-SCREEN POSITION 70.
PARAMETERS        alle  RADIOBUTTON GROUP rad2 DEFAULT 'X'.                               "Alle Diagnosen
SELECTION-SCREEN COMMENT 71(20) text-012 FOR FIELD alle.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK a03.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK a06 WITH FRAME TITLE text-a05.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 01.
PARAMETERS       drg_cat1 TYPE ndia-drg_category RADIOBUTTON GROUP rad3 MODIF ID bhd DEFAULT 'X'.      "DRG-Kategorie
SELECTION-SCREEN COMMENT 03(23) FOR FIELD drg_cat1 MODIF ID bhd.
PARAMETERS       drg_cat2 TYPE ndia-drg_category RADIOBUTTON GROUP rad3 MODIF ID bhd.
SELECTION-SCREEN COMMENT 30(30) FOR FIELD drg_cat2 MODIF ID bhd.
SELECTION-SCREEN POSITION 61.
PARAMETERS       drg_cat3 TYPE ndia-drg_category RADIOBUTTON GROUP rad3 MODIF ID bhd.                  "DRG-Kategorie
SELECTION-SCREEN COMMENT 63(26) FOR FIELD drg_cat3 MODIF ID bhd.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK a06.
SELECTION-SCREEN SKIP.

SELECTION-SCREEN BEGIN OF BLOCK a04 WITH FRAME TITLE text-a05.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 01.
PARAMETERS       afdia TYPE ndia-afdia AS CHECKBOX MODIF ID bhd  DEFAULT 'X'.              "Aufnahme-Diagnose
SELECTION-SCREEN COMMENT 03(18) FOR FIELD afdia MODIF ID bhd.
SELECTION-SCREEN POSITION 26.
PARAMETERS       fhdia TYPE ndia-fhdia AS CHECKBOX MODIF ID bhd.                           "Fachabteilungshauptdiagnose
SELECTION-SCREEN COMMENT 27(27) FOR FIELD fhdia MODIF ID bhd.
SELECTION-SCREEN POSITION 57.
PARAMETERS       khdia TYPE ndia-khdia AS CHECKBOX MODIF ID bhd.                           "Krankenhaushauptdiagnose
SELECTION-SCREEN COMMENT 58(24) FOR FIELD khdia MODIF ID bhd.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 01.
PARAMETERS       opdia TYPE ndia-opdia AS CHECKBOX MODIF ID bhd.                           "OP-Hauptdiagnose
SELECTION-SCREEN COMMENT 03(18) FOR FIELD opdia MODIF ID bhd.
SELECTION-SCREEN POSITION 26.
PARAMETERS       endia TYPE ndia-endia AS CHECKBOX MODIF ID bhd.                           "Entlassungsdiagnose
SELECTION-SCREEN COMMENT 27(27) FOR FIELD endia MODIF ID bhd.
SELECTION-SCREEN POSITION 57.
PARAMETERS sonstige AS CHECKBOX MODIF ID bhd.
SELECTION-SCREEN COMMENT 60(27) FOR FIELD sonstige MODIF ID bhd.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK a04.

Re: IF-Abfragen

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Gewoehne Dir auch an, Feldermeldungen grundsaetzlich mit Past und Copy ins Forum zu stellen. Am besten immer die Zeile davor und dahinter, falls moeglich.

Wenn der TYPE BHDIA unbekannt ist, ersetze BHDIA mit TYPE NDIA-BHDIA (oder dem Dataelement von diesem Tabellenfeld)
Ersetze auch alle anderen mit FELDER TYPE ndia-FELDNAME, damit Du auf der sicheren Seite bist.

Ich wundere mich immer wieder, welche Aufgaben Praktikanten/Anfaenger in Firmen bekommen und niemand da ist, der Ihnen bei der Aufgabe hilft.

Folgende Benutzer bedankten sich beim Autor Unit605 für den Beitrag:
Rantantan


Re: IF-Abfragen

Beitrag von Rantantan (ForumUser / 8 / 6 / 0 ) »
Danke für die vielen hilfreichen Tipps!
Aber ich möchte nicht, dass von der Firma ein falscher Eindruck entsteht.
Natürlich gibt es hier Kollegen, die ich mal fragen kann.
Aber die sind im Moment ziemlich schwer beschäftigt und es hatte keiner ne Idee auf die Schnelle, wie man mir helfen könnte.

Re: IF-Abfragen

Beitrag von Rantantan (ForumUser / 8 / 6 / 0 ) »
Jetzt bekomme ich diese Fehlermeldung???
"RT_AFDIA" ist eine Tabelle ohne Kopfzeile und besitzt daher keine
Komponente mit Namen "SIGN".

Code: Alles auswählen.

  DATA: rt_afdia  TYPE RANGE OF ndia-afdia,
          rt_endia  TYPE RANGE OF ndia-endia,
          rt_fhdia  TYPE RANGE OF ndia-fhdia,
          rt_khdia  TYPE RANGE OF ndia-khdia,
          rt_opdia  TYPE RANGE OF ndia-opdia.

 IF afdia IS NOT INITIAL.         " CHECKBOX ist angekreuzt
      rt_afdia-sign    = 'I'.
      rt_afdia-option  = 'EQ'.
      rt_afdia-low     = abap_true. "'X"
      CLEAR rt_afdia_high.

Vergleichbare Themen

3
Antw.
4857
Views
Bestellstatus abfragen
von Apabtalker » 27.08.2014 11:06 • Verfasst in Exchange Infrastructure
1
Antw.
1108
Views
(ESS-)Berechtigungen abfragen
von Dyrdek » 02.11.2016 14:11 • Verfasst in ABAP® Core
4
Antw.
3078
Views
Berechtigungen abfragen
von Banney88 » 25.05.2010 08:51 • Verfasst in ABAP® für Anfänger
12
Antw.
6938
Views
Mandant abfragen
von hmaxi96 » 12.01.2016 09:10 • Verfasst in ABAP® für Anfänger
0
Antw.
940
Views
BW Query abfragen
von ewx » 10.09.2014 13:15 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141