You are on page 1of 12

**********************************************************************

**
*  Object Name   : ZMSAFZ072                                     
      *
*  Object Title  : Exit customize - safx72                        
     *
*  WRICEF ID     : BAR_ENH054_Mastersaf User Exits                 
    *
*  Author        : Wagner Duarte                                 
      *
*  Date          : 2013.08.15                                   
       *
*---------------------------------------------------------------------
-*
*  Description :BAR_ENH054 -Archive of Monthly Balances             
   *
*                          Controlled Substances                 
      *
*                                                             
         *
*                                                             
         *
*---------------------------------------------------------------------
-*
*  Copy of Standard SAP Object: No                                
     *
*  Object Name   :                                              
       *
*---------------------------------------------------------------------
-*
*  Includes      : No                                           
       *
*---------------------------------------------------------------------
-*
*  DB Tables Used: No           SELECT UPDATE INSERT DELETE        
    *
*                                                             
         *
*--------------------------------------------------------------------- 
*
*  Tables Used       :                   SELECT UPDATE INSERT DEL
ETE   *
* T001w  Plants/Branches:                 X                      
      *
* T001K   Valuation area:                 X                      
      *
* MBEW  Material Valuation:               X                      
      *
* MBEWH Material Valuation: History:      X                       
     *
* /msafx/saftb003  Mascaras Empresa:      X                       
     *
* /msafx/saftb004  Mascaras Filial :      X                       
     *
* MARA  Material Data   :                 X                      
      *
* /MSAFX/SAFTB013 Tipo Material:          X                       

Public Information
     *
*  Input/Output Files: no                                        
      *
*                                                             
         *
*  Includes : No                                                
       *
*                                                             
         *
*---------------------------------------------------------------------
-*
* Program Change History                                         
      *
*---------------------------------------------------------------------
-*
*MOD-XXX  Date       RFC No     WRICEF-ID  Defect-ID  Transport  Re
l ID*
*                                                             
         *
*Change Description                                             
       *
* 2013.08.15 BAR_ENH054 -  RD2K921110                             
     *
* ZMSAFZ072 - Archive of Monthly Balances Controlled Substances      
  *
*                                                             
         *
*---------------------------------------------------------------------
-*
*&--------------------------------------------------------------------
-*
*& Form Z_13_1_MIDDLE_RULE_01_EXIT
*&--------------------------------------------------------------------
-*

*&--------------------------------------------------------------------
-*
*&  Include           ZMSAFZ072
*&--------------------------------------------------------------------
-*
TYPES:  BEGIN OF type_mkpf,
          mblnr TYPE mkpf-mblnr,
          mjahr TYPE mkpf-mjahr,
          budat TYPE mkpf-budat,
          blart TYPE mkpf-blart,
          vgart TYPE mkpf-vgart,
        END OF type_mkpf,

        BEGIN OF type_mseg,
          mblnr TYPE mseg-mblnr,
          zeile TYPE mseg-zeile,
          matnr TYPE mseg-matnr,
          bukrs TYPE mseg-bukrs,
          gsber TYPE mseg-gsber,
          dmbtr TYPE mseg-dmbtr,
          meins TYPE mseg-meins,

Public Information
        END OF type_mseg,

        BEGIN OF type_mara,
          matnr  TYPE mara-matnr,
          mtart  TYPE mara-mtart,
          meins  TYPE mara-meins,
        END OF type_mara,

        BEGIN OF type_t001w,
          werks       LIKE t001w-werks,
          bwkey       LIKE t001w-bwkey,
          land1       LIKE t001w-land1,
          regio       LIKE t001w-regio,
          j_1bbranch  LIKE t001w-j_1bbranch,
         END OF type_t001w,

        BEGIN OF type_t001k,
          bwkey       TYPE t001k-bwkey,
          bukrs       TYPE t001k-bukrs,
         END OF type_t001k,

        BEGIN OF type_mbew,
           matnr    LIKE mbew-matnr,
           bwkey    LIKE mbew-bwkey,
           bwtar    LIKE mbew-bwtar,
           lbkum    LIKE mbew-lbkum,
           salk3    LIKE mbew-salk3,
           vprsv    LIKE mbew-vprsv,
           verpr    LIKE mbew-verpr,
           stprs    LIKE mbew-stprs,
           peinh    LIKE mbew-peinh,
           bklas    LIKE mbew-bklas,
           salkv    LIKE mbew-salkv,
           lfgja    LIKE mbew-lfgja,
           lfmon    LIKE mbew-lfmon,
           bwtty    LIKE mbew-bwtty,
           mtuse    LIKE mbew-mtuse,
           mtorg    LIKE mbew-mtorg,
           ownpr    LIKE mbew-ownpr,
         END OF type_mbew,

        BEGIN OF type_mbewh,
           matnr    LIKE mbewh-matnr,
           bwkey    LIKE mbewh-bwkey,
           bwtar    LIKE mbewh-bwtar,
           lbkum    LIKE mbewh-lbkum,
           salk3    LIKE mbewh-salk3,
           vprsv    LIKE mbewh-vprsv,
           verpr    LIKE mbewh-verpr,
           stprs    LIKE mbewh-stprs,
           peinh    LIKE mbewh-peinh,
           bklas    LIKE mbewh-bklas,
           salkv    LIKE mbewh-salkv,
           lfgja    LIKE mbewh-lfgja,
           lfmon    LIKE mbewh-lfmon,
         END OF type_mbewh.

Public Information
DATA:   t_mkpf TYPE TABLE OF type_mkpf,
        t_mseg TYPE TABLE OF type_mseg,
        t_clobjdat TYPE TABLE OF clobjdat,
        t_saftb003 TYPE TABLE OF /msafx/saftb003,
        t_saftb004 TYPE TABLE OF /msafx/saftb004,
        t_saftb013 TYPE TABLE OF /msafx/saftb013,
* Begin of modification - CHG0037137
*       t_mara     TYPE TABLE OF type_mara,
        t_mara_072 TYPE TABLE OF type_mara,
* End of modification - CHG0037137
        t_t001w    TYPE TABLE OF type_t001w,
        t_mbew     TYPE TABLE OF type_mbew,        t_mbewh    TYPE TAB
LE OF type_mbewh,
        t_t001k    TYPE TABLE OF type_t001k.

DATA:  s_mkpf TYPE type_mkpf,
       s_mseg TYPE type_mseg,
       s_saftb003 TYPE /msafx/saftb003,
       s_saftb004 TYPE /msafx/saftb004,
       s_saftb013 TYPE /msafx/saftb013,
       s_mara     TYPE type_mara,
       s_mbew     TYPE type_mbew,
       s_t001w    TYPE type_t001w,
       s_mbewh    TYPE type_mbewh,
       s_t001k    TYPE type_t001k.

*&--------------------------------------------------------------------
-*
*&      Form  zsafe072_customizado
*&--------------------------------------------------------------------
-*
*       text
*---------------------------------------------------------------------
-*
*  -->  p1        text
*  <--  p2        text
*---------------------------------------------------------------------
-*

FORM zsafe072_customizado CHANGING ti_safx TYPE ANY TABLE.
*ZMSAFZ072 -Development carried out to inform the inventory of contro
lled substances.
* The (PERFORM: f_select,) makes the selection of tables que will be 
Necessary to generate
* SAFX072 (Archive of Monthly Balances Controlled Substances)
* And will be used in the que Mastersaf Global variables are paramet
erized in Transaction (/ MSAFX / TRANSACTION).
* T001w  Plants/Branches:
* T001K   Valuation area:
* MBEW  Material Valuation:
* MBEWH Material Valuation: History:
* /msafx/saftb003  Mascaras Empresa:
* /msafx/saftb004  Mascaras Filial :

Public Information
* MARA  Material Data   :
* /MSAFX/SAFTB013 Tipo Material:
  PERFORM: f_select,
*Tables and process the information obtained in (perform f_select).
           f_process.

ENDFORM.                    "zsafe072_customizado
*&--------------------------------------------------------------------
-*
*&      Form  F_SELECT
*&--------------------------------------------------------------------
-*
*       text
*---------------------------------------------------------------------
-*
*  -->  p1        text
*  <--  p2        text
*---------------------------------------------------------------------
-*
FORM f_select .
*Select language from /msafx/saftb002 filling v_spras

  SELECT SINGLE spras INTO v_spras
    FROM /msafx/saftb002.

*  Select plants/branchs from T001w

  FREE t_t001w.
  SELECT werks bwkey land1 regio j_1bbranch
    FROM t001w
    INTO  TABLE t_t001w
*    FOR ALL ENTRIES IN ti_t001k_52
*    WHERE bwkey = ti_t001k_52-bwkey
* (wa_parametros-brnch_low AND wa_parametros-brnch_high )MasterSAF - 
Execution Parameters.
     WHERE j_1bbranch BETWEEN wa_parametros-brnch_low
                       AND wa_parametros-brnch_high.
  IF sy-subrc = 0.
    SORT t_t001w BY bwkey.

*  Select Valuation area from T001k
   SELECT bwkey bukrs INTO TABLE t_t001k
      FROM t001k
      FOR ALL ENTRIES IN t_t001w
      WHERE bwkey = t_t001w-bwkey.
    IF sy-subrc = 0.
      SORT t_t001k BY bwkey.
    ENDIF.

*  Select Material Valuation from MBEW obtain

    CHECK NOT t_t001w[] IS INITIAL.
    SELECT matnr bwkey bwtar lbkum salk3 vprsv verpr
           stprs peinh bklas salkv lfgja lfmon bwtty

Public Information
           mtuse mtorg ownpr
           FROM  mbew
           INTO TABLE t_mbew
           FOR ALL ENTRIES IN t_t001w
           WHERE bwkey  = t_t001w-werks .

    PERFORM f_valida_mat.

*  Select Material Valuation: History from MBEWH
*wa_parametros-date_low(4) AND wa_parametros-date_low+4(2)MasterSAF - 
Execution Parameters .
  SELECT matnr bwkey bwtar lbkum salk3 vprsv verpr
     stprs peinh bklas salkv lfgja lfmon
    FROM mbewh INTO TABLE t_mbewh
      FOR ALL ENTRIES IN t_mbew
                  WHERE matnr = t_mbew-matnr
                  AND   bwkey = t_mbew-bwkey
                  AND   bwtar = t_mbew-bwtar
                  AND   lfgja => wa_parametros-date_low(4)
                  AND   lfmon => wa_parametros-date_low+4(2) .

    IF sy-subrc = 0.
      SORT t_mbewh BY matnr bwkey bwtar.
    ENDIF.

*  Select Mask Company from /MSAFX/SAFTB003
*wa_parametros-bukrs_low AND wa_parametros-bukrs_high MasterSAF - Exe
cution Parameters .
    SELECT * FROM /msafx/saftb003
      INTO TABLE t_saftb003
      WHERE bukrs BETWEEN wa_parametros-bukrs_low AND wa_parametros-
bukrs_high.
    IF sy-subrc = 0.
      SORT t_saftb003 BY bukrs.
    ENDIF.

*  Select Mask branch from /MSAFX/SAFTB004
* (wa_parametros-brnch_low AND wa_parametros-brnch_high )MasterSAF - 
Execution Parameters.
    SELECT * FROM /msafx/saftb004
      INTO TABLE t_saftb004
      WHERE branch BETWEEN wa_parametros-brnch_low AND wa_parametros-
brnch_high.
    IF sy-subrc = 0.
      SORT t_saftb004 BY branch.

*  Select Material from MARA

      IF NOT t_mbew IS INITIAL.
        SELECT matnr mtart meins
* Begin of modification - CHG0037137
*         INTO TABLE t_mara
          INTO TABLE t_mara_072
* End of modification - CHG0037137
          FROM mara
          FOR ALL ENTRIES IN t_mbew
          WHERE matnr = t_mbew-matnr.

Public Information
        IF sy-subrc = 0.
* Begin of modification - CHG0037137
*         SORT t_mara BY matnr.
          SORT t_mara_072 BY matnr.
* End of modification - CHG0037137
*  Select Material Type from /MSAFX/SAFTB013

          SELECT * FROM /msafx/saftb013
            INTO TABLE t_saftb013
* Begin of modification - CHG0037137
*           FOR ALL ENTRIES IN t_mara
            FOR ALL ENTRIES IN t_mara_072
*           WHERE mtart = t_mara-mtart.
            WHERE mtart = t_mara_072-mtart.
* End of modification - CHG0037137
          IF sy-subrc = 0.
            SORT t_saftb013 BY mtart.
          ENDIF.

        ENDIF.
      ENDIF.
    ENDIF.
  ENDIF.

ENDFORM.                    " F_SELECT
*&--------------------------------------------------------------------
-*
*&      Form  F_PROCESS
*&--------------------------------------------------------------------
-*
*       text
*---------------------------------------------------------------------
-*
*  -->  p1        text
*  <--  p2        text
*---------------------------------------------------------------------
-*
FORM f_process .

  PERFORM: f_gera_72.

ENDFORM.                    " F_PROCESS

*&--------------------------------------------------------------------
-*
*&      Form  f_valida_mat
*&--------------------------------------------------------------------
-*
*       text
*---------------------------------------------------------------------
-*
FORM f_valida_mat.
  DATA v_tabix TYPE sy-tabix.
  DATA v_object TYPE ausp-objek.

Public Information
  DATA v_table TYPE tcla-obtab.
  DATA t_class TYPE TABLE OF sclass.

* Validates feathers Controlled Products
*  LOOP AT t_mseg INTO s_mseg.
  LOOP AT t_mbew INTO s_mbew.
    v_tabix = sy-tabix.
    FREE t_clobjdat.
    v_object = s_mbew-matnr.

    CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
      EXPORTING
        class             = 'BRAZILIAN_CONTROL'
        classtype         = '001'
        features          = 'X'
        object            = v_object
        objecttable       = v_table
      TABLES
        t_class           = t_class
        t_objectdata      = t_clobjdat
      EXCEPTIONS
        no_classification = 1
        no_classtypes     = 2.

    IF t_clobjdat[] IS INITIAL.
      DELETE t_mbew INDEX v_tabix.
    ENDIF.

  ENDLOOP.

ENDFORM.                    "f_valida_mat

*&--------------------------------------------------------------------
-*
*&      Form  f_gera_72
*&--------------------------------------------------------------------
-*
*       text
*---------------------------------------------------------------------
-*
FORM f_gera_72.

  dvar_data = wa_parametros-date_low.

  PERFORM calc_lastday USING dvar_data.

*  LOOP AT t_mseg INTO s_mseg.
  LOOP AT t_mbew INTO s_mbew.
*    READ TABLE t_mkpf INTO s_mkpf WITH KEY mblnr = s_mseg-mblnr
*                                                  BINARY SEARC
H.
*read table T001k
    READ TABLE t_t001k INTO s_t001k WITH KEY bwkey = s_mbew-bwkey
                                                      BINARY SEARCH.
*read table T001w
        READ TABLE t_t001w INTO s_t001w WITH KEY bwkey = s_t001k-bwkey

Public Information
                                                      BINARY SEARCH.
*read table /MSAFX/SAFTB003
    READ TABLE t_saftb003 INTO s_saftb003 WITH KEY bukrs = s_t001k-
bukrs
                                                          BINARY SEARC
H.
*read table /MSAFX/SAFTB004
    READ TABLE t_saftb004 INTO s_saftb004 WITH KEY branch = s_t001w-
j_1bbranch
                                                           BINARY SEAR
CH.
*read table MARA
* Begin of modification - CHG0037137
*   READ TABLE t_mara INTO s_mara WITH KEY matnr = s_mbew-matnr
    READ TABLE t_mara_072 INTO s_mara WITH KEY matnr = s_mbew-matnr
* End of modification - CHG0037137
                                                  BINARY SEARCH.
*read table /MSAFX/SAFTB013
    READ TABLE t_saftb013 INTO s_saftb013 WITH KEY mtart = s_mara-
mtart
*read table History from MBEWH
                                                          BINARY SEARC
H.
    CLEAR  s_mbewh.
    READ TABLE t_mbewh INTO s_mbewh WITH KEY  matnr = s_mbew-matnr
                                              bwkey = s_mbew-bwkey
                                              bwtar = s_mbew-bwtar
                                                      BINARY SEARCH.

    check not s_mbewh-lbkum is initial or not s_mbew-lbkum is INITIAL.

    wa_t001-bukrs = s_t001k-bukrs.

    PERFORM popular_tab_dinamica
    USING v_vazio
        v_vazio
        v_vazio
        001.

    COLLECT <fs_line> INTO <fs_table>.

  ENDLOOP.
ENDFORM.                    "f_gera_72

*&--------------------------------------------------------------------
-*
*&      Form  Z_072_72_COD_EMPRESA
*&--------------------------------------------------------------------
-*
*       text
*---------------------------------------------------------------------
-*
FORM z_072_72_cod_empresa.
*MasterSAF - Parameters Masks for Company (/MSAFX/SAFTB013-codigo )
  <fs_field> = s_saftb003-codigo.
ENDFORM.                    "Z_072_72_COD_EMPRESA

Public Information
*&--------------------------------------------------------------------
-*
*&      Form  Z_072_72_COD_ESTAB
*&--------------------------------------------------------------------
-*
*       text
*---------------------------------------------------------------------
-*
FORM z_072_72_cod_estab.
*MasterSAF - Parameters masks Branch  (/MSAFX/SAFTB014-codigo )
  <fs_field> = s_saftb004-codigo .
ENDFORM.                    "Z_072_72_COD_ESTAB

*&--------------------------------------------------------------------
-*
*&      Form  Z_072_72_DATA_MOVTO
*&--------------------------------------------------------------------
-*
*       text
*---------------------------------------------------------------------
-*
FORM  z_072_72_data_movto.
* dvar_data variable (Global variabel in Mastersaf)
  <fs_field> = dvar_data.
ENDFORM.                    "Z_072_72_DATA_MOVTO

*&--------------------------------------------------------------------
-*
*&      Form  Z_072_72_IND_PRODUTO
*&--------------------------------------------------------------------
-*
*       text
*---------------------------------------------------------------------
-*
FORM z_072_72_ind_produto.
*MasterSAF - Types of Material Parameters (/MSAFX/SAFTB013-tipo )
  <fs_field> = s_saftb013-tipo.
ENDFORM.                    "Z_072_72_IND_PRODUTO

*&--------------------------------------------------------------------
-*
*&      Form  Z_072_72_COD_PRODUTO
*&--------------------------------------------------------------------
-*
*       text
*---------------------------------------------------------------------
-*
FORM z_072_72_cod_produto.
* MBEW  Material Valuation:  MOve MAterial (MATNR)*
  <fs_field> = s_mbew-matnr .
ENDFORM.                    "Z_072_72_COD_PRODUTO
*&--------------------------------------------------------------------
-*
*&      Form  Z_072_72_QUANT_SALDO
*&--------------------------------------------------------------------
-*

Public Information
*       text
*---------------------------------------------------------------------
-*
FORM z_072_72_quant_saldo.
* MBEW  Material Valuation:  MOve value Field  (lbkum)
  IF NOT s_mbewh-lbkum IS INITIAL.
    <fs_field> = s_mbewh-lbkum * 1000000.
  ELSE.
    <fs_field> = s_mbew-lbkum * 1000000.
  ENDIF.
ENDFORM.                    "Z_072_72_QUANT_SALDO
*&--------------------------------------------------------------------
-*
*&      Form  Z_072_72_COD_MEDIDA
*&--------------------------------------------------------------------
-*
*       text
*---------------------------------------------------------------------
-*
FORM z_072_72_cod_medida.
*Search the meins using CONVERSION_EXIT_CUNIT_OUTPUT to the field cod
_medida
  CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
       EXPORTING
            input          = s_mara-meins
            language       = v_spras
       IMPORTING
*             LONG_TEXT      =
            output         = <fs_field>
*             SHORT_TEXT     =
        EXCEPTIONS
             UNIT_NOT_FOUND = 1
             OTHERS         = 2
            .

*  <fs_field> = s_mara-meins.

*  v_spras
ENDFORM.                    "Z_072_72_COD_MEDIDA
*&--------------------------------------------------------------------
-*
*&      Form  Z_072_72_TIPO
*&--------------------------------------------------------------------
-*
*       text
*---------------------------------------------------------------------
-*
FORM z_072_72_tipo.

ENDFORM.                    "Z_072_72_TIPO
*&--------------------------------------------------------------------
-*
*&      Form  Z_072_72_OBSERVACAO
*&--------------------------------------------------------------------
-*
*       text
*---------------------------------------------------------------------

Public Information
-*
FORM z_072_72_observacao.

ENDFORM.                    "Z_072_72_OBSERVACAO
*&--------------------------------------------------------------------
-*
*&      Form  Z_072_72_ESPECIFICA_MAT
*&--------------------------------------------------------------------
-*
*       text
*---------------------------------------------------------------------
-*
FORM z_072_72_especifica_mat.
*MasterSAF - Types of Material Parameters (/MSAFX/SAFTB013-tipo ) mov
e to the field especifica_mat
  IF s_saftb013-tipo = '2'.
    <fs_field> = '1'.
  ELSE.
    <fs_field> = '2'.
  ENDIF.
ENDFORM.                    "Z_072_72_ESPECIFICA_MAT

*&--------------------------------------------------------------------
-*
*&      Form  calc_last_day
*&--------------------------------------------------------------------
-*
*       text
*---------------------------------------------------------------------
-*
*      -->PDATA      text
*---------------------------------------------------------------------
-*
FORM calc_last_day USING pdata .
*Makes calculating the last day using: dvar_data. *
  DATA: v_nvar_anoc(4) TYPE n,           "Ano para cálculo de data
        v_nvar_mesc(2) TYPE n,           "Mês para cálculo de data
        v_dvar_lastdaymonth TYPE d.      "Último dia do mês (aaaammdd)
.

  v_nvar_mesc = pdata+4(2).
  v_nvar_anoc = pdata(4).

  ADD 1 TO v_nvar_mesc.

  IF v_nvar_mesc = 13.
    v_nvar_mesc = '01'.
    ADD 1 TO v_nvar_anoc.
  ENDIF.

  CONCATENATE v_nvar_anoc v_nvar_mesc '01' INTO v_dvar_lastdaymonth.
  v_dvar_lastdaymonth = v_dvar_lastdaymonth - 1.
  v_dvar_data = v_dvar_lastdaymonth.

ENDFORM.                    " calc_lastday

Public Information

You might also like