REPORT zeta_kontrakt.
*&---------------------------------------------------------------------*
*& INCLUDE Zhlav reportu s deklarac dat
*&---------------------------------------------------------------------*
INCLUDE zeta_kontrakt_variable.
INCLUDE zeta_kontrakt_bo.
INCLUDE zeta_kontrakt_ai.
INCLUDE zeta_kontrakt_forms.

START-OF-SELECTION.
  IF p_ebeln IS NOT INITIAL.
    gv_tcode = 'W'.  " nhled
    PERFORM inicialization.
    PERFORM read_contract_detail.
  ENDIF.

*&---------------------------------------------------------------------*
*&      Form  INICIALIZATION
*&---------------------------------------------------------------------*
*       inicializace promnnch
*----------------------------------------------------------------------*
FORM inicialization .
  CLEAR: wa_header, wa_condition, wa_status, itab, wa_itab,
         icon, icon_name, icon_text,
         id, values, value,
         it_zterm, it_t024, it_kontej, it_t610ot, it_waers, it_waers2, it_waers3,
         ws_fieldcat, ws_field, is_layout, gs_layout, gt_output,
         text, text_header, tab_fcode,
         lv_lifnr_text, ls_lifnr, lv_lines, lv_sel_line, lv_answer, lv_fields.

  REFRESH: itab, values, gt_output, tab_fcode,
           it_zterm, it_t024, it_kontej, it_t610ot, it_waers, it_waers2, it_waers3.

  FREE: go_grid, go_custom_container,
        editor_container, text_editor.

  " nastaven poboky podle typu kontraktu




  gv_create_listbox_9001 = 'X'.
  gv_create_listbox_9011 = 'X'.
  gv_create_listbox_9012 = 'X'.
  gv_set_table           = 'X'.

  wa_header-werks    = '2130'.
  wa_header-ekorg    = '2100'.
  wa_header-bsart    = 'MK'.
  wa_header-bstyp    = 'K'.
  wa_header-waers    = 'CZK'.
  wa_header-ukurs    = 1.
  wa_condition-waedc = 'CZK'.
  wa_condition-waein = 'USD'.

  " kurz pro inspekci a dopravu
  PERFORM: read_exhange_rate USING 'ZKAL' wa_condition-waein CHANGING wa_condition-wkuin,
           read_exhange_rate USING 'ZKAL' wa_condition-waedc CHANGING wa_condition-wkudc.

  " inicializace tabulky poloek
  DO 50 TIMES.
    APPEND INITIAL LINE TO itab.
  ENDDO.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  READ_CONTRACT_DETAIL
*&---------------------------------------------------------------------*
*       Naten dat z kontraktu
*----------------------------------------------------------------------*
FORM read_contract_detail .
  CLEAR: wa_header, wa_condition, itab.
  REFRESH: itab.

  CALL FUNCTION 'ZETA_FM_READ_CONTRACT'
    EXPORTING
      i_ebeln     = p_ebeln
    IMPORTING
      e_header    = wa_header
      e_condition = wa_condition
      e_text      = text
    TABLES
      t_item      = itab.

  " zmek ve zmn
  IF gv_tcode EQ 'C'.
    CALL FUNCTION 'ENQUEUE_EMEKKOE'
      EXPORTING
        ebeln          = p_ebeln
      EXCEPTIONS
        foreign_lock   = 1
        system_failure = 2
        OTHERS         = 3.
    IF sy-subrc <> 0.
      gv_tcode = 'W'.

      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              INTO DATA(mtext)
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

      MESSAGE mtext TYPE 'I'.
    ENDIF.
  ENDIF.

  IF wa_header IS NOT INITIAL.
    IF wa_header-loekz EQ 'L'.
      gv_tcode = 'W'.
    ENDIF.

    CALL SCREEN 9000.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  KONTRAKT_CREATE
*&---------------------------------------------------------------------*
*       Zaloen kontraktu
*----------------------------------------------------------------------*
FORM kontrakt_create .
  CLEAR: ok_code, sy-ucomm, lv_error.

  PERFORM read_note CHANGING text.

  PERFORM check_lifnr CHANGING lv_error.

  IF lv_error IS INITIAL.
    CALL FUNCTION 'ZETA_FM_CREATE_CONTRACT'
      EXPORTING
        i_header    = wa_header
        i_condition = wa_condition
        i_text      = text
      IMPORTING
        e_ebeln     = p_ebeln
      TABLES
        t_item      = itab.

    IF wa_status-verze EQ 'V' OR wa_status-verze EQ 'O'.
      PERFORM update_dostupnost.  " aktualizace dostupnosti pouze v ppad statusu pro prodej a objednvku

    ENDIF.

    IF p_ebeln IS NOT INITIAL.
      SET PARAMETER ID 'KON' FIELD p_ebeln.
      LEAVE TO TRANSACTION 'ZETA_KONTRAKT_NAHLED' AND SKIP FIRST SCREEN.
    ENDIF.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  KONTRAKT_CHANGE
*&---------------------------------------------------------------------*
*       Zmna kontraktu
*----------------------------------------------------------------------*
FORM kontrakt_change  USING p_delete.
  CLEAR: ok_code, sy-ucomm, lv_error.

  PERFORM read_note CHANGING text.
  PERFORM check_delete USING p_delete CHANGING lv_answer.
  PERFORM get_delete_item.

  PERFORM check_lifnr CHANGING lv_error.

  IF lv_error IS INITIAL.
    IF lv_answer EQ '1'.
      CALL FUNCTION 'ZETA_FM_CHANGE_CONTRACT'
        EXPORTING
          i_header    = wa_header
          i_condition = wa_condition
          i_text      = text
          i_delete    = p_delete
        IMPORTING
          e_error     = gv_error
        TABLES
          t_item      = itab.

      IF wa_status-verze EQ 'V' OR wa_status-verze EQ 'O'.
        PERFORM update_dostupnost.  " aktualizace dostupnosti pouze v ppad statusu pro prodej a objednvku

      ENDIF.

      " kontorola zda zmeny probehli v poradku jeste
      IF gv_error NE 'X'.
        LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 102.
      ENDIF.
    ENDIF.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  KONTRAKT_SWITCH
*&---------------------------------------------------------------------*
*       Pepnut mezi zmnou a zobrazenm
*----------------------------------------------------------------------*
FORM kontrakt_switch .
  " pokud existuje objednavka nepovolovat upravu ????
  CLEAR: ok_code, sy-ucomm.

  SET PARAMETER ID 'KON' FIELD p_ebeln.
  IF gv_tcode EQ 'W'.
    LEAVE TO TRANSACTION 'ZETA_KONTRAKT_ZMENA' AND SKIP FIRST SCREEN.
  ELSE.

    CLEAR: lv_answer.
    CALL FUNCTION 'POPUP_TO_CONFIRM'
      EXPORTING
        titlebar       = text-tm3
        text_question  = text-tm3
        text_button_1  = 'Ano'(101)
        text_button_2  = 'Ne'(102)
        default_button = '1'
      IMPORTING
        answer         = lv_answer
      EXCEPTIONS
        text_not_found = 1
        OTHERS         = 2.

    IF lv_answer EQ '1'.
      LEAVE TO TRANSACTION 'ZETA_KONTRAKT_NAHLED' AND SKIP FIRST SCREEN.
    ENDIF.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  KONTRAKT_SWAP
*&---------------------------------------------------------------------*
*       Pepnut na jin kontrakt
*----------------------------------------------------------------------*
FORM kontrakt_swap .
  CLEAR: ok_code, sy-ucomm.
  CALL FUNCTION 'ZETA_FM_SWAP_CONTRACT'.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  EXIT_PROGRAM
*&---------------------------------------------------------------------*
*       Oputn programu
*----------------------------------------------------------------------*
FORM exit_program .
  CLEAR: ok_code, sy-ucomm.

  IF gv_tcode NE 'W'.
    CALL FUNCTION 'POPUP_TO_CONFIRM'
      EXPORTING
        titlebar       = text-tm1
        text_question  = text-tm1
        text_button_1  = 'Ano'(101)
        text_button_2  = 'Ne'(102)
        default_button = '1'
      IMPORTING
        answer         = lv_answer
      EXCEPTIONS
        text_not_found = 1
        OTHERS         = 2.

  ELSE.
    lv_answer = '1'.
  ENDIF.

  IF lv_answer = '1'. "odpov Ano

    IF sy-calld EQ 'X'.                    " pokud transakci volm z jinho programu
      LEAVE PROGRAM.

    ELSEIF gv_tcode EQ 'N'.                " vychoz screen pro zalozeni
      LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 101.

    ELSE.                                  " vychozi screen pro zobrazeni/ zmnu
      LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 102.
    ENDIF.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FILL_FIELD_CAT
*&---------------------------------------------------------------------*
FORM alv_fill_field_cat .
*  CLEAR: ws_field, ws_fieldcat.
  PERFORM alv_append_wsfield USING:
***   col_pos fieldname        coltext  inttype decimals decimals_o outputlen fix emphasize
    1    'MATNR'          text-p01 'C'     2        2          10       'X'  'C150'  '' '',
    2    'TXZ01'          text-p02 'C'     2        2           8        ''  'C150'  '' '',
    3    'UKURS'          text-p03 'I'     2        2           8        ''  'C150'  '' '',
    4    'KTMNG_ORIG'     text-p04 'I'     0        0          20        ''  'C150'  'X' '',
    5    'MEINS'          text-p05 'C'     0        0          20        ''  'C150'  'X' 'X',
    6    'NETPR'          text-p06 'I'     2        2          10        ''  'C150'  '' '',
    7    'NETPR_SUM'      text-p07 'I'     2        2          10        ''  'C150'  'X' '',
    8    'NETPR_CZ'       text-p08 'I'     2        2          10        ''  'C150'  '' '',
    9    'NETPR_CZ_SUM'   text-p09 'I'     2        2          10        ''  'C150'  'X' '',
   10    'ZCLO'           text-p10 'I'     2        2          20        ''  'C150'  ' ' '',
   11    'ZOC1'           text-p11 'I'     2        2          20        ''  'C150'  'X' '',
   12    'ZFR1_CZ'        text-p12 'I'     2        2          20        ''  'C150'  ' ' '',
   13    'ZFEE'           text-p13 'I'     2        2          20        ''  'C150'  ' ' '',
   14    'ZFEE_CZ'        text-p14 'I'     2        2          20        ''  'C150'  'X' '',
   15    'ZATE_CZ_KS'     text-p15 'I'     2        2          20        ''  'C150'  ' ' '',
   16    'ZATE_CZ'        text-p16 'I'     2        2          20        ''  'C150'  'X' '',
   17    'ZSGD_KS'        l_zsgd_ks 'I'     2        2          40        ''  'C150'  ' ' '',
   18    'ZSGD'           l_zsgd   'I'     2        2          40        ''  'C150'  ' ' '',
   19    'ZSGD_CZ'        text-p18 'I'     2        2          40        ''  'C150'  'X' '',
   20    'ZSC'            text-p19 'I'     2        2          10        ''  'C150'  '' '',
   21    'ZSC_SUM'        text-p20 'I'     2        2          30        ''  'C150'  'X' '',
   22    'ZREC'           text-p21 'I'     2        2          30        ''  'C150'  '' '',
   23    'ZREC_HOD'       text-p22 'I'     2        2          30        ''  'C150'  '' '',
   24    'ZFIN'           text-p23 'I'     2        2          30        ''  'C150'  '' '',
   25    'ZFIN_HOD'       text-p24 'I'     2        2          30        ''  'C150'  '' '',
   26    'ZOIP'           text-p25 'I'     2        2          30        ''  'C150'  '' '',
   27    'ZOIP_HOD'       text-p26 'I'     2        2          30        ''  'C150'  '' '',
   28    'ZSER'           text-p27 'I'     2        2          30        ''  'C150'  '' '',
   29    'ZSER_HOD'       text-p28 'I'     2        2          30        ''  'C150'  '' '',
   30    'ZVNC_P'         text-p30 'I'     2        2          30        ''  'C150'  '' '',
   31    'ZVNC'           text-p29 'I'     2        2          30        ''  'C150'  '' '',
   32    'ZEXV_P'         text-p32 'I'     2        2          30        ''  'C150'  '' '',
   33    'ZEXV'           text-p31 'I'     2        2          30        ''  'C150'  '' '',
   34    'ZHR1'           text-p33 'I'     2        2          30        ''  'C150'  '' '',
   35    'ZHR1_HOD'       text-p34 'I'     2        2          30        ''  'C150'  '' '',
   36    'ZHR2'           text-p35 'I'     2        2          30        ''  'C150'  '' '',
   37    'ZHR2_HOD'       text-p36 'I'     2        2          30        ''  'C150'  '' '',
   38    'ZHR3'           text-p37 'I'     2        2          30        ''  'C150'  '' '',
   39    'ZHR3_HOD'       text-p38 'I'     2        2          30        ''  'C150'  '' '',
   40    'ZSKL'           text-p39 'I'     2        2          30        ''  'C150'  '' '',
   41    'ZMKT'           text-p40 'I'     2        2          30        ''  'C150'  '' '',
   42    'ZMKT_HOD'       text-p41 'I'     2        2          30        ''  'C150'  '' '',
   43    'ZONC_P'         text-p43 'I'     2        2          30        ''  'C150'  '' '',
   44    'ZONC'           text-p42 'I'     2        2          30        ''  'C150'  '' '',
   45    'ZEXP_P'         text-p45 'I'     2        2          30        ''  'C150'  '' '',
   46    'ZEXP'           text-p44 'I'     2        2          30        ''  'C150'  '' '',
   47    'ZEXF_P'         text-p47 'I'     2        2          30        ''  'C150'  '' '',
   48    'ZEXF'           text-p48 'I'     2        2          30        ''  'C150'  '' ''.

ENDFORM.
*---------------------------------------------------------------------*
*       FORM append_wsfield                                           *
*---------------------------------------------------------------------*
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
  ws_field-col_pos    = col_pos.
  ws_field-fieldname  = fieldname.
  ws_field-seltext    = coltext.
  ws_field-coltext    = coltext.
  ws_field-inttype    = inttype.
  ws_field-decimals   = decimals.
  ws_field-decimals_o = decimals_o.
  ws_field-outputlen  = outputlen.
  ws_field-emphasize  = emphasize.
  ws_field-fix_column = fix.
  ws_field-do_sum     = do_sum.
  ws_field-quantity   = quantity.
  APPEND ws_field TO ws_fieldcat .
ENDFORM.                    "APPEND_WSFIELD
*&---------------------------------------------------------------------*
*&      Form  LOAD_DATA_INTO_GRID
*&---------------------------------------------------------------------*
FORM alv_load_data_into_grid .

  is_layout-cwidth_opt = 'X'.
  is_layout-sel_mode = 'A'.
  is_layout-zebra = 'X'.
  gs_layout-report = sy-repid.

  CALL METHOD go_grid->set_table_for_first_display
    EXPORTING
      is_layout       = is_layout
      is_variant      = gs_layout
      i_save          = 'A'
    CHANGING
      it_outtab       = gt_output
      it_fieldcatalog = ws_fieldcat.
ENDFORM.                    "LOAD_DATA_INTO_GRID
