Текущее время: Вс, сен 07 2025, 01:18

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Ahrefs [Bot]


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

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