2007 Oct 29 1:46 PM
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
2007 Oct 29 2:03 PM
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.
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.
2007 Oct 29 2:01 PM
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'.
2007 Oct 29 2:03 PM
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.
2007 Oct 29 2:36 PM
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
| User | Count |
|---|---|
| 6 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |