Sei sulla pagina 1di 5

ERPGenie.

COM ABAP Tips and Tricks Database

Batch Input: Updating Material Master via BDC


Contributed by Anon.
Monday, 19 March 2007

This skeleton displays how to:


- Determine all selection views available for user in the given transaction (MM01, MM02);
- Prepare BDC to access required view;
report z.
constants: c_rows(2) type n value '18', " rows in view selection
" window
c_linen(20)
type c value 'MSICHTAUSW-KZSEL( )'.
data: w_tcode like sy-tcode,
" Transaction code
w_tkstatus like t130m-pstat, " SAP Transaction status
w_anzgstatus like t130m-pstat, " Summary Display status
w_t130m like t130m,
" Transaction control: mat.master
w_bilds like t133a-bilds, " Screen sequence
w_dytxt like t133b-dytxt, " View description
w_linex like sy-tabix,
" View # in table
w_line
like sy-tabix,
" View # on selection screen
w_num
like sy-tabix,
w_matnr like mara-matnr, " Material
w_mtart like mara-mtart, " Material type
w_vpsta like mara-vpsta, " Material maintenance status
w_pstat like t134-pstat. " Material type maintenance status
data: begin of it_views occurs 30.
include structure mbildtab. " Selection Views
data: end of it_views.
data: w_alnum(20) type c,
" TC line
f_pgdn.
" PgDn Flag
data: begin of i_bdc occurs 0.
include structure bdcdata.
data: end of i_bdc.
parameters:
material like mara-matnr obligatory memory id mat,
view like t133a-auswg obligatory default '21',
mm01 radiobutton group radi,
mm02 radiobutton group radi,
show_bdc as checkbox,
showview as checkbox.
*******************
start-of-selection.
*******************
if not mm01 is initial.
w_tcode = 'MM01'.
else.
w_tcode = 'MM02'.
endif.

"Create view
"Change view

* 1. Get Transaction Status and Transaction Screen Reference


call function 'MATERIAL_INIT'
exporting
tcode
= w_tcode
kz_berprf
= 'X'
importing
it130m
= w_t130m
tkstatus
= w_tkstatus
exceptions
no_authority
=1
wrong_call
=2
kstatus_empty
=3
tkstatus_empty
=4
http://erpgenie.com/abaptips

Powered by Joomla for ERPGenie.COM!

Generated: 9 July, 2014, 12:21

ERPGenie.COM ABAP Tips and Tricks Database

aktyp_tcode_mismatch
=5
tcode_not_found
=6
material_article_mismatch
=7
others
= 8.
if sy-subrc <> 0.
write: 'MATERIAL_INIT error code =', sy-subrc.
exit.
endif.
* 2. Get Material type and maintenance statuses
select single matnr mtart vpsta from mara
into (w_matnr, w_mtart, w_vpsta)
where matnr = material.
if sy-subrc <> 0.
write: 'Material', material, 'not in material master'.
exit.
endif.
select single pstat from t134 into w_pstat
where mtart = w_mtart.
if sy-subrc <> 0.
write: 'Material type', w_mtart, 'not found'.
endif.

* 3. Get Screen Sequence for Tcode/Material


call function 'BILDSEQUENZ_IDENTIFY'
exporting
materialart = w_mtart
tcode_ref = w_t130m-trref
importing
bildsequenz = w_bilds
exceptions
wrong_call
=1
not_found
=2
others
= 3.
if sy-subrc <> 0.
write: 'BILDSEQUENZ_IDENTIFY error code =', sy-subrc.
exit.
endif.
* 4. Get Summary status (Transaction+Material+Material Type)
call function 'ANZGSTATUS_SETZEN'
exporting
aktyp
= w_t130m-aktyp
marastatus
= w_vpsta
t134status
= w_pstat
tkstatus
= w_tkstatus
importing
anzgstatus
= w_anzgstatus
exceptions
anzgstatus_empty = 1
wrong_call
=2
others
= 3.
if sy-subrc <> 0.
write: 'ANZGSTATUS_SETZEN error code =', sy-subrc.
exit.
endif.
* 5. Get all selection views:
call function 'SELECTION_VIEWS_FIND'
exporting
bildsequenz = w_bilds
pflegestatus = w_anzgstatus
tables
bildtab
= it_views
http://erpgenie.com/abaptips

Powered by Joomla for ERPGenie.COM!

Generated: 9 July, 2014, 12:21

ERPGenie.COM ABAP Tips and Tricks Database

exceptions
call_wrong
=1
empty_selection
=2
others
= 3.
if sy-subrc <> 0.
write: 'SELECTION_VIEWS_FIND error code =', sy-subrc.
exit.
endif.
* 5. Get view #:
read table it_views with key auswg = view.
if sy-subrc = 0.
w_linex = sy-tabix.
else.
write: 'View', view, 'not found'.
exit.
endif.
* 6. Prepare BDC:
if w_linex gt c_rows.
w_line = w_linex - c_rows.
f_pgdn = 'X'.
endif.
w_alnum = c_linen.
w_alnum+17(2) = w_line.
if not mm01 is initial.
perform bdc_mm01.
else.
perform bdc_mm02.
endif.

*******************
end-of-selection.
*******************
select single dytxt into w_dytxt from t133b
where spras = sy-langu
and bilds = w_bilds
and auswg = view.
if sy-subrc <> 0.
clear w_dytxt.
endif.
describe table it_views lines w_num.
write: / 'Screen sequence =', w_bilds,
/ 'Selection view', view, w_dytxt,
/ 'View Number = ', w_linex,
/ 'Selection views:', w_num.
if not showview is initial.
write: / '********* Table of views: *********'.
loop at it_views.
write / it_views.
endloop.
endif.
if not show_bdc is initial.
write: / '********* Table of BDC: *********'.
loop at i_bdc.
write / i_bdc.
endloop.
endif.
*&---------------------------------------------------------------------*
*&
Form bdc_mm02
*&---------------------------------------------------------------------*
form bdc_mm02.
http://erpgenie.com/abaptips

Powered by Joomla for ERPGenie.COM!

Generated: 9 July, 2014, 12:21

ERPGenie.COM ABAP Tips and Tricks Database

* for example, Accounting View 1 (21)


perform dynpro using:
*goto MM02 - Change Mateial (Initial screen)
'X' 'SAPLMGMM'
'0060',
' ' 'BDC_CURSOR' 'RMMG1-MATNR',
' ' 'RMMG1-MATNR' w_matnr,
*goto Select View(s) screen
' ' 'BDC_OKCODE' '=AUSW'.
if f_pgdn = 'X'.
perform dynpro using:
*goto Select View(s) screen
'X' 'SAPLMGMM' '0070',
*scroll down
' ' 'BDC_OKCODE' '=P+'.
endif.
perform dynpro using:
*goto Select View(s) screen
'X' 'SAPLMGMM'
'0070',
' ' w_alnum
'X',
*Select Accounting1 view
' ' 'BDC_OKCODE'
'=ENTR'.
perform dynpro using:
*goto Select Plant screen
'X' 'SAPLMGMM'
'0080',
' ' 'BDC_CURSOR'
'RMMG1-WERKS',
' ' 'RMMG1-WERKS' 'P123',
"for example
' ' 'BDC_OKCODE'
'=ENTR'.
perform dynpro using:
*goto Accounting1 view
'X' 'SAPLMGMM'
'4000',
*
* change data fields here ....
*
*save
' ' 'BDC_OKCODE' 'BU'.
endform.

" bdc_mm02

*&---------------------------------------------------------------------*
*&
Form bdc_mm01
*&---------------------------------------------------------------------*
form bdc_mm01.
* for example, Accounting View 1 (21)
perform dynpro using:
*goto MM01 - Create Mateial (Initial screen)
'X' 'SAPLMGMM'
'0060',
' ' 'RMMG1-MATNR' w_matnr,
' ' 'RMMG1-MBRSH' 'H',
"for example
' ' 'RMMG1-MTART' w_mtart,
*goto Select View(s) screen
' ' 'BDC_OKCODE' '=AUSW'.
* Selection of views
perform dynpro using:
'X' 'SAPLMGMM'
'70',
' ' 'BDC_OKCODE' '=RESA', "Deselect all
'X' 'SAPLMGMM'
'70'. "continue selection screen
if f_pgdn = 'X'.
http://erpgenie.com/abaptips

Powered by Joomla for ERPGenie.COM!

Generated: 9 July, 2014, 12:21

ERPGenie.COM ABAP Tips and Tricks Database

perform dynpro using:


' ' 'BDC_OKCODE' '=P+', "Page select screen forward
'X' 'SAPLMGMM' '70'. "continue selection screen
endif.
perform dynpro using:
' ' w_alnum
'X', "Accounting 1
' ' 'USRM1-SISEL' 'X', "Create Views
' ' 'BDC_OKCODE' '=ENTR'.
perform dynpro using:
*goto Select Plant screen
'X' 'SAPLMGMM'
'080',
' ' 'RMMG1-WERKS' 'P123',
' ' 'BDC_OKCODE'
'=ENTR'.

"for example

perform dynpro using:


*goto Accounting1 view
'X' 'SAPLMGMM'
'4000',
*
* populate data fields here ....
*
*Save
' ' 'BDC_OKCODE' '=BU'.
endform.

" bdc_mm01

*---------------------------------------------------------------------*
*
FORM DYNPRO
*
*---------------------------------------------------------------------*
*
Fills BDC data table
*
*---------------------------------------------------------------------*
* --> PI_DYNBEGIN Screen start flag
in
* --> PI_NAME
Field name
in
*
* --> PI_VALUE
Field value
in
*
*---------------------------------------------------------------------*
form dynpro using pi_dynbegin
pi_name
pi_value.

clear i_bdc.
if pi_dynbegin = 'X'.
move: pi_name to i_bdc-program,
pi_value to i_bdc-dynpro,
'X'
to i_bdc-dynbegin.
else.
move: pi_name to i_bdc-fnam,
pi_value to i_bdc-fval.
endif. "pi_dynbegin
append i_bdc.
endform. "dynpro

http://erpgenie.com/abaptips

Powered by Joomla for ERPGenie.COM!

Generated: 9 July, 2014, 12:21

Potrebbero piacerti anche