REPORT zeta_prehled_dokladu.

INCLUDE zeta_prehled_dokladu_decl.
INCLUDE zeta_prehled_dokladu_alv.

START-OF-SELECTION.
  CALL SCREEN 1001.


*&---------------------------------------------------------------------*
*&      Module  STATUS_1001  OUTPUT
*&---------------------------------------------------------------------*
*       Nastaven titulku vstupnho dynpra
*----------------------------------------------------------------------*
MODULE status_1001 OUTPUT.
  SET PF-STATUS '1001'.
  SET TITLEBAR '1001'.

  IF p_rad1 NE 'X'.
    LOOP AT SCREEN.
      IF screen-group1 EQ 'KON'.
        screen-invisible = 1.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ENDIF.

  IF p_rad3 NE 'X'.
    LOOP AT SCREEN.
      IF screen-group1 EQ 'POJ'.
        screen-invisible = 1.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ENDIF.

  IF p_rad3 EQ 'X'.
    LOOP AT SCREEN.
      IF screen-group3 EQ 'NAK'.
        screen-invisible = 1.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ENDIF.

ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_1001  INPUT
*&---------------------------------------------------------------------*
*       Ovldn vstupnho dynpra
*----------------------------------------------------------------------*
MODULE user_command_1001 INPUT.

  ok_code = sy-ucomm.
  CASE ok_code.
    WHEN 'EXIT'.
      LEAVE PROGRAM.

    WHEN 'EXECUTE'.
      CLEAR: ok_code, sy-ucomm.
      PERFORM next_step.

    WHEN 'LOAD'.
      PERFORM get_input_variant.

    WHEN 'SAVE'.
      PERFORM save_input_variant.

    WHEN 'X'.
      IF p_rad3 NE 'X'.
        g_nd = '1004'.
      ELSE.
        g_nd = '1003'.
      ENDIF.

  ENDCASE.

ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  GET_LIFNR_EM  INPUT
*&---------------------------------------------------------------------*
*       zskn master dodavatele dle nzvu
*----------------------------------------------------------------------*
MODULE get_lifnr_em INPUT.
  IF p_mlifnr IS NOT INITIAL.
    CLEAR: ls_lifnr.
    CALL FUNCTION 'ZETA_FM_SEARCH_LIFNR'
      EXPORTING
        lifnr_text  = p_mlifnr
        only_master = 'X'
      IMPORTING
        is_lifnr    = ls_lifnr.

    IF ls_lifnr IS NOT INITIAL.
      p_mname1 = ls_lifnr-name1.
      p_mlifnr       = ls_lifnr-lifnr.
    ENDIF.


  ELSE.
    CLEAR: p_mlifnr, p_mname1.
  ENDIF.

ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  GET_LIFNR  INPUT
*&---------------------------------------------------------------------*
*       zskn dodavatele dle nzvu
*----------------------------------------------------------------------*
MODULE get_lifnr INPUT.
  IF p_lifnr IS NOT INITIAL.
    CLEAR: ls_lifnr.
    CALL FUNCTION 'ZETA_FM_SEARCH_LIFNR'
      EXPORTING
        lifnr_master = p_mlifnr
        lifnr_text   = p_lifnr
      IMPORTING
        is_lifnr     = ls_lifnr.

    IF ls_lifnr IS NOT INITIAL.
      p_name1 = ls_lifnr-name1.
      p_lifnr       = ls_lifnr-lifnr.
    ENDIF.

  ELSE.
    CLEAR: p_lifnr, p_name1.
  ENDIF.

ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  GET_LIFNR  INPUT
*&---------------------------------------------------------------------*
*       zskn dodavatele dle nzvu
*----------------------------------------------------------------------*
MODULE get_lifnr_f4 INPUT.

  CLEAR: ls_lifnr.
  CALL FUNCTION 'ZETA_FM_SEARCH_LIFNR'
    EXPORTING
      lifnr_master = p_mlifnr
      lifnr_text   = p_lifnr
    IMPORTING
      is_lifnr     = ls_lifnr.

  IF ls_lifnr IS NOT INITIAL.
    p_name1 = ls_lifnr-name1.
    p_lifnr = ls_lifnr-lifnr.
  ELSE.
    CLEAR: p_lifnr, p_name1.
  ENDIF.

ENDMODULE.
*&---------------------------------------------------------------------*
*&      Form  NEXT_STEP
*&---------------------------------------------------------------------*
*       Vyvoln jednotlivch formu pro zobrazen doklad
*----------------------------------------------------------------------*
FORM next_step .

  PERFORM inicializace.
  PERFORM get_field_labels.
  PERFORM data_retrieval.

  IF itab[] IS NOT INITIAL.
    REFRESH: fieldcatalog.
    PERFORM build_fieldcatalog.
    PERFORM build_layout.
    PERFORM sub_populate_sort.
    PERFORM display_alv_report.

  ELSE.
    MESSAGE 'Nenalezena dn data !' TYPE 'I'.
  ENDIF.

ENDFORM.
*&-----------------------------------------------------------------*
*&      Form inicializace                                          *
*&-----------------------------------------------------------------*
*       Inicializace promnnch                                    *
*------------------------------------------------------------------*
FORM inicializace.
  " nastaven promnnch
  c_ekorg = '2100'.
  c_vtweg = '02'.

  " nastaven jednotlivch pol pro SELECT
  CONCATENATE 'k~EBELN'         'k~FRGKE' 'k~EXNUM'    'k~ERNAM'      'k~BEDAT'      'k~EKGRP'          'k~WAERS'
              'k~WKURS'         'k~ZTERM' 'k~LIFNR'    'k~AEDAT'      'k~KONTEJ'     'k~BNDDT'          'p~EBELP'
              'p~KONNR'         'p~KTPNR' 'k~LOEKZ'    'p~WERKS'      'p~LGORT'      'p~MATNR'          'p~TXZ01'
              'p~MENGE'         'p~KTMNG' 'p~NETPR'    'p~ZZFIRSTDEL' 'p~ZZFIRSTDEL' 'p~ZZNEXTSHIPDATE' 'p~ZZLASTSHIP'
              'p~ZZENERGYLABEL' 'k~KNUMV' 'm~BRAND_ID' 'm~ZZETAWEKGR' 'm~EXTWG'      'k~PROCSTAT'       'e~KONDM'
              INTO fields SEPARATED BY space.

  " dle sestavy
  CASE 'X'.
    WHEN p_rad1.  " kontrakt
      c_bsart = 'MK'.
      c_bstyp = 'K'.

    WHEN p_rad2.  " objednvka
      c_bsart = 'NB'.
      c_bstyp = 'F'.

    WHEN p_rad3.  " poadavek na objednavku
      c_bsart = 'ZSER'.
      c_bsart2 = 'ZETA'.
      c_bstyp = 'B'.

      CLEAR: fields.
      CONCATENATE 'n~banfn' 'n~bnfpo'    'n~ernam'      'n~erdat' 'n~afnam' 'n~txz01' 'n~matnr' 'n~werks' 'n~lfdat'
                  'n~lgort' 'n~matkl'    'n~menge'      'n~badat' 'n~lifnr' 'n~fordn' 'n~fordp' 'n~blckd' 'n~loekz'
                  'n~blckt' 'm~BRAND_ID' 'm~ZZETAWEKGR' 'm~EXTWG' 'e~KONDM'
                  INTO fields SEPARATED BY space.
  ENDCASE.

  PERFORM build_dynamic_cond.

ENDFORM.
*&-----------------------------------------------------------------*
*&      Form get_field_labels                                      *
*&-----------------------------------------------------------------*
*       Dothnut textovch nzv pro jednotliv pole              *
*------------------------------------------------------------------*
FORM get_field_labels.

  " nzev bank
  IF it_t610ot[] IS INITIAL.
    SELECT * FROM t610ot INTO CORRESPONDING FIELDS OF TABLE it_t610ot
      WHERE spras EQ 'CS' AND
            behoe LIKE 'ETA%'.
  ENDIF.

  " dopravci
  IF it_lifnr[] IS INITIAL.
    SELECT lifnr name1 FROM lfa1 INTO CORRESPONDING FIELDS OF TABLE it_lifnr
      WHERE bahns EQ 'ETADOPRAVA'.
  ENDIF.

  IF it_pristav[] IS INITIAL.
    SELECT zkey text FROM zeta_ciselniky INTO CORRESPONDING FIELDS OF TABLE it_pristav
      WHERE name LIKE 'ZETA_PRISTAV'.
  ENDIF.

  IF it_kontej[] IS INITIAL.
    SELECT zkey text FROM zeta_ciselniky INTO CORRESPONDING FIELDS OF TABLE it_kontej
      WHERE name LIKE 'ZETA_KONTEJ'.
  ENDIF.

  IF it_extwg[] IS INITIAL.
    SELECT * FROM twewt INTO CORRESPONDING FIELDS OF TABLE it_extwg
      WHERE spras EQ 'CS'.
  ENDIF.

  IF it_brand[] IS INITIAL.
    SELECT * FROM wrf_brands_t INTO CORRESPONDING FIELDS OF TABLE it_brand
      WHERE language EQ 'CS'.
  ENDIF.

  IF it_kondm[] IS INITIAL.
    SELECT * FROM t178t INTO CORRESPONDING FIELDS OF TABLE it_kondm
      WHERE spras EQ 'CS'.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  BUILD_DYNAMIC_COND
*&---------------------------------------------------------------------*
*       podle toho kter vstupn filtry jsou vyplnny sestavim select
*----------------------------------------------------------------------*
FORM build_dynamic_cond .
  REFRESH: i_cond.
  CLEAR: i_cond.

  IF p_rok IS NOT INITIAL.
    CLEAR: so_bedat.
    REFRESH so_bedat.
    so_bedat-sign = 'I'.
    so_bedat-option = 'BT'.
    CONCATENATE p_rok '0101' INTO so_bedat-low.
    CONCATENATE p_rok '1231' INTO so_bedat-high.
    APPEND so_bedat.
  ENDIF.

  IF p_rad3 EQ 'X'. " poadavek na objednvku
    " v ppad BSART u poadavku na objednvku existuje ZSER a ZETA
    CONCATENATE 'n~bsart' 'IN' '(c_bsart,c_bsart2)' INTO wa_cond SEPARATED BY space.
    i_cond-text = wa_cond.
    APPEND i_cond.

    " v pipade kdy zadm artikl vrobku a k nemu dohledvm ND
    IF so_matn2[] IS NOT INITIAL.
      CALL FUNCTION 'ZETA_FM_SEARCH_ND'
        EXPORTING
          view    = ''
        TABLES
          t_matnr = so_matn2
          t_idnrk = so_matnr.
    ENDIF.

    PERFORM f_dyn_param_bld: USING c_bstyp 'n~bstyp' 'EQ' 'c_bstyp',
                             USING p_lifnr 'n~lifnr' 'EQ' 'p_lifnr',
                             USING c_ekorg 'n~ekorg' 'EQ' 'c_ekorg'.

    IF p_blok2 EQ 'X'.
      gv_blckd = ''.

      PERFORM f_dyn_param_bld: USING 'X'     'n~blckd' 'EQ' 'gv_blckd'.

    ELSEIF p_blok3 EQ 'X'.
      gv_blckd = '1'.

      PERFORM f_dyn_param_bld: USING 'X'     'n~blckd' 'EQ' 'gv_blckd'.
    ENDIF.




    IF p_loekz EQ ''.
      PERFORM f_dyn_param_bld: USING 'X' 'n~loekz' 'EQ' 'c_loekz'.
    ENDIF.

    PERFORM f_dyn_range_bld: TABLES so_bedat[] USING 'n~badat' 'IN' 'so_bedat',
                             TABLES so_ebeln[] USING 'n~banfn' 'IN' 'so_ebeln',
                             TABLES so_ekgrp[] USING 'n~ekgrp' 'IN' 'so_ekgrp',
                             TABLES so_matnr[] USING 'n~matnr' 'IN' 'so_matnr',
                             TABLES so_werks[] USING 'n~werks' 'IN' 'so_werks',
                             TABLES so_ernam[] USING 'n~ERNAM' 'IN' 'so_ernam',
                             TABLES so_fordn[] USING 'n~FORDN' 'IN' 'so_fordn'.

  ELSE. " kontrakt, objednvka


    PERFORM f_dyn_param_bld: USING c_bsart 'k~bsart' 'EQ' 'c_bsart',
                             USING c_bstyp 'k~bstyp' 'EQ' 'c_bstyp',
                             USING p_lifnr 'k~lifnr' 'EQ' 'p_lifnr',
                             USING c_ekorg 'k~ekorg' 'EQ' 'c_ekorg',
                             USING c_ekorg 'k~bukrs' 'EQ' 'c_ekorg'.

    IF p_loekz EQ ''.
      PERFORM f_dyn_param_bld: USING 'X' 'k~loekz' 'EQ' 'c_loekz'.
      PERFORM f_dyn_param_bld: USING 'X' 'p~loekz' 'EQ' 'c_loekz'.
    ENDIF.

    REFRESH: lt_exnum.
    IF so_nacd4[] IS NOT INITIAL.
      SELECT DISTINCT exnum AS low FROM eipo INTO CORRESPONDING FIELDS OF TABLE lt_exnum
        WHERE nacd4 IN so_nacd4.

      LOOP AT lt_exnum.
        lt_exnum-sign = 'I'.
        lt_exnum-option = 'EQ'. "BT
        MODIFY lt_exnum.
      ENDLOOP.

    ENDIF.

    PERFORM f_dyn_range_bld: TABLES so_bedat[] USING 'k~bedat' 'IN' 'so_bedat',
                             TABLES so_ebeln[] USING 'k~ebeln' 'IN' 'so_ebeln',
                             TABLES so_ekgrp[] USING 'k~ekgrp' 'IN' 'so_ekgrp',
                             TABLES so_waers[] USING 'k~waers' 'IN' 'so_waers',
                             TABLES so_ernam[] USING 'K~ERNAM' 'IN' 'so_ernam',
                             TABLES so_matnr[] USING 'p~matnr' 'IN' 'so_matnr',
                             TABLES so_werks[] USING 'p~werks' 'IN' 'so_werks',
                             TABLES lt_exnum[] USING 'k~exnum' 'IN' 'lt_exnum'.

    IF p_faz2 EQ 'X'.
      gv_procstat = '01'.
      PERFORM f_dyn_param_bld: USING 'X' 'k~procstat' 'EQ' 'gv_procstat'.
    ELSEIF p_faz3 EQ 'X'.
      gv_procstat = '03'.
      PERFORM f_dyn_param_bld: USING 'X' 'k~procstat' 'EQ' 'gv_procstat'.
    ELSEIF p_faz4 EQ 'X'.
      gv_procstat = '05'.
      PERFORM f_dyn_param_bld: USING 'X' 'k~procstat' 'EQ' 'gv_procstat'.
    ENDIF.

    IF p_pay2 EQ 'X'.
      gv_zterm = 'L%'.
      PERFORM f_dyn_param_bld: USING 'X' 'k~zterm' 'LIKE' 'gv_zterm'.
    ELSEIF p_pay3 EQ 'X'.
      gv_zterm = 'TT%'.
      PERFORM f_dyn_param_bld: USING 'X' 'k~zterm' 'LIKE' 'gv_zterm'.
    ELSEIF p_pay4 EQ 'X'.
      gv_zterm = 'T%'.
      PERFORM f_dyn_param_bld: USING 'X' 'k~zterm' 'LIKE' 'gv_zterm'.
    ENDIF.

  ENDIF.

  "mara
  IF p_rad3 NE 'X'.
    PERFORM f_dyn_range_bld: TABLES so_wekgr[] USING 'm~zzetawekgr' 'IN' 'so_wekgr',
                             TABLES so_extwg[] USING 'm~extwg'      'IN' 'so_extwg',
                             TABLES so_brand[] USING 'm~brand_id'   'IN' 'so_brand'.
  ENDIF.


  " mvke
  PERFORM f_dyn_param_bld: USING 'X' 'e~vkorg' 'EQ' 'c_ekorg',
                           USING 'X' 'e~vtweg' 'EQ' 'c_vtweg'.

  PERFORM f_dyn_range_bld:  TABLES so_kondm[] USING 'e~kondm'      'IN' 'so_kondm'.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  f_dyn_range_bld
*&---------------------------------------------------------------------*
*       text:Build Dynamic field table
*----------------------------------------------------------------------*
FORM f_dyn_param_bld  USING i_param
                            i_tab_field
                            i_operator
                            i_input.

  CLEAR: wa_cond.
  IF i_param IS NOT INITIAL.
    IF i_cond[] IS INITIAL.
      CONCATENATE i_tab_field i_operator i_input INTO wa_cond SEPARATED BY space.
    ELSE.
      CONCATENATE 'AND' i_tab_field i_operator i_input INTO wa_cond SEPARATED BY space.
    ENDIF.

    i_cond-text = wa_cond.
    APPEND i_cond.
    CLEAR i_cond.
  ENDIF.

ENDFORM.                    " f_dyn_range_bld
*&---------------------------------------------------------------------*
*&      Form  f_dyn_range_bld
*&---------------------------------------------------------------------*
*       text:Build Dynamic range table
*----------------------------------------------------------------------*
FORM f_dyn_range_bld TABLES lt_input STRUCTURE bapi_rangesvtweg
                     USING  i_tab_field
                            i_operator
                            i_input.

  CLEAR: wa_cond.
  IF lt_input[] IS NOT INITIAL.
    CONCATENATE 'AND' i_tab_field i_operator i_input INTO wa_cond SEPARATED BY space.
    i_cond-text = wa_cond.
    APPEND i_cond.
    CLEAR i_cond.
  ENDIF.

ENDFORM.                    " f_dyn_range_bld
*&-----------------------------------------------------------------*
*&      Form  DATA_RETRIEVAL                                       *
*&-----------------------------------------------------------------*
*       Zskn dat                                                *
*------------------------------------------------------------------*
FORM data_retrieval.
  REFRESH: itab, lt_lifnr.

  IF p_rad3 NE 'X'. " objednvka, kontrakt
    SELECT (fields) FROM ekko AS k INNER JOIN ekpo AS p ON k~ebeln = p~ebeln
                                   INNER JOIN mara AS m ON p~matnr = m~matnr
                                   INNER JOIN mvke AS e ON p~matnr = e~matnr
       INTO CORRESPONDING FIELDS OF TABLE itab
        WHERE (i_cond).

    IF p_first EQ 'X'.
      DELETE itab WHERE zzfirstdel NE 'X'.
    ENDIF.

    IF p_last EQ 'X'.
      DELETE itab WHERE zzlastship NE 'X'.
    ENDIF.

    IF p_nfirst EQ 'X'.
      DELETE itab WHERE zzfirstdel EQ 'X'.
    ENDIF.

    IF p_nlast EQ 'X'.
      DELETE itab WHERE zzlastship EQ 'X'.
    ENDIF.

    IF p_pay4 EQ 'X'.
      DELETE itab WHERE zterm(2) EQ 'TT'.
    ENDIF.

  ELSE. " poadavek na objednvku
    SELECT (fields) FROM eban AS n INNER JOIN mara AS m ON n~matnr = m~matnr
                                   INNER JOIN mvke AS e ON n~matnr = e~matnr
       INTO CORRESPONDING FIELDS OF TABLE itab
        WHERE (i_cond).
  ENDIF.

  " vytvom si tabulku s dodavateli pro rychlej vyhledvn potebnch parametr
  PERFORM get_lifnr_name.

  "--------------------------------------------------------------------------------
  LOOP AT itab INTO wa_itab.

    " kontrakt
    IF p_rad1 EQ 'X'.
      PERFORM release_quantity USING wa_itab-ebeln wa_itab-ebelp wa_itab-ktmng
                            CHANGING wa_itab-menge.

      IF wa_itab-menge GT 0.
        wa_itab-stav_icon = '@5B@'.
      ELSE.
        wa_itab-stav_icon = '@5C@'.

      ENDIF.


      IF p_price EQ 'X'.
        REFRESH: lt_kon_item.
        CALL FUNCTION 'ZETA_FM_READ_CONTRACT'
          EXPORTING
            i_ebeln     = wa_itab-ebeln
            i_ebelp     = wa_itab-ebelp
          IMPORTING
            e_condition = wa_kon_cond
          TABLES
            t_item      = lt_kon_item.

        READ TABLE lt_kon_item INTO wa_kon_item INDEX 1.

        wa_itab-zsc  = wa_kon_item-zsc.
        wa_itab-zvnc = wa_kon_item-zvnc.
        wa_itab-zexv = wa_kon_item-zexv.
        wa_itab-zonc = wa_kon_item-zonc.
        wa_itab-zexp = wa_kon_item-zexp.
        wa_itab-zexf = wa_kon_item-zexf.

        wa_itab-zclo       = wa_kon_item-zclo.
        wa_itab-zfr        = wa_kon_cond-prodc.
        wa_itab-zfee       = wa_kon_item-zfee.
        wa_itab-zate       = wa_kon_item-zate.
        wa_itab-zate_waers = wa_kon_item-zate_waers.
        wa_itab-zsgd       = wa_kon_item-zsgd.
        wa_itab-zsgd_waers = wa_kon_cond-waein.
      ENDIF.

      wa_itab-netpr_sum = wa_itab-netpr * wa_itab-ktmng.

      " objednvka
    ELSEIF p_rad2 EQ 'X'.
      " zjitn SC, VNC, EXV, ONC, EXP,
      PERFORM get_price CHANGING wa_itab.
      wa_itab-netpr_sum = wa_itab-netpr * wa_itab-menge.

      " na mench objednvkch muou bt rzn nakupci v tom ppad je nakupce AUT a nutno natahnout z kontraktu
      IF wa_itab-ekgrp EQ 'AUT'.
        SELECT SINGLE ekgrp FROM ekko INTO wa_itab-ekgrp
          WHERE ebeln EQ wa_itab-konnr.
      ENDIF.

      " kontrola zda exituje prijimana dodavka a dotahnut informaci
      PERFORM check_vbeln_exist CHANGING wa_itab.

      " slo faktury a datum faktury za zbo
      IF wa_itab-vbeln IS NOT INITIAL.
        DATA: lt_rbkp  LIKE rbkp OCCURS 0 WITH HEADER LINE,
              lv_lifnr TYPE lifnr.

        IF lv_lifnr NE wa_itab-lifnr.
          REFRESH: lt_rbkp.
          SELECT * FROM rbkp INTO CORRESPONDING FIELDS OF TABLE lt_rbkp
            WHERE lifnr EQ wa_itab-lifnr AND
                  bukrs EQ '2100'        AND
                  budat GE wa_itab-aedat.

          lv_lifnr = wa_itab-lifnr.
        ENDIF.

        LOOP AT lt_rbkp.
          DATA: lv_ebeln LIKE ekko-ebeln,
                lv_ebelp LIKE ekpo-ebelp.

          CLEAR: lv_ebeln, lv_ebelp.
          SELECT SINGLE ebeln ebelp FROM rseg INTO ( lv_ebeln, lv_ebelp )
            WHERE belnr EQ lt_rbkp-belnr AND
                  gjahr EQ lt_rbkp-gjahr.

          IF lv_ebeln EQ wa_itab-ebeln AND lv_ebelp EQ wa_itab-ebelp.
            wa_itab-bldat = lt_rbkp-bldat.
            wa_itab-xblnr = lt_rbkp-xblnr.
            EXIT.
          ENDIF.
        ENDLOOP.

*        CLEAR: lv_belnr, lv_gjahr, wa_itab-bldat, wa_itab-xblnr.
*        SELECT SINGLE belnr gjahr FROM rseg INTO ( lv_belnr, lv_gjahr )
*          WHERE ebeln EQ wa_itab-ebeln AND
*                ebelp EQ wa_itab-ebelp.
*
*        IF lv_belnr IS NOT INITIAL.
*          SELECT SINGLE bldat xblnr FROM rbkp INTO ( wa_itab-bldat, wa_itab-xblnr )
*            WHERE belnr EQ lv_belnr AND
*                  gjahr EQ lv_gjahr.
*        ENDIF.
      ENDIF.

      " datum dodvky
      IF lv_ebeln NE wa_itab-ebeln.
        CLEAR: is_itab.
        SELECT SINGLE eindt FROM eket INTO is_itab-eindt
          WHERE ebeln EQ wa_itab-ebeln.

        PERFORM read_text USING: 'F21' wa_itab-ebeln CHANGING is_itab-fakt_dopr,
                                 'F22' wa_itab-ebeln CHANGING is_itab-jsd.
      ENDIF.
      lv_vbeln = wa_itab-vbeln.

    ELSEIF  p_rad3 EQ 'X'.
      " dohledm si artikl ke kteremu je udlan poadavek na ND a dohledm k nemu aktegorii a podkategorii
      IF wa_itab-fordn IS NOT INITIAL AND wa_itab-fordp IS NOT INITIAL.
        SELECT SINGLE matnr FROM ekpo INTO wa_itab-matn2
          WHERE ebeln EQ wa_itab-fordn AND
                ebelp EQ wa_itab-fordp.

      ELSE.
        SELECT SINGLE matnr FROM mast AS m INNER JOIN stpo AS s ON m~stlnr = s~stlnr INTO wa_itab-matn2
          WHERE idnrk EQ wa_itab-matnr.
      ENDIF.

      SELECT SINGLE brand_id extwg zzetawekgr FROM mara INTO CORRESPONDING FIELDS OF wa_itab
        WHERE matnr EQ wa_itab-matn2.

      CALL FUNCTION 'ZETA_FM_OPEN_POBJ'
        EXPORTING
          i_banfn = wa_itab-banfn
          i_bnfpo = wa_itab-bnfpo
          i_menge = wa_itab-menge
        IMPORTING
          e_menge = wa_itab-menge_o.

      " dohledm si objednvku ktr byla vystavena na tento poadavek
      REFRESH: lt_ekpo.
      CLEAR: lt_ekpo.
      SELECT ebeln ebelp FROM ekpo INTO CORRESPONDING FIELDS OF TABLE lt_ekpo
        WHERE banfn EQ wa_itab-banfn AND
              bnfpo EQ wa_itab-bnfpo.

      READ TABLE lt_ekpo INDEX 1.
      wa_itab-ebel2 = lt_ekpo-ebeln.
      wa_itab-ebelp = lt_ekpo-ebelp.

      DESCRIBE TABLE lt_ekpo LINES lv_lines.
      IF lv_lines GT 1.
        CONCATENATE '@1E@' wa_itab-ebel2 INTO wa_itab-ebel2 SEPARATED BY space.
      ENDIF.

    ENDIF.

    " dohledm master dodavatele
    SELECT SINGLE lifn2 FROM wyt3 INTO is_itab-lifnr_em
      WHERE lifnr EQ wa_itab-lifnr AND
            ekorg EQ '2100' AND
            parvw EQ 'EM'.

    SELECT SINGLE name1 FROM lfa1 INTO is_itab-name1_em
      WHERE lifnr EQ is_itab-lifnr_em.

    " hlavikov udaje ktere se polokov nemn
    wa_itab-eindt     = is_itab-eindt.
    wa_itab-lifnr_em  = is_itab-lifnr_em.
    wa_itab-name1_em  = is_itab-name1_em.
    wa_itab-fakt_dopr = is_itab-fakt_dopr.
    wa_itab-jsd       = is_itab-jsd.

    " ikona v ppad statusu vymazno
    IF wa_itab-loekz IS NOT INITIAL.
      wa_itab-loekz_icon = '@11@'.
    ENDIF.

    " status uvolnno/neuvolnno pro kontrakt
    IF wa_itab-procstat EQ '01' .
      wa_itab-procstat_icon = '@5D@'.

    ELSEIF wa_itab-procstat EQ '03'.
      wa_itab-procstat_icon = '@FD@'.

    ELSE.
      wa_itab-procstat_icon = '@5B@'.
    ENDIF.

    " proforma, akreditiv, pstav, ....
*    IF p_rad2 EQ 'X'.
*      SELECT SINGLE exnum FROM ekko INTO wa_itab-exnum
*        WHERE ebeln EQ wa_itab-konnr.
*
*    ENDIF.

    IF wa_itab-exnum IS NOT INITIAL.
*      IF lv_exnum NE itab-exnum.
      SELECT SINGLE pronu proda nacnu nacda nacn2 nacd2 nacd3 nahoe nacn4 nacd4 FROM eipo
        INTO CORRESPONDING FIELDS OF wa_itab
        WHERE exnum EQ wa_itab-exnum AND
              expos EQ wa_itab-ebelp.

      CLEAR: it_t610ot.
      READ TABLE it_t610ot WITH KEY behoe = wa_itab-nahoe BINARY SEARCH.
      wa_itab-bezei60 = it_t610ot-bezei60.
    ENDIF.

    " rozdeleni kontajneru na pocet a velikost
    SPLIT wa_itab-kontej AT ';' INTO wa_itab-kontej_1 wa_itab-kontej_2.

    " jmnno nkupce
    CLEAR: it_ekgrp.
    READ TABLE it_ekgrp WITH KEY ekgrp = wa_itab-ekgrp BINARY SEARCH.
    wa_itab-eknam = it_ekgrp-eknam.

    " jmno dodavatele
    CLEAR: lt_lifnr.
    READ TABLE lt_lifnr WITH KEY lifnr = wa_itab-lifnr BINARY SEARCH.
    wa_itab-name1 = lt_lifnr-name1.

    " nzev pstavu
    CLEAR: it_pristav.
    READ TABLE it_pristav WITH KEY zkey = wa_itab-nacn4 BINARY SEARCH.
    wa_itab-nacn4_text = it_pristav-text.

    " nzev kontejner
    CLEAR: it_kontej.
    READ TABLE it_kontej WITH KEY zkey = wa_itab-kontej_2 BINARY SEARCH.
    wa_itab-kontej_2_text = it_kontej-text.

    " nazev znaky
    CLEAR: it_brand.
    READ TABLE it_brand WITH KEY brand_id = wa_itab-brand_id BINARY SEARCH.
    wa_itab-brand_label = it_brand-brand_descr.

    " nzev podkategorie
    CLEAR: it_extwg.
    READ TABLE it_extwg WITH KEY extwg = wa_itab-extwg BINARY SEARCH.
    wa_itab-extwg_label = it_extwg-ewbez.

    " nzev druhu zbo
    CLEAR: it_kondm.
    READ TABLE it_kondm WITH KEY kondm = wa_itab-kondm BINARY SEARCH.
    wa_itab-kondm_label = it_kondm-vtext.

    MODIFY itab FROM wa_itab.
  ENDLOOP.

  IF p_mlifnr IS NOT INITIAL.
    DELETE itab WHERE lifnr_em NE p_mlifnr.
  ENDIF.

  " smazn kontraktu dle toho zda se ejdn o oteven nebo vyerpan
  IF p_kon2 EQ 'X'.
    DELETE itab WHERE menge EQ 0.

  ELSEIF p_kon3 EQ 'X'.
    DELETE itab WHERE menge NE 0.

  ENDIF.

  IF p_rad3 EQ 'X'.
    IF so_brand[] IS NOT INITIAL.
      DELETE itab WHERE brand_id NOT IN so_brand.
    ENDIF.

    IF so_wekgr[] IS NOT INITIAL.
      DELETE itab WHERE zzetawekgr NOT IN so_wekgr.
    ENDIF.

    IF so_extwg[] IS NOT INITIAL.
      DELETE itab WHERE extwg NOT IN so_extwg.
    ENDIF.
  ENDIF.

  " fitlr pro datum proformy a sla proformy
  IF so_pronu[] IS NOT INITIAL.
    DELETE itab WHERE pronu NOT IN so_pronu.
  ENDIF.

  IF so_proda[] IS NOT INITIAL.
    DELETE itab WHERE proda NOT IN so_proda.
  ENDIF.

  IF so_fakdo[] IS NOT INITIAL.
    DELETE itab WHERE fakt_dopr NOT IN so_fakdo.
  ENDIF.

ENDFORM.                    "data_retrieval
*------------------------------------------------------------------*
*       GET_LIFNR_NAME                                             *
*------------------------------------------------------------------*
*       Zskn jmena dodavatele                                   *
*------------------------------------------------------------------*
FORM get_lifnr_name.
  lt_lifnr[] = itab[].

  SORT lt_lifnr BY lifnr.
  DELETE ADJACENT DUPLICATES FROM lt_lifnr COMPARING lifnr.

  LOOP AT lt_lifnr.
    " jmno dodavatele
    SELECT SINGLE name1 FROM lfa1 INTO lt_lifnr-name1
      WHERE lifnr EQ lt_lifnr-lifnr.

    MODIFY lt_lifnr.
  ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  RELEASE_QUANTITY
*&---------------------------------------------------------------------*
*       Oteven mnostv v kontraktech
*----------------------------------------------------------------------*
FORM release_quantity  USING    p_ebeln
                                p_ebelp
                                p_ktmng
                       CHANGING p_menge.

  DATA: lv_menge LIKE ekab-menge.

  CLEAR:   lv_menge.
  " prodann mnostv
  CALL FUNCTION 'ME_READ_RELEASE_QUANTITY'
    EXPORTING
      i_konnr       = p_ebeln
      i_ktpnr       = p_ebelp
      i_all_entries = 'X'
    IMPORTING
      e_abmng       = lv_menge.

  p_menge = p_ktmng - lv_menge.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  GET_PRICE
*&---------------------------------------------------------------------*
*       zjistn ceny objednvky
*----------------------------------------------------------------------*
FORM get_price CHANGING ls_itab LIKE itab.
  DATA: lt_konv LIKE konv OCCURS 0 WITH HEADER LINE,
        lv_kurz TYPE kkurs.

  CLEAR: lv_kurz.

  REFRESH: lt_konv.
  SELECT * FROM konv INTO CORRESPONDING FIELDS OF TABLE lt_konv
    WHERE knumv EQ ls_itab-knumv AND
          kposn EQ ls_itab-ebelp.

  PERFORM read_cond TABLES lt_konv USING: 'PBXX' CHANGING ls_itab-netpr ls_itab-wkurs,
                                          'ZSC'  CHANGING ls_itab-zsc   lv_kurz,
                                          'ZVNC' CHANGING ls_itab-zvnc  lv_kurz,
                                          'ZEXV' CHANGING ls_itab-zexv  lv_kurz,
                                          'ZONC' CHANGING ls_itab-zonc  lv_kurz,
                                          'ZEXP' CHANGING ls_itab-zexp  lv_kurz,
                                          'ZEXF' CHANGING ls_itab-zexf  lv_kurz.

  " PBXX v CZK
  IF ls_itab-wkurs IS NOT INITIAL.
    ls_itab-pbxx_cz = ls_itab-netpr * ls_itab-wkurs.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form read_cond
*&---------------------------------------------------------------------*
*       Naten jednotlivch cen z tabulky
*----------------------------------------------------------------------*
FORM read_cond TABLES t_konv STRUCTURE konv
               USING  p_kschl
               CHANGING p_price p_kurz.

  CLEAR: t_konv.
  READ TABLE t_konv WITH KEY kschl = p_kschl.

  p_price =  t_konv-kbetr.
  p_kurz =  t_konv-kkurs.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  CHECK_VBELN_EXIST
*&---------------------------------------------------------------------*
*       Kontrola zda ji existuje pijman dodavka
*----------------------------------------------------------------------*
FORM check_vbeln_exist  CHANGING ls_itab LIKE wa_itab.

  " pijman dodvka
  CLEAR: w_itab-vbeln, w_itab-posnr.
  SELECT SINGLE vbeln posnr FROM lips INTO ( w_itab-vbeln, w_itab-posnr )
    WHERE vgbel EQ ls_itab-ebeln AND
          vgpos EQ ls_itab-ebelp.

  IF w_itab-vbeln NE lv_vbeln.

    IF w_itab-vbeln IS INITIAL.
      w_itab-wbstk_icon = '@5C@'.

    ELSE.
      " status prijmu
      CLEAR: w_itab-wbstk.
      SELECT SINGLE wbstk FROM vbuk INTO w_itab-wbstk
          WHERE vbeln EQ w_itab-vbeln.

      " status prijato/neprijato
      IF w_itab-wbstk EQ 'C' .
        w_itab-wbstk_icon = '@5B@'.
      ELSE.
        w_itab-wbstk_icon = '@5C@'.
      ENDIF.

      CLEAR: w_itab-erdat_v, w_itab-traid.
      SELECT SINGLE erdat traid FROM likp INTO ( w_itab-erdat_v, w_itab-traid )
        WHERE vbeln EQ w_itab-vbeln.

      CLEAR: w_itab-tknum.
      SELECT SINGLE tknum FROM vttp INTO w_itab-tknum
        WHERE vbeln EQ w_itab-vbeln.

      CLEAR: w_itab-signi, w_itab-exti1, w_itab-exti2, w_itab-dpreg, w_itab-upreg.
      SELECT SINGLE signi exti1 exti2 dpreg upreg FROM vttk INTO CORRESPONDING FIELDS OF w_itab
        WHERE tknum EQ w_itab-tknum.

      CLEAR: w_itab-lifnr_tknum.
      SELECT SINGLE lifnr FROM vtpa INTO w_itab-lifnr_tknum
        WHERE vbeln EQ w_itab-tknum AND
              parvw EQ 'TF'.

      CLEAR: it_lifnr, w_itab-name1_tknum.
      READ TABLE it_lifnr WITH KEY lifnr = w_itab-lifnr_tknum.
      w_itab-name1_tknum = it_lifnr-name1.
    ENDIF.
  ENDIF.

  ls_itab-vbeln       = w_itab-vbeln.
  ls_itab-posnr       = w_itab-posnr.
  ls_itab-lifnr_tknum = w_itab-lifnr_tknum.
  ls_itab-name1_tknum = w_itab-name1_tknum.
  ls_itab-signi       = w_itab-signi.
  ls_itab-exti1       = w_itab-exti1.
  ls_itab-exti2       = w_itab-exti2.
  ls_itab-dpreg       = w_itab-dpreg.
  ls_itab-upreg       = w_itab-upreg.
  ls_itab-tknum       = w_itab-tknum.
  ls_itab-wbstk_icon  = w_itab-wbstk_icon.
  ls_itab-wbstk       = w_itab-wbstk.
  ls_itab-traid       = w_itab-traid.
  ls_itab-erdat_v     = w_itab-erdat_v.

ENDFORM.
*------------------------------------------------------------------*
*       FORM USER_COMMAND  voln metod pro double klick apod      *
*------------------------------------------------------------------*
*       --> R_UCOMM                                                *
*       --> RS_SELFIELD                                            *
*------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm " funkce pro double klick na cSP
                  rs_selfield TYPE slis_selfield.

  READ TABLE itab INDEX rs_selfield-tabindex.

  CASE r_ucomm.
    WHEN 'REFRESH'. " update
      PERFORM data_retrieval.
      rs_selfield-refresh = 'X'.

    WHEN '&IC1'.
      CASE rs_selfield-fieldname .
        WHEN 'EBELN'.
          IF p_rad1 EQ 'X'. " proklik kontrakt/ objednvka
*            SET PARAMETER ID 'KON' FIELD itab-ebeln.
*            CALL TRANSACTION 'ZETA_KONTRAKT_NAHLED' AND SKIP FIRST SCREEN.
            PERFORM call_transaction USING itab-ebeln 'K'.

          ELSEIF p_rad2 EQ 'X'.
*            SET PARAMETER ID 'BES' FIELD itab-ebeln.
*            CALL TRANSACTION 'ZETA_OBJ_NAHLED' AND SKIP FIRST SCREEN.
            PERFORM call_transaction USING itab-ebeln 'F'.

          ELSE.
            PERFORM call_transaction USING itab-ebeln 'K'.
*            SET PARAMETER ID 'BES' FIELD rs_selfield-value.
*            CALL TRANSACTION 'ZETA_OBJ_NAHLED' AND SKIP FIRST SCREEN.
          ENDIF.

        WHEN 'EBEL2'.
          IF rs_selfield-value CS '@1E@'.
            PERFORM get_ebeln_list USING itab-banfn itab-bnfpo.
          ELSE.
*            SET PARAMETER ID 'BES' FIELD rs_selfield-value.
*            CALL TRANSACTION 'ZETA_OBJ_NAHLED' AND SKIP FIRST SCREEN.
            PERFORM call_transaction USING rs_selfield-value 'K'.
          ENDIF.


*            SET PARAMETER ID 'BES' FIELD itab-ebel2+5.
*            CALL TRANSACTION 'ZETA_OBJ_NAHLED' AND SKIP FIRST SCREEN.

        WHEN 'BANFN'.       " proklik POBJ
*          SET PARAMETER ID 'BAN' FIELD itab-banfn.
*          CALL TRANSACTION 'ZETA_PO_NAHLED' AND SKIP FIRST SCREEN.
          PERFORM call_transaction USING itab-banfn 'B'.

        WHEN 'KONNR'.       " proklik kontrakt z objednvky
*          SET PARAMETER ID 'KON' FIELD itab-konnr.
*          CALL TRANSACTION 'ZETA_KONTRAKT_NAHLED' AND SKIP FIRST SCREEN.
          PERFORM call_transaction USING itab-konnr 'K'.

        WHEN 'LIFNR'.       " proklik dodavatel
          SET PARAMETER ID 'LIF' FIELD itab-lifnr.

          SET PARAMETER ID 'BUK' FIELD '2100'.
          SET PARAMETER ID 'EKO' FIELD '2100'.
          CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.

        WHEN 'MATNR'.       " proklik artikl
          SET PARAMETER ID 'MAT' FIELD itab-matnr.
          SET PARAMETER ID 'EKO' FIELD '2100'.
          SET PARAMETER ID 'LIF' FIELD itab-lifnr.

          CALL TRANSACTION 'MM43' AND SKIP FIRST SCREEN.

        WHEN 'VBELN'.       " proklik prijimana dodvka
          REFRESH: bdcdata_tab.
          CLEAR bdcdata_wa.
          bdcdata_wa-program  = 'SAPMV50A'.
          bdcdata_wa-dynpro   = '4104'.
          bdcdata_wa-dynbegin = 'X'.
          bdcdata_wa-fnam = 'LIKP-VBELN'.

          bdcdata_wa-fval = itab-vbeln.
          APPEND bdcdata_wa TO bdcdata_tab.

          bdcdata_wa-fnam = 'BDC_OKCODE'.
          bdcdata_wa-fval = '=PICK'.
          APPEND bdcdata_wa TO bdcdata_tab.

          opt-dismode = 'E'.
          SET PARAMETER ID 'VL' FIELD itab-vbeln.
          CALL TRANSACTION 'VL33N' USING bdcdata_tab OPTIONS FROM opt.

        WHEN 'TKNUM'.       " proklik peprava
          SET PARAMETER ID 'TNR' FIELD itab-tknum.
          CALL TRANSACTION 'VT03N' AND SKIP FIRST SCREEN.
      ENDCASE.
  ENDCASE.
ENDFORM.                    "user_command
*&---------------------------------------------------------------------*
*&      Form  READ_TEXT
*&---------------------------------------------------------------------*
*       Naten poznmky do pole
*----------------------------------------------------------------------*
FORM read_text  USING p_id p_name
             CHANGING p_text.

  DATA: lines   LIKE  tline OCCURS 0 WITH HEADER LINE,
        lv_name LIKE thead-tdname.

  lv_name = p_name.
  REFRESH: lines.
  CALL FUNCTION 'READ_TEXT'
    EXPORTING
      id                      = p_id
      language                = 'C'
      name                    = lv_name
      object                  = 'EKKO'
    TABLES
      lines                   = lines
    EXCEPTIONS
      id                      = 1
      language                = 2
      name                    = 3
      not_found               = 4
      object                  = 5
      reference_check         = 6
      wrong_access_to_archive = 7
      OTHERS                  = 8.

  CLEAR: lines.
  READ TABLE lines INDEX 1.
  p_text = lines-tdline.


ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  SAVE_INPUT_VARIANT
*&---------------------------------------------------------------------*
*       Uloen vstupn varianty
*----------------------------------------------------------------------*
FORM save_input_variant .
  CALL FUNCTION 'ZETA_FM_SAVE_INPUT_VARIANT'
    EXPORTING
      i_cprog = sy-cprog
      i_dynnr = sy-dynnr.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  GET_INPUT_VARIANT
*&---------------------------------------------------------------------*
*       Naten vstupn varianty
*----------------------------------------------------------------------*
FORM get_input_variant .

  CALL FUNCTION 'ZETA_FM_READ_INPUT_VARIANT'
    EXPORTING
      i_report = sy-cprog.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  GET_EBELN_LIST
*&---------------------------------------------------------------------*
*       Seznam objednvek
*----------------------------------------------------------------------*
FORM get_ebeln_list  USING    p_banfn
                              p_bnfpo.

  REFRESH: lt_ekpo.
  SELECT * FROM ekpo INTO CORRESPONDING FIELDS OF TABLE lt_ekpo
    WHERE banfn EQ p_banfn AND
          bnfpo EQ p_bnfpo.


  lt_layout-zebra = 'X'.
  PERFORM build_fieldcat.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = sy-repid
      i_callback_user_command = 'USER_COMMAND'
      i_grid_title            = 'Pehled objednvek'
      is_layout               = lt_layout
      it_fieldcat             = lt_fieldcatlog
      i_screen_start_column   = 55
      i_screen_start_line     = 2
      i_screen_end_column     = 180
      i_screen_end_line       = 35
    TABLES
      t_outtab                = lt_ekpo
    EXCEPTIONS
      program_error           = 1
      OTHERS                  = 2.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM build_fieldcat.
  REFRESH: lt_fieldcatlog.
  CLEAR: lt_fieldcatlog.

  PERFORM alv_append_wsfield USING:
***   col_pos fieldname        coltext  inttype decimals decimals_o outputlen fix emphasize
    1    'EBELN'    text-g01 'C'     2        2          10       'X'  'C150'  ''  '',
    2    'EBELP'    text-g02 'N'     2        2          10       'X'  'C150'  ''  '',
    3    'MATNR'    text-g03 'N'     0        0          10        ''  'C150'  ''  '',
    4    'MENGE'    text-g04 'I'     2        0          12        ''  'C150'  'X' ''.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM append_wsfield                                           *
*---------------------------------------------------------------------*
*       fieldcatalog pro ALV
*----------------------------------------------------------------------*
FORM alv_append_wsfield USING col_pos fieldname coltext inttype decimals decimals_o outputlen fix emphasize do_sum quantity.
***col_pos fieldname        coltext  inttype decimals decimals_o outputlen fix emphasize
  ls_fieldcatlog-col_pos    = col_pos.
  ls_fieldcatlog-fieldname  = fieldname.
  ls_fieldcatlog-seltext_l  = coltext.
*  ls_fieldcatlog-coltext    = coltext.
  ls_fieldcatlog-inttype    = inttype.
*  ls_fieldcatlog-decimals   = decimals.
  ls_fieldcatlog-decimals_out = decimals_o.
  ls_fieldcatlog-outputlen  = outputlen.
  ls_fieldcatlog-emphasize  = emphasize.
  ls_fieldcatlog-fix_column = fix.
  ls_fieldcatlog-do_sum     = do_sum.
  ls_fieldcatlog-quantity   = quantity.
  APPEND ls_fieldcatlog TO lt_fieldcatlog .
ENDFORM.                    "APPEND_WSFIELD
*&---------------------------------------------------------------------*
*&      Form  CALL_TRANSACTION
*&---------------------------------------------------------------------*
*       Zavoln transakce v novm okne
*----------------------------------------------------------------------*
FORM call_transaction  USING    p_ebeln
                                p_bstyp.

  CALL FUNCTION 'ZETA_FM_CALL_ORDER_READ' STARTING NEW TASK 'ETA' DESTINATION 'NONE'
    EXPORTING
      i_ebeln = p_ebeln
      i_bstyp = p_bstyp.

  CALL FUNCTION 'RFC_CONNECTION_CLOSE'
    EXPORTING
      destination          = 'NONE'
      taskname             = 'ETA'
    EXCEPTIONS
      destination_not_open = 1
      OTHERS               = 2.
ENDFORM.
