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

Problem in changing Production order components.

Former Member
0 Likes
7,205

The problem is happening while changing components in Production order.

Take a look at the source code.

data :      IS_ORDER_KEY  TYPE  COXT_ORD_KEY,

IS_ORDER_COMPONENT_KEY  TYPE  COXT_S_ORD_COMP_KEY,

IS_REQUIREMENT_QUANTITY TYPE  COXT_S_QUANTITY,

IS_REQUIREMENT_QUANTITYX  TYPE  COXT_S_QUANTITYX,

IS_CONFIRMED_QUANTITY TYPE  COXT_S_QUANTITY,

IS_CONFIRMED_QUANTITYX  TYPE  COXT_S_QUANTITYX,

I_MATERIAL  TYPE  COXT_MATERIAL,

I_MATERIALX TYPE  COXT_MATERIALX,

IS_ORDER_OPERATION_KEY  TYPE  COXT_S_ORD_OPR_KEY,

IS_ORDER_OPERATION_KEYX TYPE  COXT_S_ORD_OPR_KEYX,

IS_REQUIREMENT_DATE TYPE  COXT_S_DATE,

IS_REQUIREMENT_DATEX  TYPE  COXT_S_DATEX,

IS_STORAGE_LOCATION TYPE  COXT_S_STORAGE_LOCATION,

IS_STORAGE_LOCATIONX  TYPE  COXT_S_STORAGE_LOCATIONX,

I_BATCH TYPE  COXT_BATCH,

I_BATCHX  TYPE  COXT_BATCHX,

I_MI_CONFIGURATION_OBJECT TYPE  COXT_CONFIG_OBJECT,

I_MI_CONFIGURATION_OBJECTX  TYPE  COXT_CONFIG_OBJECTX.

DATA  :wa_resb type resb,

       ES_BAPIRETURN TYPE  COXT_BAPIRETURN,

E_ERROR_OCCURRED  TYPE  C.

.

IS_ORDER_KEY = '000002098003'.

select single * from resb into wa_resb where aufnr eq IS_ORDER_KEY

   and bwart eq '531'.

move-corresponding wa_resb to IS_ORDER_COMPONENT_KEY.

IS_REQUIREMENT_QUANTITY-quantity = '10.23'.

IS_REQUIREMENT_QUANTITY-uom = 'KG'.

IS_REQUIREMENT_QUANTITYX-quantity = 'X'.

IS_REQUIREMENT_QUANTITYx-uom = 'X'.

*IS_STORAGE_LOCATION-lgort = '1060'.

*IS_STORAGE_LOCATIONX-lgort = 'X'.

I_MATERIAL = wa_resb-matnr.

IS_STORAGE_LOCATION-werks = wa_resb-werks.

IS_STORAGE_LOCATIONx-werks = 'X'.

IS_STORAGE_LOCATION-lgort = '1060'.

IS_STORAGE_LOCATIONX-lgort = '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'.

           .

CALL FUNCTION 'CO_XT_ORDER_PREPARE_COMMIT'

  IMPORTING

    E_ORDER_KEY            = IS_ORDER_KEY

    ES_BAPIRETURN          = ES_BAPIRETURN

    E_ERROR_OCCURRED       = E_ERROR_OCCURRED

* TABLES

*   ET_ORD_KEY_MAP         = ET_ORD_KEY_MAP

*   ET_BAPIRETURN          = ET_BAPIRETURN

           .

write : 'dfdfdf'

Notable point is that after executing CO_XT_COMPONENT_CHANGE' parameters ES_BAPIRETURN and E_ERROR_OCCURRED are initial.


This explains that the FM has been executed successfully.

But still the changes are not done in production order.

Please let me know where i am mistaken.

1 ACCEPTED SOLUTION
Read only

Arun_Prabhu_K
Active Contributor
0 Likes
4,717

Abhishek,

     You need to pass 'X' to parameter I_MATERIALX.

Regards.

The problem is happening while changing components in Production order.

Take a look at the source code.

data :      IS_ORDER_KEY  TYPE  COXT_ORD_KEY,

IS_ORDER_COMPONENT_KEY  TYPE  COXT_S_ORD_COMP_KEY,

IS_REQUIREMENT_QUANTITY TYPE  COXT_S_QUANTITY,

IS_REQUIREMENT_QUANTITYX  TYPE  COXT_S_QUANTITYX,

IS_CONFIRMED_QUANTITY TYPE  COXT_S_QUANTITY,

IS_CONFIRMED_QUANTITYX  TYPE  COXT_S_QUANTITYX,

I_MATERIAL  TYPE  COXT_MATERIAL,

I_MATERIALX TYPE  COXT_MATERIALX,

IS_ORDER_OPERATION_KEY  TYPE  COXT_S_ORD_OPR_KEY,

IS_ORDER_OPERATION_KEYX TYPE  COXT_S_ORD_OPR_KEYX,

IS_REQUIREMENT_DATE TYPE  COXT_S_DATE,

IS_REQUIREMENT_DATEX  TYPE  COXT_S_DATEX,

IS_STORAGE_LOCATION TYPE  COXT_S_STORAGE_LOCATION,

IS_STORAGE_LOCATIONX  TYPE  COXT_S_STORAGE_LOCATIONX,

I_BATCH TYPE  COXT_BATCH,

I_BATCHX  TYPE  COXT_BATCHX,

I_MI_CONFIGURATION_OBJECT TYPE  COXT_CONFIG_OBJECT,

I_MI_CONFIGURATION_OBJECTX  TYPE  COXT_CONFIG_OBJECTX.

DATA  :wa_resb type resb,

       ES_BAPIRETURN TYPE  COXT_BAPIRETURN,

E_ERROR_OCCURRED  TYPE  C.

.

IS_ORDER_KEY = '000002098003'.

select single * from resb into wa_resb where aufnr eq IS_ORDER_KEY

   and bwart eq '531'.

move-corresponding wa_resb to IS_ORDER_COMPONENT_KEY.

IS_REQUIREMENT_QUANTITY-quantity = '10.23'.

IS_REQUIREMENT_QUANTITY-uom = 'KG'.

IS_REQUIREMENT_QUANTITYX-quantity = 'X'.

IS_REQUIREMENT_QUANTITYx-uom = 'X'.

*IS_STORAGE_LOCATION-lgort = '1060'.

*IS_STORAGE_LOCATIONX-lgort = 'X'.

I_MATERIAL = wa_resb-matnr.

IS_STORAGE_LOCATION-werks = wa_resb-werks.

IS_STORAGE_LOCATIONx-werks = 'X'.

IS_STORAGE_LOCATION-lgort = '1060'.

IS_STORAGE_LOCATIONX-lgort = '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'.

           .

CALL FUNCTION 'CO_XT_ORDER_PREPARE_COMMIT'

  IMPORTING

    E_ORDER_KEY            = IS_ORDER_KEY

    ES_BAPIRETURN          = ES_BAPIRETURN

    E_ERROR_OCCURRED       = E_ERROR_OCCURRED

* TABLES

*   ET_ORD_KEY_MAP         = ET_ORD_KEY_MAP

*   ET_BAPIRETURN          = ET_BAPIRETURN

           .

write : 'dfdfdf'

Notable point is that after executing CO_XT_COMPONENT_CHANGE' parameters ES_BAPIRETURN and E_ERROR_OCCURRED are initial.


This explains that the FM has been executed successfully.

But still the changes are not done in production order.

Please let me know where i am mistaken.

10 REPLIES 10
Read only

nabheetscn
SAP Champion
SAP Champion
0 Likes
4,717

Hi Abhishek

First of all these are not released FM you are using.... Did you check for any BAPI before using these FM..? Did you try calling commit work after the FM call...?

Nabheet

Read only

0 Likes
4,717

Nabheet,

I looked for bapi but didn't found any. Specifically to change the components of production order.

I used these same function module months ago, they worked that time.

But i dont understand what i am missing now.


Check the function module called in the end.CO_XT_ORDER_PREPARE_COMMIT'.

This is called to commit the changes in DB.

Read only

0 Likes
4,717

But did you try by calling explicit commit after this call... Where did you use these Fmk earlier..in an exit or something..?

Nabheet

Read only

0 Likes
4,717

nabheet,

this is called expilicitly for commit.

Not in any exit or something.

Have a look at the source code which i have posted while starting this discussion.

This below FM is called just after CALL FUNCTION 'CO_XT_COMPONENT_CHANGE'

Look at the source code in starting of discussion. U will understand when it is executed.

CALL FUNCTION 'CO_XT_ORDER_PREPARE_COMMIT'

  IMPORTING

    E_ORDER_KEY            = IS_ORDER_KEY

    ES_BAPIRETURN          = ES_BAPIRETURN

    E_ERROR_OCCURRED       = E_ERROR_OCCURRED

* TABLES

*   ET_ORD_KEY_MAP         = ET_ORD_KEY_MAP

*   ET_BAPIRETURN          = ET_BAPIRETURN

           .

Read only

0 Likes
4,717

So you need a commit right

Read only

0 Likes
4,717

yes, commit work and wait.

Read only

Arun_Prabhu_K
Active Contributor
0 Likes
4,718

Abhishek,

     You need to pass 'X' to parameter I_MATERIALX.

Regards.

Read only

0 Likes
4,717

i dont want to change  material but i only want to changes quantity of existing material.

Read only

4,717

Instead of


CALL FUNCTION 'CO_XT_ORDER_PREPARE_COMMIT'

  IMPORTING

    E_ORDER_KEY            = IS_ORDER_KEY

    ES_BAPIRETURN          = ES_BAPIRETURN

    E_ERROR_OCCURRED       = E_ERROR_OCCURRED

* TABLES

*   ET_ORD_KEY_MAP         = ET_ORD_KEY_MAP

*   ET_BAPIRETURN          = ET_BAPIRETURN


Code like this:

     if ES_BAPIRETURN-message is initial.

          CALL FUNCTION 'CO_XT_ORDER_PREPARE_COMMIT'.

          COMMIT WORK AND WAIT.

     endif.


Read only

0 Likes
3,059

This commit code worked.
Thanks, @Arun_Prabhu_K !