04-17-2008 8:16 AM
hi abapers
does anyone know bapi for mmsc and mscn1 ?
thanks for your help...!
04-17-2008 8:20 AM
Please check BAPI BAPI_MATERIAL_SAVEDATA.
Also check this link as well for sample code.
http://www.sap-img.com/abap/bapi-to-copy-materials-from-one-plant-to-another.htm
Also check the eample for BAPI_MATERIAL_SAVEDATA.
REPORT Z4PG_EXTEND_MATERIAL
NO STANDARD PAGE HEADING
LINE-SIZE 150
MESSAGE-ID Z4.
DATABASE TABLE DECLARATIONS
-
TABLES :
mard, "#EC * " Storage Location Data for Material
marc. "#EC * " Plant Data for Material
-
INTERNAL TABLES DECLARATIONS
-
1. INTERNAL TABLE FOR MATERIALS THAT ARE MAINTAINED FOR lgort = '0001'.
DATA : BEGIN OF it_mard OCCURS 0,
matnr LIKE mard-matnr, " Material No.
werks LIKE mard-werks, " Plant
lgort LIKE mard-lgort, " Storage Location
END OF it_mard.
2. INTERNAL TABLE TO STORE MATERIALS WHICH ARE ALREADY MAINTAINED FOR lgort = 'ABCD'.
DATA: BEGIN OF it_verify OCCURS 0,
matnr LIKE mard-matnr, " Material No.
werks LIKE mard-werks, " Plant
lgort LIKE mard-lgort, " Storage Location
dismm LIKE marc-dismm, " MRP type
END OF it_verify.
3. INTERNAL TABLE TO STORE MATERIALS WHICH HAS NO MRP TYPE ASSIGNED.
DATA: BEGIN OF it_marc OCCURS 0,
matnr LIKE marc-matnr, " Material No.
werks LIKE marc-werks, " Plant
dismm LIKE marc-dismm, " MRP type
END OF it_marc.
3. INTERNAL TABLE TO STORE MATERIALS WHICH ARE ALREADY MAINTAINED FOR lgort = 'ABCD'.
DATA: BEGIN OF it_error OCCURS 0, "#EC *
index TYPE I,
fname(25),
fval(30),
err_msg(40),
END OF it_error.
DATA: BEGIN OF it_error1 OCCURS 0, "#EC *
matnr LIKE mard-matnr,
type LIKE bapiret2-type,
id LIKE bapiret2-id,
message LIKE bapiret2-message,
END OF it_error1.
-
TABLES FOR FUNCTION - BAPI_MATERIAL_SAVEDATA
-
DATA: I_HEADDATA LIKE BAPIMATHEAD, " HEADER DATA
I_STORAGELOCATIONDATA LIKE BAPI_MARD, " STORAGE LOCATION SPECIFIC MATERIAL DATA
I_STORAGELOCATIONDATAX LIKE BAPI_MARDX, " Information on update for STORAGELOCATIONDATA
I_RETURN LIKE BAPIRET2, " RETURN FROM BAPI
I_RETURNMESSAGES LIKE BAPI_MATRETURN2 OCCURS 0 WITH HEADER LINE.
-
SELECTION PARAMETERS
-
SELECTION-SCREEN BEGIN OF BLOCK MAIN WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS s_matnr FOR mard-matnr. " Material Number
SELECTION-SCREEN END OF BLOCK MAIN.
-
SELECTION SCREEN VALIDATION.
-
AT SELECTION-SCREEN .
PERFORM validate_material.
-
START OF SELECTION
-
START-OF-SELECTION.
PERFORM extract_itmard.
PERFORM extract_itmarc.
PERFORM extract_itverify.
PERFORM verify_material.
PERFORM display_error_report.
&----
*& Form extract_itmard
&----
text
-
--> p1 text
<-- p2 text
-
form extract_itmard .
SELECT matnr werks lgort
FROM mard
INTO TABLE it_mard
WHERE matnr IN s_matnr AND
werks = 'RAPI' AND " Plant
lgort = 'RAPI' . " Storage Location
IF sy-subrc NE 0.
MESSAGE s114. " Success Message --> Data Not Available
STOP.
ENDIF.
endform. " extract_itmard
&----
*& Form extract_itmarc
&----
text
-
--> p1 text
<-- p2 text
-
form extract_itmarc . "Fetch Materials for which the MRP Type is not maintained
SELECT matnr werks dismm
FROM marc
INTO TABLE it_marc
FOR ALL ENTRIES IN it_mard
WHERE matnr = it_mard-matnr AND
werks = it_mard-werks AND
dismm = ' '.
endform. " extract_itmarc
&----
*& Form extract_itverify
&----
text
-
--> p1 text
<-- p2 text
-
form extract_itverify . " Fetch All the Materials which are already extended for the Storage Location
IF it_mard[] IS NOT INITIAL. "Check it_likp for not null
SELECT matnr werks lgort
FROM mard
INTO TABLE it_verify
FOR ALL ENTRIES IN it_mard
WHERE matnr = it_mard-matnr AND
werks = 'RAPI' AND " For Plant
lgort = '0001'. " For Storage Location
ELSE.
MESSAGE s114. "Success Message --> Data Not Available
STOP.
ENDIF.
endform. " extract_itverify
&----
*& Form verify_material
&----
text
-
--> p1 text
<-- p2 text
-
FORM verify_material .
DATA: v_cnt TYPE I.
v_cnt = 1.
IF it_verify] IS NOT INITIAL AND it_marc[ IS NOT INITIAL. "Check it_likp for not null
SORT it_mard BY matnr.
SORT it_verify BY matnr.
ENDIF.
LOOP AT it_mard.
IF it_verify[] IS NOT INITIAL. " Check it_verify for not null
READ TABLE it_verify WITH KEY matnr = it_mard-matnr BINARY SEARCH. " Check Material is not extended
IF sy-subrc 0.
READ TABLE it_marc WITH KEY matnr = it_mard-matnr BINARY SEARCH. " Check MRP Type for the Material is Maintained
IF sy-subrc 0.
PERFORM extend_material USING it_mard-matnr " Extend Material
it_mard-werks.
ELSE.
it_error-index = v_cnt. " Generate Error Report
it_error-fname = 'MATERIAL NO'.
it_error-fval = it_mard-matnr.
it_error-err_msg = 'MRP Type Not Maintained'.
APPEND it_error.
v_cnt = v_cnt + 1.
ENDIF.
ENDIF.
ELSE.
READ TABLE it_marc WITH KEY matnr = it_mard-matnr BINARY SEARCH.
IF sy-subrc 0.
PERFORM extend_material USING it_mard-matnr
it_mard-werks.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " verify_material
&----
*& Form extend_material
&----
text
-
-->P_IT_MARD_MATNR text
-->P_IT_MARD_WERKS text
-->P_IT_MARD_LGORT text
-
FORM extend_material USING P_IT_MARD_MATNR TYPE mard-matnr
P_IT_MARD_WERKS TYPE mard-werks.
DATA: v_str(50).
CLEAR I_HEADDATA.
I_HEADDATA-MATERIAL = P_IT_MARD_MATNR.
I_HEADDATA-MRP_VIEW = 'X'.
CLEAR I_STORAGELOCATIONDATA.
CLEAR I_STORAGELOCATIONDATAX.
I_STORAGELOCATIONDATA-PLANT = P_IT_MARD_WERKS.
I_STORAGELOCATIONDATA-STGE_LOC = '0001'.
I_STORAGELOCATIONDATAX-PLANT = P_IT_MARD_WERKS.
I_STORAGELOCATIONDATAX-STGE_LOC = '0001'.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = i_headdata
CLIENTDATA =
CLIENTDATAX =
PLANTDATA =
PLANTDATAX =
FORECASTPARAMETERS =
FORECASTPARAMETERSX =
PLANNINGDATA =
PLANNINGDATAX =
STORAGELOCATIONDATA = i_storagelocationdata
STORAGELOCATIONDATAX = i_storagelocationdatax
VALUATIONDATA =
VALUATIONDATAX =
WAREHOUSENUMBERDATA =
WAREHOUSENUMBERDATAX =
SALESDATA =
SALESDATAX =
STORAGETYPEDATA =
STORAGETYPEDATAX =
FLAG_ONLINE = ' '
FLAG_CAD_CALL = ' '
NO_DEQUEUE = ' '
IMPORTING
RETURN = i_return
TABLES
MATERIALDESCRIPTION =
UNITSOFMEASURE =
UNITSOFMEASUREX =
INTERNATIONALARTNOS =
MATERIALLONGTEXT =
TAXCLASSIFICATIONS =
RETURNMESSAGES = i_returnmessages
PRTDATA =
PRTDATAX =
EXTENSIONIN =
EXTENSIONINX =
.
LOOP at i_returnmessages.
write: / i_returnmessages-message.
ENDLOOP.
v_str = 'Material No does not Exist'.
IF i_return-type = 'E'.
it_error1-matnr = P_IT_MARD_MATNR.
it_error1-type = i_return-type.
it_error1-id = i_return-id.
it_error1-message = v_str.
APPEND it_error1.
ELSEIF i_return-type = 'S'.
READ TABLE i_returnmessages WITH KEY TYPE = 'S' id = 'M3'.
IF sy-subrc = 0.
it_error1-matnr = P_IT_MARD_MATNR.
it_error1-type = i_return-type.
it_error1-id = i_return-id.
it_error1-message = i_returnmessages-message.
APPEND it_error1.
CLEAR it_error1.
ENDIF.
ENDIF.
REFRESH i_returnmessages.
CLEAR it_error1.
CLEAR i_return.
ENDFORM. " extend_material
&----
*& Form display_error_report
&----
text
-
--> p1 text
<-- p2 text
-
FORM display_error_report .
LOOP AT it_error1.
WRITE:/ it_error1-matnr COLOR 5, 15 it_error1-type COLOR 5,
30 it_error1-id COLOR 6, 55 it_error1-message COLOR 6.
ENDLOOP.
WRITE:/30 'FOLLOWING MATERIALS CAUSED ERROR' COLOR 1 .
SKIP 2.
LOOP AT it_error.
WRITE:/ it_error-index COLOR 5, 15 it_error-fname COLOR 5,
30 it_error-fval COLOR 6, 55 it_error-err_msg COLOR 6.
ENDLOOP.
ENDFORM. " display_error_report
&----
*& Form validate_material
&----
text
-
--> p1 text
<-- p2 text
-
form validate_material .
IF NOT s_matnr[] IS INITIAL.
SELECT matnr
INTO mard-matnr
FROM mard
UP TO 1 ROWS
WHERE matnr IN s_matnr.
ENDSELECT.
IF SY-SUBRC 0.
MESSAGE E115 WITH 'Invalid' mard-matnr. " Error Message-->Invalid Parameters
ENDIF.
ENDIF.
IF NOT s_matnr[] IS INITIAL.
SELECT matnr
INTO marc-matnr
FROM marc
UP TO 1 ROWS
WHERE matnr IN s_matnr.
ENDSELECT.
IF sy-subrc 0.
MESSAGE s114. "Success Message --> Data Not Available
STOP.
ENDIF.
ENDIF.
endform. " validate_material
Regards,
04-17-2008 8:20 AM
Hi,
For MMSC
Try BAPI_MATERIAL_SAVEDATA.
Reward points if useful....
Regards
AK
10-26-2009 8:47 PM