Текущее время: Чт, май 09 2024, 06:02

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: MB51
СообщениеДобавлено: Пн, янв 29 2007, 11:41 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Чт, янв 18 2007, 11:04
Сообщения: 7
Откуда: Кривой Рог
Вот наваял отчетик, для анализа движения материалов, может кому понадобиться! Делалась для модуля PP! Можно конечно расширить!

Code:
*&---------------------------------------------------------------------*
*& Report  ZMB51                                                          *
*&---------------------------------------------------------------------*
REPORT  zmb51.

TABLES: mseg, mkpf, sscrfields, aufk.
DATA: BEGIN OF str_car,
        matnr       TYPE matnr,          " номер материала
        aufnr       TYPE bstnr,          " номер заказа на поставку
        data        TYPE datum,          " Дата заказа на поставку
        sklad_out   TYPE lgort_d,        " Склад погрузки
        mtsnr_out   TYPE mblnr,          " номер документа материала ВДМ отгрузки
        type_out    TYPE bwart,          " тип движения при отгрузке
        measure_out TYPE erfme,          " ед.измер. отгрузки отгрузки
        menge_out   TYPE ktmng,          " объем перевозки отгрузки
        sklad_in    TYPE lgort_d,        " Склад приема
        mtsnr_in    TYPE mblnr,          " номер документа материала ВДМ приема
        type_in     TYPE bwart,          " тип движения при приеме
        measure_in  TYPE erfme,          " ед.измер. отгрузки приема
        menge_in    TYPE ktmng,          " объем перевозки приема
        type_car    TYPE bezei20,        " тип перевозки
        orderid     TYPE aufnr,          " номер тех.заказа
        verid       TYPE verid,          " вариант иготовления
        ism01       TYPE ru_ismng,       " Работы
        mat_doc     TYPE mblnr,
        doc_year    TYPE mjahr,
        entry_time  TYPE cputm,          "  Время ввода
        matdoc_itm TYPE   mblpo,
      END OF str_car,
      tbl_car  LIKE str_car OCCURS 0 WITH HEADER LINE,
      tbl_car1 LIKE str_car OCCURS 0 WITH HEADER LINE,
      tbl_car2 LIKE str_car OCCURS 0 WITH HEADER LINE,
      ok_code LIKE sy-ucomm,
      par_trans TYPE num1.

DATA: is_variant     LIKE disvariant.

INITIALIZATION.
**---------------------------------------------------------------------*
**       Экран заполнения параметров отчета
**---------------------------------------------------------------------*
  SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-003.
  SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-001.

  SELECT-OPTIONS matnr  FOR mseg-matnr MEMORY ID zpp_matnr.        " Материал
  SELECT-OPTIONS werks  FOR mseg-werks MEMORY ID zpp_werks.        " завод
  SELECT-OPTIONS period FOR mkpf-budat MEMORY ID zpp_dats.         " период

  SELECTION-SCREEN END OF BLOCK b2.

  SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-002.
  SELECTION-SCREEN BEGIN OF LINE.
  PARAMETERS trans_  RADIOBUTTON GROUP g1.
  SELECTION-SCREEN COMMENT 4(22) text-004 FOR FIELD trans_.
  SELECTION-SCREEN END OF LINE.

  SELECTION-SCREEN BEGIN OF LINE.
  PARAMETERS work_ RADIOBUTTON GROUP g1 DEFAULT 'X'.
  SELECTION-SCREEN COMMENT 4(30)  text-005 FOR FIELD work_.
  SELECTION-SCREEN END OF LINE.

  SELECTION-SCREEN END OF BLOCK b3.

  SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-007.
  PARAMETER variant LIKE disvariant-variant.
  SELECTION-SCREEN END OF BLOCK b4.

  SELECTION-SCREEN END OF BLOCK b1.

  IF NOT par_trans IS INITIAL.
    CASE par_trans.
      WHEN 1.
        trans_ = 'X'.
        work_ = ''.
      WHEN 2.
        trans_ = ''.
        work_ = 'X'.
    ENDCASE.
    MODIFY SCREEN.
  ENDIF.

LOAD-OF-PROGRAM.
  GET PARAMETER ID 'PAR_TRANS' FIELD par_trans.

START-OF-SELECTION.

  IF matnr IS INITIAL AND werks IS INITIAL AND period IS INITIAL.
    MESSAGE 'Выбор не был ограничен!' TYPE 'S'.
    EXIT.
  ENDIF.

  PERFORM data_select_trans.
  PERFORM output_alv.

END-OF-SELECTION.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR variant.
  PERFORM alv_variant.
**********************************************************************
* Формирование данных по транспорту
**********************************************************************
FORM data_select_trans.
  DATA: order_range    LIKE  bapi_pp_orderrange OCCURS 0 WITH HEADER LINE,
        goodsmovements LIKE  bapi2017_gm_item_show OCCURS 0 WITH HEADER LINE,
        goodsmov       LIKE  bapi2017_gm_item_show OCCURS 0 WITH HEADER LINE,
        confirmations  LIKE  bapi_pp_conf_key OCCURS 0 WITH HEADER LINE,
        confirm        LIKE  bapi_pp_conf_key OCCURS 0 WITH HEADER LINE.


  DATA: move_type_ra    LIKE bapi2017_gm_move_type_ra OCCURS 0 WITH HEADER LINE,
        goodsmvt_header LIKE bapi2017_gm_head_02 OCCURS 0 WITH HEADER LINE,
        goodsmvt_items  LIKE bapi2017_gm_item_show OCCURS 0 WITH HEADER LINE,
        goodsmvt_items1 LIKE bapi2017_gm_item_show OCCURS 0 WITH HEADER LINE,
        return          LIKE bapiret2 OCCURS 0 WITH HEADER LINE,
        nomtk           TYPE oij_nomtk,
        shtype          TYPE oig_tdstyp.
  DATA: move_t(3) TYPE c.

  DATA: mov(3) TYPE c,
        line TYPE i,
*        orderid  TYPE aufnr,
        mat_doc  TYPE mblnr,
        mat_doc1 TYPE mblnr,
        bool TYPE i,
        data TYPE sy-datum,
        bednr   TYPE bednr,
        verid   TYPE verid,
        banfn   TYPE banfn.

  REFRESH : return, goodsmvt_items, goodsmvt_header,
            move_type_ra, order_range, confirmations,tbl_car1, tbl_car, tbl_car2.

  CLEAR : return, goodsmvt_items, goodsmvt_header,
          move_type_ra, move_t, order_range, confirmations, tbl_car, tbl_car1, tbl_car2.

  move_type_ra-sign = 'I'.
  move_type_ra-option = 'BT'.
  IF trans_ = 'X' .
    move_type_ra-low = '351'.
    move_type_ra-high = '352'.
    APPEND  move_type_ra.
  ENDIF.
  move_type_ra-low = '101'.
  move_type_ra-high = '102'.
  APPEND  move_type_ra.

  CALL FUNCTION 'BAPI_GOODSMVT_GETITEMS'
    TABLES
      material_ra     = matnr
      plant_ra        = werks
      move_type_ra    = move_type_ra
      pstng_date_ra   = period
      goodsmvt_header = goodsmvt_header
      goodsmvt_items  = goodsmvt_items
      return          = return.

  IF trans_ = 'X' .
    goodsmvt_items1[] = goodsmvt_items[].
    LOOP AT goodsmvt_items WHERE orderid IS INITIAL AND stge_loc IS NOT INITIAL
                                 AND ( move_type = '351' OR move_type = '352' ).
      READ TABLE goodsmvt_header WITH KEY mat_doc = goodsmvt_items-mat_doc.
      tbl_car-matnr = goodsmvt_items-material.
      tbl_car-aufnr = goodsmvt_items-po_number.
      tbl_car-data = goodsmvt_header-doc_date.
      tbl_car-sklad_out = goodsmvt_items-stge_loc.
      tbl_car-mtsnr_out = goodsmvt_items-mat_doc.
      tbl_car-type_out = goodsmvt_items-move_type.
      IF goodsmvt_items-move_type = '351'.
        tbl_car-menge_out = goodsmvt_items-entry_qnt.
      ELSE.
        tbl_car-menge_out = -1 * goodsmvt_items-entry_qnt.
      ENDIF.

      CLEAR: banfn, verid, bednr.

      SELECT SINGLE banfn FROM ekpo                        " номер заявки
        INTO banfn
        WHERE ebeln = goodsmvt_items-po_number.

      SELECT SINGLE verid FROM eban                        " вариант изготовления
        INTO verid
        WHERE banfn = banfn.

      SELECT SINGLE bednr FROM eban                        " вариант изготовления
        INTO bednr
        WHERE banfn = banfn.

      CONDENSE verid NO-GAPS.
      CONDENSE bednr NO-GAPS.
      CONCATENATE  verid bednr INTO tbl_car-verid.

      WRITE goodsmvt_items-entry_uom TO tbl_car-measure_out .

      IF goodsmvt_items-move_type = '351'.
        move_t = '101'.
      ELSEIF goodsmvt_items-move_type = '352'.
        move_t = '102'.
      ENDIF.

      CLEAR tbl_car1. REFRESH tbl_car1.
      tbl_car1[] = tbl_car[].

      CLEAR: tbl_car-menge_in, tbl_car-measure_in, tbl_car-mtsnr_in, tbl_car-sklad_in, tbl_car-type_in.

      LOOP AT goodsmvt_items1 WHERE orderid IS INITIAL AND stge_loc IS NOT INITIAL
                AND move_type = move_t AND po_number = goodsmvt_items-po_number.

        READ TABLE tbl_car1 WITH KEY mtsnr_in = goodsmvt_items1-mat_doc.

        IF sy-subrc <> 0.
          tbl_car-mtsnr_in = goodsmvt_items1-mat_doc.
          tbl_car-sklad_in =  goodsmvt_items1-stge_loc.
*          tbl_car-measure_in = goodsmvt_items1-entry_uom.
          tbl_car-orderid = goodsmvt_items1-orderid.

          WRITE goodsmvt_items1-entry_uom TO tbl_car-measure_in.

          IF goodsmvt_items1-move_type = '101'.
            tbl_car-menge_in = goodsmvt_items1-entry_qnt.
            tbl_car-type_in = goodsmvt_items1-move_type.
          ELSE.
            tbl_car-menge_in = -1 * goodsmvt_items1-entry_qnt.
            tbl_car-type_in = goodsmvt_items1-move_type.
          ENDIF.
          EXIT.
        ENDIF.
      ENDLOOP.

      SELECT SINGLE nomtk FROM oijnomi INTO nomtk
        WHERE docnr = goodsmvt_items-po_number.
      SELECT SINGLE shtype FROM oijnomh INTO shtype
        WHERE nomtk = nomtk.

      tbl_car-type_car = shtype.

      APPEND tbl_car.
    ENDLOOP.
*------------------------------------------------------------------------
  ELSEIF work_ = 'X' .

    LOOP AT goodsmvt_items.
      READ TABLE goodsmvt_header WITH KEY mat_doc = goodsmvt_items-mat_doc.
      tbl_car1-matnr = goodsmvt_items-material.
      tbl_car1-aufnr = goodsmvt_items-po_number.
      tbl_car1-data = goodsmvt_header-pstng_date.
      tbl_car1-sklad_in = goodsmvt_items-stge_loc.
      tbl_car1-mtsnr_in = goodsmvt_items-mat_doc.
      tbl_car1-type_in = goodsmvt_items-move_type.
      tbl_car1-orderid = goodsmvt_items-orderid.

      WRITE goodsmvt_items-entry_uom TO tbl_car1-measure_in .

      IF goodsmvt_items-move_type = '101'.
        tbl_car1-menge_in = goodsmvt_items-entry_qnt.
      ELSE.
        tbl_car1-menge_in = -1 * goodsmvt_items-entry_qnt.
      ENDIF.

      tbl_car1-mat_doc = goodsmvt_items-mat_doc.
      tbl_car1-doc_year = goodsmvt_items-doc_year.
      tbl_car1-entry_time = goodsmvt_header-entry_time.
*  Проверка тех.заказа
      SELECT SINGLE * FROM aufk
        WHERE aufnr EQ tbl_car1-orderid
              AND
              phas2 NE 'X'
              AND
              phas3 NE 'X'
              AND
              loekz NE 'X'.
      IF sy-subrc = 0 AND aufk-autyp = 40.
        APPEND tbl_car1.
      ELSE.
        CLEAR tbl_car1.
      ENDIF.
    ENDLOOP.

    SORT tbl_car1 BY entry_time.

    CLEAR: tbl_car, data.
*---------------------------------------------------------------------------
*---------------------------------------------------------------------------
*---------------------------------------------------------------------------
    REFRESH : return, goodsmvt_items, goodsmvt_header, goodsmvt_items1.
    CLEAR : return, goodsmvt_items, goodsmvt_header, goodsmvt_items1.

    LOOP AT tbl_car1.
      CALL FUNCTION 'BAPI_GOODSMVT_GETDETAIL'
        EXPORTING
          materialdocument = tbl_car1-mat_doc
          matdocumentyear  = tbl_car1-doc_year
        IMPORTING
          goodsmvt_header  = goodsmvt_header
        TABLES
          goodsmvt_items   = goodsmvt_items
          return           = return.

      APPEND goodsmvt_items TO goodsmvt_items1.
      REFRESH goodsmvt_items.
      CLEAR goodsmvt_items.
    ENDLOOP.

    DATA: BEGIN OF order_str,
            orderid  TYPE aufnr,
            mtsnr    TYPE mblnr,
         END OF order_str,
         order_tbl LIKE order_str OCCURS 0 WITH HEADER LINE.

    CLEAR: order_tbl.
    REFRESH: order_tbl.
    LOOP AT goodsmvt_items1.
      READ TABLE order_tbl WITH KEY orderid = goodsmvt_items1-orderid.
      IF sy-subrc = 0.
        READ TABLE order_tbl WITH KEY mtsnr = goodsmvt_items1-mat_doc.
        IF sy-subrc <> 0.
          order_tbl-orderid = goodsmvt_items1-orderid.
          order_tbl-mtsnr = goodsmvt_items1-mat_doc.
          APPEND order_tbl.
        ENDIF.
      ELSE.
        order_tbl-orderid = goodsmvt_items1-orderid.
        order_tbl-mtsnr = goodsmvt_items1-mat_doc.
        APPEND order_tbl.
      ENDIF.
    ENDLOOP.

    LOOP AT order_tbl.
      order_range-sign = 'I'.
      order_range-option = 'EQ'.
      order_range-low = order_tbl-orderid.
      APPEND order_range.

      CALL FUNCTION 'ZBAPI_PRODORDCONF_GETLIST'
        TABLES
          order_range   = order_range
          confirmations = confirmations.

      APPEND LINES OF confirmations TO confirm.
      REFRESH order_range.
      CLEAR order_range.
    ENDLOOP.

    DATA: conf_detail LIKE bapi_pp_confirm OCCURS 0 WITH HEADER LINE,
          my_conf_detail LIKE bapi_pp_confirm OCCURS 0 WITH HEADER LINE,
          work_conf_detail LIKE bapi_pp_confirm OCCURS 0 WITH HEADER LINE,
          myconf_no TYPE co_rueck,
          n TYPE i, n_tools TYPE i.

    CLEAR: conf_detail,my_conf_detail, work_conf_detail, mat_doc, myconf_no.
    REFRESH: conf_detail, my_conf_detail, work_conf_detail.

    LOOP AT confirm.
      CALL FUNCTION 'ZBAPI_PRODORDCONF_GETDETAIL'
        EXPORTING
          confirmation        = confirm-conf_no
          confirmationcounter = confirm-conf_cnt
        IMPORTING
          conf_detail         = conf_detail
        TABLES
          goodsmovements      = goodsmovements.

      APPEND LINES OF goodsmovements TO goodsmov.
      APPEND conf_detail TO my_conf_detail.
    ENDLOOP.

    SORT my_conf_detail BY conf_no conf_cnt orderid operation.
    READ TABLE my_conf_detail INDEX 1.
    myconf_no = my_conf_detail-conf_no.

    DELETE ADJACENT DUPLICATES FROM my_conf_detail COMPARING ALL FIELDS.
    DESCRIBE TABLE my_conf_detail LINES n.

    LOOP AT my_conf_detail.
      n_tools = sy-tabix.
      IF ( my_conf_detail-yield IS NOT INITIAL ) OR ( my_conf_detail-conf_activity1 < 0 ).
        IF myconf_no = my_conf_detail-conf_no.
          IF my_conf_detail-reversed = 'X'.
            work_conf_detail-conf_activity1 = work_conf_detail-conf_activity1 - my_conf_detail-conf_activity1.
          ELSE.
            work_conf_detail-conf_activity1 = work_conf_detail-conf_activity1 + my_conf_detail-conf_activity1.
          ENDIF.
          work_conf_detail-orderid = my_conf_detail-orderid.
        ELSE.
          APPEND work_conf_detail.
          CLEAR work_conf_detail.
          myconf_no = my_conf_detail-conf_no.
          IF my_conf_detail-reversed = 'X'.
            work_conf_detail-conf_activity1 = work_conf_detail-conf_activity1 - my_conf_detail-conf_activity1.
          ELSE.
            work_conf_detail-conf_activity1 = work_conf_detail-conf_activity1 + my_conf_detail-conf_activity1.
          ENDIF.
          work_conf_detail-orderid = my_conf_detail-orderid.
        ENDIF.
      ENDIF.
      IF n = n_tools.
        APPEND work_conf_detail.
      ENDIF.
    ENDLOOP.

    DATA: order_sel TYPE aufnr, my-subrc TYPE sy-subrc.
    CLEAR: order_sel,tbl_car, my-subrc.

    SORT confirm BY orderid.
    DELETE ADJACENT DUPLICATES FROM confirm COMPARING orderid.
    DESCRIBE TABLE confirm LINES n.

    LOOP AT goodsmov.
      IF order_sel <> goodsmov-orderid.

        IF sy-tabix <> 1.
          CLEAR: tbl_car2. REFRESH tbl_car2.
          tbl_car2[] = tbl_car[].
          LOOP AT tbl_car1 WHERE orderid = order_sel.
            READ TABLE tbl_car2 WITH KEY mtsnr_in = tbl_car1-mtsnr_in.
            IF sy-subrc <> 0.
              tbl_car-orderid = tbl_car1-orderid.
              tbl_car-menge_out = ''.
              tbl_car-ism01 = ''.
              tbl_car-sklad_in = tbl_car1-sklad_in.
              tbl_car-mtsnr_in = tbl_car1-mtsnr_in.
              tbl_car-type_in = tbl_car1-type_in.
              tbl_car-menge_in = tbl_car1-menge_in.
              tbl_car-measure_in = tbl_car1-measure_in.
              APPEND tbl_car.
            ENDIF.
          ENDLOOP.
          CLEAR tbl_car.
        ENDIF.

        READ TABLE work_conf_detail WITH KEY orderid = goodsmov-orderid .
        IF sy-subrc = 0.
          tbl_car-ism01 = work_conf_detail-conf_activity1.
          order_sel = goodsmov-orderid.
        ENDIF.
      ELSE.
        IF ( sy-tabix <> 1 ) AND ( n = 1 ).
          CLEAR: tbl_car2. REFRESH tbl_car2.
          tbl_car2[] = tbl_car[].
          LOOP AT tbl_car1 WHERE orderid = order_sel.
            READ TABLE tbl_car2 WITH KEY mtsnr_in = tbl_car1-mtsnr_in.
            IF sy-subrc <> 0.
              tbl_car-orderid = tbl_car1-orderid.
              tbl_car-menge_out = ''.
              IF my-subrc = 0.
                tbl_car-ism01 = ''.
              ENDIF.
*              tbl_car-ism01 = ''.
              tbl_car-sklad_in = tbl_car1-sklad_in.
              tbl_car-mtsnr_in = tbl_car1-mtsnr_in.
              tbl_car-type_in = tbl_car1-type_in.
              tbl_car-menge_in = tbl_car1-menge_in.
              tbl_car-measure_in = tbl_car1-measure_in.
              APPEND tbl_car.
            ENDIF.
          ENDLOOP.
          CLEAR tbl_car.
        ENDIF.
        IF my-subrc = 0.
          CLEAR tbl_car-ism01.
        ENDIF.
      ENDIF.

      CLEAR: matnr, move_type_ra.
      REFRESH: matnr, move_type_ra.

      move_type_ra-sign = 'I'.
      move_type_ra-option = 'BT'.
      move_type_ra-low = '261'.
      move_type_ra-high = '262'.
      APPEND  move_type_ra.


      matnr-sign = 'I'.
      matnr-option = 'EQ'.
      matnr-low = goodsmov-material.
      APPEND matnr.

      CALL FUNCTION 'BAPI_GOODSMVT_GETITEMS'
        TABLES
          material_ra     = matnr
          plant_ra        = werks
          move_type_ra    = move_type_ra
          pstng_date_ra   = period
          goodsmvt_header = goodsmvt_header
          goodsmvt_items  = goodsmvt_items
          return          = return.

      READ TABLE goodsmvt_header WITH KEY mat_doc = goodsmov-mat_doc.
      my-subrc = sy-subrc.
      IF my-subrc = 0.
        CLEAR bool. CLEAR mat_doc1.
        IF goodsmov-move_type = '261' OR goodsmov-move_type = '531'.
          mov = '101'.
          tbl_car-menge_out = goodsmov-entry_qnt.
        ELSEIF  goodsmov-move_type = '262'  OR goodsmov-move_type = '532'.
          tbl_car-menge_out = -1 * goodsmov-entry_qnt.
          mov = '102'.
        ENDIF.

        CLEAR: tbl_car2. REFRESH tbl_car2.
        CLEAR: tbl_car-menge_in, tbl_car-measure_in, tbl_car-mtsnr_in, tbl_car-sklad_in, tbl_car-type_in.
        tbl_car2[] = tbl_car[].

        LOOP AT tbl_car1 WHERE orderid = goodsmov-orderid AND type_in = mov.

          READ TABLE tbl_car2 WITH KEY mtsnr_in = tbl_car1-mtsnr_in.

          IF sy-subrc <> 0.
            tbl_car-sklad_in = tbl_car1-sklad_in.
            tbl_car-mtsnr_in = tbl_car1-mtsnr_in.
            tbl_car-type_in = tbl_car1-type_in.
            tbl_car-menge_in = tbl_car1-menge_in.
            tbl_car-measure_in = tbl_car1-measure_in.
          ENDIF.

        ENDLOOP.

        READ TABLE tbl_car2 WITH KEY mtsnr_out = goodsmov-mat_doc matdoc_itm = goodsmov-matdoc_itm.

        IF sy-subrc <> 0.
          tbl_car-aufnr = tbl_car1-aufnr .
          tbl_car-data = tbl_car1-data.
          tbl_car-orderid = tbl_car1-orderid.

          tbl_car-matnr = goodsmov-material.
          tbl_car-sklad_out = goodsmov-stge_loc.
          tbl_car-mtsnr_out = goodsmov-mat_doc.
          tbl_car-type_out = goodsmov-move_type.
          tbl_car-matdoc_itm = goodsmov-matdoc_itm.

          SELECT SINGLE verid FROM afpo
            INTO tbl_car-verid
            WHERE aufnr = tbl_car1-orderid.

          WRITE goodsmov-entry_uom TO tbl_car-measure_out .
          APPEND tbl_car.
        ELSE.
          IF tbl_car-mtsnr_in <> ''.
            tbl_car-data = tbl_car1-data.
            tbl_car-orderid = tbl_car1-orderid.
            tbl_car-matnr = goodsmov-material.
            tbl_car-menge_out = ''.
            tbl_car-ism01 = ''.
            APPEND tbl_car.
          ENDIF.
        ENDIF.

      ENDIF.
    ENDLOOP.
  ENDIF.
ENDFORM. "data_select_trans
*&---------------------------------------------------------------------*
*&      Вывод данных в ALV-GRID
*&---------------------------------------------------------------------*
FORM output_alv.

  CLEAR is_variant.
  is_variant-variant = variant.

  TYPE-POOLS slis.

  DATA: m_field_cat1 TYPE slis_t_fieldcat_alv  WITH HEADER LINE,
        m_field_cat TYPE slis_t_fieldcat_alv,
        user_command TYPE slis_formname,
        m_sortinfo_alv1 TYPE slis_t_sortinfo_alv WITH HEADER LINE,
        m_sortinfo_alv TYPE slis_t_sortinfo_alv.

  DATA: gt_events TYPE slis_t_event WITH HEADER LINE.

  REFRESH: m_field_cat, m_field_cat1.
  CLEAR: m_field_cat, m_field_cat1.

  user_command = 'user_command_0100'.

  m_field_cat1-col_pos   = 1.
  m_field_cat1-fieldname = 'MATNR'.
  m_field_cat1-seltext_l = 'Материал'.
  m_field_cat1-outputlen = 17.
  APPEND m_field_cat1.

  m_field_cat1-col_pos   = 2.
  m_field_cat1-fieldname = 'AUFNR'.
  m_field_cat1-seltext_l = '№ Зак. на поставку'.
  m_field_cat1-outputlen = 15.
  APPEND m_field_cat1.

  m_field_cat1-col_pos   = 3.
  m_field_cat1-fieldname = 'DATA'.
  m_field_cat1-seltext_l = 'Дата ЗакНаПост'.
  m_field_cat1-outputlen = 10.
  APPEND m_field_cat1.

  m_field_cat1-col_pos   = 4.
  m_field_cat1-fieldname = 'SKLAD_OUT'.
  m_field_cat1-seltext_l = 'Склад погр.'.
  m_field_cat1-outputlen = 5.
  APPEND m_field_cat1.

  m_field_cat1-col_pos   = 5.
  m_field_cat1-fieldname = 'MTSNR_OUT'.
  m_field_cat1-seltext_l = '№ документа материала'.
  m_field_cat1-outputlen = 12.
  APPEND m_field_cat1.

  m_field_cat1-col_pos   = 6.
  m_field_cat1-fieldname = 'TYPE_OUT'.
  m_field_cat1-seltext_l = 'ВДМ'.
  m_field_cat1-outputlen = 5.
  APPEND m_field_cat1.

  m_field_cat1-col_pos   = 7.
  m_field_cat1-fieldname = 'MEASURE_OUT'.
  m_field_cat1-seltext_l = 'Ед.изм.'.
  m_field_cat1-outputlen = 5.
  APPEND m_field_cat1.

  m_field_cat1-col_pos   = 8.
  m_field_cat1-fieldname = 'MENGE_OUT'.
  m_field_cat1-seltext_l = 'Объем'.
  m_field_cat1-outputlen = 15.
  APPEND m_field_cat1.

  m_field_cat1-col_pos   = 9.
  m_field_cat1-fieldname = 'SKLAD_IN'.
  m_field_cat1-seltext_l = 'Склад разг.'.
  m_field_cat1-outputlen = 5.
  APPEND m_field_cat1.

  m_field_cat1-col_pos   = 10.
  m_field_cat1-fieldname = 'MTSNR_IN'.
  m_field_cat1-seltext_l = '№ документа материала'.
  m_field_cat1-outputlen = 12.
  APPEND m_field_cat1.

  m_field_cat1-col_pos   = 11.
  m_field_cat1-fieldname = 'TYPE_IN'.
  m_field_cat1-seltext_l = 'ВДМ'.
  m_field_cat1-outputlen = 5.
  APPEND m_field_cat1.

  m_field_cat1-col_pos   = 12.
  m_field_cat1-fieldname = 'MEASURE_IN'.
  m_field_cat1-seltext_l = 'Ед.изм.'.
  m_field_cat1-outputlen = 5.
  APPEND m_field_cat1.

  m_field_cat1-col_pos   = 13.
  m_field_cat1-fieldname = 'MENGE_IN'.
  m_field_cat1-seltext_l = 'Объем'.
  m_field_cat1-outputlen = 15.
  APPEND m_field_cat1.

  m_field_cat1-col_pos   = 14.
  m_field_cat1-fieldname = 'TYPE_CAR'.
  m_field_cat1-seltext_l = 'Тип перевозки'.
  m_field_cat1-outputlen = 6.
  APPEND m_field_cat1.

  m_field_cat1-col_pos   = 15.
  m_field_cat1-fieldname = 'ORDERID'.
  m_field_cat1-seltext_l = '№ тех.заказа'.
  m_field_cat1-outputlen = 14.
  APPEND m_field_cat1.

  m_field_cat1-col_pos   = 16.
  m_field_cat1-fieldname = 'VERID'.
  m_field_cat1-seltext_l = 'ВарИзг'.
  m_field_cat1-outputlen = 6.
  APPEND m_field_cat1.

  m_field_cat1-col_pos   = 17.
  m_field_cat1-fieldname = 'ISM01'.
  m_field_cat1-seltext_l = 'ОбПодРаб'.
  m_field_cat1-outputlen = 12.
  APPEND m_field_cat1.

  m_field_cat[] = m_field_cat1[].

  REFRESH: m_sortinfo_alv1, m_sortinfo_alv.
  CLEAR: m_sortinfo_alv1, m_sortinfo_alv.

  m_sortinfo_alv1-spos = 1.
  m_sortinfo_alv1-fieldname = 'DATA'.
  m_sortinfo_alv1-tabname = 'TBL_CAR'.
  m_sortinfo_alv1-up = 'X'.
  APPEND m_sortinfo_alv1.

  m_sortinfo_alv1-spos = 2.
  m_sortinfo_alv1-fieldname = 'ORDERID'.
  m_sortinfo_alv1-tabname = 'TBL_CAR'.
  m_sortinfo_alv1-up = 'X'.
  APPEND m_sortinfo_alv1.

  m_sortinfo_alv[] = m_sortinfo_alv1[].

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
    i_callback_program                = sy-cprog
*   i_callback_pf_status_set          = ''
    i_callback_user_command           = 'USER_COMMAND'
*   I_CALLBACK_TOP_OF_PAGE            = ' '
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*   I_STRUCTURE_NAME                  =
*   I_BACKGROUND_ID                   = ' '
*   I_GRID_TITLE                      =
*   I_GRID_SETTINGS                   =
*   IS_LAYOUT                         =
    it_fieldcat                       = m_field_cat
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
    it_sort                           = m_sortinfo_alv
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         = 'X'
    i_save                            = 'A'
    is_variant                        = is_variant
*   IT_EVENTS                         =
*   IT_EVENT_EXIT                     =
*   IS_PRINT                          =
*   IS_REPREP_ID                      =
*   I_SCREEN_START_COLUMN             = 0
*   I_SCREEN_START_LINE               = 0
*   I_SCREEN_END_COLUMN               = 0
*   I_SCREEN_END_LINE                 = 0
*   IT_ALV_GRAPHICS                   =
*   IT_HYPERLINK                      =
*   IT_ADD_FIELDCAT                   =
*   IT_EXCEPT_QINFO                   =
*   I_HTML_HEIGHT_TOP                 =
*   I_HTML_HEIGHT_END                 =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER           =
*   ES_EXIT_CAUSED_BY_USER            =
     TABLES
       t_outtab                          = tbl_car
* EXCEPTIONS
*   PROGRAM_ERROR                     = 1
*   OTHERS                            = 2
             .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.                    "output_alv
**********************************************************************
* FORM    :   user_command
**********************************************************************
FORM user_command USING u_ucomm  LIKE sy-ucomm              "#EC CALLED
                        selfield TYPE slis_selfield.
  CASE u_ucomm.
    WHEN '&IC1'.
      IF selfield-tabindex <>  0.
        READ TABLE tbl_car INDEX selfield-tabindex.
        CASE selfield-fieldname.
          WHEN 'MTSNR_OUT'.
            SET PARAMETER ID 'MJA' FIELD tbl_car-data(4).
            SET PARAMETER ID 'MBN' FIELD tbl_car-mtsnr_out.
            CALL TRANSACTION  'MIGO' AND SKIP FIRST SCREEN .
            SET PARAMETER ID 'MBN' FIELD ''.
            SET PARAMETER ID 'MJA' FIELD ''.
          WHEN 'MTSNR_IN'.
            SET PARAMETER ID 'MJA' FIELD tbl_car-data(4).
            SET PARAMETER ID 'MBN' FIELD tbl_car-mtsnr_in.
            CALL TRANSACTION  'MIGO' AND SKIP FIRST SCREEN .
            SET PARAMETER ID 'MBN' FIELD ''.
            SET PARAMETER ID 'MJA' FIELD ''.
          WHEN 'AUFNR'.
            SET PARAMETER ID 'BSA' FIELD 'F'.
            SET PARAMETER ID 'BES' FIELD tbl_car-aufnr.
            CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN .
          WHEN 'ORDERID'.
            SET PARAMETER ID 'ANR' FIELD tbl_car-orderid.
            CALL TRANSACTION 'CORT' AND SKIP FIRST SCREEN .
        ENDCASE.
      ENDIF.
  ENDCASE.
ENDFORM.                    "user_command
*&---------------------------------------------------------------------*
*& Возвращает варианты просмотра
*&---------------------------------------------------------------------*
FORM alv_variant.
  DATA: alv_variant      LIKE disvariant.
  DATA: alv_repid        LIKE sy-repid.

  alv_variant-report = sy-repid.
  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
    EXPORTING
      is_variant = alv_variant
      i_save     = 'A'
    IMPORTING
      es_variant = alv_variant
    EXCEPTIONS
      not_found  = 2.
  IF sy-subrc = 2.
    MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ELSE.
    variant = alv_variant-variant.
  ENDIF.
ENDFORM.                    "alv_variant


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB