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: 

Populating multiple entries in the select option of a Report

Former Member
0 Kudos

Hi,

Ineed to populate multiple entries in the select option of a report where the bdctab has more entries than the number of rows in the select option. I have tried the transaction LINS ( Insert row) but it works intermittently based on the RSSEL-LOW(xx) value. Looking forward to any inputs.

cheers

Aveek

8 REPLIES 8

jayanthi_jayaraman
Active Contributor
0 Kudos

Hi,

You can fill 'n' no. of values in select-option on initialization.Here is the sample code.Here s_bukrs is the select-option.Kindly reward points by clikcing the star on the left of reply,if it helps.

INITIALIZATION.

s_bukrs-low = '1000'.

s_bukrs-sign = 'I'.

s_bukrs-option = 'EQ'.

APPEND s_bukrs.

s_bukrs-low = '1003'.

s_bukrs-sign = 'I'.

s_bukrs-option = 'EQ'.

APPEND s_bukrs.

Former Member
0 Kudos

Hi aveek,

1. This is very tricky,

but very simple.

2. just copy paste my code in new program.

3.

1) Create a new program ZAM_TEMP0

and write this code in this :

(it will be used for select-option testing)

having tcode Z0

REPORT abc.

DATA : just TYPE i.

SELECT-OPTIONS : a FOR just.

2. Create a new program(any name for testing purpose)

and write this code :

REPORT abc.

INCLUDE bdcrecx1.

*----


ASSUMPTION

  • ZAM_TEMP0 WITH SELECT OPTION NAME A

  • TCODE Z0

*----


INITIALIZATION.

ctumode = 'A'.

ctu = 'X'.

DATA : ctr TYPE i.

DATA : s(3) TYPE c.

*----


START-OF-SELECTION.

PERFORM bdc_dynpro USING 'ZAM_TEMP0' '1000'.

PERFORM bdc_field USING 'BDC_CURSOR' 'A-LOW'.

PERFORM bdc_field USING 'BDC_OKCODE' '=%214'.

*----


DO 15 TIMES

DO 15 TIMES.

ctr = ctr + 1.

s = ctr.

PERFORM bdc_dynpro USING 'SAPLALDB' '3000'.

PERFORM bdc_field USING 'BDC_OKCODE' '=LINS'.

PERFORM bdc_field USING 'BDC_SUBSCR'

'SAPLALDB 3010SCREEN_HEADER'.

PERFORM bdc_field USING 'BDC_CURSOR' 'RSCSEL-SLOW_I(01)'.

PERFORM bdc_field USING 'RSCSEL-SLOW_I(01)' s.

ENDDO.

*----


ACCEPT

PERFORM bdc_dynpro USING 'SAPLALDB' '3000'.

PERFORM bdc_field USING 'BDC_OKCODE' '=ACPT'.

PERFORM bdc_field USING 'BDC_SUBSCR'

'SAPLALDB 3010SCREEN_HEADER'.

PERFORM bdc_transaction USING 'Z0'.

4. now test,

it will put 1,2,3,.......15 values

in the SELECT-OPTION

regards,

amit m.

Former Member
0 Kudos

Hi,

If you are doing BDC, then you will have to loop through the sequence of inserting the records in select options.

You can use a counter which will be incremented by 1 in the loop and then pass the LOW value.

eg.

data cnt type i.

loop at...

RSSEL-LOW(i) = some value.

i = i + 1.

endloop.

Hope it helps..

Regards,

Shashank

0 Kudos

Hi,

None of the solutions work for my program. I have the ACPT button popping up in the program when the call transaction is done. This should not appear when the call transaction is done. I have checked the display mode as 'E' indicating that the user gets the pop-up only when there is an error. There is no error but whenever the number of entries in the bdctab is more than the select option rows the pop-up appears.

cheers

Aveek

0 Kudos

Hi aveek,

1. check my code. (its working fantastic)

2. I think u might have made a MINOR

mistake in the code.

3. Provide ur code to sort out the problem.

regards,

amit m.

0 Kudos

Hi,

Here is my code dump:

**Version 0005

*CTS D7AK900899 New Version code fixed for testaveek28 case.

*MOD-1887120: Code that is changed after the release of transport.

  • Populate the general selection criteria on first screen

PERFORM f_populate_bdc_tab USING:

'X' 'APO_BAPI_DEL_TRANS_OBJECTS' '1000',

  • ' ' 'BDC_CURSOR' 'EXT_PROD-LOW',

' ' 'BDC_OKCODE' '=%011',

  • ' ' 'BDC_OKCODE' '=DUMMY',

' ' 'PLVERS' '000',

' ' 'MD_SYS' p_log,

' ' 'EXTRB' 'X',

' ' 'MO_DEL' 'X',

' ' 'SIM' space,

' ' 'P_LOGDEL' '5'.

sort it_core_prod by pcode.

delete adjacent duplicates from it_core_prod

comparing pcode.

describe table it_core_prod lines lv_line.

CLEAR lv_count.

  • LOOP AT it_core_prod ASSIGNING <lfs_data>.

  • lv_count = 1.

  • CONCATENATE gc_rscsel gc_l_brac lv_count gc_r_brac INTO lv_fname.

      • if lv_line > 1.

  • PERFORM f_populate_bdc_tab USING:

  • 'X' 'SAPLALDB' '3000',

  • ' ' lv_fname <lfs_data>-pcode,

  • ' ' 'BDC_OKCODE' '=LINS'.

  • CLEAR lv_fname.

  • ENDLOOP.

*Populate the select options screen for product

  • PERFORM f_populate_bdc_tab USING:

  • 'X' 'SAPLALDB' '3000',

    • ' ' 'BDC_SUBSCR' 'SAPLALDB 3010SCREEN_HEADER',

  • ' ' 'BDC_OKCODE' '=ACPT'.

sort it_prod_var by pcode prvar.

delete adjacent duplicates from it_core_prod

comparing pcode prvar.

  • PERFORM f_populate_bdc_tab USING:

  • 'X' 'SAPLALDB' '3000'.

LOOP AT it_core_prod ASSIGNING <lfs_data>.

lv_pcode = <lfs_data>-pcode.

*lv_count = lv_count + 1.

lv_count = 1.

CONCATENATE gc_rscsel gc_l_brac lv_count gc_r_brac INTO lv_fname.

    • if lv_line > 1.

PERFORM f_populate_bdc_tab USING:

'X' 'SAPLALDB' '3000',

' ' lv_fname <lfs_data>-pcode,

' ' 'BDC_OKCODE' '=LINS'.

CLEAR lv_fname.

describe table it_prod_var lines lv_line.

  • sort <lfs_data> by locno pcode prvar.

LOOP AT it_prod_var ASSIGNING <lfs_data1> where pcode = lv_pcode.

  • lv_count = lv_count + 1.

lv_count = 1.

CONCATENATE gc_rscsel gc_l_brac lv_count gc_r_brac INTO lv_fname.

  • if lv_line > 1.

PERFORM f_populate_bdc_tab USING:

'X' 'SAPLALDB' '3000',

' ' lv_fname <lfs_data1>-prvar,

' ' 'BDC_OKCODE' '=LINS'.

  • else.

  • PERFORM f_populate_bdc_tab USING:

  • ' ' lv_fname <lfs_data>-prvar,

  • ' ' 'BDC_OKCODE' '=LINS'.

  • endif.

CLEAR lv_fname.

ENDLOOP.

ENDLOOP.

  • Populate the select options screen for product

PERFORM f_populate_bdc_tab USING:

  • 'X' 'SAPLALDB' '3000',

  • ' ' 'BDC_SUBSCR' 'SAPLALDB 3010SCREEN_HEADER',

' ' 'BDC_OKCODE' '=ACPT'.

  • Populate the select options for the Locations

PERFORM f_populate_bdc_tab USING:

'X' 'APO_BAPI_DEL_TRANS_OBJECTS' '1000',

  • ' ' 'BDC_CURSOR' 'EXT_PRD-LOW',

' ' 'BDC_OKCODE' '=%012',

' ' 'PLVERS' '000',

' ' 'MD_SYS' p_log,

' ' 'EXTRB' 'X',

' ' 'MO_DEL' 'X',

' ' 'SIM' space,

' ' 'P_LOGDEL' '5'.

  • Populate the select options screen for product

PERFORM f_populate_bdc_tab USING:

'X' 'SAPLALDB' '3000',

  • ' ' 'BDC_SUBSCR' 'SAPLALDB 3010SCREEN_HEADER',

' ' 'BDC_OKCODE' '=ACPT'.

CLEAR lv_count.

LOOP AT it_loc_data ASSIGNING <lfs_data>.

lv_count = lv_count + 1.

  • lv_count = 1.

CONCATENATE gc_rscsel gc_l_brac lv_count gc_r_brac INTO lv_fname.

PERFORM f_populate_bdc_tab USING:

' ' lv_fname <lfs_data>-locno.

  • ' ' 'BDC_OKCODE' '=LINS'.

CLEAR lv_fname.

  • PERFORM f_populate_bdc_tab USING:

  • 'X' 'SAPLALDB' '3000',

  • ' ' lv_fname <lfs_data>-locno,

  • ' ' 'BDC_OKCODE' '=LINS'.

  • CLEAR lv_fname.

ENDLOOP.

  • CLEAR lv_count.

  • LOOP AT it_loc_data ASSIGNING <lfs_data>.

  • lv_count = 1.

  • CONCATENATE gc_rscsel gc_l_brac lv_count gc_r_brac INTO lv_fname.

  • PERFORM f_populate_bdc_tab USING:

  • 'X' 'SAPLALDB' '3000',

  • ' ' lv_fname <lfs_data>-locno,

  • ' ' 'BDC_OKCODE' '=LINS'.

  • CLEAR lv_fname.

  • ENDLOOP.

*

  • Populate the objects to be deleted on first screen

PERFORM f_populate_bdc_tab USING:

'X' 'APO_BAPI_DEL_TRANS_OBJECTS' '1000',

' ' 'BDC_OKCODE' '=DUMMY',

' ' 'PLVERS' '000',

' ' 'MD_SYS' p_log,

' ' 'EXTRB' 'X',

' ' 'MO_DEL' 'X',

' ' 'MO_STAT' 'X',

' ' 'PO_DEL' 'X',

' ' 'SL_DEL' 'X',

' ' 'ST_DEL' 'X',

' ' 'PIR_DEL' 'X',

' ' 'SIM' space,

' ' ' ' ' '.

PERFORM f_populate_bdc_tab USING:

'X' 'SAPLSPO1' '0500',

' ' 'BDC_OKCODE' '=OPT1'.

**Version 0005

*CTS D7AK900899 New Version code fixed for testaveek28 case.

*MOD-1887120: Code that is changed after the release of transport.

  • Populate the general selection criteria on first screen

PERFORM f_populate_bdc_tab USING:

'X' 'APO_BAPI_DEL_TRANS_OBJECTS' '1000',

  • ' ' 'BDC_CURSOR' 'EXT_PROD-LOW',

' ' 'BDC_OKCODE' '=%011',

  • ' ' 'BDC_OKCODE' '=DUMMY',

' ' 'PLVERS' '000',

' ' 'MD_SYS' p_log,

' ' 'EXTRB' 'X',

' ' 'MO_DEL' 'X',

' ' 'SIM' space,

' ' 'P_LOGDEL' '5'.

sort it_core_prod by pcode.

delete adjacent duplicates from it_core_prod

comparing pcode.

describe table it_core_prod lines lv_line.

CLEAR lv_count.

  • LOOP AT it_core_prod ASSIGNING <lfs_data>.

  • lv_count = 1.

  • CONCATENATE gc_rscsel gc_l_brac lv_count gc_r_brac INTO lv_fname.

      • if lv_line > 1.

  • PERFORM f_populate_bdc_tab USING:

  • 'X' 'SAPLALDB' '3000',

  • ' ' lv_fname <lfs_data>-pcode,

  • ' ' 'BDC_OKCODE' '=LINS'.

  • CLEAR lv_fname.

  • ENDLOOP.

*Populate the select options screen for product

  • PERFORM f_populate_bdc_tab USING:

  • 'X' 'SAPLALDB' '3000',

    • ' ' 'BDC_SUBSCR' 'SAPLALDB 3010SCREEN_HEADER',

  • ' ' 'BDC_OKCODE' '=ACPT'.

sort it_prod_var by pcode prvar.

delete adjacent duplicates from it_core_prod

comparing pcode prvar.

  • PERFORM f_populate_bdc_tab USING:

  • 'X' 'SAPLALDB' '3000'.

LOOP AT it_core_prod ASSIGNING <lfs_data>.

lv_pcode = <lfs_data>-pcode.

*lv_count = lv_count + 1.

lv_count = 1.

CONCATENATE gc_rscsel gc_l_brac lv_count gc_r_brac INTO lv_fname.

    • if lv_line > 1.

PERFORM f_populate_bdc_tab USING:

'X' 'SAPLALDB' '3000',

' ' lv_fname <lfs_data>-pcode,

' ' 'BDC_OKCODE' '=LINS'.

CLEAR lv_fname.

describe table it_prod_var lines lv_line.

  • sort <lfs_data> by locno pcode prvar.

LOOP AT it_prod_var ASSIGNING <lfs_data1> where pcode = lv_pcode.

  • lv_count = lv_count + 1.

lv_count = 1.

CONCATENATE gc_rscsel gc_l_brac lv_count gc_r_brac INTO lv_fname.

  • if lv_line > 1.

PERFORM f_populate_bdc_tab USING:

'X' 'SAPLALDB' '3000',

' ' lv_fname <lfs_data1>-prvar,

' ' 'BDC_OKCODE' '=LINS'.

  • else.

  • PERFORM f_populate_bdc_tab USING:

  • ' ' lv_fname <lfs_data>-prvar,

  • ' ' 'BDC_OKCODE' '=LINS'.

  • endif.

CLEAR lv_fname.

ENDLOOP.

ENDLOOP.

  • Populate the select options screen for product

PERFORM f_populate_bdc_tab USING:

  • 'X' 'SAPLALDB' '3000',

  • ' ' 'BDC_SUBSCR' 'SAPLALDB 3010SCREEN_HEADER',

' ' 'BDC_OKCODE' '=ACPT'.

  • Populate the select options for the Locations

PERFORM f_populate_bdc_tab USING:

'X' 'APO_BAPI_DEL_TRANS_OBJECTS' '1000',

  • ' ' 'BDC_CURSOR' 'EXT_PRD-LOW',

' ' 'BDC_OKCODE' '=%012',

' ' 'PLVERS' '000',

' ' 'MD_SYS' p_log,

' ' 'EXTRB' 'X',

' ' 'MO_DEL' 'X',

' ' 'SIM' space,

' ' 'P_LOGDEL' '5'.

  • Populate the select options screen for product

PERFORM f_populate_bdc_tab USING:

'X' 'SAPLALDB' '3000',

  • ' ' 'BDC_SUBSCR' 'SAPLALDB 3010SCREEN_HEADER',

' ' 'BDC_OKCODE' '=ACPT'.

CLEAR lv_count.

LOOP AT it_loc_data ASSIGNING <lfs_data>.

lv_count = lv_count + 1.

  • lv_count = 1.

CONCATENATE gc_rscsel gc_l_brac lv_count gc_r_brac INTO lv_fname.

PERFORM f_populate_bdc_tab USING:

' ' lv_fname <lfs_data>-locno.

  • ' ' 'BDC_OKCODE' '=LINS'.

CLEAR lv_fname.

  • PERFORM f_populate_bdc_tab USING:

  • 'X' 'SAPLALDB' '3000',

  • ' ' lv_fname <lfs_data>-locno,

  • ' ' 'BDC_OKCODE' '=LINS'.

  • CLEAR lv_fname.

ENDLOOP.

  • CLEAR lv_count.

  • LOOP AT it_loc_data ASSIGNING <lfs_data>.

  • lv_count = 1.

  • CONCATENATE gc_rscsel gc_l_brac lv_count gc_r_brac INTO lv_fname.

  • PERFORM f_populate_bdc_tab USING:

  • 'X' 'SAPLALDB' '3000',

  • ' ' lv_fname <lfs_data>-locno,

  • ' ' 'BDC_OKCODE' '=LINS'.

  • CLEAR lv_fname.

  • ENDLOOP.

*

  • Populate the objects to be deleted on first screen

PERFORM f_populate_bdc_tab USING:

'X' 'APO_BAPI_DEL_TRANS_OBJECTS' '1000',

' ' 'BDC_OKCODE' '=DUMMY',

' ' 'PLVERS' '000',

' ' 'MD_SYS' p_log,

' ' 'EXTRB' 'X',

' ' 'MO_DEL' 'X',

' ' 'MO_STAT' 'X',

' ' 'PO_DEL' 'X',

' ' 'SL_DEL' 'X',

' ' 'ST_DEL' 'X',

' ' 'PIR_DEL' 'X',

' ' 'SIM' space,

' ' ' ' ' '.

PERFORM f_populate_bdc_tab USING:

'X' 'SAPLSPO1' '0500',

' ' 'BDC_OKCODE' '=OPT1'.

CLEAR gv_msg_error.

lv_ctu_params-nobinpt = space.

  • lv_ctu_params-dismode = gc_mode_e.

lv_ctu_params-dismode = 'A'.

lv_ctu_params-updmode = 'S'.

lv_ctu_params-racommit = 'X'.

  • Call Transaction /SAPAPO/BP2

CALL TRANSACTION gc_bp2 USING ct_bdc_data

OPTIONS FROM lv_ctu_params

MESSAGES INTO lt_msg_tab.

0 Kudos

Hi,

The BDC code has been put in twice in the posting. The part from the second mention of the transport number should be ignored.

cheers

Aveek

0 Kudos

Hi,

The BDC program works fine in A Mode but not in E or N mode. Can someone take a look at the issue and comment.

cheers

Aveek