Difference between revisions of "SAP MM BAPI MATERIAL"
From SapWiki
(Created page with " *----------------------------------------------------------------------* ***INCLUDE *----------------------------------------------------------------------* *&-----------...") |
|||
Line 1: | Line 1: | ||
− | *----------------------------------------------------------------------* | + | <nowiki>*----------------------------------------------------------------------* |
− | + | ***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</nowiki> |
Latest revision as of 22:08, 4 April 2020
*----------------------------------------------------------------------* ***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