ABAP联动更新值
用這兩個函數Function DYNP_VALUES_READ, DYNP_VALUES_UPDATE
參考代碼:
MODULE ztmdno_dr_help INPUT.
??DATA:
? ? l_lifnr? ?TYPE ztmt018-lifnr,
? ? l_zvehtab TYPE ztmt018-zvehtab,
? ? l_zvehid??TYPE ztmt018-zvehid.
??CLEAR: gt_dynfields,gh_dynfields,it_return[],it_ztmdno[],ih_ztmdno.
??gh_dynfields-fieldname = 'PRE_DATA-LIFNR'.
??APPEND gh_dynfields TO gt_dynfields.
??CLEAR gh_dynfields.
??gh_dynfields-fieldname = 'PRE_DATA-ZVEHTAB'.
??APPEND gh_dynfields TO gt_dynfields.
----------------------獲取屏幕的值
??CALL FUNCTION 'DYNP_VALUES_READ'
? ? EXPORTING
? ?? ?dyname? ?? ?? ?? ?? ?= sy-repid
? ?? ?dynumb? ?? ?? ?? ?? ?= sy-dynnr
? ?? ?translate_to_upper? ?= 'X'
? ? TABLES
? ?? ?dynpfields? ?? ?? ???= gt_dynfields
? ? EXCEPTIONS
? ?? ?invalid_abapworkarea = 1
? ?? ?invalid_dynprofield??= 2
? ?? ?invalid_dynproname? ?= 3
? ?? ?invalid_dynpronummer = 4
? ?? ?invalid_request? ?? ?= 5
? ?? ?no_fielddescription??= 6
? ?? ?invalid_parameter? ? = 7
? ?? ?undefind_error? ?? ? = 8
? ?? ?double_conversion? ? = 9
? ?? ?stepl_not_found? ?? ?= 10
? ?? ?OTHERS? ?? ?? ?? ?? ?= 11.
??IF sy-subrc <> 0.
? ? MESSAGE '函數DYNP_VALUES_READ,未能取值' TYPE 'E'.
? ? EXIT.
??ENDIF.
??READ TABLE gt_dynfields INTO gh_dynfields WITH KEY fieldname = 'PRE_DATA-LIFNR'.
??IF sy-subrc = 0.
? ? l_lifnr = gh_dynfields-fieldvalue.
??ENDIF.
??READ TABLE gt_dynfields INTO gh_dynfields WITH KEY fieldname = 'PRE_DATA-ZVEHTAB'.
??IF sy-subrc = 0.
? ? IF gh_dynfields-fieldvalue IS INITIAL.
? ?? ?MESSAGE '請先輸入車牌號' TYPE 'I'.
? ?? ?EXIT.
? ? ENDIF.
? ? l_zvehtab = gh_dynfields-fieldvalue.
??ENDIF.
??SELECT SINGLE zvehid
? ? INTO l_zvehid
? ? FROM ztmt018
? ?WHERE lifnr = l_lifnr
? ???AND zvehtab = l_zvehtab.
??SELECT ztmdno
? ?? ?? ?ztmdname
? ?? ?? ?ztmmob
? ?? ?? ?zvehid
? ? INTO TABLE it_ztmdno
? ? FROM ztmt025
? ?WHERE zvehid = l_zvehid.
??IF it_ztmdno[] IS NOT INITIAL.
? ? CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
? ?? ?EXPORTING
? ?? ???retfield? ?? ???= 'ZTMDNO_DR'
? ?? ???dynpprog? ?? ???= sy-repid
? ?? ???dynpnr? ?? ?? ? = sy-dynnr
? ?? ???value_org? ?? ? = 'S'
? ?? ?TABLES
? ?? ???value_tab? ?? ? = it_ztmdno[]
? ?? ???return_tab? ?? ?= it_return[]
? ?? ?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_return INDEX 1.
? ? IF sy-subrc = 0.
? ?? ?pre_data-ztmdno_dr = it_return-fieldval.
? ?? ?READ TABLE it_ztmdno INTO ih_ztmdno WITH KEY zvehid = l_zvehid.
? ?? ?IF sy-subrc = 0.
? ?? ???CLEAR gh_dynfields.
? ?? ???gh_dynfields-fieldname = 'PRE_DATA-ZTMDNAME_DR'.
? ?? ???gh_dynfields-fieldvalue = ih_ztmdno-ztmdname_dr.
? ?? ???APPEND gh_dynfields TO gt_dynfields.
? ?? ???CLEAR gh_dynfields.
? ?? ???gh_dynfields-fieldname = 'PRE_DATA-ZTMMOB'.
? ?? ???gh_dynfields-fieldvalue = ih_ztmdno-ztmmob.
? ?? ???APPEND gh_dynfields TO gt_dynfields.
---------------------更新屏幕的值
? ?? ???CALL FUNCTION 'DYNP_VALUES_UPDATE'
? ?? ?? ? EXPORTING
? ?? ?? ?? ?dyname? ?? ?? ?? ?? ?= sy-repid
? ?? ?? ?? ?dynumb? ?? ?? ?? ?? ?= sy-dynnr
? ?? ?? ? TABLES
? ?? ?? ?? ?dynpfields? ?? ?? ???= gt_dynfields
? ?? ?? ? EXCEPTIONS
? ?? ?? ?? ?invalid_abapworkarea = 1
? ?? ?? ?? ?invalid_dynprofield??= 2
? ?? ?? ?? ?invalid_dynproname? ?= 3
? ?? ?? ?? ?invalid_dynpronummer = 4
? ?? ?? ?? ?invalid_request? ?? ?= 5
? ?? ?? ?? ?no_fielddescription??= 6
? ?? ?? ?? ?undefind_error? ?? ? = 7
? ?? ?? ?? ?OTHERS? ?? ?? ?? ?? ?= 8.
? ?? ???IF sy-subrc <> 0.
? ?? ???ENDIF.
? ?? ?ENDIF.
? ? ENDIF.
??ENDIF.
ENDMODULE.? ?? ?? ?? ?? ???" ZTMDNO_DR_HELP??INPUT
參考代碼:
MODULE ztmdno_dr_help INPUT.
??DATA:
? ? l_lifnr? ?TYPE ztmt018-lifnr,
? ? l_zvehtab TYPE ztmt018-zvehtab,
? ? l_zvehid??TYPE ztmt018-zvehid.
??CLEAR: gt_dynfields,gh_dynfields,it_return[],it_ztmdno[],ih_ztmdno.
??gh_dynfields-fieldname = 'PRE_DATA-LIFNR'.
??APPEND gh_dynfields TO gt_dynfields.
??CLEAR gh_dynfields.
??gh_dynfields-fieldname = 'PRE_DATA-ZVEHTAB'.
??APPEND gh_dynfields TO gt_dynfields.
----------------------獲取屏幕的值
??CALL FUNCTION 'DYNP_VALUES_READ'
? ? EXPORTING
? ?? ?dyname? ?? ?? ?? ?? ?= sy-repid
? ?? ?dynumb? ?? ?? ?? ?? ?= sy-dynnr
? ?? ?translate_to_upper? ?= 'X'
? ? TABLES
? ?? ?dynpfields? ?? ?? ???= gt_dynfields
? ? EXCEPTIONS
? ?? ?invalid_abapworkarea = 1
? ?? ?invalid_dynprofield??= 2
? ?? ?invalid_dynproname? ?= 3
? ?? ?invalid_dynpronummer = 4
? ?? ?invalid_request? ?? ?= 5
? ?? ?no_fielddescription??= 6
? ?? ?invalid_parameter? ? = 7
? ?? ?undefind_error? ?? ? = 8
? ?? ?double_conversion? ? = 9
? ?? ?stepl_not_found? ?? ?= 10
? ?? ?OTHERS? ?? ?? ?? ?? ?= 11.
??IF sy-subrc <> 0.
? ? MESSAGE '函數DYNP_VALUES_READ,未能取值' TYPE 'E'.
? ? EXIT.
??ENDIF.
??READ TABLE gt_dynfields INTO gh_dynfields WITH KEY fieldname = 'PRE_DATA-LIFNR'.
??IF sy-subrc = 0.
? ? l_lifnr = gh_dynfields-fieldvalue.
??ENDIF.
??READ TABLE gt_dynfields INTO gh_dynfields WITH KEY fieldname = 'PRE_DATA-ZVEHTAB'.
??IF sy-subrc = 0.
? ? IF gh_dynfields-fieldvalue IS INITIAL.
? ?? ?MESSAGE '請先輸入車牌號' TYPE 'I'.
? ?? ?EXIT.
? ? ENDIF.
? ? l_zvehtab = gh_dynfields-fieldvalue.
??ENDIF.
??SELECT SINGLE zvehid
? ? INTO l_zvehid
? ? FROM ztmt018
? ?WHERE lifnr = l_lifnr
? ???AND zvehtab = l_zvehtab.
??SELECT ztmdno
? ?? ?? ?ztmdname
? ?? ?? ?ztmmob
? ?? ?? ?zvehid
? ? INTO TABLE it_ztmdno
? ? FROM ztmt025
? ?WHERE zvehid = l_zvehid.
??IF it_ztmdno[] IS NOT INITIAL.
? ? CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
? ?? ?EXPORTING
? ?? ???retfield? ?? ???= 'ZTMDNO_DR'
? ?? ???dynpprog? ?? ???= sy-repid
? ?? ???dynpnr? ?? ?? ? = sy-dynnr
? ?? ???value_org? ?? ? = 'S'
? ?? ?TABLES
? ?? ???value_tab? ?? ? = it_ztmdno[]
? ?? ???return_tab? ?? ?= it_return[]
? ?? ?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_return INDEX 1.
? ? IF sy-subrc = 0.
? ?? ?pre_data-ztmdno_dr = it_return-fieldval.
? ?? ?READ TABLE it_ztmdno INTO ih_ztmdno WITH KEY zvehid = l_zvehid.
? ?? ?IF sy-subrc = 0.
? ?? ???CLEAR gh_dynfields.
? ?? ???gh_dynfields-fieldname = 'PRE_DATA-ZTMDNAME_DR'.
? ?? ???gh_dynfields-fieldvalue = ih_ztmdno-ztmdname_dr.
? ?? ???APPEND gh_dynfields TO gt_dynfields.
? ?? ???CLEAR gh_dynfields.
? ?? ???gh_dynfields-fieldname = 'PRE_DATA-ZTMMOB'.
? ?? ???gh_dynfields-fieldvalue = ih_ztmdno-ztmmob.
? ?? ???APPEND gh_dynfields TO gt_dynfields.
---------------------更新屏幕的值
? ?? ???CALL FUNCTION 'DYNP_VALUES_UPDATE'
? ?? ?? ? EXPORTING
? ?? ?? ?? ?dyname? ?? ?? ?? ?? ?= sy-repid
? ?? ?? ?? ?dynumb? ?? ?? ?? ?? ?= sy-dynnr
? ?? ?? ? TABLES
? ?? ?? ?? ?dynpfields? ?? ?? ???= gt_dynfields
? ?? ?? ? EXCEPTIONS
? ?? ?? ?? ?invalid_abapworkarea = 1
? ?? ?? ?? ?invalid_dynprofield??= 2
? ?? ?? ?? ?invalid_dynproname? ?= 3
? ?? ?? ?? ?invalid_dynpronummer = 4
? ?? ?? ?? ?invalid_request? ?? ?= 5
? ?? ?? ?? ?no_fielddescription??= 6
? ?? ?? ?? ?undefind_error? ?? ? = 7
? ?? ?? ?? ?OTHERS? ?? ?? ?? ?? ?= 8.
? ?? ???IF sy-subrc <> 0.
? ?? ???ENDIF.
? ?? ?ENDIF.
? ? ENDIF.
??ENDIF.
ENDMODULE.? ?? ?? ?? ?? ???" ZTMDNO_DR_HELP??INPUT
總結
- 上一篇: 半成品的借出发外
- 下一篇: 如何配置原材料的默认采购类型为F