Application Development 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: 

BDC for IQ04

Former Member
0 Kudos

Hi experts,

I am writting BDC for Tcode IQ04.I done recording part..code is genarated..Problem is In that Tcode For each Material no they may enter more than one serial numbers at a time as a screen in iq04.so how can i validae this part in perform statements,

These are the performs statements which are genrated during recording

LOOP AT gt_upload INTO gs_upload.
refresh lv_bdcdata.
perform bdc_dynpro      using 'SAPMIEQ0' '2000'.
perform bdc_field       using 'BDC_CURSOR'
                              'RISA0-SERNR(03)'.
perform bdc_field       using 'BDC_OKCODE'
                              '=DV'.
perform bdc_field       using 'RISA0-MATNR'
                              gs_upload-MATNR.
perform bdc_field       using 'EQUI-EQTYP'
                              'S'.
*perform bdc_field       using 'RISA0-SERNR(01)'*
                              *gs_upload-SERNR.*
*perform bdc_field       using 'RISA0-SERNR(02)'*
                              *gs_upload-SERNR.*
*perform bdc_field       using 'RISA0-SERNR(03)'*
                                 gs_upload-SERNR.
perform bdc_dynpro      using 'SAPMIEQ0' '3100'.
perform bdc_field       using 'BDC_OKCODE'
                              '=NEXT'.
perform bdc_field       using 'BDC_CURSOR'
                              'EQBS-B_WERK'.
perform bdc_field       using 'EQBS-LBBSA'
                              '01'.
perform bdc_field       using 'EQBS-B_WERK'
                              gs_upload-B_WERK.
perform bdc_dynpro      using 'SAPMIEQ0' '2000'.
perform bdc_field       using 'BDC_CURSOR'
                              'RISA0-MATNR'.
perform bdc_field       using 'BDC_OKCODE'
                              '=BU'.
perform bdc_field       using 'RISA0-MATNR'
                              'ABCD'.
perform bdc_field       using 'EQUI-EQTYP'
                              'S'.
*perform bdc_transaction using 'IQ04'.
call TRANSACTION 'IQ04' USING lv_bdcdata MODE 'A' UPDATE 'A' MESSAGES INTO lv_message.
ENDLOOP.

while i am recording i have entered three serial numbers..so here perform statements are there(Which i have commented)...suppose in my excel i have 10 serial number for a material..then how can change the code over there?

Can any body plz help me out...

Thanks in advanace,,

Veena

Moderator Message: Moved to right forum and add tags. Take care next time.

Edited by: kishan P on Jan 21, 2011 12:49 PM

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

Aplly this logic and run the BDC with default size = 'X'

DATA : wa_fieldname(30) TYPE c,
         wcntr(2) TYPE n VALUE 1.

sort it by matnr. 

" Note :  matnr should be firt column in the internal table it.

  LOOP AT it.

at new matnr
refresh lv_bdcdata[].
perform bdc_dynpro      using 'SAPMIEQ0' '2000'.
perform bdc_field       using 'BDC_CURSOR'
                              'RISA0-SERNR(03)'.
perform bdc_field       using 'BDC_OKCODE'
                              '=DV'.
perform bdc_field       using 'RISA0-MATNR'
                              gs_upload-MATNR.
perform bdc_field       using 'EQUI-EQTYP'
                              'S'.
wndat.

    CONCATENATE 'RISA0-SERNR' wcntr INTO wa_fieldname.
    PERFORM bdc_field       USING wa_fieldname it-srno.
    wcntr = wcntr + 1.
    IF wcntr EQ '13'.
      PERFORM bdc_dynpro      USING 'SAPMIEQ0' '2000'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'RISA0-MATNR'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=NE'.
      wcntr = 2.
    ENDIF.

at end of matnr.
perform bdc_dynpro      using 'SAPMIEQ0' '3100'.
perform bdc_field       using 'BDC_OKCODE'
                              '=NEXT'.
perform bdc_field       using 'BDC_CURSOR'
                              'EQBS-B_WERK'.
perform bdc_field       using 'EQBS-LBBSA'
                              '01'.
perform bdc_field       using 'EQBS-B_WERK'
                              gs_upload-B_WERK.
perform bdc_dynpro      using 'SAPMIEQ0' '2000'.
perform bdc_field       using 'BDC_CURSOR'
                              'RISA0-MATNR'.
perform bdc_field       using 'BDC_OKCODE'
                              '=BU'.
perform bdc_field       using 'RISA0-MATNR'
                              'ABCD'.
perform bdc_field       using 'EQUI-EQTYP'
                              'S'.
*perform bdc_transaction using 'IQ04'.
call TRANSACTION 'IQ04' USING lv_bdcdata MODE 'A' UPDATE 'A' MESSAGES INTO lv_message.

endat.

  ENDLOOP.

Hope this logic helps

Regards,

Madhukar Shetty

2 REPLIES 2

Former Member
0 Kudos

Hi,

Aplly this logic and run the BDC with default size = 'X'

DATA : wa_fieldname(30) TYPE c,
         wcntr(2) TYPE n VALUE 1.

sort it by matnr. 

" Note :  matnr should be firt column in the internal table it.

  LOOP AT it.

at new matnr
refresh lv_bdcdata[].
perform bdc_dynpro      using 'SAPMIEQ0' '2000'.
perform bdc_field       using 'BDC_CURSOR'
                              'RISA0-SERNR(03)'.
perform bdc_field       using 'BDC_OKCODE'
                              '=DV'.
perform bdc_field       using 'RISA0-MATNR'
                              gs_upload-MATNR.
perform bdc_field       using 'EQUI-EQTYP'
                              'S'.
wndat.

    CONCATENATE 'RISA0-SERNR' wcntr INTO wa_fieldname.
    PERFORM bdc_field       USING wa_fieldname it-srno.
    wcntr = wcntr + 1.
    IF wcntr EQ '13'.
      PERFORM bdc_dynpro      USING 'SAPMIEQ0' '2000'.
      PERFORM bdc_field       USING 'BDC_CURSOR'
                                    'RISA0-MATNR'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=NE'.
      wcntr = 2.
    ENDIF.

at end of matnr.
perform bdc_dynpro      using 'SAPMIEQ0' '3100'.
perform bdc_field       using 'BDC_OKCODE'
                              '=NEXT'.
perform bdc_field       using 'BDC_CURSOR'
                              'EQBS-B_WERK'.
perform bdc_field       using 'EQBS-LBBSA'
                              '01'.
perform bdc_field       using 'EQBS-B_WERK'
                              gs_upload-B_WERK.
perform bdc_dynpro      using 'SAPMIEQ0' '2000'.
perform bdc_field       using 'BDC_CURSOR'
                              'RISA0-MATNR'.
perform bdc_field       using 'BDC_OKCODE'
                              '=BU'.
perform bdc_field       using 'RISA0-MATNR'
                              'ABCD'.
perform bdc_field       using 'EQUI-EQTYP'
                              'S'.
*perform bdc_transaction using 'IQ04'.
call TRANSACTION 'IQ04' USING lv_bdcdata MODE 'A' UPDATE 'A' MESSAGES INTO lv_message.

endat.

  ENDLOOP.

Hope this logic helps

Regards,

Madhukar Shetty

0 Kudos

Hi madukar...

Thanks alot for given solution....Solved...