2009 Sep 15 6:15 AM
Hello All,
I am working on BDC task for ME12 transaction. Every thing looks good but i am facing a problem while updating of scaling amount. It is not clearing earlier record amount values in that scalling screen even I used refresh BDCDATA. Could you please let me know how to refresh BDC screen before updating a new values. I tried with DYNP_VALUES_READ adn DYNP_VALUESUPDATE, but no luck. PLease helpo me out in this task.....
Thanks in advance aWaitingfor your valuable response....
Regards,
Kumar.
Hello All,
I am working on BDC task for ME12 transaction. Every thing looks good but i am facing a problem while updating of scaling amount. It is not clearing earlier record amount values in that scalling screen even I used refresh BDCDATA. Could you please let me know how to refresh BDC screen before updating a new values. I tried with DYNP_VALUES_READ adn DYNP_VALUESUPDATE, but no luck. PLease helpo me out in this task.....
Thanks in advance aWaitingfor your valuable response....
Regards,
Kumar.
2009 Sep 15 6:25 AM
Hi, maybe start with a REFRESH BDCDATA before filling the bdc_fields. Succes, Rob
2009 Sep 15 6:29 AM
Hi,
Use the following immediately after the call transaction statement,
REFRESH BDCDATA.
CLEAR BDCDATA.
The should clear the screen values when it goes to the next loop
Regards,
Vikranth
2009 Sep 15 6:52 AM
No Use already I placed Refresh BDCDTA and CLear BDCDATA before values populating and after call transaction....
Any other problem??
Regards,
kumar
2009 Sep 15 6:40 AM
hi,
you can use this for refreshing the bdc data.
EG:
REFRESH BDCDATA.
REFRESH gt_messtab.
Thanks and Regards,
Ahamed.
2009 Sep 15 7:33 AM
Hi Lakshman,
You are not refreshing bdcdata in proper place.
you are calling bdc within loop-endloop.
loop at i_tab into wa_tab.
refresh: i_bdcdata
clear: wa_bdcdata.
.....................................
.......................................
bdc recording
cal transaction
endloop.
Hope this can solve your problems.
Regards,
Tutun
2009 Sep 16 8:30 AM
Thank you for your valueable response.. Please find my code as follows:
LOOP AT t_eina INTO wa_eina
WHERE matnr = wa_header_item_merge-matnr.
clear bdcdata.
refresh bdcdata.
l_lifnr = wa_fileitem-local_sup_num.
READ TABLE t_eine INTO wa_eine WITH KEY infnr = wa_eina-infnr
ekorg = wa_filehdr-org_id.
PERFORM bdc_dynpro USING 'SAPMM06I' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RM06I-KONSI'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'EINA-LIFNR'
wa_eina-lifnr.
PERFORM bdc_field USING 'EINA-MATNR'
wa_eina-matnr.
PERFORM bdc_field USING 'EINE-EKORG'
wa_eine-ekorg.
PERFORM bdc_field USING 'EINE-WERKS'
wa_eine-werks.
PERFORM bdc_field USING 'EINA-INFNR'
wa_eina-infnr.
PERFORM bdc_field USING 'RM06I-KONSI'
'X'.
PERFORM bdc_dynpro USING 'SAPMM06I' '0101'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EINA-MAHN1'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=KO'.
PERFORM bdc_field USING 'EINA-URZLA'
wa_eina-urzla.
PERFORM bdc_field USING 'EINA-REGIO'
wa_eina-regio.
PERFORM get_unit_isocode USING wa_eina-meins.
PERFORM bdc_field USING 'EINA-MEINS'
w_isocode.
PERFORM bdc_field USING 'EINA-UMREZ'
'1'.
PERFORM bdc_field USING 'EINA-UMREN'
'1'.
CLEAR l_idx.
MOVE '1' TO l_idx.
LOOP AT t_contract_item INTO wa_contract_item
WHERE contract_id = wa_filehdr-contract_id
AND part_number = wa_header_item_merge-matnr.
IF NOT ( wa_contract_item-line_item = l_lineitem_no AND
wa_contract_item-period_start = l_date_from AND
wa_contract_item-period_end = l_date_to ).
PERFORM bdc_dynpro USING 'SAPLV14A' '0102'.
CONCATENATE 'VAKE-DATAB(' l_idx ')' INTO fval.
PERFORM bdc_field USING 'BDC_CURSOR'
fval.
PERFORM bdc_field USING 'BDC_OKCODE'
'=PICK'.
PERFORM bdc_dynpro USING 'SAPMV13A' '0201'.
PERFORM bdc_field USING 'BDC_CURSOR'
'T685T-VTEXT(01)'.
w_price = wa_contract_item-unit_price.
IF wa_contract_item-price_method NE c_price_method1.
IF w_price NE 0.
SHIFT wa_contract_item-unit_price LEFT DELETING LEADING '0'.
PERFORM bdc_field USING 'KONP-KBETR(01)'
wa_contract_item-unit_price.
ELSE.
SHIFT wa_contract_item-unit_price_disc LEFT DELETING LEADING '0'.
PERFORM bdc_field USING 'KONP-KBETR(01)'
wa_contract_item-unit_price_disc.
ENDIF.
PERFORM bdc_field USING 'BDC_OKCODE'
'=PSTF'.
PERFORM bdc_dynpro USING 'SAPMV13A' '0303'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KONM-KBETR(02)'.
PERFORM change_date_format USING wa_contract_item-period_start
CHANGING l_date.
PERFORM bdc_field USING 'RV13A-DATAB'
l_date.
CLEAR l_date.
PERFORM change_date_format USING wa_contract_item-period_end
CHANGING l_date.
PERFORM bdc_field USING 'RV13A-DATBI'
l_date.
IF NOT wa_contract_item-above_amt_qty IS INITIAL.
CONCATENATE 'KONM-KSTBM(' l_idx ')' INTO fnam.
PERFORM bdc_field USING fnam
wa_contract_item-above_amt_qty.
ELSE.
CONCATENATE 'KONM-KSTBM(' l_idx ')' INTO fnam.
PERFORM bdc_field USING fnam
c_qty.
ENDIF.
IF NOT wa_contract_item-unit_price_disc IS INITIAL.
CONCATENATE 'KONM-KBETR(' l_idx ')' INTO fnam.
PERFORM bdc_field USING fnam
wa_contract_item-unit_price_disc.
ELSE.
CONCATENATE 'KONM-KBETR(' l_idx ')' INTO fnam.
PERFORM bdc_field USING fnam
wa_contract_item-unit_price.
ENDIF.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
l_lineitem_no = wa_contract_item-line_item.
l_date_from = wa_contract_item-period_start.
l_date_to = wa_contract_item-period_end.
l_idx = l_idx + 1.
ELSE. "IF t_contract_item-price_method NE c_price_method1
SELECT SINGLE ebeln FROM ekko INTO wa_ekko
WHERE bstyp = c_contract
AND unsez = wa_header_item_merge-contract_id.
IF NOT wa_ekko IS INITIAL.
SELECT SINGLE ebeln ebelp FROM ekpo INTO wa_ekpo
WHERE ebeln = wa_ekko
AND loekz <> 'X'
AND matnr = wa_eina-matnr
AND werks = wa_eine-werks
AND infnr = wa_eine-infnr.
ENDIF.
SELECT SINGLE datab datbi
INTO (l_datab, l_datbi)
FROM a016
WHERE kappl = c_kappl
AND kschl = c_kschl
AND evrtn = wa_ekpo-ebeln
AND evrtp = wa_contract_item-line_item.
IF sy-subrc = 0.
PERFORM change_date_format USING l_datab
CHANGING l_date.
PERFORM bdc_field USING 'RV13A-DATAB'
l_date.
PERFORM change_date_format USING l_datbi
CHANGING l_date.
PERFORM bdc_field USING 'RV13A-DATBI'
l_date.
ELSE.
PERFORM populate_date.
ENDIF.
IF NOT wa_contract_item-unit_price_disc IS INITIAL.
SHIFT wa_contract_item-unit_price_disc LEFT DELETING LEADING '0'.
PERFORM bdc_field USING 'KONP-KBETR(01)'
wa_contract_item-unit_price_disc.
ELSE.
SHIFT wa_contract_item-unit_price LEFT DELETING LEADING '0'.
PERFORM bdc_field USING 'KONP-KBETR(01)'
wa_contract_item-unit_price.
ENDIF.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
l_lineitem_no = wa_contract_item-line_item.
l_date_from = wa_contract_item-period_start.
l_date_to = wa_contract_item-period_end.
ENDIF.
ELSE. "IF not line_item.........
PERFORM bdc_field USING 'BDC_OKCODE'
'=PSTF'.
IF wa_contract_item-price_method NE c_price_method1.
PERFORM populate_date.
IF NOT wa_contract_item-above_amt_qty IS INITIAL.
CONCATENATE 'KONM-KSTBM(' l_idx ')' INTO fnam.
PERFORM bdc_field USING fnam
wa_contract_item-above_amt_qty.
ELSE.
CONCATENATE 'KONM-KSTBM(' l_idx ')' INTO fnam.
PERFORM bdc_field USING fnam
c_qty.
ENDIF.
CONCATENATE 'KONM-KBETR(' l_idx ')' INTO fnam.
PERFORM bdc_field USING fnam
wa_contract_item-unit_price_disc.
l_idx = l_idx + 1.
l_lineitem_no = wa_contract_item-line_item.
l_date_from = wa_contract_item-period_start.
l_date_to = wa_contract_item-period_end.
ENDIF.
ENDIF. "if same item with diff qty scaling
CLEAR : wa_contract_item.
ENDLOOP. "looping at item level
CALL TRANSACTION 'ME12' USING bdcdata
MODE 'N' "c_mode
UPDATE 'S'
MESSAGES
INTO messtab.
IF NOT messtab[] IS INITIAL.
PERFORM format_message.
ENDIF.
CLEAR bdcdata.
REFRESH bdcdata.
ENDLOOP. "loop at t_eina
Please help me out....I was a tried in many ways...but no use......please help me out from this issue.....
Thanks & Regards,
Kumar.