‎2008 Jun 30 7:08 AM
dear gurus,
i want to create bdc to delete schedule line using VA32.this is my recording , but it not selecting item line.please help me.
loop at itab.
perform bdc_dynpro using 'SAPMV45A' '0125'.
perform bdc_field using 'BDC_CURSOR'
'VBAK-VBELN'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBAK-VBELN'
itab-vbeln. "'400003569'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=PEIN'.
CONCATENATE 'RV45A-MABNR(' itab-posnr ')' INTO FNAM.
perform bdc_field using 'BDC_CURSOR'
FNAM. "'RV45A-MABNR(01)'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_OKCODE'
'=EILO'.
CONCATENATE 'RV45A-PRGBZ(' itab-ETENR ')' INTO FNAM.
perform bdc_field using 'BDC_CURSOR'
FNAM . "'RV45A-PRGBZ(03)'.
CONCATENATE 'RV45A-VBEP_SELKZ(' itab-ETENR ')' INTO FNAM.
perform bdc_field using FNAM "'RV45A-VBEP_SELKZ(03)'
'X'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
perform bdc_field using 'BDC_CURSOR'
'RV45A-ETDAT(01)'.
call transaction 'VA32' using bdcdata options from OPTIONS
messages into it_bdcmsg.
endloop.
regards,
Rahul
‎2008 Jun 30 7:15 AM
HI Rahul,
Better use VA02 instead of VA32 for deleting schedule lines.Just see here coding.i think this coding will be helpful for u.
LOOP AT IT_VBEP ."WHERE VBELN = IT_FINAL-MAT_KDAUF AND POSNR = IT_FINAL-MAT_KDPOS.
LV_QTY4 = LV_QTY4 + IT_VBEP-WMENG.
CONDENSE LV_QTY4.
ENDLOOP.
CLEAR : LV_QTY4.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '0102'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBAK-VBELN'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'VBAK-VBELN'
IT_FINAL-MAT_KDAUF. "'9990000161'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=POPO'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '0251'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RV45A-POSNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=POSI'.
PERFORM BDC_FIELD USING 'RV45A-POSNR'
IT_FINAL-MAT_KDPOS. "'10'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PEIN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBAP-POSNR(01)'.
PERFORM BDC_FIELD USING 'RV45A-VBAP_SELKZ(01)'
'X'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
SORT IT_VBEP BY EDATU.
CLEAR : IT_VBEP.
*IF LV_QTY LE LV_QTY4.
V_QTY1 = LV_QTY.
V_QTY2 = LV_QTY4.
IF V_QTY1 LE V_QTY2.
LOOP AT IT_VBEP ."WHERE VBELN = IT_FINAL-MAT_KDAUF AND POSNR = IT_FINAL-MAT_KDPOS.
CLEAR : LV_ITEM1.
ADD '01' TO LV_ITEM1.
CLEAR : LV_QTY1,LV_QTY2.
GV_QTY1 = IT_VBEP-WMENG.
CONDENSE GV_QTY1.
IF IT_VBEP-WMENG GE LV_QTY AND IT_VBEP-WMENG GT 0." AND LV_QTY GT 0.
LV_QTY1 = IT_VBEP-WMENG - LV_QTY .
CONDENSE LV_QTY1.
IF LV_QTY1 GT 0.
CONCATENATE 'VBEP-WMENG(' LV_ITEM1 ')' INTO FVAL.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
FVAL.
CONCATENATE 'VBEP-WMENG(' LV_ITEM1 ')' INTO FNAM.
PERFORM BDC_FIELD USING FNAM
LV_QTY1.
LV_QTY = LV_QTY1.
ELSE.
******
CONCATENATE 'VBEP-WMENG(' LV_ITEM1 ')' INTO FVAL.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
FVAL.
CONCATENATE 'RV45A-PRGBZ(' LV_ITEM1 ')' INTO FVAL.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
FVAL.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=EILO'.
CONCATENATE 'RV45A-VBEP_SELKZ(' LV_ITEM1 ')' INTO FNAM.
PERFORM BDC_FIELD USING FNAM
'X'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4003'.
ADD '01' TO LV_ITEM2.
CONCATENATE 'VBEP-WMENG(' LV_ITEM1 ')' INTO FNAM.
PERFORM BDC_FIELD USING FNAM
LV_QTY1.
exit.
CLEAR : LV_QTY.
LV_QTY = LV_QTY1.
CONTINUE.
ENDIF.
************
LV_QTY = LV_QTY1.
CLEAR : LV_QTY1,LV_ITEM1.
EXIT.
ELSEIF IT_VBEP-WMENG LE LV_QTY AND IT_VBEP-WMENG GT 0 AND LV_QTY GT 0.
LV_QTY1 = LV_QTY - IT_VBEP-WMENG.
CONDENSE LV_QTY1.
LV_QTY2 = IT_VBEP-WMENG - IT_VBEP-WMENG. "'0.000'
CONDENSE LV_QTY2.
CONCATENATE 'VBEP-WMENG(' LV_ITEM1 ')' INTO FVAL.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
FVAL.
CONCATENATE 'RV45A-PRGBZ(' LV_ITEM1 ')' INTO FVAL.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
FVAL.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=EILO'.
CONCATENATE 'RV45A-VBEP_SELKZ(' LV_ITEM1 ')' INTO FNAM.
PERFORM BDC_FIELD USING FNAM
'X'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4003'.
ADD '01' TO LV_ITEM2.
CONCATENATE 'VBEP-WMENG(' LV_ITEM2 ')' INTO FNAM.
PERFORM BDC_FIELD USING FNAM
LV_QTY1.
LV_QTY = LV_QTY1.
ENDIF.
CLEAR : LV_ITEM1,LV_ITEM2.
ENDLOOP.
ELSE.
LOOP AT IT_VBEP .
CLEAR : LV_ITEM1.
ADD '01' TO LV_ITEM1.
IF IT_VBEP-WMENG > 0.
LV_QTY1 = '0'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
CONCATENATE 'VBEP-WMENG(' LV_ITEM1 ')' INTO FVAL.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
FVAL.
CONCATENATE 'RV45A-PRGBZ(' LV_ITEM1 ')' INTO FVAL.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
FVAL.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=EILO'.
CONCATENATE 'RV45A-VBEP_SELKZ(' LV_ITEM1 ')' INTO FNAM.
PERFORM BDC_FIELD USING FNAM
'X'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4003'.
ADD '01' TO LV_ITEM2.
CONCATENATE 'VBEP-WMENG(' LV_ITEM1 ')' INTO FNAM.
PERFORM BDC_FIELD USING FNAM
LV_QTY1.
exit.
CLEAR : LV_QTY.
endif.
ENDLOOP.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=EILO'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
ENDIF.
CLEAR: LV_QTY4,V_QTY1,V_QTY2.
CLEAR : LV_QTY,LV_QTY1.
CLEAR : IT_VBEP.
LOOP AT IT_VBEP ."WHERE VBELN = IT_FINAL-MAT_KDAUF AND POSNR = IT_FINAL-MAT_KDPOS.
LV_QTY3 = LV_QTY3 + IT_VBEP-WMENG.
CONDENSE LV_QTY3.
ENDLOOP.
LV_QTY1 = LV_QTY3 - G_ERFMG1.
CONDENSE LV_QTY1.
V_QTY1 = LV_QTY1.
V_QTY2 = GRSTD_ATWRT.
IF LV_QTY1 < GRSTD_ATWRT.
IF V_QTY1 LT V_QTY2.
CONCATENATE 'Min Ord QTY is greater than item qty' VAR2
INTO VAR2 SEPARATED BY SPACE.
MESSAGE I002(SY) WITH VAR2.
ENDIF.
CLEAR : V_QTY1 ,V_QTY2,LV_QTY1.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SICH'.
CALL TRANSACTION 'VA02' USING BDCDATA
MODE 'N' "E'
UPDATE 'S'
MESSAGES INTO MESSTAB.
*COMMIT WORK.
IF SY-SUBRC NE 0.
LOOP AT MESSTAB WHERE MSGTYP EQ 'E' .
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = MESSTAB-MSGID
LANG = SY-LANGU
NO = MESSTAB-MSGNR
V1 = MESSTAB-MSGV1
V2 = MESSTAB-MSGV2
V3 = MESSTAB-MSGV3
V4 = MESSTAB-MSGV4
IMPORTING
MSG = G_BDC_ERROR_MSG.
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
EXIT.
ENDLOOP.
MESSAGE W002(SY) WITH G_BDC_ERROR_MSG.
ENDIF.
CLEAR : G_BDC_ERROR_MSG.
REFRESH : MESSTAB,BDCDATA.
CLEAR : MESSTAB,BDCDATA.",lv_item,lv_item1,lv_qty.
CLEAR :I_MSEG,WA_VBAP.
CLEAR : IT_FINAL,GRSTD_ATWRT,G_ERFMG1.
*ELSE.
*MESSAGE E002(SY) WITH 'Dettach Qty is greater than Schedule line Qty'.
*ENDIF.
*CLEAR: LV_QTY4.
ENDFORM. " VA02
REgards,
LOkesh.
‎2008 Jun 30 11:28 AM
Dear lokesh ,
i cant use va02 as i m deleting only scheduled agreements created by using va31.