2014 Sep 30 3:44 PM
All,
I have a requirement wherein, we need to change the enddate on the billing plan header level. I tried using the following functions, see the attached code, but it does not work.
LOOP AT gt_order_item_in INTO gs_order_item_in.
CALL FUNCTION 'SD_SALES_DOCUMENT_READ'
EXPORTING
document_number = gs_vbak-vbeln.
CALL FUNCTION 'SD_SALES_BILLINGPLAN_READ'
EXPORTING
i_vbeln = gs_vbak-vbeln
i_posnr = gs_order_item_in-itm_number
IMPORTING
e_fpla = gs_fpla
TABLES
e_fplt = gt_fplt
EXCEPTIONS
no_billingplan_allowed = 1
no_billingplan_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'BILLING_SCHEDULE_READ'
EXPORTING
fplnr = gs_fpla-fplnr
TABLES
zfpla = gt_zfpla
zfplt = gt_zfplt.
* Move to temp table
MOVE gt_zfplt[] TO gt_zfplt_temp[].
DELETE gt_zfplt_temp WHERE fkdat GT '20141231'.
SORT gt_zfplt_temp BY fkdat DESCENDING.
CLEAR gs_fplt.
READ TABLE gt_zfplt_temp INTO gs_fplt INDEX 1.
MOVE gt_zfpla[] TO gt_fpla_new[].
CLEAR gs_fpla.
READ TABLE gt_fpla_new INTO gs_fpla INDEX 1.
gs_fpla-endat = gs_fplt-nfdat.
MODIFY gt_fpla_new FROM gs_fpla INDEX 1.
CALL FUNCTION 'BILLING_SCHEDULE_SAVE'
TABLES
fpla_new = gt_fpla_new " --> NEW
fpla_old = gt_zfpla
fplt_new = gt_zfplt
fplt_old = gt_zfplt.
CALL FUNCTION 'SD_SALES_DOCUMENT_SAVE'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
CLEAR: gs_order_item_in, gs_fpla, gt_fplt,gt_zfpla,gt_zfplt,gt_zfplt_temp,gt_fpla_new .
ENDLOOP.
Regards,
Salil
2014 Sep 30 7:33 PM
All,
I have a requirement wherein, we need to change the enddate on the billing plan header level. I tried using the following functions, see the attached code, but it does not work.
LOOP AT gt_order_item_in INTO gs_order_item_in.
CALL FUNCTION 'SD_SALES_DOCUMENT_READ'
EXPORTING
document_number = gs_vbak-vbeln.
CALL FUNCTION 'SD_SALES_BILLINGPLAN_READ'
EXPORTING
i_vbeln = gs_vbak-vbeln
i_posnr = gs_order_item_in-itm_number
IMPORTING
e_fpla = gs_fpla
TABLES
e_fplt = gt_fplt
EXCEPTIONS
no_billingplan_allowed = 1
no_billingplan_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'BILLING_SCHEDULE_READ'
EXPORTING
fplnr = gs_fpla-fplnr
TABLES
zfpla = gt_zfpla
zfplt = gt_zfplt.
* Move to temp table
MOVE gt_zfplt[] TO gt_zfplt_temp[].
DELETE gt_zfplt_temp WHERE fkdat GT '20141231'.
SORT gt_zfplt_temp BY fkdat DESCENDING.
CLEAR gs_fplt.
READ TABLE gt_zfplt_temp INTO gs_fplt INDEX 1.
MOVE gt_zfpla[] TO gt_fpla_new[].
CLEAR gs_fpla.
READ TABLE gt_fpla_new INTO gs_fpla INDEX 1.
gs_fpla-endat = gs_fplt-nfdat.
MODIFY gt_fpla_new FROM gs_fpla INDEX 1.
CALL FUNCTION 'BILLING_SCHEDULE_SAVE'
TABLES
fpla_new = gt_fpla_new " --> NEW
fpla_old = gt_zfpla
fplt_new = gt_zfplt
fplt_old = gt_zfplt.
CALL FUNCTION 'SD_SALES_DOCUMENT_SAVE'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
CLEAR: gs_order_item_in, gs_fpla, gt_fplt,gt_zfpla,gt_zfplt,gt_zfplt_temp,gt_fpla_new .
ENDLOOP.
Regards,
Salil
2014 Sep 30 7:33 PM