You are on page 1of 11

REPORT zm_mast

NO STANDARD PAGE HEADING LINE-SIZE 200.


*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
TABLES :mara, marc.
*---------------------------------------------------------------------*
*
INTERNAL TABLES
*
*---------------------------------------------------------------------*
DATA: BEGIN OF bdcdata OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF bdcdata.
DATA:BEGIN OF itab_basic OCCURS 0,
matnr LIKE mara-matnr,
zzmatnr LIKE mara-matnr,
END OF itab_basic.
DATA:BEGIN OF itab_mrp OCCURS 0,
matnr LIKE mara-matnr,
werks LIKE marc-werks,
zzgpind LIKE marc-zzgpind,
zzdate(10) type C ,
END OF itab_mrp.
DATA: BEGIN OF tab_mara OCCURS 0.
INCLUDE STRUCTURE mara.
DATA: END OF tab_mara.
DATA: BEGIN OF tab_marc OCCURS 0.
INCLUDE STRUCTURE marc.
DATA: END OF tab_marc.
DATA: ertab_basic LIKE itab_basic OCCURS 0 WITH HEADER LINE.
DATA: ertab_mrp LIKE itab_mrp OCCURS 0 WITH HEADER LINE.
DATA : v_ctr TYPE i VALUE 1. "Ctr for no orecords
DATA : v_group(12) . "BDC Group Name
DATA : v_group_ctr(3) TYPE n . "BDC Group Counter
DATA : v_no_lines TYPE i.
DATA: v_grpname(10) TYPE c.
SELECTION-SCREEN BEGIN OF BLOCK dt-entry
WITH FRAME TITLE text-002.
selection-screen begin of line .
selection-screen comment 01(49) text-101.
parameters : p_basic radiobutton group r1.
selection-screen end of line.
selection-screen begin of line .
selection-screen comment 01(49) text-102.
parameters : p_mrp2 radiobutton group r1.
selection-screen end of line.

*
*PARAMETERS :
*
p_basic RADIOBUTTON GROUP r1,
*
p_mrp2 RADIOBUTTON GROUP r1.
SELECTION-SCREEN END OF BLOCK dt-entry.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK fl-info
WITH FRAME TITLE text-003.
PARAMETER : p_dlhead AS CHECKBOX . "DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK fl-info.
*
SELECTION-SCREEN SKIP 1.
PARAMETER : p_max TYPE i DEFAULT '5000' . "No of rec / session

SET PF-STATUS 'UPLOAD'.


AT USER-COMMAND .
IF sy-ucomm = 'UPLOAD' .
IF p_basic = 'X'.
IF NOT itab_basic[] IS INITIAL .
PERFORM bdc_upload_basic.
ENDIF.
WRITE:/10 'Please execute the session in SM35 to Upload the data'.
FORMAT INTENSIFIED OFF COLOR OFF .
REFRESH itab_basic . CLEAR itab_basic .
SET PF-STATUS space.
ENDIF.
IF p_mrp2 = 'X'.
IF NOT itab_mrp[] IS INITIAL .
PERFORM bdc_upload_mrp.
ENDIF..
WRITE:/10 'Please execute the session in SM35 to Upload the data'.
REFRESH itab_mrp . CLEAR itab_mrp .
SET PF-STATUS space.
ENDIF.
ENDIF.
START-OF-SELECTION.
IF p_basic = 'X'.
CALL FUNCTION 'UPLOAD'
EXPORTING
*
CODEPAGE

=''

filename
filetype
TABLES
data_tab

= 'C:\mm02_basic.txt '
= 'DAT'
= itab_basic.

IF p_dlhead EQ 'X'.
READ TABLE itab_basic INDEX 1.
DELETE itab_basic INDEX 1.
CLEAR itab_basic.
ENDIF.
PERFORM blank_data_validation.
ENDIF.
IF p_mrp2 = 'X'.
* v_grpname = 'MRP2'.
CALL FUNCTION 'UPLOAD'
EXPORTING
*
CODEPAGE
=''
filename
= 'C:\mm02_mrp.txt '
filetype
TABLES
data_tab

= 'DAT'
= itab_mrp.

IF p_dlhead EQ 'X'.
READ TABLE itab_mrp INDEX 1.
DELETE itab_mrp INDEX 1.
CLEAR itab_mrp.
ENDIF.
PERFORM valid_plant_check.

ENDIF.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
PERFORM display_data.
END-OF-SELECTION.
*---------------------------------------------------------------------*
*
Start new screen
*
*---------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.

bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM.
*---------------------------------------------------------------------*
*
Insert field
*
*---------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM.
*&---------------------------------------------------------------------*
*&
Form blank_data_validation
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM blank_data_validation.
LOOP AT itab_basic.
IF itab_basic-matnr IS INITIAL OR itab_basic-zzmatnr IS INITIAL.
MOVE-CORRESPONDING itab_basic TO ertab_basic .
APPEND ertab_basic . CLEAR ertab_basic .
DELETE itab_basic.
CLEAR itab_basic.
CONTINUE.
ENDIF.
SELECT SINGLE * INTO tab_mara FROM mara WHERE matnr = itab_basic-matnr
.
IF sy-subrc <> 0.
MOVE-CORRESPONDING itab_basic TO ertab_basic .
APPEND ertab_basic . CLEAR ertab_basic .
DELETE itab_basic.
CLEAR itab_basic.
CONTINUE.
ENDIF.
*
ENDLOOP.
ENDFORM.
" dt_qty_validation
*&---------------------------------------------------------------------*
*&
Form CALL_BDC_CLOSE_GROUP
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text

* <-- p2
text
*----------------------------------------------------------------------*
FORM call_bdc_close_group.
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
not_open = 1
queue_error = 2.
IF sy-subrc NE 0.
WRITE: /5 'BDC CLOSE GROUP FAILED, return code = ', sy-subrc.
EXIT.
ENDIF.
ENDFORM.
" CALL_BDC_CLOSE_GROUP
*&---------------------------------------------------------------------*
*&
Form CALL_BDC_INSERT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_0545 text
*----------------------------------------------------------------------*
FORM call_bdc_insert USING v_tran_code.
DATA: xmode VALUE 'E'.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode
= v_tran_code
TABLES
dynprotab
= bdcdata
EXCEPTIONS
internal_error = 1
not_open
=2
queue_error = 3.
IF sy-subrc NE 0.
WRITE: /5 'BDC insert GROUP FAILED, return code = ', sy-subrc.
EXIT.
ENDIF.
ENDFORM.
" CALL_BDC_INSERT
*&---------------------------------------------------------------------*
*&
Form display_data
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM display_data.
WRITE:/ 'Press','''Upload''',
'to create session with the following records'.
IF p_basic = 'X'.
PERFORM display_header.
FORMAT COLOR 2.
LOOP AT itab_basic.

WRITE :/2 itab_basic-matnr,'|',


23 itab_basic-zzmatnr,
54 '|'.
ENDLOOP.
NEW-LINE.
ULINE (54).
FORMAT COLOR OFF.
SKIP 4.
WRITE :/ 'Records with Errors will not be Included in Session' .
PERFORM display_header.
FORMAT COLOR 2.
LOOP AT ertab_basic.
IF NOT ertab_basic IS INITIAL AND NOT ertab_basic-matnr IS INITIAL.
WRITE :/2 ertab_basic-matnr, '|' ,
23 ertab_basic-zzmatnr,
54 '|'.
ENDIF.
ENDLOOP.
NEW-LINE.
ULINE (54).
ENDIF.
IF p_mrp2 = 'X'.
PERFORM display_header_mrp.
FORMAT COLOR 2.
LOOP AT itab_mrp.
WRITE :/2 itab_mrp-matnr,'|',
23 itab_mrp-werks,
33 '|',
37 itab_mrp-zzgpind,
49 '|',
52 itab_mrp-ZZDATE,
65 '|'.
ENDLOOP.
NEW-LINE.
ULINE (65).
FORMAT COLOR OFF.
SKIP 4.
WRITE :/ 'Records with Errors will not be Included in Session' .
PERFORM display_header_mrp.
FORMAT COLOR 2.
LOOP AT ertab_mrp.
IF NOT ertab_mrp IS INITIAL OR NOT ertab_mrp-matnr IS INITIAL.
WRITE :/2 ertab_mrp-matnr ,'|',
23 ertab_mrp-werks,
33 '|',
37 ertab_mrp-zzgpind,

49 '|' ,
52 ertab_mrp-zzdate,
65 '|'.
ENDIF.
ENDLOOP.
NEW-LINE.
ULINE (65).
ENDIF.

FORMAT COLOR OFF.


ENDFORM.
" display_data
*&---------------------------------------------------------------------*
*&
Form BDC_UPLOAD_basic
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM bdc_upload_basic.
*CLEAR itab_basic. REFRESH itab_basic.
CLEAR : v_ctr , v_no_lines .
IF NOT itab_basic[] IS INITIAL .
v_group_ctr = '1' .
CONCATENATE 'BASIC_' v_group_ctr INTO v_group .
PERFORM open_group USING v_group .
LOOP AT itab_basic .
IF v_ctr GE p_max .
PERFORM call_bdc_close_group .
v_group_ctr = v_group_ctr + 1 .
CLEAR v_group .
CONCATENATE 'BASIC_' v_group_ctr INTO v_group .
PERFORM open_group USING v_group .
v_ctr = 0 .
ENDIF.

PERFORM bdc_dynpro
USING 'SAPLMGMM' '0060'.
PERFORM bdc_field
USING 'BDC_CURSOR'
'RMMG1-MATNR'.
PERFORM bdc_field
USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field
USING 'RMMG1-MATNR'
itab_basic-matnr.
'DEEPAKTESTMAT'.
PERFORM bdc_dynpro
USING 'SAPLMGMM' '0070'.
PERFORM bdc_field
USING 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
PERFORM bdc_field
USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field
USING 'MSICHTAUSW-KZSEL(01)'

'X'.
PERFORM bdc_dynpro
USING 'SAPLMGMM' '4004'.
PERFORM bdc_field
USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_field
USING 'BDC_CURSOR'
'MARA-ZZMATNR'.
PERFORM bdc_field
USING 'MARA-ZZMATNR'
itab_basic-zzmatnr.
'ADV#AM29F010-70JI'.
PERFORM call_bdc_insert USING 'MM02'.
CLEAR bdcdata . REFRESH bdcdata .
v_no_lines = v_no_lines + 1 .
v_ctr = v_ctr + 1.
ENDLOOP.
PERFORM call_bdc_close_group.
SKIP 10.
WRITE :/10 'Session by name BASIC* created' .
WRITE :/10 'Total No of records uploaded - ' , v_no_lines .

ENDIF.
ENDFORM.
" BDC_UPLOAD
*&---------------------------------------------------------------------*
*&
Form display_header
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM display_header.
NEW-LINE.
* set left scroll-boundary column 48.
FORMAT COLOR 1 INTENSIFIED ON.
ULINE (54).
WRITE :/' Avnet Material',
21'|' ,
23 'Green Product '
, 54 '|'.
NEW-LINE.
ULINE (54).
FORMAT COLOR OFF INTENSIFIED OFF.
ENDFORM.
*&---------------------------------------------------------------------*
*&
Form bdc_upload_mrp
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM bdc_upload_mrp.
* PERFORM call_bdc_open_group2.

CLEAR : v_ctr , v_no_lines .


IF NOT itab_mrp[] IS INITIAL .
v_group_ctr = '1' .
CONCATENATE 'MRP_' v_group_ctr INTO v_group .
PERFORM open_group USING v_group .
LOOP AT itab_mrp .

IF v_ctr GE p_max .
PERFORM call_bdc_close_group .
v_group_ctr = v_group_ctr + 1 .
CLEAR v_group .
CONCATENATE 'MRP2_' v_group_ctr INTO v_group .
PERFORM open_group USING v_group .
v_ctr = 0 .
ENDIF.
PERFORM bdc_dynpro
USING 'SAPLMGMM' '0060'.
PERFORM bdc_field
USING 'BDC_CURSOR'
'RMMG1-MATNR'.
PERFORM bdc_field
USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field
USING 'RMMG1-MATNR'
itab_mrp-matnr.
'DEEPAKTESTMAT'.
PERFORM bdc_dynpro
USING 'SAPLMGMM' '0070'.
PERFORM bdc_field
USING 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(13)'.
PERFORM bdc_field
USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field
USING 'MSICHTAUSW-KZSEL(13)'
'X'.
PERFORM bdc_dynpro
USING 'SAPLMGMM' '0080'.
PERFORM bdc_field
USING 'BDC_CURSOR'
'RMMG1-WERKS'.
PERFORM bdc_field
USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field
USING 'RMMG1-WERKS'
itab_mrp-werks.
'sg11'.
PERFORM bdc_dynpro
USING 'SAPLMGMM' '4000'.
PERFORM bdc_field
USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field
USING 'BDC_CURSOR'
'MARC-ZZGPIND'.
PERFORM bdc_field
USING 'MARC-ZZGPIND'
itab_mrp-zzgpind.
'G'.
PERFORM bdc_field
USING 'BDC_CURSOR'
'MARC-ZZDATE'.
PERFORM bdc_field
USING 'MARC-ZZDATE'
itab_mrp-zzdate.
'G'.
PERFORM bdc_dynpro
USING 'SAPLSPO1' '0300'.
PERFORM bdc_field
USING 'BDC_OKCODE'
'=YES'.

PERFORM call_bdc_insert USING 'MM02'.


CLEAR bdcdata . REFRESH bdcdata .
v_no_lines = v_no_lines + 1 .
v_ctr = v_ctr + 1.
ENDLOOP.
PERFORM call_bdc_close_group.
SKIP 10.
WRITE :/10 'Session by name MRP2* created' .
WRITE :/10 'Total No of records uploaded - ' , v_no_lines .
ENDIF.
ENDFORM.
" bdc_upload_mrp
*&---------------------------------------------------------------------*
*&
Form display_header_mrp
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM display_header_mrp.
NEW-LINE.
* set left scroll-boundary column 48.
FORMAT COLOR 1 INTENSIFIED ON.
ULINE (65).
WRITE :/' Avnet Material',
21'|' ,
23 'Plant ' ,
33 '|',
35 'Indicator',
49 '|',
52 'Date',
65 '|' .
NEW-LINE.
ULINE (65).
FORMAT COLOR OFF INTENSIFIED OFF.
ENDFORM.
" display_header_mrp
*&---------------------------------------------------------------------*
*&
Form valid_plant_check
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM valid_plant_check.
LOOP AT itab_mrp.
IF itab_mrp-matnr IS INITIAL OR itab_mrp-werks IS INITIAL OR
itab_mrp-zzgpind IS INITIAL.
MOVE-CORRESPONDING itab_mrp TO ertab_mrp .
APPEND ertab_mrp . CLEAR ertab_mrp .
DELETE itab_mrp.
CLEAR itab_mrp.
CONTINUE.

ENDIF.
SELECT SINGLE * INTO tab_marc FROM marc WHERE matnr = tab_marc-matnr
AND werks = itab_mrp-werks . .
IF sy-subrc = 0.
MOVE-CORRESPONDING itab_mrp TO ertab_mrp .
APPEND ertab_mrp . CLEAR ertab_mrp .
DELETE itab_mrp.
CLEAR itab_mrp.
CONTINUE.
ENDIF.
ENDLOOP.
ENDFORM.

" valid_plant_check

*---------------------------------------------------------------------*
*
FORM open_group
*
*---------------------------------------------------------------------*
*
........
*
*---------------------------------------------------------------------*
FORM open_group USING p_grp .
* open batchinput group
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
group = p_grp
user = sy-uname
keep = 'X'.
ENDFORM.
*--------------- This ends the BDC program-------------------------------------------*
*Web Site
http://sap.niraj.tripod.com ------------------------------------------- *
*SAP Forum http://sapniraj.freeforumsite.com------------------------------------- *

You might also like