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

bdc schedule line

Former Member
0 Likes
458

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

2 REPLIES 2
Read only

Former Member
0 Likes
356

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.

Read only

0 Likes
356

Dear lokesh ,

i cant use va02 as i m deleting only scheduled agreements created by using va31.