SAP MM ABAP
From SapWiki
Leer vistas de Material
FORM asignar_campos_mara.
**********************************************************************
* DATA ld_pstat LIKE t134-pstat.
DATA lt_bildtab TYPE TABLE OF mbildtab.
DATA ls_bildtab LIKE LINE OF lt_bildtab.
CALL FUNCTION 'Z_MMMF_OBTENER_VISTAS'
EXPORTING
i_tcode = 'MM01'
i_matnr = gs_mara-matnr
* I_MTART =
TABLES
et_bildtab = lt_bildtab
.
LOOP AT lt_bildtab INTO ls_bildtab.
* ver tablas t133a & t133b
IF ls_bildtab-auswg = '07'.
gs_material-xeik1 = 'X'. "&# 5 Basic data
ENDIF.
IF ls_bildtab-auswg = '21'.
gs_material-xeib1 = 'X'. "&# 6 Accounting
ENDIF.
IF ls_bildtab-auswg = '34'.
gs_material-xeig1 = 'X'. "&# 7 Costing
ENDIF.
IF ls_bildtab-auswg = '30'.
gs_material-xeip1 = 'X'. "&# 8 Forecasting
ENDIF.
IF ls_bildtab-auswg = '12'.
gs_material-xeive = 'X'. "&# 9 Foreign Trade Export
ENDIF.
IF ls_bildtab-auswg = '26' .
gs_material-xeid1 = 'X'. "&# 10 MRP
ENDIF.
IF ls_bildtab-auswg = '18'.
gs_material-xeil1 = 'X'. "&# 11 Storage
ENDIF.
IF ls_bildtab-auswg = '14'.
gs_material-xeie1 = 'X'. "&# 12 Purchasing
ENDIF.
IF ls_bildtab-auswg = '20'.
gs_material-xeiq1 = 'X'. "&# 13 Quality
ENDIF.
IF ls_bildtab-auswg = '11'.
gs_material-xeiv4 = 'X'. "&# 14 Sales/Plant
ENDIF.
IF ls_bildtab-auswg = '09'.
gs_material-xeiv1 = 'X'. "&# 15 Sales Org
ENDIF.
IF ( ls_bildtab-auswg = '32' OR ls_bildtab-auswg = '33' ).
gs_material-xeis1 = 'X'. "&# 16 Warehouse
ENDIF.
IF ls_bildtab-auswg = '31'.
gs_material-xeia1 = 'X'. "&# 17 Work Sch
ENDIF.
ENDLOOP.
* MOVE-CORRESPONDING gs_mara TO gs_material.
gs_material-mtpos_mara = gs_mara-mtpos_mara. "&# 31
gs_material-matnr = gs_mara-matnr. "&# 1
gs_material-mbrsh = gs_mara-mbrsh. "&# 2
gs_material-mtart = gs_mara-mtart.
gs_material-meins = gs_mara-meins. "&# 28
gs_material-matkl = gs_mara-matkl. "&# 29
gs_material-bismt = gs_mara-bismt. "&# 30
gs_material-gewei = gs_mara-gewei. "&# 55
gs_material-kosch = gs_mara-kosch. "&# 56
gs_material-magrv = gs_mara-magrv. "&# 57
gs_material-ntgew = gs_mara-ntgew. "&# 58
gs_material-prdha = gs_mara-prdha. "&# 59
gs_material-rmatp = gs_mara-rmatp. "&# 60
gs_material-spart = gs_mara-spart. "&# 61
gs_material-profl = gs_mara-profl."&# 76 <-- 63
gs_material-kzumw = gs_mara-kzumw. "&# 77
gs_material-behvo = gs_mara-behvo.
gs_material-stoff = gs_mara-stoff.
gs_material-etifo = gs_mara-etifo.
gs_material-etiar = gs_mara-etiar.
gs_material-raube = gs_mara-raube.
gs_material-tempb = gs_mara-tempb.
gs_material-mhdrz = gs_mara-mhdrz.
gs_material-iprkz = gs_mara-iprkz.
gs_material-rdmhd = gs_mara-rdmhd.
gs_material-mhdlp = gs_mara-mhdlp.
gs_material-mhdhb = gs_mara-mhdhb.
gs_material-bstme = gs_mara-bstme.
gs_material-vabme = gs_mara-vabme.
gs_material-mfrnr = gs_mara-mfrnr.
gs_material-mfrpn = gs_mara-mfrpn.
gs_material-ekwsl = gs_mara-ekwsl.
gs_material-qmpur = gs_mara-qmpur.
gs_material-rbnrm = gs_mara-rbnrm.
gs_material-tragr = gs_mara-tragr.
gs_material-mstav = gs_mara-mstav.
gs_material-mstdv = gs_mara-mstdv.
gs_material-group = gd_group.
ENDFORM. "asignar_campos_mara
FUNCTION z_mmmf_obtener_vistas.
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" VALUE(I_TCODE) LIKE SY-TCODE DEFAULT 'MM01'
*" VALUE(I_MATNR) LIKE MARA-MATNR OPTIONAL
*" VALUE(I_MTART) LIKE MARA-MTART OPTIONAL
*" TABLES
*" ET_BILDTAB STRUCTURE MBILDTAB
*" EXCEPTIONS
*" FUNCTION_ERROR
*"----------------------------------------------------------------------
DATA:
ls_mara LIKE mara,
ls_t130m LIKE t130m, " Transaction control: mat.master
l_tkstatus LIKE t130m-pstat, " SAP Transaction status
l_anzgstatus LIKE t130m-pstat, " Summary Display status
l_bilds LIKE t133a-bilds, " Screen sequence
l_pstat LIKE t134-pstat. " Material maintenance status
REFRESH et_bildtab.
* 1. Obtengo parámetros de control de transacción en actualización
* de maestro de materiales
CALL FUNCTION 'MATERIAL_INIT'
EXPORTING
tcode = i_tcode
kz_berprf = c_true
IMPORTING
it130m = ls_t130m
tkstatus = l_tkstatus
EXCEPTIONS
no_authority = 1
wrong_call = 2
kstatus_empty = 3
tkstatus_empty = 4
aktyp_tcode_mismatch = 5
tcode_not_found = 6
material_article_mismatch = 7
OTHERS = 8.
IF sy-subrc NE 0.
MESSAGE e000(38) WITH 'Error' sy-subrc 'en función MATERIAL_INIT'
RAISING function_error.
ENDIF.
* 2. Obtengo datos del maestro de materiales
CALL FUNCTION 'MARA_SINGLE_READ'
EXPORTING
matnr = i_matnr
kzrfb = c_true
IMPORTING
wmara = ls_mara
EXCEPTIONS
lock_on_material = 1
lock_system_error = 2
wrong_call = 3
not_found = 4
OTHERS = 5.
IF sy-subrc NE 0.
IF ls_t130m-aktyp NE 'H'.
MESSAGE e000(38) WITH 'No existe el material' i_matnr
RAISING function_error.
ENDIF.
ENDIF.
IF ls_mara-mtart IS INITIAL.
ls_mara-mtart = i_mtart.
ENDIF.
IF ls_t130m-aktyp NE 'H'.
CALL FUNCTION 'MARA_DUMMY_STATUS'
EXPORTING
wmara_in = ls_mara
IMPORTING
wmara_out = ls_mara.
ENDIF.
* 3. Obtengo grupos de vistas asociadas al tipo de material
SELECT SINGLE pstat FROM t134 INTO l_pstat
WHERE mtart = ls_mara-mtart.
IF sy-subrc NE 0.
MESSAGE e000(38) WITH 'No existe el tipo de material' ls_mara-mtart
RAISING function_error.
ENDIF.
* 4. Obtengo secuencia de pantallas para Transacción/Tipo de material
CALL FUNCTION 'BILDSEQUENZ_IDENTIFY'
EXPORTING
materialart = ls_mara-mtart
tcode_ref = ls_t130m-trref
IMPORTING
bildsequenz = l_bilds
EXCEPTIONS
wrong_call = 1
not_found = 2
OTHERS = 3.
IF sy-subrc NE 0.
MESSAGE e000(38) WITH 'Error' sy-subrc
'en función BILDSEQUENZ_IDENTIFY'
RAISING function_error.
ENDIF.
* 5. Obtener estados de mantenimiento
* (Transaccion+Material+Tipo de Material)
CALL FUNCTION 'ANZGSTATUS_SETZEN'
EXPORTING
aktyp = ls_t130m-aktyp
marastatus = ls_mara-vpsta
t134status = l_pstat
tkstatus = l_tkstatus
IMPORTING
anzgstatus = l_anzgstatus
EXCEPTIONS
anzgstatus_empty = 1
wrong_call = 2
OTHERS = 3.
IF sy-subrc NE 0.
MESSAGE e000(38) WITH 'Error' sy-subrc
'en función ANZGSTATUS_SETZEN'
RAISING function_error.
ENDIF.
* 6. Obtener vistas de mantenimiento
CALL FUNCTION 'SELECTION_VIEWS_FIND'
EXPORTING
bildsequenz = l_bilds
pflegestatus = l_anzgstatus
TABLES
bildtab = et_bildtab
EXCEPTIONS
call_wrong = 1
empty_selection = 2
OTHERS = 3.
IF sy-subrc NE 0.
MESSAGE e000(38) WITH 'Error' sy-subrc
'en función SELECTION_VIEWS_FIND'
RAISING function_error.
ENDIF.
ENDFUNCTION.
*Messages
*----------------------------------------------------------
*
* Message class: 38
*000 & & & &
*
* Message class: BDCMSG-MSGID
*BDC