SAP MM BAPI MATERIAL
From SapWiki
*----------------------------------------------------------------------* ***INCLUDE *----------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Form SEARCH *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM SEARCH . data lt_stpo type TABLE OF stpo. data ls_stpo like LINE OF lt_stpo. data ld_f. data ld_l type i.
clear: mast, knmt, kna1-name1, makt, gd_maktx, t001w.
select single * from kna1 where KUNNR = kna1-kunnr.
select SINGLE * from t001w where werks = marc-werks.
loop at gt_comp into gs_comp where matnr is NOT INITIAL. SELECT * APPENDING TABLE lt_stpo FROM STPO WHERE IDNRK = gs_comp-MATNR AND MENGE = gs_comp-menge. if sy-subrc <> 0. * debe encontrarse para todos los comp ld_f = co_yes. exit. endif.
ENDLOOP.
case ld_f. when co_yes.
when co_no. sort lt_stpo by STLNR. delete ADJACENT DUPLICATES FROM lt_stpo COMPARING STLNR.
ld_l = lines( lt_stpo ). if ld_l = 1. read TABLE lt_stpo into ls_stpo index 1. select single * from mast where stlnr = ls_stpo-stlnr and werks = marc-werks. if sy-subrc = 0. select SINGLE * from makt where matnr = mast-matnr and spras = sy-langu.
select single * from KNMT where matnr = mast-matnr and kunnr = kna1-kunnr. if sy-subrc = 0. select SINGLE maktx into gd_maktx from makt where matnr = knmt-matnr and spras = sy-langu. endif. endif.
endif.
ENDCASE.
ENDFORM. " SEARCH *&---------------------------------------------------------------------* *& Form UPDATE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM UPDATE .
select single * from kna1 where KUNNR = kna1-kunnr. select SINGLE * from t001w where werks = marc-werks.
loop at gt_comp into gs_comp where matnr is NOT INITIAL. gd_tabix = sy-tabix. select SINGLE maktx into gs_comp-maktx from makt where matnr = gs_comp-matnr and spras = sy-langu. if sy-subrc = 0. modify gt_comp from gs_comp INDEX gd_tabix. endif.
ENDLOOP.
ENDFORM. " UPDATE
*&---------------------------------------------------------------------* *& Form f_crear_material *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM f_crear_material .
PERFORM fill_data.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA' EXPORTING headdata = wa_headdata clientdata = wa_clientdata_new clientdatax = wa_clientdatax SALESDATA = wa_salesdata_new SALESDATAx = wa_salesdatax IMPORTING RETURN = wa_return TABLES materialdescription = gt_bapi_makt taxclassifications = gt_mlan "Tax Data unitsofmeasure = gt_bapi_marm "Units of measure unitsofmeasurex = gt_bapi_marmx "Checkbox for Units of measure returnmessages = gt_returnmessages * materiallongtext = it_bapi_mltx .
* if p_test <> 'X'. IF wa_return-type <> 'E'. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' * EXPORTING * wait = abap_on IMPORTING return = wa_return_commit. ENDIF. * endif.
ENDFORM. " crear_material
*&---------------------------------------------------------------------* *& Form get_matnr *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->O_MATNR text *----------------------------------------------------------------------* form get_matnr CHANGING o_matnr. data: gv_bapireturn1 type bapireturn1, gt_bapimatnr like table of BAPIMATINR, gs_bapimatnr LIKE LINE OF gt_bapimatnr.
CALL FUNCTION 'BAPI_MATERIAL_GETINTNUMBER' EXPORTING material_type = '1' industry_sector = 'HAWA' required_numbers = 1 IMPORTING return = gv_bapireturn1 TABLES material_number = gt_bapimatnr. IF gv_bapireturn1-type EQ 'S'. READ TABLE gt_bapimatnr INTO gs_bapimatnr INDEX 1. IF sy-subrc EQ 0. o_matnr = gs_bapimatnr-material. ENDIF. ENDIF. ENDFORM. "get_matnr *&---------------------------------------------------------------------* *& Form fill_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* form fill_data. data gs_bapi_makt like LINE OF gt_bapi_makt. data gs_bapi_marm like LINE OF gt_bapi_marm. data gs_bapi_marmx like LINE OF gt_bapi_marmx. data gs_mlan like LINE OF gt_mlan.
clear: wa_headdata, wa_clientdata_new, wa_clientdatax, wa_salesdata_new, wa_salesdatax, gt_bapi_makt[], gt_bapi_marm[], gt_bapi_marmx[], gt_mlan[].
perform get_matnr CHANGING wa_headdata-material . wa_headdata-ind_sector = '1'. wa_headdata-matl_type = 'HAWA'.
wa_headdata-basic_view = co_yes. wa_headdata-sales_view = co_yes. wa_headdata-purchase_view = co_yes. wa_headdata-mrp_view = co_yes. wa_headdata-forecast_view = co_yes. * wa_headdata-work_sched_view = abap_on. * wa_headdata-prt_view = abap_on. wa_headdata-storage_view = co_yes. "! ** wa_headdata-warehouse_view = abap_on. * wa_headdata-quality_view = abap_on. wa_headdata-account_view = co_yes. * wa_headdata-cost_view = abap_on. ** wa_headdata-material_external = wa_clientdata-material_external. ** wa_headdata-material_guid = wa_clientdata-material_guid. ** wa_headdata-material_version = wa_clientdata-material_version.
wa_clientdata_new-MATL_GROUP = '001'. wa_clientdata_new-OLD_MAT_NO = 'MDF'. wa_clientdata_new-BASE_UOM = 'UN'. wa_clientdata_new-NET_WEIGHT = '1,000'. wa_clientdata_new-UNIT_OF_WT = 'KG'. wa_clientdata_new-DIVISION = '01'. wa_clientdata_new-PROD_HIER = '0001300003'. wa_clientdata_new-BATCH_MGMT = 'X'. wa_clientdata_new-PVALIDFROM = SY-DATUM. wa_clientdata_new-ITEM_CAT = 'NORM'.
wa_clientdatax-MATL_GROUP = co_yes. wa_clientdatax-OLD_MAT_NO = co_yes. wa_clientdatax-BASE_UOM = co_yes. wa_clientdatax-NET_WEIGHT = co_yes. wa_clientdatax-UNIT_OF_WT = co_yes. wa_clientdatax-DIVISION = co_yes. wa_clientdatax-PROD_HIER = co_yes . wa_clientdatax-BATCH_MGMT = co_yes . wa_clientdatax-PVALIDFROM = co_yes. wa_clientdatax-ITEM_CAT = co_yes.
wa_salesdata_new-SALES_ORG = '01'. wa_salesdata_new-DISTR_CHAN = 'Z2'. wa_salesdata_new-MATL_STATS = '1'. wa_salesdata_new-ITEM_CAT = 'ZMDF' . wa_salesdata_new-ACCT_ASSGT = '01'.
wa_salesdatax-SALES_ORG = '01'. wa_salesdatax-DISTR_CHAN = 'Z2'. wa_salesdatax-MATL_STATS = co_yes. wa_salesdatax-ITEM_CAT = co_yes . wa_salesdatax-ACCT_ASSGT = co_yes.
gs_bapi_makt-LANGU = 'ES'. gs_bapi_makt-MATL_DESC = 'Campo9'. append gs_bapi_makt to gt_bapi_makt.
gs_bapi_marm-ALT_UNIT = 'UN'. gs_bapi_marm-GROSS_WT = '1,000'. append gs_bapi_marm to gt_bapi_marm.
gs_bapi_marmx-ALT_UNIT = 'UN'. gs_bapi_marmx-GROSS_WT = co_yes. append gs_bapi_marmx to gt_bapi_marmx.
gs_mlan-DEPCOUNTRY = 'CL'. gs_mlan-TAX_TYPE_1 = 'ZIVA'. gs_mlan-TAXCLASS_1 = '1'. append gs_mlan to gt_mlan.
ENDFORM. "fill_data