REPORT zeta_kmenova_data_artiklu.

TABLES: mara, kna1, mvke, knmt, zetaf4_brand_st, zetaf4_extwg_st, zetaf4_mvgr3_st, zetaf4_matkc_st.

*----------------------------------------------------------------------*
*       SELECT-OPTIONS
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-h01.
SELECT-OPTIONS: s_matnr FOR mara-matnr                 NO INTERVALS,
                s_kdmat FOR knmt-kdmat                 NO INTERVALS,
                s_ean11 FOR mara-ean11                 NO INTERVALS,
                s_brand FOR zetaf4_brand_st-brand_id   NO INTERVALS,
                s_wekgr FOR zetaf4_extwg_st-zzetawekgr NO INTERVALS,
                s_extwg FOR zetaf4_extwg_st-extwg      NO INTERVALS,
                s_kondm FOR mvke-kondm                 NO INTERVALS,
                s_vmsta FOR mvke-vmsta                 NO INTERVALS,
                s_matkc FOR zetaf4_matkc_st-matkc      NO INTERVALS,
                s_pbind FOR mvke-pbind                 NO INTERVALS,
                s_mvgr3 FOR zetaf4_mvgr3_st-mvgr3      NO INTERVALS.
PARAMETERS:     gv_matkl TYPE matkl,
                p_kunnr  TYPE kunnr.
SELECTION-SCREEN END OF BLOCK b1.

*----------------------------------------------------------------------*
*       DECLARATION
*----------------------------------------------------------------------*
DATA: BEGIN OF wa_itab,
        matnr       LIKE mara-matnr,
        kdmat       LIKE knmt-kdmat,
        maktx       LIKE makt-maktx,
        brand_id    LIKE mara-brand_id,
        brand_descr LIKE wrf_brands_t-brand_descr,
        zzetawekgr  LIKE mara-zzetawekgr,
        extwg       LIKE mara-extwg,
        ewbez       LIKE twewt-ewbez,
        matkl       LIKE mara-matkl,
        strom       TYPE char100,
        wstaw       LIKE maw1-wstaw,
        text1       LIKE t604t-text1,
        kondm       LIKE mvke-kondm,
        kondm_text  TYPE char50,
        vmsta       LIKE mvke-vmsta,
        vmsta_text  TYPE char50,
        matkc       LIKE mvke-matkc,
        matkc_text  TYPE char50,
        pbind       LIKE mvke-pbind,
        pbind_text  TYPE char50,
        mvgr3       LIKE mvke-mvgr3,
        mvgr3_text  TYPE char50,
        ntgew       LIKE mara-ntgew,
        brgew       LIKE mara-brgew,
        gewei       LIKE mara-gewei,
        volum       LIKE mara-volum,
        voleh       LIKE mara-voleh,
        ean11       LIKE mara-ean11,
        icon_1      TYPE char4,
        ean11_kar   LIKE mara-ean11,
        icon_2      TYPE char4,
        laeng       LIKE mara-laeng,
        breit       LIKE mara-breit,
        hoehe       LIKE mara-hoehe,
        meabm       LIKE mara-meabm,
        karvys      LIKE marm-laeng,
        karsir      LIKE marm-breit,
        kardel      LIKE marm-hoehe,
        karrj       LIKE marm-meabm,
        karhm       LIKE marm-brgew,
        karhmj      LIKE marm-gewei,
        karks       LIKE marm-umrez,
        palvys      LIKE marm-laeng,
        palsir      LIKE marm-breit,
        paldel      LIKE marm-hoehe,
        palrj       LIKE marm-meabm,
        palks       LIKE marm-umrez,
        zmoc_cz     LIKE konp-kbetr,
        zmoc_sk     LIKE konp-kbetr,
        zmoc_a      LIKE konp-kbetr,
*        zoip        LIKE konp-kbetr,
        zelc        LIKE konp-kbetr,
        zelq        LIKE konp-kbetr,
        info,
        cellcolor   TYPE lvc_t_scol,  " barvy sloupce
      END OF wa_itab.

DATA: BEGIN OF it_mean OCCURS 0,  " eany
        matnr LIKE mara-matnr,
        meinh TYPE char50,
        ean11 LIKE mean-ean11,
      END OF it_mean.

DATA: BEGIN OF it_mean_rp OCCURS 0, " recyklacni poplatky
        matnr LIKE mara-matnr,
        meinh TYPE char50,
        knumh LIKE a960-knumh,
      END OF it_mean_rp.

DATA: itab           LIKE wa_itab    OCCURS 0 WITH HEADER LINE,
      lt_matnr       LIKE range_mat  OCCURS 0 WITH HEADER LINE,
      lt_matn2       LIKE range_mat  OCCURS 0 WITH HEADER LINE,
      it_mean_m      LIKE it_mean    OCCURS 0 WITH HEADER LINE,
      t_wgh01        LIKE wgh01      OCCURS 0 WITH HEADER LINE,

      " texty
      it_return      LIKE ddshretval OCCURS 0 WITH HEADER LINE,
      t_wrf_brands_t LIKE wrf_brands_t OCCURS 0 WITH HEADER LINE,
      t_twewt        LIKE twewt OCCURS 0 WITH HEADER LINE,
      t_vmsta        LIKE tvmst OCCURS 0 WITH HEADER LINE,
      t_kondm        LIKE t178t OCCURS 0 WITH HEADER LINE,
      t_mvgr3        LIKE tvm3t OCCURS 0 WITH HEADER LINE,
      t_pbind        LIKE dd07t OCCURS 0 WITH HEADER LINE,
      t_matkc        LIKE dd07t OCCURS 0 WITH HEADER LINE,
      t_t604t        LIKE t604t OCCURS 0 WITH HEADER LINE.

DATA: i_cond  LIKE rfc_db_opt OCCURS 0 WITH HEADER LINE,
      wa_cond TYPE string.

DATA:lv_kunnr_text TYPE char50,
     lv_matkl      TYPE matkl.

*ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
      gd_tab_group TYPE slis_t_sp_group_alv,
      gd_layout    TYPE slis_layout_alv,
      gd_repid     LIKE sy-repid.

DATA: i_sort    TYPE slis_t_sortinfo_alv,
      wa_sort   TYPE slis_sortinfo_alv,
      gt_events TYPE slis_t_event.

CONSTANTS: c_spras TYPE spras VALUE 'CS',
           c_land1 TYPE land1 VALUE 'CZ',
           c_vkorg TYPE vkorg VALUE '2100',
           c_vtweg TYPE vtweg VALUE '02'.

*----------------------------------------------------------------------*
*       AT SELECTION-SCREEN
*----------------------------------------------------------------------*
*       vyvoln stromov npovdy pro kategorii
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON p_kunnr.                       " npovda zkaznk
  lv_kunnr_text = p_kunnr.
  CALL FUNCTION 'ZETA_FM_SEARCH_KUNNR'
    EXPORTING
      kunnr_text = lv_kunnr_text
      ktokd      = 'X'
    IMPORTING
      kunnr      = p_kunnr.


AT SELECTION-SCREEN ON VALUE-REQUEST FOR gv_matkl.    " strom kategorie
  CALL FUNCTION 'ZETA_FM_MATKL_TREE'
    EXPORTING
      pick_parent_cat = 'X'
      p_field         = 'MATKL'
    IMPORTING
      matkl           = gv_matkl.

INITIALIZATION.
  PERFORM get_labels. " zskn textu


*----------------------------------------------------------------------*
*       START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM get_data.
  PERFORM build_fieldcatalog.
  PERFORM build_layout.
  PERFORM set_cell_colors.
  PERFORM display_alv_report.

*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_data .

  lt_matnr[] = s_matnr[].

  " sestaveni podminky pro select v mara/ mvke
  PERFORM f_dyn_range_bld: TABLES s_matnr[]  USING 'm~matnr'       'IN'   'lt_matnr',
                           TABLES s_brand[]  USING 'm~brand_id'    'IN'   's_brand',
                           TABLES s_wekgr[]  USING 'm~zzetawekgr'  'IN'   's_wekgr',
                           TABLES s_extwg[]  USING 'm~extwg'       'IN'   's_extwg',

                           TABLES s_pbind[]  USING 'e~pbind'       'IN'   's_pbind',
                           TABLES s_kondm[]  USING 'e~kondm'       'IN'   's_kondm',
                           TABLES s_vmsta[]  USING 'e~vmsta'       'IN'   's_vmsta',
                           TABLES s_matkc[]  USING 'e~matkc'       'IN'   's_matkc',
                           TABLES s_mvgr3[]  USING 'e~mvgr3'       'IN'   's_mvgr3'.

  CONCATENATE gv_matkl '%' INTO lv_matkl.
  PERFORM f_dyn_param_bld: USING  gv_matkl         'm~matkl'       'LIKE' 'lv_matkl'.





  REFRESH: lt_matn2.
  IF s_ean11[] IS NOT INITIAL.
    SELECT matnr AS low FROM mean INTO CORRESPONDING FIELDS OF TABLE lt_matn2
      WHERE ean11 IN s_ean11.

    APPEND LINES OF lt_matn2 TO lt_matnr.
    LOOP AT lt_matnr.
      lt_matnr-sign = 'I'.
      lt_matnr-option = 'EQ'.
      MODIFY lt_matnr.
    ENDLOOP.

    PERFORM f_dyn_range_bld: TABLES lt_matnr[]  USING 'm~matnr'       'IN'   'lt_matnr'.
  ENDIF.

  REFRESH: lt_matn2.
  IF s_kdmat[] IS NOT INITIAL.
    SELECT matnr AS low FROM knmt INTO CORRESPONDING FIELDS OF TABLE lt_matn2
      WHERE vkorg EQ '2100'      AND
            vtweg EQ '02'        AND
            kunnr EQ p_kunnr     AND
            kdmat IN s_kdmat.

    APPEND LINES OF lt_matn2 TO lt_matnr.
    LOOP AT lt_matnr.
      lt_matnr-sign = 'I'.
      lt_matnr-option = 'EQ'.
      MODIFY lt_matnr.
    ENDLOOP.

    PERFORM f_dyn_range_bld: TABLES lt_matnr[]  USING 'm~matnr'       'IN'   'lt_matnr'.
  ENDIF.


  IF i_cond[] IS NOT INITIAL.
    PERFORM f_dyn_param_bld: USING c_vkorg           'e~vkorg'      'EQ'  'c_vkorg',
                             USING c_vtweg           'e~vtweg'      'EQ'  'c_vtweg'.
  ENDIF.

  " select do mara / mvke
  SELECT * FROM mara AS m INNER JOIN mvke AS e ON m~matnr = e~matnr
     INTO CORRESPONDING FIELDS OF TABLE itab
      WHERE (i_cond).


  LOOP AT itab.
    DATA: lv_wgbez60 LIKE t023t-wgbez60,
          lv_knumh   LIKE konp-knumh.


    " match kod zkaznka
    IF p_kunnr IS NOT INITIAL.
      SELECT SINGLE kdmat FROM knmt INTO itab-kdmat
        WHERE vkorg EQ '2100'      AND
              vtweg EQ '02'        AND
              kunnr EQ p_kunnr     AND
              matnr EQ itab-matnr.
    ENDIF.

    " popis artiklu
    SELECT SINGLE maktx FROM makt INTO itab-maktx
      WHERE spras EQ c_spras AND
            matnr EQ itab-matnr.


    " celn zaazen
    SELECT SINGLE wstaw FROM maw1 INTO itab-wstaw
      WHERE matnr EQ itab-matnr.

    " znaka
    CLEAR: t_wrf_brands_t.
    READ TABLE t_wrf_brands_t WITH KEY brand_id = itab-brand_id BINARY SEARCH.
    itab-brand_descr = t_wrf_brands_t-brand_descr.

    " podkategorie
    CLEAR: t_twewt.
    READ TABLE t_twewt WITH KEY extwg = itab-extwg BINARY SEARCH.
    itab-ewbez = t_twewt-ewbez.

    " kategorie zbo
    CLEAR: t_kondm.
    READ TABLE t_kondm WITH KEY kondm = itab-kondm BINARY SEARCH.
    itab-kondm_text = t_kondm-vtext.

    " nzev celniho zarazeni
    CLEAR: t_t604t.
    READ TABLE t_t604t WITH KEY stawn = itab-wstaw BINARY SEARCH.
    itab-text1 = t_t604t-text1.

    " zivotni cyklus artiklu
    CLEAR: t_vmsta.
    READ TABLE t_vmsta WITH KEY vmsta = itab-vmsta BINARY SEARCH.
    itab-vmsta_text = t_vmsta-vmstb.

    " obchodni status
    CLEAR: t_matkc.
    READ TABLE t_matkc WITH KEY domvalue_l = itab-matkc BINARY SEARCH.
    itab-matkc_text = t_matkc-ddtext.

    " cenovy status
    CLEAR: t_pbind.
    READ TABLE t_pbind WITH KEY domvalue_l = itab-pbind BINARY SEARCH.
    itab-pbind_text = t_pbind-ddtext.

    " importn manazer
    CLEAR: t_mvgr3.
    READ TABLE t_mvgr3 WITH KEY mvgr3 = itab-mvgr3 BINARY SEARCH.
    itab-mvgr3_text = t_mvgr3-bezei.


    " data o krtonu
    SELECT SINGLE umrez laeng breit hoehe meabm brgew gewei FROM marm
    INTO ( itab-karks, itab-karvys, itab-karsir, itab-kardel, itab-karrj, itab-karhm, itab-karhmj )
      WHERE matnr EQ itab-matnr AND
            meinh EQ 'KAR'.

    " data o plalete
    SELECT SINGLE umrez laeng breit hoehe meabm FROM marm
    INTO ( itab-palks, itab-palvys, itab-palsir, itab-paldel, itab-palrj )
      WHERE matnr EQ itab-matnr AND
            meinh EQ 'PAL'.

    " ean kartonu
    SELECT SINGLE ean11 FROM mean INTO itab-ean11_kar
      WHERE matnr EQ itab-matnr AND
            meinh EQ 'KAR'      AND
            hpean EQ 'X'.

    PERFORM get_ean_list: USING itab-matnr 'ST'  CHANGING itab-icon_1 itab-ean11,     " seznm eanu k vrobku
                          USING itab-matnr 'KAR' CHANGING itab-icon_2 itab-ean11_kar. " seznam eanu ke kartonu

    " kategorie zbo
    REFRESH: t_wgh01.
    LOOP AT itab INTO wa_itab WHERE matkl EQ itab-matkl AND
                                    strom NE ''.
      EXIT.
    ENDLOOP.

    IF sy-subrc EQ 0.
      itab-strom = wa_itab-strom.

    ELSE.
      REFRESH: t_wgh01.
      CALL FUNCTION 'MERCHANDISE_GROUP_HIER_ART_SEL'
        EXPORTING
          matkl       = itab-matkl
          spras       = sy-langu
        TABLES
          o_wgh01     = t_wgh01
        EXCEPTIONS
          no_basis_mg = 1
          no_mg_hier  = 2
          OTHERS      = 3.

      LOOP AT t_wgh01.
        CONCATENATE t_wgh01-klsbez itab-strom INTO itab-strom SEPARATED BY '/'.
      ENDLOOP.

      CLEAR: lv_wgbez60.
      SELECT SINGLE wgbez60 FROM t023t INTO lv_wgbez60
      WHERE spras EQ 'CS' AND
      matkl EQ itab-matkl.

      CONCATENATE itab-strom  lv_wgbez60 INTO  itab-strom.
    ENDIF.

    " ceny
    PERFORM get_price USING: 'ZMOC' 'CZ' itab-matnr CHANGING itab-zmoc_cz,
                             'ZMOC' 'SK' itab-matnr CHANGING itab-zmoc_sk,
                             'MOCA' 'CZ' itab-matnr CHANGING itab-zmoc_a.

    " cenov podmnka ZOIP
*    CLEAR: lv_knumh.
*    SELECT SINGLE knumh FROM a966 INTO lv_knumh
*      WHERE kappl EQ 'M'    AND
*            kschl EQ 'ZOIP' AND
*            ekorg EQ '2100' AND
*            matnr EQ itab-matnr AND
*    datbi GE sy-datum AND
*    datab LE sy-datum.
*
*    SELECT SINGLE kbetr FROM konp INTO itab-zoip
*      WHERE knumh EQ lv_knumh.
*
*    itab-zoip = itab-zoip / 10.

    " RP pro CZ a SK
    SELECT * FROM marm INTO CORRESPONDING FIELDS OF TABLE it_mean_rp
    WHERE matnr EQ itab-matnr AND
    ( meinh LIKE 'Z%' OR meinh LIKE 'Y%' ).

    LOOP AT it_mean_rp.
      IF it_mean_rp-meinh(1) EQ 'Y'.
        CLEAR: it_mean_rp-knumh.
        SELECT SINGLE knumh FROM a960 INTO it_mean_rp-knumh
          WHERE kappl EQ 'M'    AND
                kschl EQ 'ZELC' AND
                lland EQ 'CZ'   AND
                bstme EQ it_mean_rp-meinh AND
                datab LE sy-datum AND
                datbi GE sy-datum.

        IF it_mean_rp-knumh IS NOT INITIAL.
          SELECT SINGLE kbetr FROM konp INTO itab-zelc
          WHERE knumh EQ it_mean_rp-knumh.
        ENDIF.

      ELSEIF it_mean_rp-meinh(1) EQ 'Z'.
        CLEAR: it_mean_rp-knumh.
        SELECT SINGLE knumh FROM a960 INTO it_mean_rp-knumh
          WHERE kappl EQ 'M'    AND
                kschl EQ 'ZELQ' AND
                lland EQ 'SK'   AND
                bstme EQ it_mean_rp-meinh AND
                datab LE sy-datum AND
                datbi GE sy-datum.

        IF it_mean_rp-knumh IS NOT INITIAL.
          SELECT SINGLE kbetr FROM konp INTO itab-zelq
          WHERE knumh EQ it_mean_rp-knumh.
        ENDIF.
      ENDIF.
    ENDLOOP.

    MODIFY itab.
  ENDLOOP.

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 '&IC1'.
      CASE rs_selfield-fieldname.
        WHEN 'EAN11' OR 'EAN11_KAR'.
          DATA: lv_meinh TYPE meinh.

          REFRESH: it_mean, it_return.
          CLEAR: it_return.

          IF rs_selfield-fieldname EQ 'EAN11'.
            lv_meinh = 'ST'.
          ELSE.
            lv_meinh = 'KAR'.
          ENDIF.

          SELECT matnr meinh ean11 FROM mean INTO CORRESPONDING FIELDS OF TABLE it_mean
          WHERE matnr EQ itab-matnr AND
          meinh EQ lv_meinh.

          LOOP AT it_mean.
            SELECT SINGLE msehl FROM t006a INTO it_mean-meinh
            WHERE msehi EQ it_mean-meinh AND
            spras EQ 'CS'.
            MODIFY it_mean.
          ENDLOOP.

          CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
            EXPORTING
              window_title = 'Seznam dostupnch ean'
              retfield     = 'EAN11'
              value_org    = 'S'
            TABLES
              value_tab    = it_mean
              return_tab   = it_return.
      ENDCASE.

    WHEN 'REFRESH'.
      PERFORM get_data.
      rs_selfield-refresh = 'X'.

    WHEN 'DETAIL'.
      CALL FUNCTION 'ZDOC_ART_POPUP'
        EXPORTING
          matnr         = itab-matnr
          maktx         = itab-maktx
          repid         = 'SAPLSLVC_FULLSCREEN'
          dynnr         = sy-dynnr
        EXCEPTIONS
          nothing_found = 1
          OTHERS        = 2.
      IF sy-subrc <> 0.
      ENDIF.

    WHEN 'WEB'.
      CALL FUNCTION 'ZETA_FM_MATNR_WEB_VIEW'
        EXPORTING
          matnr = itab-matnr.

  ENDCASE.
ENDFORM.                    "user_command
*&---------------------------------------------------------------------*
*&      Form  BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*       Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*
FORM build_fieldcatalog.
*     col_pos fieldname         l_text inttype ref_fieldname ref_tabname outputlen fix emphasize.
  IF p_kunnr IS NOT INITIAL.
    PERFORM build_fcat USING:
            2    'KDMAT'          text-047 'C'      'KNMT'  'KDMAT'                         10       'X'  'C150' ' '.
  ENDIF.

  PERFORM build_fcat USING:
          1    'MATNR'          text-001 'C'      'MARA'  'MATNR'                         20       'X'  'C150' ' ',
          3    'MAKTX'          text-002 'C'      'MAKT'  'MAKTX'                         10       'X'  'C150'  '',
          4    'BRAND_ID'       text-003 'C'      ''      ''                              10       ''  'C150'  '',
          5    'BRAND_DESCR'    text-045 'C'      ''      ''                              10       ''  'C150'  '',
          6    'ZZETAWEKGR'     text-004 'C'      ''      ''                              10       ''  'C150'  '',
          7    'EXTWG'          text-005 'C'      ''      ''                              10       ''  'C150'  '',
          8    'EWBEZ'          text-006 'C'      ''      ''                              10       ''  'C150'  '',
          9    'MATKL'          text-007 'C'      ''      ''                              10       ''  'C150'  '',
         10    'STROM'          text-008 'C'      ''      ''                              10       ''  'C150'  '',
*         11    'ICON_1'         text-020 'C'      ''      ''                             10       ''  'C150'  'X',
         11    'EAN11'          text-016 'C'      ''      ''                              10       ''  'C150'  '',
*         11    'ICON_2'         text-046 'C'      ''      ''                             10       ''  'C150'  'X',
         12    'EAN11_KAR'      text-046 'C'      ''      ''                              10       ''  'C150'  '',

         13    'NTGEW'          text-011 'I'      'ITAB'  'NTGEW'                         10       ''  'C150'  '',
         14    'KONDM_TEXT'     text-062 'C'      ''      ''                              10       ''  'C150'  '',
         15    'VMSTA_TEXT'     text-063 'C'      ''      ''                              10       ''  'C150'  '',
         16    'MATKC_TEXT'     text-064 'C'      ''      ''                              10       ''  'C150'  '',
         17    'PBIND_TEXT'     text-065 'C'      ''      ''                              10       ''  'C150'  '',
         18    'MVGR3_TEXT'     text-066 'C'      ''      ''                              10       ''  'C150'  '',

         19    'HOEHE'          text-019 'I'      'MARA'  'HOEHE'                         10       ''  'C150'  '',
         20    'BREIT'          text-018 'I'      'MARA'  'BREIT'                         10       ''  'C150'  '',
         21    'LAENG'          text-017 'I'      'MARA'  'LAENG'                         10       ''  'C150'  '',


         22    'VOLUM'          text-014 'I'      'MARA'  'VOLUM'                         10       ''  'C150'  '',
         23    'BRGEW'          text-012 'I'      'ITAB'  'BRGEW'                         10       ''  'C150'  '',

         24    'KARVYS'         text-023 'I'      ''  ''                                  10       ''  'C150'  '',
         25    'KARSIR'         text-024 'I'      ''  ''                                  10       ''  'C150'  '',
         26    'KARDEL'         text-025 'I'      ''  ''                                  10       ''  'C150'  '',
         27    'KARHM'          text-027 'I'      ''  ''                                  10       ''  'C150'  '',
         28    'KARKS'          text-022 'I'      ''  ''                                  10       ''  'C150'  '',

         29    'PALDEL'         text-030 'I'      ''  ''                                  10       ''  'C150'  '',
         30    'PALSIR'         text-031 'I'      ''  ''                                  10       ''  'C150'  '',
         31    'PALVYS'         text-032 'I'      ''  ''                                  10       ''  'C150'  '',
         32    'PALKS'          text-029 'I'      ''  ''                                  10       ''  'C150'  '',

         33    'ZMOC_CZ'        text-034 'I'      ''  ''                                  10       ''  'C150'  '',
         34    'ZMOC_SK'        text-035 'I'      ''  ''                                  10       ''  'C150'  '',
         35    'ZMOC_A'         text-052 'I'      ''  ''                                  10       ''  'C150'  '',
         36    'ZELC'           text-059 'I'      ''  ''                                  10       ''  'C150'  '',
         37    'ZELQ'           text-060 'I'      ''  ''                                  10       ''  'C150'  '',
         38    'WSTAW'          text-009 'C'      ''      ''                              10       ''  'C150'  '',
         39    'TEXT1'          text-010 'C'      ''      ''                              10       ''  'C150'  ''.
*         40    'ZOIP'           text-051 'I'      ''  ''                                  10       ''  'C150'  ''.

ENDFORM.                    " BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*&      Form  BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*       Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*
FORM build_fcat USING col_pos fieldname l_text  inttype ref_tabname ref_fieldname outputlen fix emphasize icon.
***col_pos fieldname        coltext  inttype decimals decimals_o outputlen fix emphasize
  fieldcatalog-col_pos       = col_pos.
  fieldcatalog-fieldname     = fieldname.
  fieldcatalog-seltext_l     = l_text.
  fieldcatalog-ddictxt       = 'L'.
  fieldcatalog-seltext_m     = l_text.
  fieldcatalog-seltext_s     = l_text.
  fieldcatalog-inttype       = inttype.
  fieldcatalog-ref_tabname   = ref_tabname.
  fieldcatalog-ref_fieldname = ref_fieldname.
  fieldcatalog-outputlen     = outputlen.
  fieldcatalog-emphasize     = emphasize.
  fieldcatalog-fix_column    = fix.
  fieldcatalog-icon          = icon.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.
ENDFORM.                    "APPEND_WSFIELD
*&---------------------------------------------------------------------*
*&      Form  BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       Build layout for ALV grid report
*----------------------------------------------------------------------*
FORM build_layout.
  gd_layout-no_input          = 'X'.
  gd_layout-zebra             = 'X'.
  gd_layout-colwidth_optimize = 'X'.
  gd_layout-totals_text       = 'Totals'(201).
  gd_layout-coltab_fieldname  = 'CELLCOLOR'.
ENDFORM.                    " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*       Display report using ALV grid
*----------------------------------------------------------------------*
FORM display_alv_report.
  gd_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = gd_repid
      i_callback_top_of_page   = 'TOP-OF-PAGE'
      i_callback_user_command  = 'USER_COMMAND'
      i_callback_pf_status_set = 'STATUS'
      is_layout                = gd_layout
      it_fieldcat              = fieldcatalog[]
      it_sort                  = i_sort
      i_save                   = 'A'
*     is_variant               = z_template
    TABLES
      t_outtab                 = itab
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
  IF sy-subrc <> 0.
  ENDIF.
ENDFORM.                    " DISPLAY_ALV_REPORT
FORM status USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'PF_STATUS' EXCLUDING rt_extab.
ENDFORM.
*-------------------------------------------------------------------*
* Form  TOP-OF-PAGE                                                 *
*-------------------------------------------------------------------*
* ALV Report Header                                                 *
*-------------------------------------------------------------------*
FORM top-of-page.
*ALV Header declarations
  DATA: t_header      TYPE slis_t_listheader,
        wa_header     TYPE slis_listheader,
        t_line        LIKE wa_header-info,
        ld_lines      TYPE i,
        ld_linesc(10) TYPE c,
        pozn(60)      TYPE c.

* Title
  wa_header-typ  = 'H'.
  wa_header-info = 'Pehled kmenovch dat artikl'.
  APPEND wa_header TO t_header.
  CLEAR wa_header.

* Date
  wa_header-typ  = 'S'.
  wa_header-key = 'Datum: '.
  CONCATENATE  sy-datum+6(2) '.'  sy-datum+4(2) '.' sy-datum(4) INTO wa_header-info.
  APPEND wa_header TO t_header.
  CLEAR: wa_header.

* Total No. of Records Selected
  DESCRIBE TABLE itab LINES ld_lines.
  ld_linesc = ld_lines.
  CONCATENATE 'Poet zznam: ' ld_linesc INTO t_line SEPARATED BY space.
  wa_header-typ  = 'A'.
  wa_header-info = t_line.
  APPEND wa_header TO t_header.
  CLEAR: wa_header, t_line.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = t_header.
ENDFORM.                    "top-of-page
*&---------------------------------------------------------------------*
*&      Form  SET_CELL_COLOURS barvy sloupc
*&---------------------------------------------------------------------*
*       Set colour of individual ALV cell, field
*----------------------------------------------------------------------*
FORM set_cell_colors . " formular pro obarven sloupc
  DATA: ld_index TYPE sy-tabix.

  LOOP AT itab.
    ld_index = sy-tabix.

    PERFORM set_color USING:
      ld_index 'WSTAW' 5,  ld_index 'TEXT1' 5,
      ld_index 'LAENG' 5,  ld_index 'BREIT' 5,  ld_index 'HOEHE' 5,  ld_index 'BRGEW' 5, ld_index 'VOLUM' 5,
      ld_index 'PALVYS' 5, ld_index 'PALSIR' 5, ld_index 'PALDEL' 5,
      ld_index 'PALRJ' 5,  ld_index 'PALKS' 5.

      IF itab-icon_1 IS NOT INITIAL.
        PERFORM set_color USING:
              ld_index 'EAN11' 3.
      ENDIF.

      IF itab-icon_2 IS NOT INITIAL.
        PERFORM set_color USING:
              ld_index 'EAN11_KAR' 3.
      ENDIF.



  ENDLOOP.
ENDFORM.                    " SET_CELL_COLOURS.
*&---------------------------------------------------------------------*
*&      Form  SET_COLOR
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM set_color  USING ld_index  p_fname p_color.
  DATA: wa_cellcolor TYPE lvc_s_scol.

  wa_cellcolor-fname = p_fname.
  wa_cellcolor-color-col = p_color.
  wa_cellcolor-color-int = '1'.
  wa_cellcolor-color-inv = '0'.
  APPEND wa_cellcolor TO itab-cellcolor.
  MODIFY itab  INDEX ld_index TRANSPORTING cellcolor.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  GET_LABELS
*&---------------------------------------------------------------------*
*       Naten textu
*----------------------------------------------------------------------*
FORM get_labels .
  " znaka
  IF t_wrf_brands_t[] IS INITIAL.
    SELECT * FROM wrf_brands_t INTO CORRESPONDING FIELDS OF TABLE t_wrf_brands_t
      WHERE language EQ 'CS'
        ORDER BY brand_id.
  ENDIF.

  " podkategorie
  IF t_twewt[] IS INITIAL.
    SELECT * FROM twewt INTO CORRESPONDING FIELDS OF TABLE t_twewt
      WHERE spras EQ 'CS'
        ORDER BY extwg.
  ENDIF.

  " skupina nakupi
  IF t_kondm[] IS INITIAL.
    SELECT * FROM t178t INTO CORRESPONDING FIELDS OF TABLE t_kondm
      WHERE spras EQ 'CS'
        ORDER BY kondm.
  ENDIF.

  " ivotn status
  IF t_vmsta[] IS INITIAL.
    SELECT * FROM tvmst INTO CORRESPONDING FIELDS OF TABLE t_vmsta
      WHERE spras EQ 'CS'
        ORDER BY vmsta.
  ENDIF.

  " obchodn status
  IF t_matkc[] IS INITIAL.
    SELECT * FROM dd07t INTO CORRESPONDING FIELDS OF TABLE t_matkc
      WHERE domname    EQ 'MATKC' AND
            ddlanguage EQ 'CS'
          ORDER BY domvalue_l.
  ENDIF.

  " cenov status
  IF t_pbind[] IS INITIAL.
    SELECT * FROM dd07t INTO CORRESPONDING FIELDS OF TABLE t_pbind
      WHERE domname    EQ 'PBIND' AND
            ddlanguage EQ 'CS'
          ORDER BY domvalue_l.
  ENDIF.

  " importn manaer
  IF t_mvgr3[] IS INITIAL.
    SELECT * FROM tvm3t INTO CORRESPONDING FIELDS OF TABLE t_mvgr3
      WHERE spras EQ 'CS'
        ORDER BY mvgr3.
  ENDIF.

  " celn zaazen
  IF t_t604t[] IS INITIAL.
    SELECT * FROM t604t INTO CORRESPONDING FIELDS OF TABLE t_t604t
      WHERE spras EQ 'CS' AND
            land1 EQ 'CZ'.
  ENDIF.
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 zmatkc_range
                     USING  i_tab_field
                            i_operator
                            i_input.

  CLEAR: wa_cond.
  IF lt_input[] 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  GET_EAN_LIST
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_ean_list  USING    p_matnr
                            p_meinh
                   CHANGING p_icon
                            p_ean11.

  DATA: lv_ean  LIKE sy-tabix.

  " seznm eanu k vrobku
  REFRESH: it_mean_m.
  SELECT matnr meinh ean11 FROM mean INTO CORRESPONDING FIELDS OF TABLE it_mean_m
    WHERE matnr EQ p_matnr AND
          meinh EQ p_meinh.

  DESCRIBE TABLE it_mean_m LINES lv_ean.
  IF lv_ean GT 1.
    p_icon = '@1E@'.
*    CONCATENATE p_icon p_ean11  INTO p_ean11 SEPARATED BY space.
  ELSE.
    CLEAR: p_icon.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  GET_PRICE
*&---------------------------------------------------------------------*
*       Ceny
*----------------------------------------------------------------------*
FORM get_price  USING p_kschl
                      p_lland
                      p_matnr
             CHANGING p_price.

  DATA: lv_knumh   LIKE konp-knumh.

  CLEAR: lv_knumh.
  SELECT SINGLE knumh FROM a150 INTO lv_knumh
    WHERE kappl EQ 'V'      AND
          kschl EQ p_kschl  AND
          lland EQ p_lland  AND
          matnr EQ p_matnr  AND
          datab LE sy-datum AND
          datbi GT sy-datum.

  SELECT SINGLE kbetr FROM konp INTO p_price
    WHERE knumh EQ lv_knumh.

ENDFORM.
