Skip to Content
0
Former Member
May 08, 2010 at 07:13 AM

Update Billing Plan (va42) using BAPI OR FM not woring

756 Views

Hi Friends,

I update billing plan (va42) using following code but not working successful can u please help me?

DATA: i_bsid LIKE bsid OCCURS 0,
i_bsid2 LIKE bsid OCCURS 0.
TABLES: bsid.

DATA: doc LIKE vbak-vbeln,
pos(6) TYPE n.
DATA e_fpla LIKE fpla.
DATA e_fplt LIKE fpltvb OCCURS 0 .
DATA: zfpla LIKE fplavb OCCURS 0,
zfplt LIKE fpltvb OCCURS 0 WITH HEADER LINE.
DATA zfplt2 LIKE fpltvb OCCURS 0 WITH HEADER LINE.

doc = '1252003987'.
pos = '000010'.

CALL FUNCTION 'SD_SALES_DOCUMENT_READ'
EXPORTING
document_number = doc.

CALL FUNCTION 'SD_SALES_BILLINGPLAN_READ'
EXPORTING
i_vbeln = doc
i_posnr = pos
IMPORTING
e_fpla = e_fpla
TABLES
e_fplt = e_fplt
EXCEPTIONS
no_billingplan_allowed = 1
no_billingplan_found = 2
OTHERS = 3.

IF sy-subrc ne 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

* Read the billing plan
CALL FUNCTION 'BILLING_SCHEDULE_READ'
EXPORTING
fplnr = e_fpla-fplnr
* I_VFKDAT =
* I_BFKDAT =
TABLES
zfpla = zfpla
zfplt = zfplt
.

* Upddate the ZFPLT2 table with the new values
MOVE zfplt TO zfplt2.

READ TABLE zfplt2 INDEX 1.
zfplt2-afdat = '20080927'.
*** Very important to set field updkz = 'U' ***
zfplt2-updkz = 'U'. "--> UPDATE!!
MODIFY zfplt2 INDEX 1.

CALL FUNCTION 'BILLING_SCHEDULE_SAVE'
TABLES
fpla_new = zfpla
fpla_old = zfpla
fplt_new = zfplt2 " --> NEW
fplt_old = zfplt.

CALL FUNCTION 'SD_SALES_DOCUMENT_SAVE'
    EXPORTING
      i_no_messages = ' '.

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