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 BAPI_SALESORDER_CHANGE for condition value

Former Member
0 Likes
7,370

Dear expert ,

   i have requirement like to insert a condition type in va02 line item level .for that i am using BAPI BAPI_SALESORDER_CHANGE .but

my problem is whenever i am executing report instead for condition value  net value is getting change . i have try lot of possibility but issue didn't soled .

i have written below code for testing . please let me know if you have any solutions , thanks in advance 

   DATA  order_header_in  TYPE STANDARD TABLE OF  bapisdh1 WITH HEADER LINE.

   DATA it_return TYPE STANDARD TABLE OF  bapiret2 WITH HEADER LINE.

   DATA header_inx TYPE STANDARD TABLE OF bapisdh1x WITH HEADER LINE.

   DATA conditions_in  TYPE STANDARD TABLE OF  bapicond WITH HEADER LINE.

   DATA conditions_inx TYPE STANDARD TABLE OF  bapicondx WITH HEADER LINE.

   DATA SALESDOCUMENT  LIKE  BAPIVBELN-VBELN.


   LOOP AT it_final INTO wa_final WHERE chk = 'X'.

     header_inx = 'U'.

     APPEND header_inx .

     conditions_in-itm_number = '000010'."wa_final-posnr.

     conditions_in-cond_type = 'ZAPD'.

     conditions_in-cond_value '50789.00'." wa_final-netwr.

*    conditions_in-COND_ST_NO = '480'.

*    conditions_in-ROUNDOFFDI = wa_final-netwr.

*    conditions_in-CONDVALUE = wa_final-netwr.

     conditions_in-currency = 'INR'.

     conditions_in-curr_iso = 'INR'.

     APPEND conditions_in.

     conditions_inx-itm_number = wa_final-posnr.

     conditions_inx-cond_type = 'ZAPD'.

     conditions_inx-updateflag = 'U'.

     conditions_inx-cond_value = 'X'.

     conditions_inx-currency = 'X'.

*    conditions_inx-COND_P_UNT = 'X'.

     APPEND conditions_inx.

SALESDOCUMENT = '1311000598'.



     CALL FUNCTION 'BAPI_SALESORDER_CHANGE'

       EXPORTING

         salesdocument               = SALESDOCUMENT

*     ORDER_HEADER_IN             =

       order_header_inx            header_inx

       TABLES

         return                      = it_return

      CONDITIONS_IN               = conditions_in

      CONDITIONS_INX              = conditions_inx

               .

     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

          EXPORTING

               WAIT   = 'X'

          IMPORTING

               RETURN = it_return.

   ENDLOOP.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
4,680

hi,

write code in this routine to change in condition value RV64A982

it wil change automatically for creating r changing so

  DATA : lw_fld TYPE char8 VALUE 'RETTKOMV' .

  FIELD-SYMBOLS : <lfs_fld> .

  ASSIGN (lw_fld) TO <lfs_fld> .

IF komk-kalsm = 'ZCRDST'.

    IF xkomv-kschl = 'ZICC'.

      IF <lfs_xkomv_tm_sample> IS ASSIGNED.

        UNASSIGN <lfs_xkomv_tm_sample> .

      ENDIF.


      CLEAR:lw_kwert,lw_kbetr,lw_kwert_zstz,lw_kwert_zsty,lw_kbetr_zict,lw_kwert_zict,lw_kbetr_zilt,lw_kwert_zilt,lw_kbetr_zivt,lw_kwert_zivt,

            lw_kbetr_ziab,lw_kwert_ziab .


      LOOP AT xkomv  ASSIGNING <lfs_xkomv_tm_sample>.

        CASE <lfs_xkomv_tm_sample>-kschl .

          WHEN 'ZICT' .

            lw_kbetr_zict  = <lfs_xkomv_tm_sample>-kbetr .

            lw_kwert_zict  = <lfs_xkomv_tm_sample>-kwert.


          WHEN 'ZILT'.

            lw_kbetr_zilt  = <lfs_xkomv_tm_sample>-kbetr .

            lw_kwert_zilt  = <lfs_xkomv_tm_sample>-kwert.


          WHEN 'ZIVT'.

            lw_kbetr_zivt  = <lfs_xkomv_tm_sample>-kbetr .

            lw_kwert_zivt  = <lfs_xkomv_tm_sample>-kwert.


          WHEN 'ZIAB' .

            lw_kbetr_ziab  = <lfs_xkomv_tm_sample>-kbetr .

            lw_kwert_ziab  = <lfs_xkomv_tm_sample>-kwert.

          WHEN OTHERS.

        ENDCASE.

      ENDLOOP.

      UNASSIGN <lfs_xkomv_tm_sample> .

      LOOP AT xkomv  ASSIGNING <lfs_xkomv_tm_sample>.

        CASE <lfs_xkomv_tm_sample>-kschl .

          WHEN 'ZICR' .

            IF lw_kbetr_zict IS NOT INITIAL.



              CALL FUNCTION 'Z_PTC_CAL_982'

                EXPORTING

                  i_kbetr    = lw_kbetr_zict

                  kbetr_base = <lfs_xkomv_tm_sample>-kbetr

                IMPORTING

                  kbetr      = lw_kbetr_zict.



*            lw_kbetr_zict  = lw_kbetr_zict + ( ( lw_kbetr_zict * ( <lfs_xkomv_tm_sample>-kbetr / 10 ) ) / 100 ).

              lw_kwert_zict  = lw_kwert_zict + <lfs_xkomv_tm_sample>-kwert.

            ENDIF.

          WHEN 'ZILR'.

            IF lw_kbetr_zilt IS NOT INITIAL.



              CALL FUNCTION 'Z_PTC_CAL_982'

                EXPORTING

                  i_kbetr    = lw_kbetr_zilt

                  kbetr_base = <lfs_xkomv_tm_sample>-kbetr

                IMPORTING

                  kbetr      = lw_kbetr_zilt.



*              lw_kbetr_zilt  = lw_kbetr_zilt + ( ( lw_kbetr_zilt * ( <lfs_xkomv_tm_sample>-kbetr / 10 ) ) / 100 ).

              lw_kwert_zilt  = lw_kwert_zilt + <lfs_xkomv_tm_sample>-kwert.

            ENDIF.


          WHEN 'ZIVC'.

            IF lw_kbetr_zivt IS NOT INITIAL.


              CALL FUNCTION 'Z_PTC_CAL_982'

                EXPORTING

                  i_kbetr    = lw_kbetr_zivt

                  kbetr_base = <lfs_xkomv_tm_sample>-kbetr

                IMPORTING

                  kbetr      = lw_kbetr_zivt.



*              lw_kbetr_zivt  = lw_kbetr_zivt + ( ( lw_kbetr_zivt * ( <lfs_xkomv_tm_sample>-kbetr / 10 ) ) / 100 ).

              lw_kwert_zivt  = lw_kwert_zivt + <lfs_xkomv_tm_sample>-kwert.

            ENDIF.

          WHEN OTHERS.

        ENDCASE.

      ENDLOOP.

      lw_kwert = lw_kwert_zict + lw_kwert_zilt + lw_kwert_zivt + lw_kwert_ziab .

      lw_kbetr = lw_kbetr_zict + lw_kbetr_zilt + lw_kbetr_zivt + lw_kbetr_ziab .

      xkwert = lw_kwert .

      xkomv-kwert = xkwert.

      xkomv-kbetr = lw_kbetr.

      <lfs_fld> = xkomv .

Dear expert ,

   i have requirement like to insert a condition type in va02 line item level .for that i am using BAPI BAPI_SALESORDER_CHANGE .but

my problem is whenever i am executing report instead for condition value  net value is getting change . i have try lot of possibility but issue didn't soled .

i have written below code for testing . please let me know if you have any solutions , thanks in advance 

   DATA  order_header_in  TYPE STANDARD TABLE OF  bapisdh1 WITH HEADER LINE.

   DATA it_return TYPE STANDARD TABLE OF  bapiret2 WITH HEADER LINE.

   DATA header_inx TYPE STANDARD TABLE OF bapisdh1x WITH HEADER LINE.

   DATA conditions_in  TYPE STANDARD TABLE OF  bapicond WITH HEADER LINE.

   DATA conditions_inx TYPE STANDARD TABLE OF  bapicondx WITH HEADER LINE.

   DATA SALESDOCUMENT  LIKE  BAPIVBELN-VBELN.


   LOOP AT it_final INTO wa_final WHERE chk = 'X'.

     header_inx = 'U'.

     APPEND header_inx .

     conditions_in-itm_number = '000010'."wa_final-posnr.

     conditions_in-cond_type = 'ZAPD'.

     conditions_in-cond_value '50789.00'." wa_final-netwr.

*    conditions_in-COND_ST_NO = '480'.

*    conditions_in-ROUNDOFFDI = wa_final-netwr.

*    conditions_in-CONDVALUE = wa_final-netwr.

     conditions_in-currency = 'INR'.

     conditions_in-curr_iso = 'INR'.

     APPEND conditions_in.

     conditions_inx-itm_number = wa_final-posnr.

     conditions_inx-cond_type = 'ZAPD'.

     conditions_inx-updateflag = 'U'.

     conditions_inx-cond_value = 'X'.

     conditions_inx-currency = 'X'.

*    conditions_inx-COND_P_UNT = 'X'.

     APPEND conditions_inx.

SALESDOCUMENT = '1311000598'.



     CALL FUNCTION 'BAPI_SALESORDER_CHANGE'

       EXPORTING

         salesdocument               = SALESDOCUMENT

*     ORDER_HEADER_IN             =

       order_header_inx            header_inx

       TABLES

         return                      = it_return

      CONDITIONS_IN               = conditions_in

      CONDITIONS_INX              = conditions_inx

               .

     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

          EXPORTING

               WAIT   = 'X'

          IMPORTING

               RETURN = it_return.

   ENDLOOP.

17 REPLIES 17
Read only

guilherme_frisoni
Contributor
0 Likes
4,680

I didn't understand exactly your requirement, but when setting up new conditions, you can fill LOGIC_SWITCH structure in BAPI to recalculate prices.

In LOGIC_SWITCH-PRICING, try to pass the value corresponding to the button Update in VA02.

Regards,

Frisoni

Read only

0 Likes
4,678

i want change condtion value not Net value , but Net value is getting changed.

please help

Read only

Former Member
0 Likes
4,678

i want to change condition value but net value is getting change .

Read only

0 Likes
4,678

Your condition is %, so, you set the percent amount and condition value is calculated based on it.

If you want a specific value in condition value column, you can calculate how much percent of item value you need to achieve condition value.

for example:

     conditions_in-cond_value '50789.00' / wa_final-netwr.


Regards,

Frisoni

Read only

Former Member
0 Likes
4,678

Someone please help..

Read only

prad_k
Explorer
0 Likes
4,678

Pass LOGIC_SWITCH to BAPI  

data logic_switch  like  bapisdls   occurs 0 with header line.   

    logic_switch-pricing           =  'C'.

    logic_switch-cond_handl    =  'X'.

Read only

Former Member
0 Likes
4,678

Thanks for replyi applied logic as you suggest  but after  nothing is getting change .

'No data was changed' - message is coming in return parameter ,

Read only

Former Member
0 Likes
4,678

As per my requirement it is not possible ...

Read only

Former Member
0 Likes
4,678

Anything i am missing ?

Read only

0 Likes
4,678

Go through the below links, might be helpful

Read only

0 Likes
4,678

Already applied all these thinks but not working

Read only

Former Member
0 Likes
4,678

Hi Debesh,

Pass following values

COND_COUNT values also in CONDITIONS_IN and CONDITIONS_INX structure

Pass Cond_ST_NO values too in both structure.

conditions_in-COND_ST_NO = '480'.


Add this line too conditions_inx-curr_iso = 'X'.


Hope it helps


Regards,

Kannan

Read only

0 Likes
4,678

Dear Kannan ,

      i tried but not working .

Read only

Former Member
0 Likes
4,678

Dear Expert ,

            i tried all  your suggestion , but still this issue is not closed .

thank u  for valuable suggestion . please reply if any solution u got .

Read only

Former Member
0 Likes
4,678

Hi Debash,

Try to use BAPI_SALESORDER_CREATEFROMDAT2 for condtion value pricing change.

Regards,

Kannan

Read only

0 Likes
4,678

Same result coming .

Read only

Former Member
0 Likes
4,681

hi,

write code in this routine to change in condition value RV64A982

it wil change automatically for creating r changing so

  DATA : lw_fld TYPE char8 VALUE 'RETTKOMV' .

  FIELD-SYMBOLS : <lfs_fld> .

  ASSIGN (lw_fld) TO <lfs_fld> .

IF komk-kalsm = 'ZCRDST'.

    IF xkomv-kschl = 'ZICC'.

      IF <lfs_xkomv_tm_sample> IS ASSIGNED.

        UNASSIGN <lfs_xkomv_tm_sample> .

      ENDIF.


      CLEAR:lw_kwert,lw_kbetr,lw_kwert_zstz,lw_kwert_zsty,lw_kbetr_zict,lw_kwert_zict,lw_kbetr_zilt,lw_kwert_zilt,lw_kbetr_zivt,lw_kwert_zivt,

            lw_kbetr_ziab,lw_kwert_ziab .


      LOOP AT xkomv  ASSIGNING <lfs_xkomv_tm_sample>.

        CASE <lfs_xkomv_tm_sample>-kschl .

          WHEN 'ZICT' .

            lw_kbetr_zict  = <lfs_xkomv_tm_sample>-kbetr .

            lw_kwert_zict  = <lfs_xkomv_tm_sample>-kwert.


          WHEN 'ZILT'.

            lw_kbetr_zilt  = <lfs_xkomv_tm_sample>-kbetr .

            lw_kwert_zilt  = <lfs_xkomv_tm_sample>-kwert.


          WHEN 'ZIVT'.

            lw_kbetr_zivt  = <lfs_xkomv_tm_sample>-kbetr .

            lw_kwert_zivt  = <lfs_xkomv_tm_sample>-kwert.


          WHEN 'ZIAB' .

            lw_kbetr_ziab  = <lfs_xkomv_tm_sample>-kbetr .

            lw_kwert_ziab  = <lfs_xkomv_tm_sample>-kwert.

          WHEN OTHERS.

        ENDCASE.

      ENDLOOP.

      UNASSIGN <lfs_xkomv_tm_sample> .

      LOOP AT xkomv  ASSIGNING <lfs_xkomv_tm_sample>.

        CASE <lfs_xkomv_tm_sample>-kschl .

          WHEN 'ZICR' .

            IF lw_kbetr_zict IS NOT INITIAL.



              CALL FUNCTION 'Z_PTC_CAL_982'

                EXPORTING

                  i_kbetr    = lw_kbetr_zict

                  kbetr_base = <lfs_xkomv_tm_sample>-kbetr

                IMPORTING

                  kbetr      = lw_kbetr_zict.



*            lw_kbetr_zict  = lw_kbetr_zict + ( ( lw_kbetr_zict * ( <lfs_xkomv_tm_sample>-kbetr / 10 ) ) / 100 ).

              lw_kwert_zict  = lw_kwert_zict + <lfs_xkomv_tm_sample>-kwert.

            ENDIF.

          WHEN 'ZILR'.

            IF lw_kbetr_zilt IS NOT INITIAL.



              CALL FUNCTION 'Z_PTC_CAL_982'

                EXPORTING

                  i_kbetr    = lw_kbetr_zilt

                  kbetr_base = <lfs_xkomv_tm_sample>-kbetr

                IMPORTING

                  kbetr      = lw_kbetr_zilt.



*              lw_kbetr_zilt  = lw_kbetr_zilt + ( ( lw_kbetr_zilt * ( <lfs_xkomv_tm_sample>-kbetr / 10 ) ) / 100 ).

              lw_kwert_zilt  = lw_kwert_zilt + <lfs_xkomv_tm_sample>-kwert.

            ENDIF.


          WHEN 'ZIVC'.

            IF lw_kbetr_zivt IS NOT INITIAL.


              CALL FUNCTION 'Z_PTC_CAL_982'

                EXPORTING

                  i_kbetr    = lw_kbetr_zivt

                  kbetr_base = <lfs_xkomv_tm_sample>-kbetr

                IMPORTING

                  kbetr      = lw_kbetr_zivt.



*              lw_kbetr_zivt  = lw_kbetr_zivt + ( ( lw_kbetr_zivt * ( <lfs_xkomv_tm_sample>-kbetr / 10 ) ) / 100 ).

              lw_kwert_zivt  = lw_kwert_zivt + <lfs_xkomv_tm_sample>-kwert.

            ENDIF.

          WHEN OTHERS.

        ENDCASE.

      ENDLOOP.

      lw_kwert = lw_kwert_zict + lw_kwert_zilt + lw_kwert_zivt + lw_kwert_ziab .

      lw_kbetr = lw_kbetr_zict + lw_kbetr_zilt + lw_kbetr_zivt + lw_kbetr_ziab .

      xkwert = lw_kwert .

      xkomv-kwert = xkwert.

      xkomv-kbetr = lw_kbetr.

      <lfs_fld> = xkomv .