Application Development and Automation 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: 
Read only

Process order component Change

0 Likes
1,719

Hi Expert Please help me,

We are try to change Process order Quantity through upload File.

But First Line of Component Quantity are change but remaining are not change. code Like below.

here i_up_comp is internal table have multiple component ....

lOOP AT i_up_comp INTO w_up_comp.

is_order_key = w_up_comp-ponumber."'010000037413'. """" req. data

SELECT SINGLE * FROM resb INTO wa_resb
WHERE aufnr EQ is_order_key
AND rsnum EQ w_up_comp-res_no
AND rspos EQ w_up_comp-res_item
AND charg EQ w_up_comp-batchno.
* AND bwart EQ '261'
* AND charg <> ''.

MOVE-CORRESPONDING wa_resb TO is_order_component_key.

qty = w_up_comp-derivedweight.
is_requirement_quantity-quantity = qty."w_up_comp-derivedweight. "'10.23'. """" req. data
is_requirement_quantity-uom = wa_resb-meins. "'KG'.
is_requirement_quantityx-quantity = 'X'.
is_requirement_quantityx-uom = 'X'.

i_material = w_up_comp-itemcode."wa_resb-matnr. """" REQ.DATA
i_materialx = 'X'.

is_storage_location-werks = w_up_comp-plant."wa_resb-werks. """" req. data
is_storage_locationx-werks = 'X'.
is_storage_location-lgort = w_up_comp-storageloc."'SF01'. """" req. data
is_storage_locationx-lgort = 'X'.

i_batch = wa_resb-charg.
i_batchx = 'X'.

SELECT SINGLE * FROM afpo
WHERE aufnr = is_order_key.

i_mi_configuration_object = afpo-cuobj.
i_mi_configuration_objectx = 'X'.

CALL FUNCTION 'CO_XT_COMPONENT_CHANGE'
EXPORTING
is_order_key = is_order_key
is_order_component_key = is_order_component_key
is_requirement_quantity = is_requirement_quantity
is_requirement_quantityx = is_requirement_quantityx
is_confirmed_quantity = is_confirmed_quantity
is_confirmed_quantityx = is_confirmed_quantityx
i_material = i_material
i_materialx = i_materialx
* IS_ORDER_OPERATION_KEY = IS_ORDER_OPERATION_KEY
* IS_ORDER_OPERATION_KEYX = IS_ORDER_OPERATION_KEYX
* IS_REQUIREMENT_DATE = IS_REQUIREMENT_DATE
* IS_REQUIREMENT_DATEX = IS_REQUIREMENT_DATEX
is_storage_location = is_storage_location
is_storage_locationx = is_storage_locationx
i_batch = i_batch
i_batchx = i_batchx
i_mi_configuration_object = i_mi_configuration_object
i_mi_configuration_objectx = i_mi_configuration_objectx
* I_BATCH_SEL_CUOBJ = I_BATCH_SEL_CUOBJ
* I_BATCH_SEL_CUOBJX = I_BATCH_SEL_CUOBJX
* I_XFEHL = I_XFEHL
* I_XFEHLX = I_XFEHLX
* I_SOBKZ = I_SOBKZ
* I_SOBKZX = I_SOBKZX
* I_KDAUF = I_KDAUF
* I_KDAUFX = I_KDAUFX
* I_KDPOS = I_KDPOS
* I_KDPOSX = I_KDPOSX
* I_PSPEL = I_PSPEL
* I_PSPELX = I_PSPELX
* I_KZAUS = I_KZAUS
* I_KZAUSX = I_KZAUSX
* I_NAFKZ = I_NAFKZ
* I_NAFKZX = I_NAFKZX
* I_NOMAT = I_NOMAT
* I_NOMATX = I_NOMATX
* I_NFUML = I_NFUML
* I_NFUMLX = I_NFUMLX
* I_NFPKZ = I_NFPKZ
* I_NFPKZX = I_NFPKZX
* I_NOMNG = I_NOMNG
* I_NOMNGX = I_NOMNGX
IMPORTING
es_bapireturn = es_bapireturn "initial
e_error_occurred = e_error_occurred. "blank not showing 'X'.


IF es_bapireturn-message IS INITIAL.

CALL FUNCTION 'CO_XT_ORDER_PREPARE_COMMIT'.

COMMIT WORK AND WAIT.

endloop.

thanks.

pradip patel

1 REPLY 1
Read only

culturied
Discoverer
0 Likes
1,168

Hello.

Because you use the functional module 'CO_XT_ORDER_PREPARE_COMMIT' in your loop.

You should use this when you're done the updating of RESB table.

DATA:   ls_return         TYPE bapiret2,
        lv_order_number   TYPE bapi_order_key-order_number,
        lt_return         TYPE STANDARD TABLE OF bapiret.

FIELD-SYMBOLS: <ft_resb_bt> TYPE ANY TABLE.

LOOP AT <your_orders> ASSIGNING ... .

SELECT * FROM resb INTO TABLE @DATA(lt_resb) WHERE ....
 
LOOP AT lt_resb  ASSIGNING ... .
   use here the FM 'CO_XT_COMPONENT_CHANGE' for the necessary material 
ENDLOOP.

ASSIGN ('(SAPLCOBC)RESB_BT[]') TO <ft_resb_bt>.

IF  syst-subrc EQ 0 AND <ft_resb_bt> IS NOT INITIAL.
  MODIFY resb FROM TABLE <ft_resb_bt>.
ENDIF.

****************************************************************
*    FM CO_XT_ORDER_PREPARE_COMMIT clear (SAPLCOBC)RESB_BT[]   *
****************************************************************
        IF ls_return IS INITIAL.
            CALL FUNCTION 'CO_XT_ORDER_PREPARE_COMMIT'
              IMPORTING
                e_order_key      = lv_order_number
                es_bapireturn    = ls_return
                e_error_occurred = e_error_occurred
              TABLES
                et_bapireturn    = lt_return.
            COMMIT WORK.
          ENDIF.


ENDLOOP.