How to Easy… Maintain Sales Order / Quotation BOM

2023-04-07 11:10发布

Here is a code snippet to update a BOM related to Sales Order or Quotation (transaction CS62).

You can load current BOM an change any field you need, or insert new itens to this BOM.


” Local Vars

DATA: lt_stb     TYPE TABLE OF stpox,

      ls_stb     TYPE stpox,

      lt_matcat  TYPE TABLE OF cscmat,

      ls_vbap    TYPE vbap,

      ls_stko    TYPE stko_api01,

      ls_stpo    TYPE stpo_api03,

      lt_stpo    TYPE TABLE OF stpo_api03,

      ln_item_no TYPE stpo_api03-item_no.


ls_vbap-vbeln = ‘0020000001’.  ” Sales Order/Quotation

ls_vbap-posnr = ‘000010’.      ” Item


” Fetch Salesorder data

SELECT SINGLE *

  FROM vbap

  INTO ls_vbap

  WHERE vbeln = ls_vbap-vbeln AND

        posnr = ls_vbap-posnr.


” Load BOM

CALL FUNCTION ‘CS_BOM_EXPL_KND_V1’

  EXPORTING

    capid                 = ‘PP01’

    cuobj                 = ls_vbap-cuobj

    datuv                 = sy-datum

    ehndl                 = ‘1’

    mktls                 = ‘ ‘

    mehrs                 = ‘X’

    mmory                 = ‘X’

    mtnrv                 = ls_vbap-matnr

    stlan                 = ‘1’

    werks                 = ls_vbap-werks

    vbeln                 = ls_vbap-vbeln

    vbpos                 = ls_vbap-posnr

    vrsvo                 = ‘ ‘

  TABLES

    stb                   = lt_stb

    matcat                = lt_matcat

  EXCEPTIONS

    alt_not_found         = 1

    call_invalid          = 2

    material_not_found    = 3

    missing_authorization = 4

    no_bom_found          = 5

    no_plant_data         = 6

    no_suitable_bom_found = 7

    conversion_error      = 8

    OTHERS                = 9.



CLEAR ln_item_no.

” Loop through BOM Itens

LOOP AT lt_stb INTO ls_stb

  WHERE stufe = ‘1’ AND

        bmtyp = ‘K’.

  ADD 1 TO ln_item_no.


  ” Fill Bom Item to update

  CLEAR ls_stpo.

  ls_stpo-item_categ      = ls_stb-postp.

  ls_stpo-item_no         = ln_item_no.

  ls_stpo-component       = ls_stb-idnrk.

  ” … Fill any fields you need

  ls_stpo-bom_no          = ls_stb-stlnr.

  ls_stpo-item_node       = ls_stb-stlkn.

  ls_stpo-item_count      = ls_stb-stpoz.

  ls_stpo-bom_alt         = ls_stb-stlal.

  APPEND ls_stpo TO lt_stpo.

ENDLOOP.


” Save Order

CALL FUNCTION ‘CSAP_ORD_BOM_MAINTAIN’

  EXPORTING

    order       = ls_vbap-vbeln

    position    = ls_vbap-posnr

    material    = ls_vbap-matnr

    plant       = ls_vbap-werks

    bom_usage   = ‘1’

    valid_from  = ‘01.01.2013’   ” Caution on date format

    i_stko      = ls_stko

    fl_new_item = ‘X’            ” Check this if you insert new itens in BOM

  TABLES

    t_stpo      = lt_stpo

  EXCEPTIONS

    error       = 1

    OTHERS      = 2.

   

   

It’s Done.


赞赏支持