BAPI_MATERIAL_SAVEDATA

  BAPI_MATERIAL_SAVEDATA
FUNCTION ZD01_MM_COMMON.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     REFERENCE(I_INTAB) TYPE  ZDS0001
*"     REFERENCE(I_HEAD) TYPE  BAPIMATHEAD
*"  EXPORTING
*"     REFERENCE(E_ERROR) TYPE  P08_SP420
*"----------------------------------------------------------------------

  data:w_HEADDATA          like BAPIMATHEAD,
       w_CLIENTDATA        like BAPI_MARA,
       w_CLIENTDATAX       like BAPI_MARAX,
       w_PLANTDATA         like BAPI_MARC,
       w_PLANTDATAX        like BAPI_MARCX,
       w_VALUATIONDATA     like BAPI_MBEW,
       w_VALUATIONDATAX    like BAPI_MBEWX,
       w_FORECASTPARAMETERS  like BAPI_MPOP,
       w_FORECASTPARAMETERSX  like BAPI_MPOPX,
       w_PLANNINGDATA       like BAPI_MPGD,
       w_PLANNINGDATAX       like BAPI_MPGDX,
       w_STORAGELOCATIONDATA  like BAPI_MARD,
       w_STORAGELOCATIONDATAX like BAPI_MARDX, 
       w_SALESDATA        like BAPI_MVKE,
       w_SALESDATAX        like BAPI_MVKEX,
       w_RETURN            like BAPIRET2.
  DATA:  BEGIN OF w_MATERIALDESCRIPTION OCCURS 0.
          INCLUDE STRUCTURE BAPI_MAKT.
  DATA:  END OF w_MATERIALDESCRIPTION.
  DATA:  BEGIN OF w_RETURNMESSAGES OCCURS 0.
          INCLUDE STRUCTURE BAPI_MATRETURN2.
  DATA:  END OF w_RETURNMESSAGES.
  DATA:  BEGIN OF w_UNITSOFMEASURE OCCURS 0.
          INCLUDE STRUCTURE BAPI_MARM.
  DATA:  END OF w_UNITSOFMEASURE.
  DATA:  BEGIN OF w_UNITSOFMEASUREX OCCURS 0.
          INCLUDE STRUCTURE BAPI_MARMX.
  DATA:  END OF w_UNITSOFMEASUREX.
  DATA:  BEGIN OF w_TAXCLASSIFICATIONS OCCURS 0.
          INCLUDE STRUCTURE BAPI_MLAN.
  DATA:  END OF w_TAXCLASSIFICATIONS.
  DATA:  BEGIN OF w_MATERIALLONGTEXT OCCURS 0.
          INCLUDE STRUCTURE BAPI_MLTX.
  DATA:  END OF w_MATERIALLONGTEXT.
  DATA:  w_LANGUAGE like SY-LANGU.
  DATA:  BEGIN OF W_MANTR OCCURS 0.
          INCLUDE STRUCTURE BAPIMATINR.
  DATA:  END OF W_MANTR.
  DATA:  BEGIN OF W_EXTENSIONIN OCCURS 0.
          INCLUDE STRUCTURE BAPIPAREX.
  DATA:  END OF W_EXTENSIONIN.
  DATA:  BEGIN OF W_EXTENSIONINX OCCURS 0.
          INCLUDE STRUCTURE BAPIPAREXX.
  DATA:  END OF W_EXTENSIONINX.
  DATA ZZBAPI_TE_MARA LIKE BAPI_TE_MARA.
  DATA ZZBAPI_TE_MARAX LIKE BAPI_TE_MARAX.
  DATA W_BUKRS TYPE T001K-BUKRS.
  DATA W_MLTX TYPE  BAPI_MLTX-TEXT_NAME.
  DATA W_LAND1 TYPE T001-LAND1.
  DATA W_MWST(4) type c.
  DATA W_SPRAS type sy-langu.
  CLEAR W_MWST.
  CLEAR W_LAND1.
  CLEAR W_MLTX.
  CLEAR W_BUKRS.
  clear w_SPRAS.
  free w_MATERIALDESCRIPTION.
  free w_RETURNMESSAGES.
  free w_TAXCLASSIFICATIONS.
  FREE w_MATERIALLONGTEXT.
*HEADDATA
*HEADDATAX
  move I_HEAD-MATERIAL       to  w_HEADDATA-MATERIAL.
  move I_HEAD-IND_SECTOR      to  w_HEADDATA-IND_SECTOR.
  move I_HEAD-MATL_TYPE       to  w_HEADDATA-MATL_TYPE.
  move I_HEAD-BASIC_VIEW      to  w_HEADDATA-BASIC_VIEW.
  move I_HEAD-SALES_VIEW      to  w_HEADDATA-SALES_VIEW.
  move I_HEAD-PURCHASE_VIEW   to  w_HEADDATA-PURCHASE_VIEW.
  move I_HEAD-MRP_VIEW        to  w_HEADDATA-MRP_VIEW.
  move I_HEAD-FORECAST_VIEW   to  w_HEADDATA-FORECAST_VIEW.
  move I_HEAD-WORK_SCHED_VIEW to  w_HEADDATA-WORK_SCHED_VIEW.
  move I_HEAD-PRT_VIEW        to  w_HEADDATA-PRT_VIEW.
  move I_HEAD-STORAGE_VIEW    to  w_HEADDATA-STORAGE_VIEW.
  move I_HEAD-WAREHOUSE_VIEW  to  w_HEADDATA-WAREHOUSE_VIEW.
  move I_HEAD-QUALITY_VIEW    to  w_HEADDATA-QUALITY_VIEW.
  move I_HEAD-ACCOUNT_VIEW    to  w_HEADDATA-ACCOUNT_VIEW.
  move I_HEAD-COST_VIEW       to  w_HEADDATA-COST_VIEW.
*CLIENTDATA
*CLIENTDATAX
  w_LANGUAGE = SY-LANGU.
  select single SPRAS
  into w_SPRAS
  from T006A
  where SPRAS = sy-langu
  and MSEHI = I_INTAB-MEINS.
  if sy-subrc = 4.
    if I_INTAB-MEINS <> ''.
      CALL FUNCTION 'CONVERSION_EXIT_RUNIT_INPUT'
           EXPORTING
                INPUT    = I_INTAB-MEINS
                LANGUAGE = w_LANGUAGE
           IMPORTING
                OUTPUT   = w_CLIENTDATA-BASE_UOM.
    endif.
  else.
    move I_INTAB-MEINS               to  w_CLIENTDATA-BASE_UOM.
  endif.
  select single SPRAS
  into w_SPRAS
  from T006A
  where SPRAS = sy-langu
  and MSEHI = I_INTAB-BSTME.
  if sy-subrc = 4.
    if I_INTAB-BSTME <> ''.
      CALL FUNCTION 'CONVERSION_EXIT_RUNIT_INPUT'
           EXPORTING
                INPUT    = I_INTAB-BSTME
                LANGUAGE = w_LANGUAGE
           IMPORTING
                OUTPUT   = w_CLIENTDATA-PO_UNIT.
    endif.
  else.
    move I_INTAB-BSTME               to  w_CLIENTDATA-PO_UNIT.
  endif.
  move I_INTAB-MATKL               to  w_CLIENTDATA-MATL_GROUP.
  move I_INTAB-BISMT               to  w_CLIENTDATA-OLD_MAT_NO.
  move I_INTAB-SPART               to  w_CLIENTDATA-DIVISION.
  move I_INTAB-LABOR               to  w_CLIENTDATA-DSN_OFFICE.
*  move I_INTAB-BSTME               to  w_CLIENTDATA-PO_UNIT.
  move I_INTAB-FORMT               to  w_CLIENTDATA-DOC_FORMAT.
  move I_INTAB-FERTH               to  w_CLIENTDATA-PROD_MEMO.
  move I_INTAB-RAUBE               to  w_CLIENTDATA-STOR_CONDS.
  move I_INTAB-TRAGR               to  w_CLIENTDATA-TRANS_GRP.
  move I_INTAB-NORMT               to  w_CLIENTDATA-STD_DESCR.
  move I_INTAB-KOSCH               to  w_CLIENTDATA-PROD_ALLOC.
  move I_INTAB-PRDHA               to  w_CLIENTDATA-PROD_HIER.
  move I_INTAB-BRGEW               to  w_CLIENTDATA-PROD_MEMO.
  move I_INTAB-GEWEI               to  w_CLIENTDATA-UNIT_OF_WT.
  move I_INTAB-NTGEW               to  w_CLIENTDATA-NET_WEIGHT.
*  move I_INTAB-VOLUM               to  w_CLIENTDATA-ALLWD_VOL.
*  move I_INTAB-VOLEH               to  w_CLIENTDATA-PACK_VO_UN.
  move I_INTAB-GROES               to  w_CLIENTDATA-SIZE_DIM.

  PERFORM FRM_SPACE_CHECK
                    USING w_CLIENTDATA-MATL_GROUP
                          I_INTAB-PROC_CLS
                    CHANGING w_CLIENTDATAX-MATL_GROUP.
  PERFORM FRM_SPACE_CHECK
                    USING w_CLIENTDATA-OLD_MAT_NO
                          I_INTAB-PROC_CLS
                    CHANGING w_CLIENTDATAX-OLD_MAT_NO.
  PERFORM FRM_SPACE_CHECK
                    USING w_CLIENTDATA-BASE_UOM
                          I_INTAB-PROC_CLS
                    CHANGING w_CLIENTDATAX-BASE_UOM.
  PERFORM FRM_SPACE_CHECK
                    USING w_CLIENTDATA-DIVISION
                          I_INTAB-PROC_CLS
                    CHANGING w_CLIENTDATAX-DIVISION.
  PERFORM FRM_SPACE_CHECK
                    USING w_CLIENTDATA-DSN_OFFICE
                          I_INTAB-PROC_CLS
                    CHANGING w_CLIENTDATAX-DSN_OFFICE.
  PERFORM FRM_SPACE_CHECK
                    USING w_CLIENTDATA-PO_UNIT
                          I_INTAB-PROC_CLS
                    CHANGING w_CLIENTDATAX-PO_UNIT.
  PERFORM FRM_SPACE_CHECK
                    USING w_CLIENTDATA-DOC_FORMAT
                          I_INTAB-PROC_CLS
                    CHANGING w_CLIENTDATAX-DOC_FORMAT.
  PERFORM FRM_SPACE_CHECK
                    USING w_CLIENTDATA-PROD_MEMO
                          I_INTAB-PROC_CLS
                    CHANGING w_CLIENTDATAX-PROD_MEMO.
  PERFORM FRM_SPACE_CHECK
                    USING w_CLIENTDATA-STOR_CONDS
                          I_INTAB-PROC_CLS
                    CHANGING w_CLIENTDATAX-STOR_CONDS.
  PERFORM FRM_SPACE_CHECK
                    USING w_CLIENTDATA-TRANS_GRP
                          I_INTAB-PROC_CLS
                    CHANGING w_CLIENTDATAX-TRANS_GRP.
  PERFORM FRM_SPACE_CHECK
                    USING w_CLIENTDATA-STD_DESCR
                          I_INTAB-PROC_CLS
                    CHANGING w_CLIENTDATAX-STD_DESCR.
  PERFORM FRM_SPACE_CHECK
                    USING w_CLIENTDATA-PROD_ALLOC
                          I_INTAB-PROC_CLS
                    CHANGING w_CLIENTDATAX-PROD_ALLOC.
  PERFORM FRM_SPACE_CHECK
                    USING w_CLIENTDATA-PROD_HIER
                          I_INTAB-PROC_CLS
                    CHANGING w_CLIENTDATAX-PROD_HIER.
  PERFORM FRM_SPACE_CHECK
                    USING w_CLIENTDATA-PROD_HIER
                          I_INTAB-PROC_CLS
                    CHANGING w_CLIENTDATAX-PROD_HIER.
  PERFORM FRM_SPACE_CHECK
                    USING w_CLIENTDATA-UNIT_OF_WT
                          I_INTAB-PROC_CLS
                    CHANGING w_CLIENTDATAX-UNIT_OF_WT.
  PERFORM FRM_SPACE_CHECK
                    USING w_CLIENTDATA-NET_WEIGHT
                          I_INTAB-PROC_CLS
                    CHANGING w_CLIENTDATAX-NET_WEIGHT.
*  PERFORM FRM_SPACE_CHECK
*                    USING w_CLIENTDATA-ALLWD_VOL
*                          I_INTAB-PROC_CLS
*                    CHANGING w_CLIENTDATAX-ALLWD_VOL.
*  PERFORM FRM_SPACE_CHECK
*                    USING w_CLIENTDATA-PACK_VO_UN
*                          I_INTAB-PROC_CLS
*                    CHANGING w_CLIENTDATAX-PACK_VO_UN.
  PERFORM FRM_SPACE_CHECK
                    USING w_CLIENTDATA-SIZE_DIM
                          I_INTAB-PROC_CLS
                    CHANGING w_CLIENTDATAX-SIZE_DIM.
*PLANTDATA
*PLANTDATAX
  move I_INTAB-WERKS             to  w_PLANTDATA-PLANT.
  move I_INTAB-EKGRP             to  w_PLANTDATA-PUR_GROUP.
  move I_INTAB-DISMM             to  w_PLANTDATA-MRP_TYPE.
  move I_INTAB-DISPO             to  w_PLANTDATA-MRP_CTRLER.
  move I_INTAB-PLIFZ             to  w_PLANTDATA-PLND_DELRY.
  move I_INTAB-WEBAZ             to  w_PLANTDATA-GR_PR_TIME.
  move I_INTAB-PERKZ             to  w_PLANTDATA-PERIOD_IND.
  move I_INTAB-DISLS             to  w_PLANTDATA-LOTSIZEKEY.
  move I_INTAB-BESKZ             to  w_PLANTDATA-PROC_TYPE.
  move I_INTAB-SOBSL             to  w_PLANTDATA-SPPROCTYPE.
  move I_INTAB-EISBE             to  w_PLANTDATA-SAFETY_STK.
  move I_INTAB-BSTMI             to  w_PLANTDATA-MINLOTSIZE.
  move I_INTAB-BSTMA             to  w_PLANTDATA-MAXLOTSIZE.
  move I_INTAB-BSTFE             to  w_PLANTDATA-FIXED_LOT.
  move I_INTAB-BSTRF             to  w_PLANTDATA-ROUND_VAL.
  move I_INTAB-SBDKZ             to  w_PLANTDATA-DEP_REQ_ID.
  move I_INTAB-ALTSL             to  w_PLANTDATA-ALT_BOM_ID.
  move I_INTAB-MISKZ             to  w_PLANTDATA-MIXED_MRP.
  move I_INTAB-FHORI             to  w_PLANTDATA-SM_KEY.
  move I_INTAB-RGEKM             to  w_PLANTDATA-BACKFLUSH.
  move I_INTAB-FEVOR             to  w_PLANTDATA-PRODUCTION_SCHEDULER.
  move I_INTAB-DZEIT             to  w_PLANTDATA-INHSEPRODT.
  move I_INTAB-WZEIT             to  w_PLANTDATA-REPLENTIME.
  move I_INTAB-INSMK             to  w_PLANTDATA-IND_POST_TO_INSP_STOCK.
  move I_INTAB-LADGR             to  w_PLANTDATA-LOADINGGRP.
  move I_INTAB-USEQU             to  w_PLANTDATA-QUOTAUSAGE.
  move I_INTAB-MTVFP             to  w_PLANTDATA-AVAILCHECK.
  move I_INTAB-PRCTR             to  w_PLANTDATA-PROFIT_CTR.
  move I_INTAB-LOSGR             to  w_PLANTDATA-LOT_SIZE.
  move I_INTAB-LGPRO             to  w_PLANTDATA-ISS_ST_LOC.
  move I_INTAB-DISGR             to  w_PLANTDATA-MRP_GROUP.
  move I_INTAB-AWSLS             to  w_PLANTDATA-VARIANCE_KEY.
  move I_INTAB-STRGR             to  w_PLANTDATA-PLAN_STRGP.
  move I_INTAB-LGFSB             to  w_PLANTDATA-SLOC_EXPRC.
  move I_INTAB-EPRIO             to  w_PLANTDATA-DETERM_GRP.
  move I_INTAB-MMSTA             to  w_PLANTDATA-PUR_STATUS.
  move I_INTAB-SFCPF             to  w_PLANTDATA-PRODPROF.
  move I_INTAB-NCOST             to  w_PLANTDATA-NO_COSTING.
  move I_INTAB-KAUTB             to  w_PLANTDATA-AUTO_P_ORD.
  move I_INTAB-FXHOR             to  w_PLANTDATA-PL_TI_FNCE.
  move I_INTAB-SHZET             to  w_PLANTDATA-SAFETYTIME.
  move I_INTAB-AUSSS             to  w_PLANTDATA-ASSY_SCRAP.
  move I_INTAB-KZKRI             to  w_PLANTDATA-CRIT_PART.
  move I_INTAB-SHFLG             to  w_PLANTDATA-SAFTY_T_ID.
  move I_INTAB-XMCNG             to  w_PLANTDATA-NEG_STOCKS.
  move I_INTAB-MFRGR             to  w_PLANTDATA-MATFRGTGRP.
  move I_INTAB-MTVER             to  w_PLANTDATA-EXPIMPGRP.
  move I_INTAB-STAWN             to  w_PLANTDATA-COMM_CODE.
  move I_INTAB-HERKL             to  w_PLANTDATA-COUNTRYORI.
  move I_INTAB-HERKR             to  w_PLANTDATA-REGIONORIG.
  move I_INTAB-WERKS             to  w_PLANTDATAX-PLANT.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-PUR_GROUP
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-PUR_GROUP.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-MRP_TYPE
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-MRP_TYPE.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-MRP_CTRLER
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-MRP_CTRLER.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-PLND_DELRY
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-PLND_DELRY.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-GR_PR_TIME
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-GR_PR_TIME.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-PERIOD_IND
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-PERIOD_IND.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-LOTSIZEKEY
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-LOTSIZEKEY.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-PROC_TYPE
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-PROC_TYPE.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-SPPROCTYPE
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-SPPROCTYPE.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-SAFETY_STK
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-SAFETY_STK.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-MINLOTSIZE
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-MINLOTSIZE.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-MAXLOTSIZE
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-MAXLOTSIZE.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-FIXED_LOT
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-FIXED_LOT.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-ROUND_VAL
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-ROUND_VAL.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-DEP_REQ_ID
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-DEP_REQ_ID.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-ALT_BOM_ID
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-ALT_BOM_ID.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-MIXED_MRP
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-MIXED_MRP.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-SM_KEY
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-SM_KEY.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-BACKFLUSH
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-BACKFLUSH.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-PRODUCTION_SCHEDULER
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-PRODUCTION_SCHEDULER.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-INHSEPRODT
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-INHSEPRODT.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-REPLENTIME
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-REPLENTIME.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-IND_POST_TO_INSP_STOCK
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-IND_POST_TO_INSP_STOCK.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-LOADINGGRP
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-LOADINGGRP.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-QUOTAUSAGE
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-QUOTAUSAGE.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-AVAILCHECK
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-AVAILCHECK.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-PROFIT_CTR
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-PROFIT_CTR.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-LOT_SIZE
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-LOT_SIZE.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-ISS_ST_LOC
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-ISS_ST_LOC.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-MRP_GROUP
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-MRP_GROUP.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-VARIANCE_KEY
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-VARIANCE_KEY.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-PLAN_STRGP
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-PLAN_STRGP.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-SLOC_EXPRC
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-SLOC_EXPRC.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-DETERM_GRP
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-DETERM_GRP.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-PUR_STATUS
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-PUR_STATUS.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-PRODPROF
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-PRODPROF.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-NO_COSTING
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-NO_COSTING.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-AUTO_P_ORD
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-AUTO_P_ORD.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-PL_TI_FNCE
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-PL_TI_FNCE.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-SAFETYTIME
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-SAFETYTIME.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-ASSY_SCRAP
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-ASSY_SCRAP.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-CRIT_PART
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-CRIT_PART.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-SAFTY_T_ID
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-SAFTY_T_ID.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-NEG_STOCKS
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-NEG_STOCKS.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-MATFRGTGRP
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-MATFRGTGRP.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-EXPIMPGRP
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-EXPIMPGRP.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-COMM_CODE
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-COMM_CODE.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-COUNTRYORI
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-COUNTRYORI.
  PERFORM FRM_SPACE_CHECK
                    USING w_PLANTDATA-REGIONORIG
                          I_INTAB-PROC_CLS
                    CHANGING w_PLANTDATAX-REGIONORIG.
*VALUATIONDATA
*VALUATIONDATAX
  move I_INTAB-VPRSV             to  w_VALUATIONDATA-PRICE_CTRL.
  move I_INTAB-STPRS             to  w_VALUATIONDATA-STD_PRICE.
  move I_INTAB-BWPEI             to  w_VALUATIONDATA-PRICE_UNIT.
  move I_INTAB-BKLAS             to  w_VALUATIONDATA-VAL_CLASS.
  move I_INTAB-HRKFT             to  w_VALUATIONDATA-ORIG_GROUP.
  move I_INTAB-KOSGR             to  w_VALUATIONDATA-OVERHEAD_GRP.
  move I_INTAB-HKMAT             to  w_VALUATIONDATA-ORIG_MAT.
  move I_INTAB-EKALR             to  w_VALUATIONDATA-QTY_STRUCT.
  move I_INTAB-MLAST             to  w_VALUATIONDATA-ML_SETTLE.
  SELECT SINGLE BWKEY
         INTO W_BUKRS
         FROM T001W
         WHERE WERKS = I_INTAB-WERKS.
  move W_BUKRS             to  w_VALUATIONDATA-VAL_AREA.
  move W_BUKRS             to  w_VALUATIONDATAX-VAL_AREA.
  CLEAR W_BUKRS.
  PERFORM FRM_SPACE_CHECK
                    USING w_VALUATIONDATA-ML_SETTLE
                          I_INTAB-PROC_CLS
                    CHANGING w_VALUATIONDATAX-ML_SETTLE.
  PERFORM FRM_SPACE_CHECK
                    USING w_VALUATIONDATA-PRICE_CTRL
                          I_INTAB-PROC_CLS
                    CHANGING w_VALUATIONDATAX-PRICE_CTRL.
  PERFORM FRM_SPACE_CHECK
                    USING w_VALUATIONDATA-STD_PRICE
                          I_INTAB-PROC_CLS
                    CHANGING w_VALUATIONDATAX-STD_PRICE.
  PERFORM FRM_SPACE_CHECK
                    USING w_VALUATIONDATA-PRICE_UNIT
                          I_INTAB-PROC_CLS
                    CHANGING w_VALUATIONDATAX-PRICE_UNIT.
  PERFORM FRM_SPACE_CHECK
                    USING w_VALUATIONDATA-VAL_CLASS
                          I_INTAB-PROC_CLS
                    CHANGING w_VALUATIONDATAX-VAL_CLASS.
  PERFORM FRM_SPACE_CHECK
                    USING w_VALUATIONDATA-ORIG_GROUP
                          I_INTAB-PROC_CLS
                    CHANGING w_VALUATIONDATAX-ORIG_GROUP.
  PERFORM FRM_SPACE_CHECK
                    USING w_VALUATIONDATA-OVERHEAD_GRP
                          I_INTAB-PROC_CLS
                    CHANGING w_VALUATIONDATAX-OVERHEAD_GRP.
  PERFORM FRM_SPACE_CHECK
                    USING w_VALUATIONDATA-ORIG_MAT
                          I_INTAB-PROC_CLS
                    CHANGING w_VALUATIONDATAX-ORIG_MAT.
  PERFORM FRM_SPACE_CHECK
                    USING w_VALUATIONDATA-QTY_STRUCT
                          I_INTAB-PROC_CLS
                    CHANGING w_VALUATIONDATAX-QTY_STRUCT.
*SALESDATA
*SALESDATAX
  IF w_HEADDATA-SALES_VIEW = 'X'.
    move I_INTAB-VKORG             to  w_SALESDATA-SALES_ORG.
    move I_INTAB-VTWEG             to  w_SALESDATA-DISTR_CHAN.
    move I_INTAB-VERSG             to  w_SALESDATA-MATL_STATS.
    move I_INTAB-MTPOS             to  w_SALESDATA-ITEM_CAT.
    move I_INTAB-DWERK             to  w_SALESDATA-DELYG_PLNT.
    move I_INTAB-VKORG             to  w_SALESDATAX-SALES_ORG.
    move I_INTAB-VTWEG             to  w_SALESDATAX-DISTR_CHAN.
    PERFORM FRM_SPACE_CHECK
                      USING w_SALESDATA-MATL_STATS
                            I_INTAB-PROC_CLS
                      CHANGING w_SALESDATAX-MATL_STATS.
    PERFORM FRM_SPACE_CHECK
                      USING w_SALESDATA-ITEM_CAT
                            I_INTAB-PROC_CLS
                      CHANGING w_SALESDATAX-ITEM_CAT.
    PERFORM FRM_SPACE_CHECK
                      USING w_SALESDATA-DELYG_PLNT
                            I_INTAB-PROC_CLS
                      CHANGING w_SALESDATAX-DELYG_PLNT.
  endif.
*STORAGELOCATIONDATA
*STORAGELOCATIONDATAX
  IF I_INTAB-LGORT <> ''.
    move I_INTAB-WERKS             to  w_STORAGELOCATIONDATA-PLANT.
    move I_INTAB-WERKS             to  w_STORAGELOCATIONDATAX-PLANT.
    move I_INTAB-LGORT             to  w_STORAGELOCATIONDATA-STGE_LOC.
    move I_INTAB-LGORT             to  w_STORAGELOCATIONDATAX-STGE_LOC.
  ENDIF.

**FORECASTPARAMETERS
**FORECASTPARAMETERSX
  move I_INTAB-WERKS             to  w_FORECASTPARAMETERS-PLANT.
  move I_INTAB-WERKS             to  w_FORECASTPARAMETERSX-PLANT.
**
**PLANNINGDATA
**PLANNINGDATAX
  move I_INTAB-WERKS             to  w_PLANNINGDATA-PLANT.
  move I_INTAB-WERKS             to  w_PLANNINGDATAX-PLANT.
  move SY-LANGU               to  w_MATERIALDESCRIPTION-LANGU.
  move I_INTAB-MAKTX          to  w_MATERIALDESCRIPTION-MATL_DESC.
  append w_MATERIALDESCRIPTION.
*MATERIALLONGTEXT
*  move 'MATERIAL'               to  w_MATERIALLONGTEXT-APPLOBJECT.
*  move 'GRUN'                   to  w_MATERIALLONGTEXT-TEXT_ID.
*  move I_HEAD-MATERIAL          to  w_MATERIALLONGTEXT-TEXT_NAME.
*  move SY-LANGU                 to  w_MATERIALLONGTEXT-LANGU.
*  move I_INTAB-grundd               to  w_MATERIALLONGTEXT-TEXT_LINE.
*  append w_MATERIALLONGTEXT.
  IF w_HEADDATA-SALES_VIEW = 'X'.
    W_MLTX+0(18) = I_HEAD-MATERIAL.
    W_MLTX+18(4) = I_INTAB-VKORG.
    W_MLTX+22(2) = I_INTAB-VTWEG.
    move 'MVKE'               to  w_MATERIALLONGTEXT-APPLOBJECT.
    move '0001'               to  w_MATERIALLONGTEXT-TEXT_ID.
    move W_MLTX                 to w_MATERIALLONGTEXT-TEXT_NAME.
    move SY-LANGU               to  w_MATERIALLONGTEXT-LANGU.
    move I_INTAB-VERTRIEBS    to  w_MATERIALLONGTEXT-TEXT_LINE.
    append w_MATERIALLONGTEXT.
  SELECT SINGLE BUKRS
         INTO W_BUKRS
         FROM T001K
         WHERE BWKEY = I_INTAB-WERKS.
  SELECT SINGLE LAND1
          INTO  W_LAND1
          FROM T001
          WHERE BUKRS = W_BUKRS.
  IF W_LAND1 <> 'US'.
    W_MWST = 'MWST'.
  ELSE.
    W_MWST = 'TAXJ'.
  ENDIF.
*TAXCLASSIFICATIONS
  move W_LAND1               to  w_TAXCLASSIFICATIONS-DEPCOUNTRY.
  move W_MWST               to  w_TAXCLASSIFICATIONS-TAX_TYPE_1.
  move I_INTAB-TAXKM               to  w_TAXCLASSIFICATIONS-TAXCLASS_1.
  append w_TAXCLASSIFICATIONS.
  ENDIF.
   CLEAR w_UNITSOFMEASURE.
   CLEAR w_UNITSOFMEASUREX.
  if I_INTAB-BSTME <> '' .
    move w_CLIENTDATA-PO_UNIT        to  w_UNITSOFMEASURE-ALT_UNIT.
    move w_CLIENTDATA-PO_UNIT         to  w_UNITSOFMEASUREX-ALT_UNIT.
    move w_CLIENTDATA-PO_UNIT       to  w_UNITSOFMEASURE-ALT_UNIT_ISO.
    move w_CLIENTDATA-PO_UNIT       to  w_UNITSOFMEASUREX-ALT_UNIT_ISO.
    move I_INTAB-NUMER                to  w_UNITSOFMEASURE-NUMERATOR.
    move I_INTAB-DENOM               to  w_UNITSOFMEASURE-DENOMINATR.
    PERFORM FRM_SPACE_CHECK
                      USING w_UNITSOFMEASURE-NUMERATOR
                          I_INTAB-PROC_CLS
                      CHANGING w_UNITSOFMEASUREX-NUMERATOR.
    PERFORM FRM_SPACE_CHECK
                      USING w_UNITSOFMEASURE-DENOMINATR
                          I_INTAB-PROC_CLS
                      CHANGING w_UNITSOFMEASUREX-DENOMINATR.
  ELSEIF I_INTAB-BRGEW <> ''
        OR I_INTAB-GEWEI <> ''
        OR I_INTAB-VOLUM <> ''
        OR I_INTAB-VOLEH <> ''.
    move w_CLIENTDATA-BASE_UOM        to  w_UNITSOFMEASURE-ALT_UNIT.
    move w_CLIENTDATA-BASE_UOM         to  w_UNITSOFMEASUREX-ALT_UNIT.
    move w_CLIENTDATA-BASE_UOM       to  w_UNITSOFMEASURE-ALT_UNIT_ISO.
    move w_CLIENTDATA-BASE_UOM       to  w_UNITSOFMEASUREX-ALT_UNIT_ISO.
  ENDIF.
  move I_INTAB-BRGEW                to  w_UNITSOFMEASURE-GROSS_WT.
  move I_INTAB-GEWEI                to  w_UNITSOFMEASURE-UNIT_OF_WT.
  move I_INTAB-VOLUM               to  w_UNITSOFMEASURE-VOLUME.
  move I_INTAB-VOLEH               to  w_UNITSOFMEASURE-VOLUMEUNIT.
  PERFORM FRM_SPACE_CHECK
                    USING w_UNITSOFMEASURE-GROSS_WT
                        I_INTAB-PROC_CLS
                    CHANGING w_UNITSOFMEASUREX-GROSS_WT.
  PERFORM FRM_SPACE_CHECK
                    USING w_UNITSOFMEASURE-UNIT_OF_WT
                        I_INTAB-PROC_CLS
                    CHANGING w_UNITSOFMEASUREX-UNIT_OF_WT.
  PERFORM FRM_SPACE_CHECK
                    USING w_UNITSOFMEASURE-VOLUME
                        I_INTAB-PROC_CLS
                    CHANGING w_UNITSOFMEASUREX-VOLUME.
  PERFORM FRM_SPACE_CHECK
                    USING w_UNITSOFMEASURE-VOLUMEUNIT
                        I_INTAB-PROC_CLS
                    CHANGING w_UNITSOFMEASUREX-VOLUMEUNIT.
  IF I_INTAB-NUMER <> ''
  OR I_INTAB-DENOM <> ''
  OR I_INTAB-BRGEW <> ''
  OR I_INTAB-GEWEI <> ''
  OR I_INTAB-VOLUM <> ''
  OR I_INTAB-VOLEH <> ''.
    append w_UNITSOFMEASURE.
    append w_UNITSOFMEASUREX.
  ENDIF.
***********************************************
  ZZBAPI_TE_MARA-MATERIAL = I_HEAD-MATERIAL.
  ZZBAPI_TE_MARA-EXTWG = I_INTAB-EXTWG.
  ZZBAPI_TE_MARAX-MATERIAL = I_HEAD-MATERIAL.
  PERFORM FRM_SPACE_CHECK
                    USING ZZBAPI_TE_MARA-EXTWG
                          I_INTAB-PROC_CLS
                    CHANGING ZZBAPI_TE_MARAX-EXTWG.
  W_EXTENSIONIN-STRUCTURE = 'BAPI_TE_MARA'.
  W_EXTENSIONIN-VALUEPART1 = ZZBAPI_TE_MARA.
  APPEND W_EXTENSIONIN.
  W_EXTENSIONINX-STRUCTURE = 'BAPI_TE_MARAX'.
  W_EXTENSIONINX-VALUEPART1 = ZZBAPI_TE_MARAX.
  APPEND W_EXTENSIONINX.
********************************************************
 
  CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
       EXPORTING
            HEADDATA             = w_HEADDATA
            CLIENTDATA           = w_CLIENTDATA
            CLIENTDATAX          = w_CLIENTDATAX
            PLANTDATA            = w_PLANTDATA
            PLANTDATAX           = w_PLANTDATAX
            FORECASTPARAMETERS   = w_FORECASTPARAMETERS
            FORECASTPARAMETERSX  = w_FORECASTPARAMETERSX
            PLANNINGDATA         = w_PLANNINGDATA
            PLANNINGDATAX        = w_PLANNINGDATAX
            STORAGELOCATIONDATA  = w_STORAGELOCATIONDATA
            STORAGELOCATIONDATAX = w_STORAGELOCATIONDATAX
            VALUATIONDATA        = w_VALUATIONDATA
            VALUATIONDATAX       = w_VALUATIONDATAX
            SALESDATA            = w_SALESDATA
            SALESDATAX           = w_SALESDATAX
       IMPORTING
            RETURN               = w_RETURN
       TABLES
            MATERIALDESCRIPTION  = w_MATERIALDESCRIPTION
            UNITSOFMEASURE       = w_UNITSOFMEASURE
            UNITSOFMEASUREX      = w_UNITSOFMEASUREX
            TAXCLASSIFICATIONS   = w_TAXCLASSIFICATIONS
            MATERIALLONGTEXT     = w_MATERIALLONGTEXT
            EXTENSIONIN          = W_EXTENSIONIN
            EXTENSIONINX         = W_EXTENSIONINX
            RETURNMESSAGES       = w_RETURNMESSAGES.
  if w_RETURN-TYPE <> 'S' AND w_RETURN-TYPE <> 'W'.
    MESSAGE ID w_RETURN-ID TYPE w_RETURN-TYPE NUMBER w_RETURN-NUMBER
          WITH w_RETURN-MESSAGE_V1 w_RETURN-MESSAGE_V2
          w_RETURN-MESSAGE_V3 w_RETURN-MESSAGE_V4 INTO E_ERROR.
  endif.
ENDFUNCTION.
*---------------------------------------------------------------------*
*       FORM FRM_SPACE_CHECK                                          *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  P_INPARAM                                                     *
*  -->  P_OUTPARAM                                                    *
*---------------------------------------------------------------------*
FORM FRM_SPACE_CHECK USING P_INPARAM
                           P_CLS
                     CHANGING P_OUTPARAM.
  IF P_CLS = '5'.
    IF NOT P_INPARAM IS INITIAL.
      MOVE 'X' TO P_OUTPARAM.
    ENDIF.
*  ELSEIF P_CLS = '2'.
  ELSE.
    MOVE 'X' TO P_OUTPARAM.
  ENDIF.
ENDFORM.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值