使用F4IF_INT_TABLE_VALUE_REQUEST 回填螢幕多個欄位
阿新 • • 發佈:2019-02-15
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vkorg.
PERFORM frm_get_zhtbh.
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vtweg.
* PERFORM frm_get_zhtbh.
FORM frm_get_zhtbh.
TYPES:BEGIN OF ty_itab,
vkorg LIKE plm_alv_115-vkorg,
vtweg LIKE plm_alv_115-vtweg,
text1 LIKE plm_alv_115- text1,
text2 LIKE plm_alv_115-text2,
END OF ty_itab.
DATA:t_vtab TYPE TABLE OF ty_itab WITH HEADER LINE,
t_returntab TYPE TABLE OF ddshretval WITH HEADER LINE.
REFRESH:t_vtab,t_returntab.
SELECT * INTO CORRESPONDING FIELDS OF TABLE t_vtab
FROM tvta.
SORT t_vtab BY vkorg vtweg.
DELETE ADJACENT DUPLICATES FROM t_vtab COMPARING vkorg vtweg.
LOOP AT t_vtab.
SELECT SINGLE
vtext
INTO t_vtab-text1
FROM tvkot
WHERE vkorg = t_vtab-vkorg.
SELECT SINGLE
vtext
INTO t_vtab-text2
FROM tvtwt
WHERE vtweg = t_vtab-vtweg.
MODIFY t_vtab.
CLEAR t_vtab.
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'VTWEG' "'VKORG'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'F1'
* STEPL = 0
* WINDOW_TITLE =
* VALUE = ' '
value_org = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
callback_program = sy-repid
callback_form = 'USER_FORM'
* MARK_TAB =
* IMPORTING
* USER_RESET =
TABLES
value_tab = t_vtab
* FIELD_TAB =
return_tab = t_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.
ENDFORM. " FRM_GET_ZHTBH
*&---------------------------------------------------------------------*
*& Form USER_FORM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->SHLP text
*----------------------------------------------------------------------*
FORM user_form TABLES record_tab STRUCTURE seahlpres CHANGING shlp TYPE shlp_descr_t callcontrol LIKE ddshf4ctrl
.
DATA: interface LIKE LINE OF shlp-interface.
READ TABLE shlp-interface INTO interface INDEX 1.
interface-shlpfield+4(1) = '1'. "設定內表裡返回的列值與介面上要填入欄位的對應關係(第一列的值要回填入P_VKORG)
interface-valfield = 'P_VKORG'.
APPEND interface TO shlp-interface.
interface-shlpfield+4(1) = '2'.
interface-valfield = 'P_VTWEG'. "設定內表裡返回的列值與介面上要填入欄位的對應關係(第二列的值要回填入P_VTWEG)
APPEND interface TO shlp-interface.
CLEAR interface.
ENDFORM. "USER_FORM
PERFORM frm_get_zhtbh.
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vtweg.
* PERFORM frm_get_zhtbh.
FORM frm_get_zhtbh.
TYPES:BEGIN OF ty_itab,
vkorg LIKE plm_alv_115-vkorg,
vtweg LIKE plm_alv_115-vtweg,
text1 LIKE plm_alv_115-
text2 LIKE plm_alv_115-text2,
END OF ty_itab.
DATA:t_vtab TYPE TABLE OF ty_itab WITH HEADER LINE,
t_returntab TYPE TABLE OF ddshretval WITH HEADER LINE.
REFRESH:t_vtab,t_returntab.
SELECT * INTO CORRESPONDING FIELDS OF TABLE t_vtab
FROM tvta.
SORT t_vtab BY vkorg vtweg.
DELETE ADJACENT DUPLICATES FROM t_vtab COMPARING vkorg vtweg.
LOOP AT t_vtab.
SELECT SINGLE
vtext
INTO t_vtab-text1
FROM tvkot
WHERE vkorg = t_vtab-vkorg.
SELECT SINGLE
vtext
INTO t_vtab-text2
FROM tvtwt
WHERE vtweg = t_vtab-vtweg.
MODIFY t_vtab.
CLEAR
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'VTWEG' "'VKORG'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'F1'
* STEPL = 0
* WINDOW_TITLE =
* VALUE = ' '
value_org = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
callback_program = sy-repid
callback_form = 'USER_FORM'
* MARK_TAB =
* IMPORTING
* USER_RESET =
TABLES
value_tab = t_vtab
* FIELD_TAB =
return_tab = t_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.
ENDFORM. " FRM_GET_ZHTBH
*&---------------------------------------------------------------------*
*& Form USER_FORM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->SHLP text
*----------------------------------------------------------------------*
FORM user_form TABLES record_tab STRUCTURE seahlpres CHANGING shlp TYPE shlp_descr_t callcontrol LIKE ddshf4ctrl
.
DATA: interface LIKE LINE OF shlp-interface.
READ TABLE shlp-interface INTO interface INDEX 1.
interface-shlpfield+4(1) = '1'. "設定內表裡返回的列值與介面上要填入欄位的對應關係(第一列的值要回填入P_VKORG)
interface-valfield = 'P_VKORG'.
APPEND interface TO shlp-interface.
interface-shlpfield+4(1) = '2'.
interface-valfield = 'P_VTWEG'. "設定內表裡返回的列值與介面上要填入欄位的對應關係(第二列的值要回填入P_VTWEG)
APPEND interface TO shlp-interface.
CLEAR interface.
ENDFORM. "USER_FORM