标签:自定义 lt lv ABAP ls 搜素 dynpfields bukrs systems
本篇文章用SM30字段BUKRS带出BUTXT为例。
***INCLUDE LZBUKRS_ZHBBLXI01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module BUKRS_F4HELP INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE bukrs_f4help INPUT.
DATA: lt_dynpfields TYPE STANDARD TABLE OF dynpread,
ls_dynpfields TYPE dynpread,
lt_return TYPE STANDARD TABLE OF ddshretval,
ls_return TYPE ddshretval,
lv_povstepl TYPE sy-stepl,
lv_index TYPE sy-stepl.
DATA:lv_bukrs TYPE t001-bukrs,
lv_butxt TYPE t001-butxt.
TYPES: BEGIN OF ty_out,
bukrs TYPE t001-bukrs,
butxt TYPE t001-butxt,
END OF ty_out.
DATA : it_out TYPE TABLE OF ty_out,
is_out TYPE ty_out.
* 获取本页当前行号
CALL FUNCTION 'DYNP_GET_STEPL'
IMPORTING
povstepl = lv_povstepl
EXCEPTIONS
stepl_not_found = 1.
* 当前行号 = TC(包括翻页)的首行行号 + 本页当前行号 - 1
lv_index = tctrl_zbukrs_zhbblx-top_line + lv_povstepl - 1.
CLEAR lt_dynpfields[].
ls_dynpfields-fieldname = 'ZBUKRS_ZHBBLX-BUKRS'.
ls_dynpfields-stepl = lv_index.
APPEND ls_dynpfields TO lt_dynpfields.
CLEAR ls_dynpfields.
* 获取屏幕值(以防用户修改后未按回车)
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
translate_to_upper = 'X'
TABLES
dynpfields = lt_dynpfields
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.
READ TABLE lt_dynpfields INTO ls_dynpfields INDEX 1.
IF sy-subrc = 0.
lv_bukrs = ls_dynpfields-fieldvalue.
ENDIF.
IF lv_bukrs IS INITIAL .
SELECT
bukrs
butxt
FROM t001
INTO CORRESPONDING FIELDS OF TABLE it_out.
ELSE.
SELECT
bukrs
butxt
FROM t001
INTO CORRESPONDING FIELDS OF TABLE it_out
WHERE bukrs = lv_bukrs.
ENDIF.
* 自定义搜索帮助
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'BUKRS'
value_org = 'S'
TABLES
value_tab = it_out
return_tab = lt_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc = 0.
READ TABLE lt_return INTO ls_return INDEX 1.
IF sy-subrc = 0.
* zbukrs_zhbblx-bukrs = ls_return-fieldval.
SELECT SINGLE butxt INTO lv_butxt FROM t001 WHERE bukrs = ls_return-fieldval.
* MODIFY lt_dynpfields FROM ls_dynpfields INDEX lv_index .
ENDIF.
ENDIF.
*更新屏幕上已经修改的字段
DATA : lt_systems LIKE dynpread OCCURS 0 WITH HEADER LINE.
CLEAR: lt_systems[],lt_systems.
lt_systems-fieldname = 'ZBUKRS_ZHBBLX-BUKRS'.
lt_systems-stepl = lv_index.
lt_systems-fieldvalue = ls_return-fieldval. "返回的选择值
APPEND lt_systems.
lt_systems-fieldname = 'ZBUKRS_ZHBBLX-BUTXT'.
lt_systems-stepl = lv_index.
lt_systems-fieldvalue = lv_butxt.
APPEND lt_systems.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = sy-repid
dynumb = '0001'
TABLES
dynpfields = lt_systems
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.
ENDMODULE. " BUKRS_F4HELP INPUT```
标签:自定义,lt,lv,ABAP,ls,搜素,dynpfields,bukrs,systems 来源: https://www.cnblogs.com/Hao9933/p/15740061.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。