REPORT zhp_jc_create_new_matnr.

*&---------------------------------------------------------------------*
* DECLARATION
*
*&---------------------------------------------------------------------*
TABLES: mara.

CONSTANTS: c_false TYPE char1 VALUE ''.

DATA: g_prog LIKE sy-repid VALUE 'ZHP_JC_CREATE_NEW_MATNR',
      gv_ok  TYPE flag,
      okcode LIKE sy-ucomm.

DATA: ls_mara LIKE mara.
*      ls_zfor LIKE zeta_formy,

DATA: lv_y     TYPE char1,
      lv_name  TYPE char50,
      lv_mess  TYPE char255,
      lv_wekgr TYPE char10,
      lv_matnr LIKE mara-matnr,
      lv_info  TYPE string.

DATA: ls_header LIKE zeta_new_matnr_st,
      it_header LIKE ls_header OCCURS 0 WITH HEADER LINE.

DATA : t_upload  TYPE STANDARD TABLE OF zeta_new_matnr_st,
       wa_upload TYPE zeta_new_matnr_st.

DATA: it_return LIKE ddshretval OCCURS 0 WITH HEADER LINE,
      t_t604t   LIKE t604t      OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF t_wrf_brands OCCURS 0,
        brand_id    LIKE wrf_brands_t-brand_id,
        brand_descr LIKE wrf_brands_t-brand_descr,
      END OF t_wrf_brands,

      BEGIN OF t_dd07t OCCURS 0,
        domvalue_l LIKE dd07t-domvalue_l,
        ddtext     LIKE dd07t-ddtext,
      END OF t_dd07t,

      BEGIN OF t_twewt OCCURS 0,
        "zzetawekgr LIKE zeta_wekgr-zzetawekgr,
        extwg LIKE twewt-extwg,
        ewbez LIKE twewt-ewbez,
      END OF t_twewt,

      BEGIN OF t_t006a OCCURS 0,
        msehi LIKE t006a-msehi,
        msehl LIKE t006a-msehl,
      END OF t_t006a.

DATA: lv_tabix                LIKE sy-tabix,
      lv_cond                 TYPE char10,
      tabix                   LIKE sy-tabix,
      control_record_db_in    TYPE edidc,
      state_of_processing_in  LIKE sy-subrc,
      inbound_process_data_in LIKE tede2,
      iedidc                  TYPE TABLE OF edidc WITH HEADER LINE,
      l_t_data_records_db     TYPE TABLE OF edidd WITH HEADER LINE,
      lt_werks                TYPE TABLE OF t001w WITH HEADER LINE,
      lt_t320                 TYPE TABLE OF t320  WITH HEADER LINE,
      lt_sklady               TYPE TABLE OF zhp_sklad_artmas WITH HEADER LINE,
      lt_pobocky              TYPE TABLE OF zhp_sklad_artmas WITH HEADER LINE.

DATA: BEGIN OF lt_lgtyp OCCURS 0,
        lgnum           LIKE yt1t_lgtyptypes-lgnum,
        lgtypstockcheck LIKE yt1t_lgtyptypes-lgtypstockcheck,
      END OF lt_lgtyp.

DATA: BEGIN OF lt_vkorg OCCURS 0,
        vkorg LIKE tvkov-vkorg,
        vtweg LIKE tvkov-vtweg,
      END OF lt_vkorg.

DATA: lt_vkor2 LIKE lt_vkorg OCCURS 0 WITH HEADER LINE.

DATA: ls_e1bpe1mathead    TYPE e1bpe1mathead,
      ls_e1bpe1maktrt     TYPE e1bpe1maktrt,
      ls_e1bpe1mardrt     TYPE e1bpe1mardrt,
      ls_e1bpe1mardrtx    TYPE e1bpe1mardrtx,
      ls_e1bpe1marcrt     TYPE e1bpe1marcrt,
      ls_e1bpe1marcrtx    TYPE e1bpe1marcrtx,
      ls_e1bpe1mbewrt     TYPE e1bpe1mbewrt,
      ls_e1bpe1mbewrtx    TYPE e1bpe1mbewrtx,
      ls_e1bpe1mlgnrt     TYPE e1bpe1mlgnrt,
      ls_e1bpe1mlgnrtx    TYPE e1bpe1mlgnrtx,
      ls_e1bpe1mlgtrt     TYPE e1bpe1mlgtrt,
      ls_e1bpe1mlgtrtx    TYPE e1bpe1mlgtrtx,
      ls_e1bpe1mvkert     TYPE e1bpe1mvkert,
      ls_e1bpe1mvkertx    TYPE e1bpe1mvkertx,
      ls_e1bpe1marmrt     LIKE e1bpe1marmrt,
      ls_e1bpe1marmrtx    LIKE e1bpe1marmrtx,
      ls_e1bpe1marart     LIKE e1bpe1marart,
      ls_e1bpe1marart1    LIKE e1bpe1marart1,
      ls_e1bpe1marartx    LIKE e1bpe1marartx,
      ls_e1bpe1maw1rt     LIKE e1bpe1maw1rt,
      ls_e1bpe1maw1rtx    LIKE e1bpe1maw1rtx,
      ls_e1bpe1maraextrt  LIKE e1bpe1maraextrt,
      ls_e1bpe1maraextrtx LIKE e1bpe1maraextrtx.

DATA: p_file       TYPE rlgrap-filename,
      p_upload_xls TYPE bool.

*&---------------------------------------------------------------------*
*&  SUBSCREEN 0101
*&---------------------------------------------------------------------*
*SELECTION-SCREEN BEGIN OF SCREEN 0101 AS SUBSCREEN.
*SELECTION-SCREEN BEGIN OF LINE.
*SELECTION-SCREEN COMMENT (10) text-s11 FOR FIELD s_matnr.
*SELECT-OPTIONS: s_matnr FOR mara-matnr NO INTERVALS.
*SELECTION-SCREEN END OF LINE.
*SELECTION-SCREEN END OF SCREEN 0101.

*&---------------------------------------------------------------------*
* START-OF-SELECTION.
*
*&---------------------------------------------------------------------*
START-OF-SELECTION.
  " znaka
  SELECT w~brand_id t~brand_descr FROM wrf_brands AS w INNER JOIN wrf_brands_t AS t ON w~brand_id = t~brand_id
      INTO CORRESPONDING FIELDS OF TABLE t_wrf_brands
        WHERE w~brand_type EQ 1 AND
              t~language EQ 'CS'.

  " kategorie
  SELECT * INTO CORRESPONDING FIELDS OF TABLE t_dd07t FROM dd07t
    WHERE domname EQ 'ZHP_ETACM' AND
        ddlanguage EQ 'CS'.

  " rps
  SELECT DISTINCT * FROM t006a INTO CORRESPONDING FIELDS OF TABLE t_t006a
        WHERE msehi BETWEEN 'Z90' AND 'Z99' AND
              spras EQ sy-langu.

  " celn zaazen
  SELECT DISTINCT * FROM t604t INTO CORRESPONDING FIELDS OF TABLE t_t604t
        WHERE land1 EQ 'CZ' AND
              spras EQ sy-langu.

  CALL SCREEN 0100.
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  DATA: id     TYPE  vrm_id,
        values TYPE  vrm_values,
        value  LIKE LINE OF values.

  SET TITLEBAR '0100'.

  IF p_upload_xls EQ ''.
    SET PF-STATUS '0100' EXCLUDING 'SAVE_XLS'.

    LOOP AT SCREEN.
      IF screen-group1 EQ 'H1'.
        screen-invisible = 1.
        screen-input = 0.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ELSE.
    SET PF-STATUS '0100' EXCLUDING 'SAVE'.

    LOOP AT SCREEN.
      IF screen-group1 EQ 'H1'.
        screen-invisible = 0.
        screen-input = 1.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ENDIF.

  IF values[] IS INITIAL.
*    value-key = '0'.
*    APPEND value TO values.
    value-key = '1.5'.
    APPEND value TO values.
    value-key = '3'.
    APPEND value TO values.

    CALL FUNCTION 'VRM_SET_VALUES'
      EXPORTING
        id              = 'LS_HEADER-ZOIP'
        values          = values
      EXCEPTIONS
        id_illegal_name = 1
        OTHERS          = 2.
  ENDIF.


ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  okcode = sy-ucomm.
  CASE okcode.
    WHEN 'UPLOAD'." cesta k souboru
      DATA: file_table TYPE filetable,
            wa_file    LIKE LINE OF file_table,
            rc         TYPE i.

      CALL METHOD cl_gui_frontend_services=>file_open_dialog
        EXPORTING
          window_title            = 'Upload dat z Excelu'
          default_filename        = '*.xlsx'
          default_extension       = '.xlsx'
          file_filter             = '*.xlsx'
        CHANGING
          file_table              = file_table
          rc                      = rc
        EXCEPTIONS
          file_open_dialog_failed = 1
          cntl_error              = 2
          error_no_gui            = 3
          not_supported_by_gui    = 4
          OTHERS                  = 5.

      IF sy-subrc EQ 0.
        READ TABLE file_table INTO wa_file INDEX 1.
        p_file = wa_file-filename.
      ENDIF.

    WHEN 'BRAND'. " znaka
      PERFORM f4_value_request TABLES t_wrf_brands USING 'Znaka' 'BRAND_ID' CHANGING ls_header-brand.
      IF ls_header-brand IS NOT INITIAL.
        CLEAR: t_wrf_brands.
        READ TABLE t_wrf_brands WITH KEY brand_id = ls_header-brand.
        ls_header-brand_text = t_wrf_brands-brand_descr.
      ENDIF.

    WHEN 'WEKGR'. " kategorie
      PERFORM f4_value_request TABLES t_dd07t USING 'Kategorie' 'DOMVALUE_L' CHANGING ls_header-wekgr .
      IF ls_header-wekgr IS NOT INITIAL.
        CLEAR: t_dd07t.
        READ TABLE t_dd07t WITH KEY domvalue_l = ls_header-wekgr.
        ls_header-wekgr_text = t_dd07t-ddtext.
      ENDIF.

    WHEN 'EXTWG'. " podkategorie
      REFRESH t_twewt.
      IF ls_header-wekgr IS NOT INITIAL.
        CONCATENATE ls_header-wekgr '%' INTO lv_wekgr.
        SELECT * INTO CORRESPONDING FIELDS OF TABLE t_twewt FROM twewt
          WHERE spras EQ 'CS' AND
                extwg LIKE lv_wekgr.
      ELSE.
        SELECT * INTO CORRESPONDING FIELDS OF TABLE t_twewt FROM twewt
          WHERE spras EQ 'CS'.
      ENDIF.

      PERFORM f4_value_request TABLES t_twewt USING 'Podkategorie' 'EXTWG' CHANGING ls_header-extwg .
      IF ls_header-extwg IS NOT INITIAL.
        READ TABLE t_twewt WITH KEY extwg = ls_header-extwg.
        ls_header-extwg_text = t_twewt-ewbez.
        IF ls_header-wekgr IS INITIAL.
          ls_header-wekgr = ls_header-extwg(3).
          READ TABLE t_dd07t WITH KEY domvalue_l = ls_header-wekgr.
          ls_header-wekgr_text = t_dd07t-ddtext.
        ENDIF.
      ENDIF.

    WHEN 'MSEHI'. " rps kategorie
      PERFORM f4_value_request TABLES t_t006a USING 'PRS kategorie' 'MSEHI' CHANGING ls_header-msehi .
      IF ls_header-msehi IS NOT INITIAL.
        READ TABLE t_t006a WITH KEY msehi = ls_header-msehi.
        ls_header-karps_text = t_t006a-msehl.
      ENDIF.

    WHEN 'WSTAW'. " celn zaazen
      PERFORM f4_value_request TABLES t_t604t USING 'Celn zaazen' 'STAWN' CHANGING ls_header-wstaw .
      IF ls_header-wstaw IS NOT INITIAL.
        READ TABLE t_t604t WITH KEY stawn = ls_header-wstaw.
        ls_header-wstaw_text = t_t604t-text1.
      ENDIF.

*    WHEN 'HELP'. " strom
*      CALL FUNCTION 'ZETA_FM_MATKL_TREE'
*        EXPORTING
*          pick_parent_cat = ''
*          p_field         = 'MATKL'
*        IMPORTING
*          matkl           = ls_header-matkl
*          matkl_text      = ls_header-matkl_text.

    WHEN 'EXIT'.
      LEAVE PROGRAM.

    WHEN 'SAVE_XLS'.
      REFRESH it_header.
      CALL FUNCTION 'ZETA_FM_CREATE_MATNR_XLS'
        EXPORTING
          e_file   = p_file
        TABLES
          t_output = it_header.

      break capikj.
      IF it_header[] IS NOT INITIAL.
        PERFORM save_new_matnr.
        PERFORM save_cond USING: 'ZOIP' 'A' '%',
                                 'ZREC' 'C' 'CZK'.
        CLEAR: ls_header.
      ENDIF.


    WHEN 'SAVE'.
      REFRESH: it_header.
      CLEAR: it_header.
      IF ls_header-matnr IS NOT INITIAL AND ls_header-maktx IS NOT INITIAL AND ls_header-laeng IS NOT INITIAL AND
         ls_header-breit IS NOT INITIAL AND ls_header-hoehe IS NOT INITIAL AND ls_header-ntgew IS NOT INITIAL AND
         ls_header-brand IS NOT INITIAL AND ls_header-wekgr IS NOT INITIAL AND ls_header-extwg IS NOT INITIAL. " AND
         "ls_header-wstaw IS NOT INITIAL." AND ls_header-matkl IS NOT INITIAL.

        CLEAR: lv_matnr.
        SELECT SINGLE matnr FROM mara INTO lv_matnr
          WHERE matnr EQ ls_header-matnr.

        IF lv_matnr IS INITIAL.
          APPEND ls_header TO it_header.
          PERFORM save_new_matnr.

          IF gv_ok EQ 'X'.        " pokud se podari vygenerovat idoc zakladm podmnku a formy
            READ TABLE it_header INTO ls_header INDEX 1.

            IF ls_header-zoip IS NOT INITIAL.
              PERFORM save_cond USING 'ZOIP' 'A' '%'.
            ENDIF.

            IF ls_header-zrec IS NOT INITIAL.
              PERFORM save_cond USING 'ZREC' 'C' 'CZK'.
            ENDIF.
*          IF ls_zfor-zznetfo IS NOT INITIAL.
*            PERFORM save_formy.
*          ENDIF.
          ENDIF.

        ELSE.
          MESSAGE i303(me) WITH 'Artikl ji existuje !'.
        ENDIF.

      ELSE.
        CLEAR: lv_name, lv_mess.
        CASE lv_y.
          WHEN ls_header-maktx.
            lv_name = 'popis artiklu'.
          WHEN ls_header-laeng.
            lv_name = 'dlka artiklu'.
          WHEN ls_header-breit.
            lv_name = 'ka artiklu'.
          WHEN ls_header-hoehe.
            lv_name = 'vka artiklu'.
          WHEN ls_header-ntgew.
            lv_name = 'vha artiklu'.
          WHEN ls_header-brand.
            lv_name = 'znaka artiklu'.
          WHEN ls_header-wekgr.
            lv_name = 'kategorie artiklu'.
          WHEN ls_header-extwg.
            lv_name = 'podkategorie artiklu'.
*          WHEN ls_header-matkl.
*            lv_name = 'strom'.
          WHEN ls_header-wstaw.
            lv_name = 'celn zaazen'.
        ENDCASE.

        CONCATENATE 'Nejsou vyplnna vechna povinn pole -' lv_name INTO lv_mess SEPARATED BY space.
        MESSAGE lv_mess TYPE 'I' .
      ENDIF.
  ENDCASE.
  CLEAR: okcode, sy-ucomm.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Form  SAVE_NEW_MATNR
*&---------------------------------------------------------------------*
*      naplnen dat o artiklu
*----------------------------------------------------------------------*
FORM save_new_matnr .
  " zjistm si sklady k pobokm
  SELECT werks lgort FROM zhp_sklad_artmas INTO CORRESPONDING FIELDS OF TABLE lt_sklady
    WHERE werks LIKE '21%' ORDER BY werks lgort.
  " k pobokm si dotahnu stt a region
  SELECT werks land1 regio FROM t001w INTO CORRESPONDING FIELDS OF TABLE lt_werks
    WHERE werks LIKE '21%'.

  " oeu si duplicitn poboky
  lt_pobocky[] = lt_sklady[].
  SORT lt_pobocky BY werks.
  DELETE ADJACENT DUPLICATES FROM lt_pobocky COMPARING werks.

  " zjistm si sla skladu
  SELECT DISTINCT lgnum FROM t320 INTO CORRESPONDING FIELDS OF TABLE lt_t320
    WHERE werks LIKE '21%'.

  "grifzny
  SELECT lgnum lgtypstockcheck FROM yt1t_lgtyptypes INTO TABLE lt_lgtyp
    WHERE lgtypstockcheck NE '' ORDER BY lgnum .

  " zjistm si prodejn organizace
  LOOP AT lt_pobocky.
    DATA: lv_vkorg TYPE vkorg.

    CONCATENATE lt_pobocky-werks(2) '00' INTO lv_vkorg.

    SELECT vkorg vtweg FROM tvkwz INTO TABLE lt_vkor2
      WHERE werks EQ lt_pobocky-werks AND
            vkorg EQ lv_vkorg.

    APPEND LINES OF lt_vkor2 TO lt_vkorg.
  ENDLOOP.

*  SELECT vkorg vtweg FROM tvkwz INTO TABLE lt_vkorg
*    FOR ALL ENTRIES IN lt_pobocky WHERE werks EQ lt_pobocky-werks.

  SORT lt_vkorg BY vkorg vtweg.
  DELETE ADJACENT DUPLICATES FROM lt_vkorg COMPARING ALL FIELDS.

  LOOP AT it_header INTO ls_header.
    CLEAR: l_t_data_records_db, ls_e1bpe1mathead, tabix, control_record_db_in, state_of_processing_in, inbound_process_data_in.

    " podle systmu, kde je voln naplnme control_record_db_in, musme plnit v loopu, protoe fnc pro IDOC ho vrac naplnn, take je nutn vdy mazat!
    control_record_db_in-status = '53'.
    control_record_db_in-direct = '2'. "vdy INBOUND!!!
    CONCATENATE 'SAP' sy-sysid INTO control_record_db_in-rcvpor.
    control_record_db_in-rcvprt = 'LS'.

    "Bohuel zatm nevm kde se bere slo partnera, tak to tady udlm "oukem"
    CONCATENATE sy-sysid 'CLNT' sy-mandt INTO control_record_db_in-rcvprn. "slo partnera (HEPCLNT500) - zatm nevm, kde se d vyourat

    CASE sy-sysid.
      WHEN 'HEP'.
        control_record_db_in-sndpor = 'SAPHXP'.
        control_record_db_in-sndprn = 'HEPCLNT500'.
      WHEN 'HET'.
        control_record_db_in-sndpor = 'SAPHXT'.
        control_record_db_in-sndprn = 'HETCLNT500'.
      WHEN OTHERS.
        control_record_db_in-sndpor = 'SAPHXT'.
        control_record_db_in-sndprn = 'VOIS_DEV'.
    ENDCASE.

    control_record_db_in-sndprt = 'LS'.
    "control_record_db_in-arckey = '                 CC D59A5C50952411E1841E12C0E2147002'.
    control_record_db_in-mestyp = 'ARTMAS'.
    control_record_db_in-idoctp = 'ARTMAS05'.
    "control_record_db_in-serial = '41504273'.

*&---------------------------------------------------------------------*
*&      HLAVIKA
*&---------------------------------------------------------------------*
    " zaloit njak kategorie 99988  Import a vechno by se zaazovalo do tto kategorie a sprvn
    " kategorie by se pak pepsala a po zadn z katalogu
    l_t_data_records_db-segnam         = 'E1BPE1MATHEAD'.
    ls_e1bpe1mathead-function          = '004'.
    ls_e1bpe1mathead-material          = ls_header-matnr.
    ls_e1bpe1mathead-matl_type         = 'YHAW'.
    break capikj. " zatim neexistuje '99990'  nutno zmnit
    ls_e1bpe1mathead-matl_group        = '99990'. "ls_header-matkl.
    ls_e1bpe1mathead-material_external = ls_header-extwg.
    ls_e1bpe1mathead-matl_cat          = '00'.
    ls_e1bpe1mathead-basic_view        = 'X'.
    ls_e1bpe1mathead-list_view         = 'X'.
    ls_e1bpe1mathead-sales_view        = 'X'.
    ls_e1bpe1mathead-logdc_view        = 'X'.
    ls_e1bpe1mathead-logst_view        = 'X'.
    l_t_data_records_db-sdata          = ls_e1bpe1mathead.
    APPEND l_t_data_records_db.

*&---------------------------------------------------------------------*
*&      Segment MARA
*&---------------------------------------------------------------------*
    CLEAR: ls_e1bpe1marart, l_t_data_records_db.
    l_t_data_records_db-segnam = 'E1BPE1MARART'.
    ls_e1bpe1marart-function   = '004'.
    ls_e1bpe1marart-material   = ls_header-matnr.
    ls_e1bpe1marart-created_on = sy-datum.
    ls_e1bpe1marart-extmatlgrp = ls_header-extwg.
    ls_e1bpe1marart-net_weight = ls_header-ntgew.
    l_t_data_records_db-sdata  = ls_e1bpe1marart.
    APPEND l_t_data_records_db.

    CLEAR: ls_e1bpe1marart1, l_t_data_records_db.
    l_t_data_records_db-segnam = 'E1BPE1MARART1'.
    ls_e1bpe1marart1-brand_id  = ls_header-brand.
    l_t_data_records_db-sdata  = ls_e1bpe1marart1.
    APPEND l_t_data_records_db.

    CLEAR: ls_e1bpe1marartx, l_t_data_records_db.
    l_t_data_records_db-segnam  = 'E1BPE1MARARTX'.
    ls_e1bpe1marartx-function   = '004'.
    ls_e1bpe1marartx-material   = ls_header-matnr.
    ls_e1bpe1marartx-created_on = 'X'.
    ls_e1bpe1marartx-brand_id   = 'X'.
    ls_e1bpe1marartx-extmatlgrp = 'X'.
    ls_e1bpe1marartx-net_weight = 'X'.
    l_t_data_records_db-sdata   = ls_e1bpe1marartx.
    APPEND l_t_data_records_db.

*&---------------------------------------------------------------------*
*&      Segment MARA - kategorie ETA
*&---------------------------------------------------------------------*
    CLEAR: ls_e1bpe1maraextrt, l_t_data_records_db.
    l_t_data_records_db-segnam  = 'E1BPE1MARAEXTRT'.
    ls_e1bpe1maraextrt-function = '900'.
    ls_e1bpe1maraextrt-material = ls_header-matnr.
    ls_e1bpe1maraextrt-field1   = 'MARA'.
    ls_e1bpe1maraextrt-field2   = 'ZZETAWEKGR'.
    ls_e1bpe1maraextrt-field3   = ls_header-wekgr.
    l_t_data_records_db-sdata   = ls_e1bpe1maraextrt.
    APPEND l_t_data_records_db.

*&---------------------------------------------------------------------*
*&      Segment MAW1 - celn zaazen
*&---------------------------------------------------------------------*
    CLEAR: ls_e1bpe1maw1rt, l_t_data_records_db.
    l_t_data_records_db-segnam     = 'E1BPE1MAW1RT'. "e1bpe1maw1rt
    ls_e1bpe1maw1rt-function       = '004'.
    ls_e1bpe1maw1rt-material       = ls_header-matnr.
    ls_e1bpe1maw1rt-countryori_iso = 'CZ'.
    ls_e1bpe1maw1rt-li_proc_st     = '02'.
    ls_e1bpe1maw1rt-li_proc_dc     = '02'.
    ls_e1bpe1maw1rt-val_class      = '3100'.
    ls_e1bpe1maw1rt-comm_code      = ls_header-wstaw.
    l_t_data_records_db-sdata      = ls_e1bpe1maw1rt.
    APPEND l_t_data_records_db.

    CLEAR: ls_e1bpe1maw1rtx, l_t_data_records_db.
    l_t_data_records_db-segnam      = 'E1BPE1MAW1RTX'.
    ls_e1bpe1maw1rtx-function       = '004'.
    ls_e1bpe1maw1rtx-material       = ls_header-matnr.
    ls_e1bpe1maw1rtx-countryori_iso = 'X'.
    ls_e1bpe1maw1rtx-li_proc_st     = 'X'.
    ls_e1bpe1maw1rtx-li_proc_dc     = 'X'.
    ls_e1bpe1maw1rtx-val_class      = 'X'.
    ls_e1bpe1maw1rtx-comm_code      = 'X'.
    l_t_data_records_db-sdata = ls_e1bpe1maw1rtx.
    APPEND l_t_data_records_db.

*&---------------------------------------------------------------------*
*&      Segment MAKT
*&---------------------------------------------------------------------*
    CLEAR: ls_e1bpe1maktrt, l_t_data_records_db.
    l_t_data_records_db-segnam = 'E1BPE1MAKTRT'.
    ls_e1bpe1maktrt-function   = '004'.
    ls_e1bpe1maktrt-material   = ls_header-matnr.
    ls_e1bpe1maktrt-langu      = sy-langu.
    ls_e1bpe1maktrt-matl_desc  = ls_header-maktx.
    l_t_data_records_db-sdata  = ls_e1bpe1maktrt.
    APPEND l_t_data_records_db.

*&---------------------------------------------------------------------*
*&      Segment MARC - nutn plnit pro pvod zbo (u SK to dl problmy)
*&---------------------------------------------------------------------*
    LOOP AT lt_pobocky.
      CLEAR lt_werks.
      READ TABLE lt_werks WITH KEY werks = lt_pobocky-werks.

      CLEAR: ls_e1bpe1marcrt, l_t_data_records_db.
      l_t_data_records_db-segnam    = 'E1BPE1MARCRT'.
      ls_e1bpe1marcrt-function      = '004'.
      ls_e1bpe1marcrt-material      = ls_header-matnr.
      ls_e1bpe1marcrt-plant         = lt_pobocky-werks.
      ls_e1bpe1marcrt-countryori    = lt_werks-land1.
      ls_e1bpe1marcrt-regionorig    = lt_werks-regio.
*      ls_e1bpe1marcrt-comm_code     = p_wstaw.
      ls_e1bpe1marcrt-mat_grp_trans = 'ZARTMAS'.
      l_t_data_records_db-sdata     = ls_e1bpe1marcrt.
      APPEND l_t_data_records_db.
    ENDLOOP.

    LOOP AT lt_pobocky.
      CLEAR: ls_e1bpe1marcrtx, l_t_data_records_db.
      l_t_data_records_db-segnam     = 'E1BPE1MARCRTX'.
      ls_e1bpe1marcrtx-function      = '004'.
      ls_e1bpe1marcrtx-material      = ls_header-matnr.
      ls_e1bpe1marcrtx-plant         = lt_pobocky-werks.
      ls_e1bpe1marcrtx-countryori    = 'X'.
      ls_e1bpe1marcrtx-regionorig    = 'X'.
*      ls_e1bpe1marcrt-comm_code      = 'X'.
      ls_e1bpe1marcrtx-mat_grp_trans = 'X'.
      l_t_data_records_db-sdata      = ls_e1bpe1marcrtx.
      APPEND l_t_data_records_db.
    ENDLOOP.

*&---------------------------------------------------------------------*
*&      Segment MARD - pro kadou poboku a sklad
*&---------------------------------------------------------------------*
    LOOP AT lt_sklady.
      CLEAR: ls_e1bpe1mardrt, l_t_data_records_db.
      l_t_data_records_db-segnam = 'E1BPE1MARDRT'.
      ls_e1bpe1mardrt-function   = '004'.
      ls_e1bpe1mardrt-material   = ls_header-matnr.
      ls_e1bpe1mardrt-plant      = lt_sklady-werks.
      ls_e1bpe1mardrt-stge_loc   = lt_sklady-lgort.
      l_t_data_records_db-sdata  = ls_e1bpe1mardrt.
      APPEND l_t_data_records_db.
    ENDLOOP.

    "tady pro kadou poboku a sklad plnme MARDx
    LOOP AT lt_sklady.
      CLEAR: ls_e1bpe1mardrtx, l_t_data_records_db.
      l_t_data_records_db-segnam = 'E1BPE1MARDRTX'.
      ls_e1bpe1mardrtx-function  = '004'.
      ls_e1bpe1mardrtx-material  = ls_header-matnr.
      ls_e1bpe1mardrtx-plant     = lt_sklady-werks.
      ls_e1bpe1mardrtx-stge_loc  = lt_sklady-lgort.
      l_t_data_records_db-sdata  = ls_e1bpe1mardrtx.
      APPEND l_t_data_records_db.
    ENDLOOP.

*&---------------------------------------------------------------------*
*&      Segment MARM
*&---------------------------------------------------------------------*
    CLEAR: ls_e1bpe1marmrt, l_t_data_records_db.
    l_t_data_records_db-segnam     = 'E1BPE1MARMRT'.
    ls_e1bpe1marmrt-function       = '004'.
    ls_e1bpe1marmrt-material       = ls_header-matnr.
    ls_e1bpe1marmrt-alt_unit       = 'ST'.
    ls_e1bpe1marmrt-alt_unit_iso   = 'PCE'.
    ls_e1bpe1marmrt-numerator      = 1.
    ls_e1bpe1marmrt-denominatr     = 1.
    ls_e1bpe1marmrt-length         = ls_header-laeng.
    ls_e1bpe1marmrt-width          = ls_header-breit.
    ls_e1bpe1marmrt-height         = ls_header-hoehe.
    ls_e1bpe1marmrt-unit_dim_iso   = 'CMT'.
    ls_e1bpe1marmrt-volumeunit_iso = 'DMQ'.
    ls_e1bpe1marmrt-gross_wt       = ls_header-ntgew.
    ls_e1bpe1marmrt-unit_of_wt_iso = 'KGM'.

    CONDENSE ls_e1bpe1marmrt-numerator  NO-GAPS. " kvuli odsazen
    CONDENSE ls_e1bpe1marmrt-denominatr NO-GAPS.
    CONDENSE ls_e1bpe1marmrt-length     NO-GAPS.
    CONDENSE ls_e1bpe1marmrt-width      NO-GAPS.
    CONDENSE ls_e1bpe1marmrt-height     NO-GAPS.
    CONDENSE ls_e1bpe1marmrt-gross_wt   NO-GAPS.
    l_t_data_records_db-sdata = ls_e1bpe1marmrt.
    APPEND l_t_data_records_db.

    IF ls_header-msehi IS NOT INITIAL.
      CLEAR: ls_e1bpe1marmrt, l_t_data_records_db.
      l_t_data_records_db-segnam     = 'E1BPE1MARMRT'.
      ls_e1bpe1marmrt-function       = '004'.
      ls_e1bpe1marmrt-material       = ls_header-matnr.
      ls_e1bpe1marmrt-alt_unit       = ls_header-msehi.
      ls_e1bpe1marmrt-alt_unit_iso   = ls_header-msehi.
      ls_e1bpe1marmrt-denominatr     = 1.
      ls_e1bpe1marmrt-unit_dim_iso   = 'CMT'.
      ls_e1bpe1marmrt-unit_of_wt_iso = 'KGM'.
      CONDENSE ls_e1bpe1marmrt-denominatr NO-GAPS.
      l_t_data_records_db-sdata = ls_e1bpe1marmrt.
      APPEND l_t_data_records_db.
    ENDIF.

    CLEAR: ls_e1bpe1marmrtx, l_t_data_records_db.
    l_t_data_records_db-segnam         = 'E1BPE1MARMRTX'.
    ls_e1bpe1marmrtx-function          = '004'.
    ls_e1bpe1marmrtx-material          = ls_header-matnr.
    ls_e1bpe1marmrtx-alt_unit          = 'ST'.
    ls_e1bpe1marmrtx-alt_unit_iso      = 'PCE'.
    ls_e1bpe1marmrtx-numerator         = 'X'.
    ls_e1bpe1marmrtx-denominatr        = 'X'.
    ls_e1bpe1marmrtx-length            = 'X'.
    ls_e1bpe1marmrtx-width             = 'X'.
    ls_e1bpe1marmrtx-height            = 'X'.
    ls_e1bpe1marmrtx-unit_dim_iso      = 'X'.
    ls_e1bpe1marmrtx-volume            = 'X'.
    ls_e1bpe1marmrtx-volumeunit_iso    = 'X'.
    ls_e1bpe1marmrtx-gross_wt          = 'X'.
    ls_e1bpe1marmrtx-unit_of_wt_iso    = 'X'.
    ls_e1bpe1marmrtx-material_external = 'X'.
    l_t_data_records_db-sdata = ls_e1bpe1marmrtx.
    APPEND l_t_data_records_db.

    IF ls_header-msehi IS NOT INITIAL.
      CLEAR: ls_e1bpe1marmrtx, l_t_data_records_db.
      l_t_data_records_db-segnam      = 'E1BPE1MARMRTX'.
      ls_e1bpe1marmrtx-function       = '004'.
      ls_e1bpe1marmrtx-material       = ls_header-matnr.
      ls_e1bpe1marmrtx-alt_unit       = ls_header-msehi.
      ls_e1bpe1marmrtx-alt_unit_iso   = ls_header-msehi.
      ls_e1bpe1marmrtx-denominatr     = 'X'.
      ls_e1bpe1marmrtx-unit_dim_iso   = 'X'.
      ls_e1bpe1marmrtx-volume         = 'X'.
      ls_e1bpe1marmrtx-unit_of_wt_iso = 'X'.
      l_t_data_records_db-sdata       = ls_e1bpe1marmrtx.
      APPEND l_t_data_records_db.
    ENDIF.

*&---------------------------------------------------------------------*
*&      Segment MBEW - aktivace cenovch hromad
*&---------------------------------------------------------------------*
    LOOP AT lt_pobocky.
      CLEAR: ls_e1bpe1mbewrt, l_t_data_records_db.
      l_t_data_records_db-segnam = 'E1BPE1MBEWRT'.
      ls_e1bpe1mbewrt-function   = '004'.
      ls_e1bpe1mbewrt-material   = ls_header-matnr.
      ls_e1bpe1mbewrt-val_area   = lt_pobocky-werks.
      ls_e1bpe1mbewrt-val_cat    = 'R'.
      l_t_data_records_db-sdata  = ls_e1bpe1mbewrt.
      APPEND l_t_data_records_db.
    ENDLOOP.

    LOOP AT lt_pobocky.
      CLEAR: ls_e1bpe1mbewrtx, l_t_data_records_db.
      l_t_data_records_db-segnam = 'E1BPE1MBEWRTX'.
      ls_e1bpe1mbewrtx-function  = '004'.
      ls_e1bpe1mbewrtx-material  = ls_header-matnr.
      ls_e1bpe1mbewrtx-val_area  = lt_pobocky-werks.
      ls_e1bpe1mbewrtx-val_cat   = 'X'.
      l_t_data_records_db-sdata  = ls_e1bpe1mbewrtx.
      APPEND l_t_data_records_db.
    ENDLOOP.

*&---------------------------------------------------------------------*
*&      Segment MLGN - WM sklady pro dan poboky
*&---------------------------------------------------------------------*
    LOOP AT lt_t320 WHERE lgnum NE '100'.
      CLEAR: l_t_data_records_db, ls_e1bpe1mlgnrt.
      l_t_data_records_db-segnam     = 'E1BPE1MLGNRT'.
      ls_e1bpe1mlgnrt-function       = '004'.
      ls_e1bpe1mlgnrt-material       = ls_header-matnr.
      ls_e1bpe1mlgnrt-whse_no        = lt_t320-lgnum.
      ls_e1bpe1mlgnrt-l_equip_1      = '1'.
      ls_e1bpe1mlgnrt-leq_unit_1     = 'ST'.
      ls_e1bpe1mlgnrt-leq_unit_1_iso = 'PCE'.
      ls_e1bpe1mlgnrt-unittype_1     = '001'.
      l_t_data_records_db-sdata      = ls_e1bpe1mlgnrt.
      APPEND l_t_data_records_db.
    ENDLOOP.

    LOOP AT lt_t320 WHERE lgnum NE '100'.
      CLEAR: l_t_data_records_db, ls_e1bpe1mlgnrtx.
      l_t_data_records_db-segnam      = 'E1BPE1MLGNRTX'.
      ls_e1bpe1mlgnrtx-function       = '004'.
      ls_e1bpe1mlgnrtx-material       = ls_header-matnr.
      ls_e1bpe1mlgnrtx-whse_no        = lt_t320-lgnum.
      ls_e1bpe1mlgnrtx-l_equip_1      = 'X'.
      ls_e1bpe1mlgnrtx-leq_unit_1     = 'X'.
      ls_e1bpe1mlgnrtx-leq_unit_1_iso = 'X'.
      ls_e1bpe1mlgnrtx-unittype_1     = 'X'.
      l_t_data_records_db-sdata       = ls_e1bpe1mlgnrtx.
      APPEND l_t_data_records_db.
    ENDLOOP.

*&---------------------------------------------------------------------*
*&      Segment MLGT - grifzny
*&---------------------------------------------------------------------*
    LOOP AT lt_lgtyp.
      CLEAR: l_t_data_records_db, ls_e1bpe1mlgtrt.
      l_t_data_records_db-segnam = 'E1BPE1MLGTRT'.
      ls_e1bpe1mlgtrt-function   = '004'.
      ls_e1bpe1mlgtrt-material   = ls_header-matnr.
      ls_e1bpe1mlgtrt-whse_no    = lt_lgtyp-lgnum.
      ls_e1bpe1mlgtrt-stge_type  = lt_lgtyp-lgtypstockcheck.
      l_t_data_records_db-sdata  = ls_e1bpe1mlgtrt.
      APPEND l_t_data_records_db.
    ENDLOOP.
    LOOP AT lt_lgtyp.
      CLEAR: l_t_data_records_db, ls_e1bpe1mlgtrtx.
      l_t_data_records_db-segnam = 'E1BPE1MLGTRTX'.
      ls_e1bpe1mlgtrtx-function  = '004'.
      ls_e1bpe1mlgtrtx-material  = ls_header-matnr.
      ls_e1bpe1mlgtrtx-whse_no   = lt_lgtyp-lgnum.
      ls_e1bpe1mlgtrtx-stge_type = 'X'.
      l_t_data_records_db-sdata  = ls_e1bpe1mlgtrtx.
      APPEND l_t_data_records_db.
    ENDLOOP.

*&---------------------------------------------------------------------*
*&      Segment MVKE - prodejn organizace a cesta odbytu
*&---------------------------------------------------------------------*
    LOOP AT lt_vkorg.
      CLEAR: l_t_data_records_db, ls_e1bpe1mvkert.
      l_t_data_records_db-segnam = 'E1BPE1MVKERT'.
      ls_e1bpe1mvkert-function   = '004'.
      ls_e1bpe1mvkert-material   = ls_header-matnr.
      ls_e1bpe1mvkert-sales_org  = lt_vkorg-vkorg.
      ls_e1bpe1mvkert-distr_chan = lt_vkorg-vtweg.
      l_t_data_records_db-sdata  = ls_e1bpe1mvkert.
      APPEND l_t_data_records_db.
    ENDLOOP.

    LOOP AT lt_vkorg.
      CLEAR: l_t_data_records_db, ls_e1bpe1mvkertx.
      l_t_data_records_db-segnam  = 'E1BPE1MVKERTX'.
      ls_e1bpe1mvkertx-function   = '004'.
      ls_e1bpe1mvkertx-material   = ls_header-matnr.
      ls_e1bpe1mvkertx-sales_org  = lt_vkorg-vkorg.
      ls_e1bpe1mvkertx-distr_chan = lt_vkorg-vtweg.
      l_t_data_records_db-sdata   = ls_e1bpe1mvkertx.
      APPEND l_t_data_records_db.
    ENDLOOP.

*&---------------------------------------------------------------------*
*&      ZALOEN IDOCU
*&---------------------------------------------------------------------*
    DESCRIBE TABLE l_t_data_records_db LINES tabix.
    control_record_db_in-maxsegnum = tabix.
    GET TIME.
    control_record_db_in-credat = sy-datum.
    control_record_db_in-cretim = sy-uzeit.
    control_record_db_in-upddat = sy-datum.
    control_record_db_in-updtim = sy-uzeit.

    CLEAR: ls_mara.
    SELECT SINGLE matnr FROM mara INTO ls_mara
      WHERE matnr EQ ls_header-matnr.

    IF sy-subrc EQ 0.
      MESSAGE i303(me) WITH 'Artikl ji existuje !.'.

    ELSE.
      CALL FUNCTION 'IDOC_INBOUND_WRITE_TO_DB'
        EXPORTING
          pi_do_handle_error      = 'X'
          pi_return_data_flag     = c_false
        IMPORTING
          pe_idoc_number          = control_record_db_in-docnum
          pe_state_of_processing  = state_of_processing_in
          pe_inbound_process_data = inbound_process_data_in
        TABLES
          t_data_records          = l_t_data_records_db
        CHANGING
          pc_control_record       = control_record_db_in
        EXCEPTIONS
          idoc_not_saved          = 1
          OTHERS                  = 2.

      IF sy-subrc = 0.
        gv_ok = 'X'.
        COMMIT WORK AND WAIT.
        iedidc-docnum = control_record_db_in-docnum.
        APPEND iedidc.

      ELSE.
        MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDIF.
  ENDLOOP.

  IF iedidc[] IS INITIAL.
    MESSAGE i303(me) WITH 'Nebyly vygenerovny dn IDOCy, take nen co poslat.'.
    EXIT.
  ELSE.
    " zpracuju idoc
    DATA: range_tab  LIKE RANGE OF edidc-docnum,
          range_line LIKE LINE OF range_tab.

    range_line-sign = 'I'.
    range_line-option = 'EQ'.

    LOOP AT iedidc.
      range_line-low = iedidc-docnum.
      APPEND range_line TO range_tab.
    ENDLOOP.
    SUBMIT rbdapp01 WITH docnum IN range_tab
                    WITH p_output = '' AND RETURN.

*    LOOP AT it_header INTO ls_header.
*      DATA: wa_mara LIKE mara.
*
*      CLEAR: wa_mara.
*      SELECT SINGLE matnr FROM mara INTO wa_mara-matnr
*        WHERE matnr EQ ls_header-matnr.
*
*      IF wa_mara IS INITIAL.
*        gv_ok = ''.
*        EXIT.
**        MESSAGE i303(me) WITH 'Artikl' wa_mara-matnr 'nebyl zaloen !'.
*      ELSE.
*        gv_ok = 'X'.
**        MESSAGE i303(me) WITH 'Artikl' wa_mara-matnr 'byl zaloen !' .
**        REFRESH: s_matnr.
*        CLEAR: ls_header.
*      ENDIF.
*    ENDLOOP.

*    IF gv_ok EQ 'X'.
    DATA: lv_line LIKE sy-tabix.

    DESCRIBE TABLE it_header LINES lv_line.

    IF lv_line GT 1.
      MESSAGE i303(me) WITH 'Artikly byly zaloeny !' .
    ELSE.
      MESSAGE i303(me) WITH 'Artikl' ls_header-matnr 'byl zaloen !' .
    ENDIF.
*    ELSE.
*      MESSAGE i303(me) WITH 'Artikl' ls_header-matnr 'nebyl zaloen !'.
*    ENDIF.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  SAVE_COND
*&---------------------------------------------------------------------*
*    uloen podmnky autorks poplatky pro artikl
*----------------------------------------------------------------------*
FORM save_cond USING p_cond_type p_calctypcon p_condcurr.
  DATA: t_bapicondct  LIKE  bapicondct OCCURS 0 WITH HEADER LINE,
        t_bapicondhd  LIKE  bapicondhd OCCURS 0 WITH HEADER LINE,
        t_bapicondit  LIKE  bapicondit OCCURS 0 WITH HEADER LINE,
        t_bapicondqs  LIKE  bapicondqs OCCURS 0 WITH HEADER LINE,
        t_bapicondvs  LIKE  bapicondvs OCCURS 0 WITH HEADER LINE,
        t_bapiret2    LIKE  bapiret2   OCCURS 0 WITH HEADER LINE,
        t_bapiknumhs  LIKE  bapiknumhs OCCURS 0 WITH HEADER LINE,
        t_mem_initial LIKE  cnd_mem_initial OCCURS 0 WITH HEADER LINE.

  DATA: knumh LIKE konh-knumh.

  LOOP AT it_header INTO ls_header WHERE zoip IS NOT INITIAL OR zrec IS NOT INITIAL.
    DATA: p_cond_value LIKE konp-kbetr.

    IF p_cond_type EQ 'ZOIP'.
      p_cond_value = ls_header-zoip.
    ELSE.
      p_cond_value = ls_header-zrec.
    ENDIF.

    IF p_cond_value IS NOT INITIAL.
      CALL FUNCTION 'NUMBER_GET_NEXT'
        EXPORTING
          nr_range_nr = '01'
          object      = 'KONH'
        IMPORTING
          number      = knumh.

      " a966
      t_bapicondct-operation  = '009'.
      t_bapicondct-cond_usage = 'A'.
      t_bapicondct-table_no   = '966'.
      t_bapicondct-applicatio = 'M'.
      t_bapicondct-cond_type  = p_cond_type.
      CONCATENATE '2100' ls_header-matnr INTO t_bapicondct-varkey.
      t_bapicondct-valid_to   = '99991231'.
      t_bapicondct-valid_from = sy-datum.
      t_bapicondct-cond_no    = knumh.
      APPEND t_bapicondct.
      " konh
      t_bapicondhd-operation  = '009'.
      t_bapicondhd-cond_no    = knumh.
      t_bapicondhd-created_by = sy-uname.
      t_bapicondhd-creat_date = sy-datum.
      t_bapicondhd-cond_usage = 'A'.
      t_bapicondhd-table_no   = '966'.
      t_bapicondhd-applicatio = 'M'.
      t_bapicondhd-cond_type  = p_cond_type.
      CONCATENATE '2100' ls_header-matnr INTO t_bapicondhd-varkey.
      t_bapicondhd-valid_from = sy-datum.
      t_bapicondhd-valid_to   = '99991231'.
      APPEND t_bapicondhd.
      " konp
      t_bapicondit-operation  = '009'.
      t_bapicondit-cond_no    = knumh.
      t_bapicondit-cond_count = '01'.
      t_bapicondit-applicatio = 'M'.
      t_bapicondit-cond_type  = p_cond_type.
      t_bapicondit-scaletype  = 'A'.
      t_bapicondit-scalebasin = ' '.
      t_bapicondit-scale_qty  = '0'.
      t_bapicondit-calctypcon = p_calctypcon. " A je %, C je mna ( USD, CZK,... )
      t_bapicondit-cond_value = p_cond_value.
      t_bapicondit-condcurr   = p_condcurr.

      IF p_cond_type EQ 'ZREC'.
        t_bapicondit-cond_p_unt = '1'.
        t_bapicondit-cond_unit = 'ST'.
        t_bapicondit-conditidx = 1.
      ENDIF.

      t_bapicondit-matlsettl  = ls_header-matnr.
      APPEND t_bapicondit.

      break capikj.
      CALL FUNCTION 'BAPI_PRICES_CONDITIONS'
        TABLES
          ti_bapicondct  = t_bapicondct
          ti_bapicondhd  = t_bapicondhd
          ti_bapicondit  = t_bapicondit
          ti_bapicondqs  = t_bapicondqs
          ti_bapicondvs  = t_bapicondvs
          to_bapiret2    = t_bapiret2
          to_bapiknumhs  = t_bapiknumhs
          to_mem_initial = t_mem_initial
        EXCEPTIONS
          update_error   = 1
          OTHERS         = 2.
    ENDIF.
  ENDLOOP.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
*  ELSE.
*    CONCATENATE 'Podmnka' p_cond_type 'byla spn zalona.' INTO lv_info.
*    MESSAGE i303(me) WITH lv_info. "'Podmnk pro O+I byla spn zaloena'.
  ENDIF.
  COMMIT WORK AND WAIT.
ENDFORM.
**&---------------------------------------------------------------------*
**&      Form  SAVE_FORMY
**&---------------------------------------------------------------------*
**    uloen zznamu o formch
**----------------------------------------------------------------------*
*FORM save_formy .
*  DATA: ls_zfor LIKE zeta_formy.
*
*  LOOP AT s_matnr.
*    ls_zfor-matnr = ls_header-matnr.
*    INSERT INTO zeta_formy VALUES ls_zfor.
*    IF sy-subrc NE 0.
*      DO 10 TIMES.
*        INSERT INTO zeta_formy VALUES ls_zfor.
*        IF sy-subrc EQ 0.
*          MESSAGE i303(me) WITH 'Formy pro dan artikl zaloeny'.
*          EXIT.
*        ENDIF.
*      ENDDO.
*    ELSE.
*      MESSAGE i303(me) WITH 'Formy pro dan artikl zaloeny'.
*    ENDIF.
*  ENDLOOP.
*ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  F4_VALUE_REQUEST
*&---------------------------------------------------------------------*
*       Funkce pro npovdu
*----------------------------------------------------------------------*
FORM f4_value_request  TABLES p_table USING p_title p_retfield CHANGING p_value.
  REFRESH: it_return.
  CLEAR: it_return.
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      window_title = p_title
      retfield     = p_retfield
      value_org    = 'S'
    TABLES
      value_tab    = p_table
      return_tab   = it_return.

  IF it_return-fieldval IS NOT INITIAL.
    p_value  = it_return-fieldval.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Module  GET_TEXT_BRAND  INPUT
*&---------------------------------------------------------------------*
*       Znaka
*----------------------------------------------------------------------*
MODULE get_text_brand INPUT.
  IF ls_header-brand IS NOT INITIAL.
    CLEAR: t_wrf_brands.
    READ TABLE t_wrf_brands WITH KEY brand_id = ls_header-brand.
    IF sy-subrc NE 0.
      CLEAR: ls_header-brand.
      MESSAGE i303(me) WITH 'Znaka neexistuje'.
    ELSE.
      ls_header-brand_text = t_wrf_brands-brand_descr.
    ENDIF.
  ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  GET_TEXT_WEKGR  INPUT
*&---------------------------------------------------------------------*
*       kategorie
*----------------------------------------------------------------------*
MODULE get_text_wekgr INPUT.
  IF ls_header-wekgr IS NOT INITIAL.
    CLEAR: t_dd07t.
    READ TABLE t_dd07t WITH KEY domvalue_l = ls_header-wekgr.
    IF sy-subrc NE 0.
      CLEAR: ls_header-wekgr.
      MESSAGE i303(me) WITH 'Kategorie neexistuje'.
    ELSE.
      ls_header-wekgr_text = t_dd07t-ddtext.
    ENDIF.
  ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  GET_TEXT_EXTWG  INPUT
*&---------------------------------------------------------------------*
*       Podkategorie
*----------------------------------------------------------------------*
MODULE get_text_extwg INPUT.
  IF ls_header-extwg IS NOT INITIAL.
    CLEAR: ls_header-extwg_text.
    SELECT SINGLE ewbez FROM twewt INTO ls_header-extwg_text
      WHERE spras EQ 'CS' AND
            extwg EQ ls_header-extwg.
    IF ls_header-extwg_text IS INITIAL.
      CLEAR: ls_header-extwg.
      MESSAGE i303(me) WITH 'Podkategorie neexistuje'.
    ELSE.
      SELECT SINGLE zzetawekgr FROM zeta_wekgr INTO ls_header-wekgr
        WHERE extwg EQ ls_header-extwg.

      READ TABLE t_dd07t WITH KEY domvalue_l = ls_header-wekgr.
      ls_header-wekgr_text = t_dd07t-ddtext.
    ENDIF.
  ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  GET_TEXT_KARPS  INPUT
*&---------------------------------------------------------------------*
*       Kategorie RPS
*----------------------------------------------------------------------*
MODULE get_text_karps INPUT.
  IF ls_header-msehi IS NOT INITIAL.
    READ TABLE t_t006a WITH KEY msehi = ls_header-msehi.
    IF sy-subrc NE 0.
      CLEAR: ls_header-msehi.
      MESSAGE i303(me) WITH 'Kategorie RPS neexistuje'.
    ELSE.
      ls_header-karps_text = t_t006a-msehl.
    ENDIF.
  ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  GET_TEXT_WSTAW  INPUT
*&---------------------------------------------------------------------*
*       Celn zaazen
*----------------------------------------------------------------------*
MODULE get_text_wstaw INPUT.
  IF ls_header-wstaw IS NOT INITIAL.
    READ TABLE t_t604t WITH KEY stawn = ls_header-wstaw.
    IF sy-subrc NE 0.
      CLEAR: ls_header-wstaw.
      MESSAGE i303(me) WITH 'Celn zaazen neexistuje'.
    ELSE.
      ls_header-wstaw_text = t_t604t-text1.
    ENDIF.
  ENDIF.
ENDMODULE.
