Sample Code

Material Batch Determination

In this example, we are trying to find the batch for a material that can be used for a movement. FM used here – VB_BATCH_DETERMINATION.

Points to note:

Movement type is important. So please fill in.

KAPPL and KALSM – These fields make up the rule which will be used to fetch the batch based on quantity.

NODIA – Check this field or you will get a pop-up with the relevant batch info.

E_BDBATCH contains the records of batches to be used. It depends on quantity. So assume if you are using 100 KGs of material and in the system that quantity cannot be met from a single batch, then multiple rows will come. Ideally, you should get the quantity equal to what you entered or less (if there are not enough batched quantities available). If you are getting the list of all available batches then tweak the value of KZVBP.

DATA: ls_komph   TYPE komph,
      ls_bdcom   TYPE bdcom,
      lt_bdbatch TYPE STANDARD TABLE OF bdbatch INITIAL SIZE 0.

    ls_komph-matnr = material_number
    ls_komph-werks = plant
    ls_komph-lgort = storage_location
    ls_komph-bwart = movement_type

    ls_bdcom-kappl = 'ME'.
    ls_bdcom-kalsm = 'YE0001'.
    ls_bdcom-meins = base_uom
    ls_bdcom-erfmg = quantity
    ls_bdcom-erfme = quantity_unit
    ls_bdcom-mbdat = sy-datum.
    ls_bdcom-kzvbp = 'L'.
    ls_bdcom-nolck = abap_true.
    ls_bdcom-nodia = abap_true.

    CALL FUNCTION 'VB_BATCH_DETERMINATION'
      EXPORTING
        i_komph                 = ls_komph
        x_bdcom                 = ls_bdcom
      TABLES
        e_bdbatch               = lt_bdbatch 
      EXCEPTIONS
        no_material             = 1
        no_plant                = 2
        no_application          = 3
        function_not_possible   = 4
        condition_not_found     = 5
        classtype_not_found     = 6
        classtype_not_active    = 7
        no_base_unit            = 8
        no_unit                 = 9
        conversion_not_found    = 10
        conversion_overflow     = 11
        missing_entry_t156c     = 12
        conversion_type_invalid = 13
        division_by_zero        = 14
        data_mismatch           = 15
        material_not_found      = 16
        no_quantity             = 17
        invalid_duplicate_batch = 18
        OTHERS                  = 19.
    IF sy-subrc <> 0.

    ENDIF.

Leave a Reply

Your email address will not be published. Required fields are marked *

error

Enjoy this blog? Please spread the word :)

Follow by Email
Twitter
LinkedIn
LinkedIn
Share