Professional Documents
Culture Documents
**
* 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