Hi Kinjal,
don't use LSMW, use the BAPI.
(I remove some detail you don't need, but your code could look like that : )
Fred
* Extract MARA.
SELECT SINGLE *
INTO is_mara
FROM mara
WHERE matnr EQ itg_todo-matnr.
* Extract MARC.
SELECT SINGLE *
INTO is_marc
FROM marc
WHERE matnr EQ itg_todo-matnr
AND werks EQ p_werks.
* Extract MARD.
SELECT SINGLE *
INTO is_mard
FROM mard
WHERE matnr EQ itg_todo-matnr
AND werks EQ p_werks.
* Extract MBEW
SELECT SINGLE *
INTO is_mbew
FROM mbew
WHERE matnr EQ itg_todo-matnr
AND bwkey EQ p_werks.
* Extract MAKT
SELECT SINGLE *
INTO is_makt
FROM makt
WHERE matnr EQ itg_todo-matnr
AND spras EQ sy-langu.
* Extract MQAL.
SELECT *
INTO TABLE it_qmat
FROM qmat
WHERE matnr EQ itg_todo-matnr
AND werks EQ p_werks.
* Charge.
* --> IS_HEAD
MOVE : is_mara-matnr TO is_head-material ,
is_mara-mbrsh TO is_head-ind_sector ,
is_mara-mtart TO is_head-matl_type.
IF is_mara-PSTAT CA 'K'.
MOVE : 'X' TO is_head-basic_view.
ENDIF.
IF is_mara-PSTAT CA 'V'.
MOVE : 'X' TO is_head-sales_view.
ENDIF.
IF is_mara-PSTAT CA 'E' and p_achacp = 'X'.
MOVE : 'X' TO is_head-purchase_view.
ENDIF.
IF is_marc-PSTAT CA 'A' and p_prodcp = 'X'.
MOVE : 'X' TO is_head-WORK_SCHED_VIEW.
ENDIF.
IF is_marc-PSTAT CA 'D'.
MOVE : 'X' TO is_head-mrp_view.
ENDIF.
IF is_mara-PSTAT CA 'L'.
MOVE : 'X' TO is_head-storage_view.
ENDIF.
IF is_mara-PSTAT CA 'S'.
MOVE : 'X' TO is_head-warehouse_view.
ENDIF.
IF is_mara-PSTAT CA 'Q'.
MOVE : 'X' TO is_head-quality_view.
ENDIF.
IF is_mara-PSTAT CA 'B'.
MOVE : 'X' TO is_head-account_view.
ENDIF.
IF is_mara-PSTAT CA 'G'.
MOVE : 'X' TO is_head-cost_view.
ENDIF.
* --> IT_DESC
MOVE : is_makt-spras TO it_desc-langu ,
is_makt-maktx TO it_desc-matl_desc.
APPEND it_desc.
MOVE : itg_todo-werks TO is_marc1-plant ,
is_marc-stawn TO is_marc1-comm_code ,
is_marc-dismm TO is_marc1-mrp_type ,
is_marc-dispo TO is_marc1-mrp_ctrler ,
is_marc-plifz TO is_marc1-plnd_delry ,
is_marc-disls TO is_marc1-lotsizekey ,
is_marc-beskz TO is_marc1-proc_type ,
is_marc-SOBSL TO is_marc1-SPPROCTYPE,
is_marc-EISBE TO is_marc1-SAFETY_STK,
is_marc-sbdkz TO is_marc1-dep_req_id ,
is_marc-altsl TO is_marc1-alt_bom_id ,
is_marc-fhori TO is_marc1-sm_key ,
is_marc-ssqss TO is_marc1-ctrl_key ,
is_marc-ladgr TO is_marc1-loadinggrp ,
is_marc-xchpf TO is_marc1-batch_mgmt ,
is_marc-mtvfp TO is_marc1-availcheck ,
is_marc-mtver TO is_marc1-expimpgrp ,
is_marc-losgr TO is_marc1-lot_size ,
is_marc-lgpro TO is_marc1-iss_st_loc ,
is_marc-disgr TO is_marc1-mrp_group ,
is_marc-qzgtp TO is_marc1-cert_type ,
is_marc-awsls TO is_marc1-variance_key ,
is_marc-strgr TO is_marc1-plan_strgp ,
is_marc-lgfsb TO is_marc1-sloc_exprc ,
is_marc-kzech TO is_marc1-batchentry,
is_marc-FEVOR TO is_marc1-PRODUCTION_SCHEDULER,
is_marc-DZEIT TO is_marc1-INHSEPRODT,
is_marc-FRTME TO is_marc1-PROD_UNIT,
is_marc-SFCPF TO is_marc1-PRODPROF ,
is_marc-stawn TO is_marc1-COMM_CODE ,
is_marc-EXPME TO is_marc1-COMM_CO_UN,
is_marc-KAUTB TO is_marc1-auto_p_ord,
is_marc-MAXLZ TO is_marc1-STGEPERIOD,
is_marc-LZEIH TO is_marc1-STGE_PD_UN
.
* --> IS_MARCX
MOVE : itg_todo-werks TO is_marcx-plant ,
'X' TO is_marcx-pur_group ,
'X' TO is_marcx-mrp_type ,
'X' TO is_marcx-mrp_ctrler ,
'X' TO is_marcx-plnd_delry ,
'X' TO is_marcx-lotsizekey ,
'X' TO is_marcx-proc_type ,
'X' TO is_marcx-SPPROCTYPE,
'X' TO is_marcx-SAFETY_STK,
'X' TO is_marcx-dep_req_id ,
'X' TO is_marcx-alt_bom_id ,
'X' TO is_marcx-sm_key ,
'X' TO is_marcx-ctrl_key ,
'X' TO is_marcx-loadinggrp ,
'X' TO is_marcx-batch_mgmt ,
'X' TO is_marcx-availcheck ,
'X' TO is_marcx-expimpgrp ,
'X' TO is_marcx-lot_size ,
'X' TO is_marcx-iss_st_loc ,
'X' TO is_marcx-mrp_group ,
'X' TO is_marcx-cert_type ,
'X' TO is_marcx-variance_key ,
'X' TO is_marcx-plan_strgp ,
'X' TO is_marcx-sloc_exprc ,
'X' TO is_marcx-batchentry ,
'X' TO is_marcx-profit_ctr ,
'X' TO is_marcx-PRODUCTION_SCHEDULER,
'X' TO is_marcx-INHSEPRODT,
'X' TO is_marcx-PROD_UNIT,
'X' TO is_marcx-PRODPROF ,
'X' TO is_marcx-COMM_CODE ,
'X' TO is_marcx-COMM_CO_UN,
'X' TO is_marcx-auto_p_ord,
'X' TO is_marcx-STGEPERIOD,
'X' TO is_marcx-STGE_PD_UN .
* --> IS_MBEW
MOVE : itg_todo-werks TO is_mbew1-val_area ,
is_mbew-kosgr TO is_mbew1-overhead_grp ,
is_mbew-vprsv TO is_mbew1-price_ctrl ,
is_mbew-stprs TO is_mbew1-std_price ,
is_mbew-peinh TO is_mbew1-price_unit ,
is_mbew-bklas TO is_mbew1-val_class .
if NOT p_pmp IS INITIAL.
MOVE : is_mbew-VERPR TO is_mbew1-MOVING_PR,
'X' TO is_mbewx-MOVING_PR .
endif.
* --> IS_MBEWX
MOVE : itg_todo-werks TO is_mbewx-val_area ,
'X' TO is_mbewx-price_ctrl ,
'X' TO is_mbewx-std_price ,
'X' TO is_mbewx-price_unit ,
'X' TO is_mbewx-val_class ,
'X' TO is_mbewx-overhead_grp .
* --> IS_MARD
if NOT is_head-storage_view is INITIAL.
MOVE : itg_todo-werks TO is_mard1-plant ,
is_mard-lgort TO is_mard1-stge_loc.
* --> IS_MARDX
MOVE : itg_todo-werks TO is_mardx-plant ,
is_mard-lgort TO is_mardx-stge_loc.
endif.
* Appels de la BAPI.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = is_head
clientdata = is_mara1
clientdatax = is_marax
plantdata = is_marc1
plantdatax = is_marcx
valuationdata = is_mbew1
valuationdatax = is_mbewx
storagelocationdata = is_mard1
storagelocationdatax = is_mardx
IMPORTING
return = is_return
TABLES
materialdescription = it_desc.
* Edition.
SKIP 1.
WRITE : itg_todo-matnr COLOR 4 ,
p_werks COLOR 4 ,
' ---> ' ,
itg_todo-werks COLOR 5 .
PERFORM p_edition_erreur USING is_return.