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

Problem in F4IF_INT_TABLE_VALUE_REQUEST.

Former Member
0 Likes
721

Hi,

I am using 11 parameters in my program. One is for table name, and remaing 10 for field names from respective table.To give the F4 functionlaity, I used F4TOOL_F4FUNCTION_BRIDGE function module.

Thats working fine. Depends on the table name , I am fetching the field info.

To give the F4 functionality for Field Name1, I used F4IF_INT_TABLE_VALUE_REQUEST function module. Here I am using Multiplechoice Option. so, if I select 10 values, they should get populated into all the parameters.

But, when I press F4 on Field Name1(p_fnam1).....I am getting dump as "you are trying to create field symbol with length 0 ".

Here I am giving the code.

Could you please copy into your editor and analyze the dump.

CODE:

Code in Bold : where the dump is taking place.

----


  • Type Declaration

----


types : ty_tabname(30) type c,

begin of ty_fieldinfo,

text(60),

end of ty_fieldinfo.

----


  • Data Declaration

----


data : v_tabname type help_info-tabname,

v_fldnam type fieldname,

v_lines type i,

v_display type c.

----


  • Internal Table Declarations

  • Work area Declarations

----


data : it_fldtab type standard table of help_value,

it_valuetab type standard table of ty_tabname,

it_dfies type standard table of dfies,

it_fieldinfo type standard table of ty_fieldinfo,

it_return type standard table of ddshretval,

it_dynpfields type standard table of dynpread,

wa_dynpfields type dynpread,

wa_return type ddshretval,

wa_fieldinfo type ty_fieldinfo,

wa_dfies type dfies,

wa_fldtab type help_value,

wa_valuetab type ty_tabname.

----


  • Selection-Screen block1

----


selection-screen begin of block block1 with frame title text-000.

parameters : p_table type tabname.

selection-screen end of block block1.

----


  • Selection-Screen block2

----


selection-screen begin of block block2 with frame title text-002.

parameters : p_fnam1 type fieldname,

p_fnam2 type fieldname,

p_fnam3 type fieldname,

p_fnam4 type fieldname,

p_fnam5 type fieldname,

p_fnam6 type fieldname,

p_fnam7 type fieldname,

p_fnam8 type fieldname,

p_fnam9 type fieldname,

p_fnam10 type fieldname.

selection-screen end of block block2.

----


  • F4 Help for Table name

----


at selection-screen on value-request for p_table.

perform f4help_table_name.

*----


*

    • F4 Help for Field names*

*----


*

at selection-screen on value-request for p_fnam1.

perform f4help_fieldname.

&----


*& Form f4help_table_name

&----


form f4help_table_name .

clear : v_tabname,

v_fldnam,

v_display.

clear : it_valuetab,

it_fldtab,

wa_valuetab,

wa_fldtab.

refresh : it_valuetab,

it_fldtab.

v_tabname = 'DD02L'.

v_fldnam = 'TABNAME'.

v_display = ' '.

*Fill fieldtab

wa_fldtab-tabname = 'DD02L'.

wa_fldtab-fieldname = 'TABNAME'.

wa_fldtab-selectflag = 'X'.

append wa_fldtab to it_fldtab.

*Fill Value Table

select tabname

from dd02l

into table it_valuetab

where tabclass = 'TRANSP' and

applclass = 'VA' or

applclass = 'ME' or

applclass = 'FB'.

*Call F4 Function

call function 'F4TOOL_F4FUNCTION_BRIDGE'

exporting

tabname = v_tabname

fieldname = v_fldnam

display_only = v_display

window_title = text-001

importing

selected_value = p_table

tables

value_tab = it_valuetab

fields_tab = it_fldtab.

endform. " f4help_table_name

&----


*& Form f4help_fieldname

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form f4help_fieldname .

clear : wa_fldtab,

it_fldtab,

v_tabname,

v_fldnam.

refresh : it_fldtab.

v_tabname = 'DD03T'.

v_fldnam = 'FIELDNAME'.

*Getting Field Info

call function 'DDIF_FIELDINFO_GET'

exporting

tabname = p_table

langu = sy-langu

tables

dfies_tab = it_dfies

exceptions

not_found = 1

internal_error = 2.

*Fill Value table

loop at it_dfies into wa_dfies.

wa_fieldinfo-text = wa_dfies-fieldname.

append wa_fieldinfo to it_fieldinfo.

clear wa_fieldinfo.

wa_fieldinfo-text = wa_dfies-fieldtext.

append wa_fieldinfo to it_fieldinfo.

clear wa_fieldinfo.

endloop.

clear : it_dfies,

wa_dfies.

refresh : it_dfies.

*Fill field Table

wa_dfies-tabname = 'DD03T'.

wa_dfies-fieldname = 'FIELDNAME'.

wa_dfies-keyflag = 'X'.

append wa_dfies to it_dfies.

clear wa_dfies.

wa_dfies-tabname = 'DD03T'.

wa_dfies-fieldname = 'FIELDTEXT'.

wa_dfies-keyflag = ' '.

append wa_dfies to it_dfies.

clear wa_dfies.

*Call F4 function

call function 'F4IF_INT_TABLE_VALUE_REQUEST'

exporting

retfield = v_fldnam

window_title = text-003

value_org = 'S'

multiple_choice = 'X'

dynpprog = sy-repid

dynpnr = sy-dynnr

tables

value_tab = it_fieldinfo

field_tab = it_dfies

return_tab = it_return

exceptions

parameter_error = 1

no_values_found = 2.

if sy-subrc eq 0.

if not it_return[] is initial.

describe table it_return lines v_lines.

if v_lines ge 11.

message i000 with 'No Authorization To select more than 10 fields'.

else.

loop at it_return into wa_return.

case sy-tabix.

when '1'.

wa_dynpfields-fieldname = 'P_FNAM1'.

wa_dynpfields-fieldvalue = wa_return-fieldval.

append wa_dynpfields to it_dynpfields.

when '2'.

wa_dynpfields-fieldname = 'P_FNAM2'.

wa_dynpfields-fieldvalue = wa_return-fieldval.

append wa_dynpfields to it_dynpfields.

when '3'.

wa_dynpfields-fieldname = 'P_FNAM3'.

wa_dynpfields-fieldvalue = wa_return-fieldval.

append wa_dynpfields to it_dynpfields.

when '4'.

wa_dynpfields-fieldname = 'P_FNAM4'.

wa_dynpfields-fieldvalue = wa_return-fieldval.

append wa_dynpfields to it_dynpfields.

when '5'.

wa_dynpfields-fieldname = 'P_FNAM5'.

wa_dynpfields-fieldvalue = wa_return-fieldval.

append wa_dynpfields to it_dynpfields.

when '6'.

wa_dynpfields-fieldname = 'P_FNAM6'.

wa_dynpfields-fieldvalue = wa_return-fieldval.

append wa_dynpfields to it_dynpfields.

when '7'.

wa_dynpfields-fieldname = 'P_FNAM7'.

wa_dynpfields-fieldvalue = wa_return-fieldval.

append wa_dynpfields to it_dynpfields.

when '8'.

wa_dynpfields-fieldname = 'P_FNAM8'.

wa_dynpfields-fieldvalue = wa_return-fieldval.

append wa_dynpfields to it_dynpfields.

when '9'.

wa_dynpfields-fieldname = 'P_FNAM9'.

wa_dynpfields-fieldvalue = wa_return-fieldval.

append wa_dynpfields to it_dynpfields.

when '10'.

wa_dynpfields-fieldname = 'P_FNAM10'.

wa_dynpfields-fieldvalue = wa_return-fieldval.

append wa_dynpfields to it_dynpfields.

endcase.

endloop.

*Updating Screen Fields

call function 'DYNP_VALUES_UPDATE'

exporting

dyname = sy-cprog

dynumb = sy-dynnr

tables

dynpfields = it_dynpfields

exceptions

invalid_abapworkarea = 1

invalid_dynprofield = 2

invalid_dynproname = 3

invalid_dynpronummer = 4

invalid_request = 5

no_fielddescription = 6

undefind_error = 7.

endif.

endif.

endif.

endform. " f4help_fieldname

Regards

Sandeep Reddy

3 REPLIES 3
Read only

Former Member
0 Likes
543

Please check this code ...

wa_dfies-tabname = 'DD03T'.

wa_dfies-fieldname = 'FIELDNAME'.

wa_dfies-keyflag = 'X'.

append wa_dfies to it_dfies.

clear wa_dfies.

wa_dfies-tabname = 'DD03T'.

wa_dfies-fieldname = 'DDTEXT'. <-----

wa_dfies-keyflag = ' '.

append wa_dfies to it_dfies.

clear wa_dfies.

Read only

Former Member
0 Likes
543

Hi Sandeep,

Try as following



if sy-subrc eq 0.
describe table it_return lines v_lines.

if not it_return[] is initial.

if v_lines ge 11.
message i000 with 'No Authorization To select more than 10 fields'.

Read only

Former Member
0 Likes
543

Please incorporate following 3-4 modifications and your code will run just fine.


  call function 'DDIF_FIELDINFO_GET'
    EXPORTING
      tabname        = p_table
      langu          = sy-langu
    TABLES
      dfies_tab      = it_dfies
    EXCEPTIONS
      not_found      = 1
      internal_error = 2.
*Fill Value table
  loop at it_dfies into wa_dfies.
    wa_fieldinfo-fieldname = wa_dfies-fieldname.
    wa_fieldinfo-ddtext = wa_dfies-fieldtext.          "add another field in it_fieldinfo called ddtext
    append wa_fieldinfo to it_fieldinfo.
    clear wa_fieldinfo.
  endloop.
  clear : it_dfies,
  wa_dfies.
  refresh : it_dfies.
*bold*" Fill field Table    "Dont give the field tab instead declare your value tab as LIKE dd03t-fieldname and "dd03t-ddtext *bold*
*  wa_dfies-tabname = 'DD03T'.
*  wa_dfies-fieldname = 'FIELDNAME'.
*  wa_dfies-keyflag = 'X'.
*  append wa_dfies to it_dfies.
*  clear wa_dfies.
*  wa_dfies-tabname = 'DD03T'.
*  wa_dfies-fieldname = 'DDTEXT'.      
*  wa_dfies-keyflag = ' '.
*  append wa_dfies to it_dfies.
*  clear wa_dfies.
**Call F4 function

  call function 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = v_fldnam
      window_title    = text-003
      value_org       = 'S'
      multiple_choice = 'X'
      dynpprog        = sy-repid
      dynpnr          = sy-dynnr
    TABLES
      value_tab       = it_fieldinfo
*      field_tab       = it_dfies      "Comment this
      return_tab      = it_return
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2.