Skip to Content
0
Former Member
Sep 19, 2006 at 06:43 PM

F4IF_INT_TABLE_VALUE_REQUEST select entrie row

1575 Views

Hello All,

I have a VALUE_TAB internal table (<b>it_mngrp_mncod</b>) with 3 fileds. After selecting a row in F4 pop up, I need to get all the three column values. In return_tab I am getting only the last field, which is the value of CODE in it_mngrp_mncod. Is there any way to select the entire row in F4 pop up?

Here is the piece of my code:

&----


*& Report ZCK_TEST

*&

REPORT zck_test.

TABLES: viqmel, viqmfe.

CALL SCREEN 101.

*& Module code_pf4_i15 INPUT

*&----


MODULE code_pf4_i15 INPUT.

DATA: BEGIN OF it_mngrp_mncod OCCURS 0,

kurztext TYPE qtxt_code,

codegruppe TYPE qcodegrp,

code TYPE qcode,

END OF it_mngrp_mncod.

DATA: it_returntab LIKE ddshretval OCCURS 0 WITH HEADER LINE.

DATA: it_fieldtab LIKE dfies OCCURS 0 WITH HEADER LINE.

DATA p_field TYPE fieldname.

GET CURSOR FIELD p_field .

PERFORM code_pf4_f40 USING p_field.

ENDMODULE. " code_pf4_i15 INPUT

*&----


*& Form code_pf4_f40

*&----


FORM code_pf4_f40 USING p_field.

PERFORM get_f4_values CHANGING p_field.

ENDFORM. " code_pf4_f40

*& Form GET_F4_VALUES

*&----


FORM get_f4_values CHANGING p_field.

DATA: field1 TYPE fieldname,

field2 TYPE fieldname.

DATA: p_katalogart TYPE qkatart.

SPLIT p_field AT '-' INTO field1 field2.

IF field2 = 'OTGRP' OR field2 = 'OTEIL'.

p_katalogart = 'B'.

ELSEIF field2 = 'FEGRP' OR field2 = 'FECOD'.

p_katalogart = 'C'.

ELSEIF field2 = 'URGRP' OR field2 = 'URCOD'.

p_katalogart = '5'.

ELSEIF field2 = 'MNGRP' OR field2 = 'MNCOD'.

p_katalogart = 'A'.

ELSEIF field2 = 'TASK_CODEGRP' OR field2 = 'TASK_CODE' OR field2 =

'TXT_TASKCD'.

p_katalogart = '2'.

ENDIF.

SELECT codegruppe code INTO CORRESPONDING FIELDS OF TABLE

it_mngrp_mncod FROM qpcd WHERE katalogart = p_katalogart.

LOOP AT it_mngrp_mncod.

SELECT SINGLE kurztext

FROM qpct

INTO it_mngrp_mncod-kurztext

WHERE katalogart = p_katalogart

AND codegruppe = it_mngrp_mncod-codegruppe

AND code = it_mngrp_mncod-code.

MODIFY it_mngrp_mncod FROM it_mngrp_mncod TRANSPORTING kurztext.

ENDLOOP.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

  • DDIC_STRUCTURE = ' '

retfield = p_field

  • PVALKEY = ' '

  • DYNPPROG = ' '

  • DYNPNR = ' '

  • DYNPROFIELD = ' '

  • STEPL = 0

  • WINDOW_TITLE =

  • VALUE = ' '

value_org = 'S'

  • MULTIPLE_CHOICE = ' '

  • DISPLAY = ' '

  • CALLBACK_PROGRAM = ' '

  • CALLBACK_FORM = ' '

  • MARK_TAB =

  • IMPORTING

  • USER_RESET =

TABLES

value_tab = it_mngrp_mncod

field_tab = it_fieldtab

return_tab = it_returntab

  • DYNPFLD_MAPPING =

  • EXCEPTIONS

  • PARAMETER_ERROR = 1

  • NO_VALUES_FOUND = 2

  • OTHERS = 3

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

READ TABLE it_returntab INDEX 1.

MOVE it_returntab-fieldval TO p_field.

ENDFORM. " GET_F4_VALUES

&----


*& Module user_command_101 INPUT

&----


  • text

----


MODULE user_command_101 INPUT.

CASE sy-ucomm.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

ENDCASE.

ENDMODULE. " user_command_101 INPUT

&----


*& Module status_101 OUTPUT

&----


  • text

----


MODULE status_101 OUTPUT.

SET PF-STATUS '0101'.

ENDMODULE. " status_101 OUTPUT