03-16-2006 4:54 AM
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
03-16-2006 4:59 AM
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.
03-16-2006 5:02 AM
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.
03-16-2006 5:05 AM
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
03-16-2006 6:46 AM
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
03-16-2006 6:49 AM
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.
03-27-2006 6:37 AM
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.
03-27-2006 6:49 AM
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
03-27-2006 11:56 AM
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