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

Problems with: F4IF_INT_TABLE_VALUE_REQUEST

Former Member
0 Likes
689

Hi,

i use the FM: F4IF_INT_TABLE_VALUE_REQUEST for an own F4-Help.

My problem in this code is, that field MATNR in the ALV-Output

shows 15 char of matnr and 3 char of mtart in the alv-field matnr

and mtart has ####.

I don't know why. Before calling the FM, the itab value_t has the right values.

Has anyone an idea which mistake i do.

TABLES: MARA, MAKT.

*

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN: COMMENT 01(33) T_MATNR.

PARAMETERS: P_MATNR LIKE MARA-MATNR.

SELECTION-SCREEN: END OF LINE.

*

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN: COMMENT 01(33) T_MTART.

PARAMETERS: P_MTART LIKE MARA-MTART.

SELECTION-SCREEN: END OF LINE.

*

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN: COMMENT 01(33) T_MAKTX.

PARAMETERS: P_MAKTX LIKE MAKT-MAKTX.

SELECTION-SCREEN: END OF LINE.

*

***********************************************************************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_MATNR.

*

  • Felder für F4 -> kurzfassung

DATA: BEGIN OF VALUE_T OCCURS 0,

MATNR TYPE MARA-MATNR,

MTART TYPE MARA-MTART,

MAKTX TYPE MAKT-MAKTX,

END OF VALUE_T.

*

DATA : DYNPFLD_T TYPE TABLE OF DSELC WITH HEADER LINE.

DATA : FIELD_T TYPE TABLE OF DFIES WITH HEADER LINE.

*

SELECT * FROM MARA UP TO 15 ROWS.

SELECT SINGLE * FROM MAKT WHERE MATNR = MARA-MATNR

AND SPRAS = SY-LANGU.

VALUE_T-MATNR = MARA-MATNR.

VALUE_T-MTART = MARA-MTART.

VALUE_T-MAKTX = MAKT-MAKTX.

APPEND VALUE_T.

ENDSELECT.

*

REFRESH FIELD_T.

FIELD_T-TABNAME = 'MARA'.

FIELD_T-FIELDNAME = 'MATNR'.

APPEND FIELD_T.

FIELD_T-TABNAME = 'MARA'.

FIELD_T-FIELDNAME = 'MTART'.

APPEND FIELD_T.

FIELD_T-TABNAME = 'MAKT'.

FIELD_T-FIELDNAME = 'MAKTX'.

APPEND FIELD_T.

*

REFRESH DYNPFLD_T.

DYNPFLD_T-FLDNAME = 'MATNR'.

DYNPFLD_T-DYFLDNAME = 'P_MATNR'.

APPEND DYNPFLD_T.

DYNPFLD_T-FLDNAME = 'MTART'.

DYNPFLD_T-DYFLDNAME = 'P_MTART'.

APPEND DYNPFLD_T.

DYNPFLD_T-FLDNAME = 'MAKTX'.

DYNPFLD_T-DYFLDNAME = 'P_MAKTX'.

APPEND DYNPFLD_T.

*

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

RETFIELD = 'P_MATNR'

WINDOW_TITLE = 'Statusselektion'

DYNPPROG = SY-REPID

DYNPNR = SY-DYNNR

DYNPROFIELD = 'P_MATNR'

VALUE_ORG = 'S'

TABLES

VALUE_TAB = VALUE_T

FIELD_TAB = FIELD_T

DYNPFLD_MAPPING = DYNPFLD_T

EXCEPTIONS

PARAMETER_ERROR = 1

NO_VALUES_FOUND = 2

OTHERS = 3.

*

***********************************************************************

INITIALIZATION.

*

T_MATNR = 'Materialnummer:'.

T_MTART = 'Materialart'.

T_MAKTX = 'Kurztext'.

*

Thanks for help.

Regards, Dieter

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
580

Also check this extract from the documentation of the FM

In this case it is better to fill table FIELD_TAB using module DDIF_FIELDINFO_GET. The relative position of the fields in VALUE_TAB should then be corrected in FIELD_TAB-OFFSET. You can use for example the ABAP command DESCRIBE DISTANCE here.DDIF_FIELDINFO_GET. The relative position of the fields in VALUE_TAB should then be corrected in FIELD_TAB-OFFSET. You can use for example the ABAP command DESCRIBE DISTANCE here.

3 REPLIES 3
Read only

Former Member
0 Likes
580

Check this code

TABLES: MARA, MAKT.

*

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN: COMMENT 01(33) T_MATNR.

PARAMETERS: P_MATNR LIKE MARA-MATNR.

SELECTION-SCREEN: END OF LINE.

*

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN: COMMENT 01(33) T_MTART.

PARAMETERS: P_MTART LIKE MARA-MTART.

SELECTION-SCREEN: END OF LINE.

*

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN: COMMENT 01(33) T_MAKTX.

PARAMETERS: P_MAKTX LIKE MAKT-MAKTX.

SELECTION-SCREEN: END OF LINE.

*

***********************************************************************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_MATNR.

*

  • Felder für F4 -> kurzfassung

DATA: BEGIN OF VALUE_T OCCURS 0,

MATNR LIKE MARA-MATNR,

MTART LIKE MARA-MTART,

MAKTX LIKE MAKT-MAKTX,

END OF VALUE_T.

*

DATA : DYNPFLD_T TYPE TABLE OF DSELC WITH HEADER LINE.

DATA : FIELD_T TYPE TABLE OF DFIES WITH HEADER LINE.

*

SELECT * FROM MARA UP TO 15 ROWS.

SELECT SINGLE * FROM MAKT WHERE MATNR = MARA-MATNR

AND SPRAS = SY-LANGU.

VALUE_T-MATNR = MARA-MATNR.

VALUE_T-MTART = MARA-MTART.

VALUE_T-MAKTX = MAKT-MAKTX.

APPEND VALUE_T.

ENDSELECT.

*

*REFRESH FIELD_T.

*FIELD_T-TABNAME = 'MARA'.

*FIELD_T-FIELDNAME = 'MATNR'.

*APPEND FIELD_T.

*

*FIELD_T-TABNAME = 'MARA'.

*FIELD_T-FIELDNAME = 'MTART'.

*APPEND FIELD_T.

*

*FIELD_T-TABNAME = 'MAKT'.

*FIELD_T-FIELDNAME = 'MAKTX'.

*APPEND FIELD_T.

CALL FUNCTION 'DDIF_FIELDINFO_GET'

EXPORTING

tabname = 'VALUE_T'

  • FIELDNAME = ' '

  • LANGU = SY-LANGU

  • LFIELDNAME = ' '

  • ALL_TYPES = ' '

  • GROUP_NAMES = ' '

  • UCLEN =

  • IMPORTING

  • X030L_WA =

  • DDOBJTYPE =

  • DFIES_WA =

  • LINES_DESCR =

TABLES

DFIES_TAB = FIELD_T

  • FIXED_VALUES =

EXCEPTIONS

NOT_FOUND = 1

INTERNAL_ERROR = 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.

REFRESH DYNPFLD_T.

DYNPFLD_T-FLDNAME = 'MATNR'.

DYNPFLD_T-DYFLDNAME = 'P_MATNR'.

APPEND DYNPFLD_T.

DYNPFLD_T-FLDNAME = 'MTART'.

DYNPFLD_T-DYFLDNAME = 'P_MTART'.

APPEND DYNPFLD_T.

DYNPFLD_T-FLDNAME = 'MAKTX'.

DYNPFLD_T-DYFLDNAME = 'P_MAKTX'.

APPEND DYNPFLD_T.

*

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

RETFIELD = 'MATNR'

WINDOW_TITLE = 'Statusselektion'

DYNPPROG = SY-REPID

DYNPNR = SY-DYNNR

DYNPROFIELD = 'P_MATNR'

VALUE_ORG = 'S'

TABLES

VALUE_TAB = VALUE_T

FIELD_TAB = FIELD_T[]

DYNPFLD_MAPPING = DYNPFLD_T

EXCEPTIONS

PARAMETER_ERROR = 1

NO_VALUES_FOUND = 2

OTHERS = 3.

*

***********************************************************************

INITIALIZATION.

*

T_MATNR = 'Materialnummer:'.

T_MTART = 'Materialart'.

T_MAKTX = 'Kurztext'.

Read only

Former Member
0 Likes
581

Also check this extract from the documentation of the FM

In this case it is better to fill table FIELD_TAB using module DDIF_FIELDINFO_GET. The relative position of the fields in VALUE_TAB should then be corrected in FIELD_TAB-OFFSET. You can use for example the ABAP command DESCRIBE DISTANCE here.DDIF_FIELDINFO_GET. The relative position of the fields in VALUE_TAB should then be corrected in FIELD_TAB-OFFSET. You can use for example the ABAP command DESCRIBE DISTANCE here.

Read only

Former Member
0 Likes
580

Hi,

thanks for your answers, i solve it in this

way:

TABLES: MARA, MAKT.

*

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN: COMMENT 01(33) T_MATNR.

PARAMETERS: P_MATNR LIKE MARA-MATNR.

SELECTION-SCREEN: END OF LINE.

*

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN: COMMENT 01(33) T_MTART.

PARAMETERS: P_MTART LIKE MARA-MTART.

SELECTION-SCREEN: END OF LINE.

*

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN: COMMENT 01(33) T_MAKTX.

PARAMETERS: P_MAKTX LIKE MAKT-MAKTX.

SELECTION-SCREEN: END OF LINE.

*

***********************************************************************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_MATNR.

*

  • Felder für F4 -> kurzfassung

DATA: BEGIN OF VALUE_T OCCURS 0,

MATNR TYPE MARA-MATNR,

MTART TYPE MARA-MTART,

MAKTX TYPE MAKT-MAKTX,

END OF VALUE_T.

*

DATA: DYNPFLD_T TYPE TABLE OF DSELC WITH HEADER LINE.

DATA: RETURN_T TYPE TABLE OF DDSHRETVAL.

*

SELECT * FROM MARA UP TO 15 ROWS.

SELECT SINGLE * FROM MAKT WHERE MATNR = MARA-MATNR

AND SPRAS = SY-LANGU.

VALUE_T-MATNR = MARA-MATNR.

VALUE_T-MTART = MARA-MTART.

VALUE_T-MAKTX = MAKT-MAKTX.

APPEND VALUE_T.

ENDSELECT.

*

REFRESH DYNPFLD_T.

DYNPFLD_T-FLDNAME = 'F0001'.

DYNPFLD_T-DYFLDNAME = 'P_MATNR'.

APPEND DYNPFLD_T.

DYNPFLD_T-FLDNAME = 'F0002'.

DYNPFLD_T-DYFLDNAME = 'P_MTART'.

APPEND DYNPFLD_T.

DYNPFLD_T-FLDNAME = 'F0003'.

DYNPFLD_T-DYFLDNAME = 'P_MAKTX'.

APPEND DYNPFLD_T.

*

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

RETFIELD = 'MATNR'

WINDOW_TITLE = 'Statusselektion'

DYNPPROG = SY-REPID

DYNPNR = SY-DYNNR

DYNPROFIELD = 'P_MATNR'

VALUE_ORG = 'S'

TABLES

VALUE_TAB = VALUE_T

RETURN_TAB = RETURN_T

DYNPFLD_MAPPING = DYNPFLD_T

EXCEPTIONS

PARAMETER_ERROR = 1

NO_VALUES_FOUND = 2

OTHERS = 3.

*

***********************************************************************

INITIALIZATION.

*

T_MATNR = 'Materialnummer:'.

T_MTART = 'Materialart'.

T_MAKTX = 'Kurztext'.

*

Regards, Dieter