Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Extend the Material to Plant to Plant

divsmart
Participant
0 Kudos

Hi Experts,

I need to Extend the Material from one Plant to other Plant. Ie., 11(material no) From M001 (Plant) to M002(Plant)

In return i getting Material was created and extended, but in Table level not updating . Kindly help

FORM read_file .
  BREAK senthilg.
  IF po_matnr IS NOT INITIAL.
    SELECT matnr FROM mara INTO TABLE @DATA(it_mara) WHERE matnr EQ @po_matnr.
*    IF it_mara IS NOT INITIAL.

*      SELECT matnr ,werks FROM mard INTO TABLE @DATA(it_mard) FOR ALL ENTRIES IN @it_mara WHERE matnr EQ @it_mara-matnr.
*    ENDIF.

    LOOP AT it_mara INTO DATA(wa_mara).
      APPEND VALUE ty_extend( matnr = wa_mara-matnr
                              tem_matnr = to_matnr
                              werks     = po_werks
                              tem_werks = to_werks ) TO it_extend.
    ENDLOOP.
  ENDIF.

ENDFORM.
FORM extend_form .

  DATA: ls_get_material TYPE bapi_mara_ga,
        ls_get_plant    TYPE bapi_marc_ga,
        ls_headata      TYPE bapimathead,
        ls_PLANTDATA    TYPE bapi_marc,
        ls_PLANTDATAX   TYPE bapi_marcx,
        ls_return       TYPE bapiret2,
        lt_EXTENSIONIN  TYPE TABLE OF bapiparex,
        lt_EXTENSIONINX TYPE TABLE OF bapiparexx,
        ls_plant        TYPE bapi_te_marc,
        ls_plantx       TYPE BAPI_TE_MARCx.

  SELECT  matnr,werks FROM marc INTO TABLE @DATA(it_marc) FOR ALL ENTRIES IN @it_extend WHERE matnr EQ @it_extend-matnr.

  LOOP AT it_extend INTO DATA(ls_extend).

    CALL FUNCTION 'BAPI_MATERIAL_GET_ALL'
      EXPORTING
        material   = ls_extend-tem_matnr
        plant      = ls_extend-tem_werks
      IMPORTING
        clientdata = ls_get_material
        plantdata  = ls_get_plant.

    IF ls_get_material-material IS NOT INITIAL.
      APPEND VALUE ty_final( matnr = ls_extend-matnr
                             tem_matnr = ls_extend-tem_matnr
                             werks     = ls_extend-werks
                             tem_werks = ls_extend-tem_werks ) TO it_final.

    ENDIF.

    ls_headata-material =  ls_get_material."ls_extend-matnr .

    LOOP AT it_marc INTO DATA(ls_marc).

      ls_PLANTDATA-plant =  ls_get_plant."ls_marc-werks.
      ls_PLANTDATAx-plant =  ls_marc-werks.

      ls_plant-plant  =   ls_get_plant ." ls_marc-werks.
      ls_plantx-plant  =  ls_get_plant." ls_marc-werks.

      APPEND VALUE bapiparex( structure = 'BAPI_TE_MARC'
                                   valuepart1 = ls_plant ) TO lt_extensionin.


      APPEND VALUE bapiparex( structure = 'BAPI_TE_MARCX'
                                   valuepart1 = ls_plantx ) TO lt_extensioninx.

      CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
        EXPORTING
          headdata     = ls_headata
          plantdata    = ls_PLANTDATA
          plantdatax   = ls_PLANTDATAx
        IMPORTING
          return       = ls_return
        TABLES
          extensionin  = lt_extensionin
          extensioninx = lt_extensioninx.

      IF ls_return IS NOT INITIAL .


        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = ' '.
        WAIT UP TO 10 SECONDS.


      ENDIF.

    ENDLOOP.

  ENDLOOP.
ENDFORM.
7 REPLIES 7

divsmart
Participant
0 Kudos

Selection screen:

Sandra_Rossi
Active Contributor

Of course, people would expect from you to indicate what contains RETURN parameter after save, right?

DominikTylczyn
Active Contributor
0 Kudos

Why would you do this:

        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = ' '.
        WAIT UP TO 10 SECONDS.

instead of this:

        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'.

?

divsmart
Participant
0 Kudos

3a9e4ce873a94034b33dc62b0ce600ee

Thanks for response,

Done, but still values are not updated.

Thanks,

Senthil G.

DominikTylczyn
Active Contributor
0 Kudos

divsmart I would say you don't pass any material master data on plant level while calling the BAPI. Therefore no data is saved.

divsmart
Participant
0 Kudos

Please point where i missed it?

Yours help is much apprecited!!!

divsmart
Participant
0 Kudos

Hi Experts,

I need to extend the Material to one plant to other.

In return message , its shows as 'Material created and extended' But values not updating.

Please let me now.

FORM extend_form .

DATA: ls_get_material TYPE bapi_mara_ga,
ls_get_plant TYPE bapi_marc_ga,
ls_headata TYPE bapimathead,
ls_clientdata TYPE bapi_mara,
ls_clientdatax TYPE bapi_marax,
ls_plantdata TYPE bapi_marc,
ls_plantdatax TYPE bapi_marcx,
ls_return TYPE bapiret2,
lt_EXTENSIONIN TYPE TABLE OF bapiparex,
lt_EXTENSIONINX TYPE TABLE OF bapiparexx,
ls_plant TYPE bapi_te_marc,
ls_plantx TYPE bapi_te_marcx.
* ls_desc TYPE
BREAK senthilg.

IF po_matnr IS NOT INITIAL.
SELECT matnr,matkl,meins,spart FROM mara INTO TABLE @DATA(it_mara) WHERE matnr EQ @po_matnr.

* IF it_mara IS NOT INITIAL.

* SELECT matnr ,werks FROM mard INTO TABLE @DATA(it_mard) FOR ALL ENTRIES IN @it_mara WHERE matnr EQ @it_mara-matnr.
* ENDIF.

LOOP AT it_mara INTO DATA(wa_mara).
APPEND VALUE ty_extend( matnr = wa_mara-matnr
tem_matnr = to_matnr
werks = po_werks
tem_werks = to_werks ) TO it_extend.
ENDLOOP.
ENDIF.

SELECT matnr,werks,ekgrp FROM marc INTO TABLE @DATA(it_marc) FOR ALL ENTRIES IN @it_extend WHERE matnr EQ @it_extend-matnr.

SELECT matnr,maktx FROM makt INTO TABLE @DATA(it_makt) FOR ALL ENTRIES IN @it_extend WHERE matnr eq @it_extend-matnr.

* SELECT matnr,bwkey,bwtar FROM mbew INTO TABLE @DATA(it_mbew) FOR ALL ENTRIES IN @it_extend WHERE matnr eq @it_marc-matnr AND
* bwkey eq @it_marc-werks
LOOP AT it_extend INTO DATA(ls_extend).

CALL FUNCTION 'BAPI_MATERIAL_GET_ALL'
EXPORTING
material = ls_extend-tem_matnr
plant = ls_extend-tem_werks
IMPORTING
clientdata = ls_get_material
plantdata = ls_get_plant.

IF ls_get_material-material IS NOT INITIAL.
APPEND VALUE ty_final( matnr = ls_extend-matnr
tem_matnr = ls_extend-tem_matnr
werks = ls_extend-werks
tem_werks = ls_extend-tem_werks ) TO it_final.

ENDIF.

* ls_headata = ls_get_material."ls_extend-matnr .
* ls_headata-material = ls_extend-matnr."ls_get_material-material."ls_extend-matnr .
ls_headata-material = ls_get_material-material.
ls_headata-basic_view = 'X'.
ls_headata-purchase_view = 'X'.
ls_headata-account_view = 'X'.
ls_headata-ind_sector = ls_get_material-ind_sector.
ls_headata-matl_type = ls_get_material-matl_type.

ls_clientdata-base_uom = wa_mara-meins.
ls_clientdata-matl_group = wa_mara-matkl.
ls_clientdata-division = wa_mara-spart.

ls_clientdataX-base_uom = 'X'.
ls_clientdataX-matl_group = 'X'.
ls_clientdataX-division = 'X'.


LOOP AT it_marc INTO DATA(ls_marc).

ls_PLANTDATA-plant = ls_get_plant-plant ."ls_marc-werks.
ls_plantdata-pur_group = ls_marc-ekgrp.


ls_PLANTDATAX-plant = ls_get_plant-plant."ls_marc-werks.
ls_plantdatax-pur_group = 'X'.

ls_plant-plant = ls_extend-werks ." ls_marc-werks.
ls_plantx-plant = ls_extend-werks." ls_marc-werks.

APPEND VALUE bapiparex( structure = 'BAPI_TE_MARC'
valuepart1 = ls_plant ) TO lt_extensionin.


APPEND VALUE bapiparex( structure = 'BAPI_TE_MARCX'
valuepart1 = ls_plantx ) TO lt_extensioninx.

CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = ls_headata
clientdata = ls_clientdata
clientdatax = ls_clientdatax
plantdata = ls_PLANTDATA
plantdatax = ls_PLANTDATAX
IMPORTING
return = ls_return
TABLES
extensionin = lt_extensionin
extensioninx = lt_extensioninx.

IF ls_return IS NOT INITIAL .
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = ' '.
ENDIF.

ENDLOOP.

ENDLOOP.