ABAP-Generate dynpro动态屏幕
1.获取屏幕参数值 FUN: RS_SCRP_GET_SCREEN_INFOS
call function 'RS_SCRP_GET_SCREEN_INFOS'exportingdynnr = '1000'progname = 'ZSDA008_SO_HEADER'tablesfieldlist = lt_field_listexceptionsdynpro_does_not_exist = 1no_field_list = 2cancelled = 3others = 4 .if sy-subrc <> 0.* implement suitable error handling here endif.
2.屏幕生成过程
lv_dynpro = sy-repid.lv_dynpro+40(4) = '0100'.lt_flow_logic-line = 'process before output.'. append lt_flow_logic.lt_flow_logic-line = 'module status_0100.'. append lt_flow_logic.lt_flow_logic-line = 'process after input.'. append lt_flow_logic.lt_flow_logic-line = 'module exit_screen at exit-command.'. append lt_flow_logic.lt_flow_logic-line = 'module user_command_0100.'. append lt_flow_logic.lt_flow_logic-line = 'process on value-request.'. append lt_flow_logic.lt_flow_logic-line = 'field tlow module t_low_help.'. append lt_flow_logic.syntax-check for dynpro lt_screen_headerlt_field_listlt_flow_logiclt_attribmessage lv_message_text line lv_screen_line word lv_incorrectword.if sy-subrc <> 0.endif.generate dynpro lt_screen_headerlt_field_listlt_flow_logiclt_attribid lv_dynpromessage lv_message_text line lv_screen_line word lv_incorrectword. "#EC CI_GENERATE if sy-subrc <> 0.endif.
3.程序附件
ZEXP_SCREEN_TEST
*&---------------------------------------------------------------------* *& Report ZEXP_SCREEN_TEST *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* report zexp_screen_test.tables:sscrfields.data:lv_message_text type string,lv_screen_line type string,lv_incorrectword type string,lv_fields type i,lv_max_length type i,ls_field_list type d021s,lt_field_list type table of d021s with header line,lt_flow_logic type table of d022s with header line,lt_screen_header type table of d020s with header line,ls_header type d020s,lv_dynpro type char44,lt_attrib type table of d023s with header line,lo_ref type ref to data,lo_line type ref to data,lt_fields type lvc_t_fcat,lt_fields_temp type lvc_t_fcat,ls_fields type lvc_s_fcat.data:begin of etab occurs 0,check type c,posnr type posnr,deflg type c,htetr like vbap-netwr,vbelv like likp-vbeln,sktxt type char50,rqtxt type char50,jsdat like sy-datum,zdays type posnr,hkdat like sy-datum,ysetr type netwr,bezei type char80,ernam type char15,erdat type datum,end of etab.field-symbols:<fs_tab> type any table,<fs> type any.data:tlow type vbeln_va,tlow1 type vbeln_vl,thigh type vbeln_va,thigh1 type vbeln_va,tpush type char10."controls:imptb type tableview using screen 0100. start-of-selection.assign tlow to <fs>.perform build_screen_fields.lv_dynpro = sy-repid.lv_dynpro+40(4) = '0100'.lt_flow_logic-line = 'process before output.'. append lt_flow_logic.lt_flow_logic-line = 'module status_0100.'. append lt_flow_logic.lt_flow_logic-line = 'process after input.'. append lt_flow_logic.lt_flow_logic-line = 'module exit_screen at exit-command.'. append lt_flow_logic.lt_flow_logic-line = 'module user_command_0100.'. append lt_flow_logic.lt_flow_logic-line = 'process on value-request.'. append lt_flow_logic.lt_flow_logic-line = 'field tlow module t_low_help.'. append lt_flow_logic.syntax-check for dynpro lt_screen_headerlt_field_listlt_flow_logiclt_attribmessage lv_message_text line lv_screen_line word lv_incorrectword.if sy-subrc <> 0.endif.generate dynpro lt_screen_headerlt_field_listlt_flow_logiclt_attribid lv_dynpromessage lv_message_text line lv_screen_line word lv_incorrectword. "#EC CI_GENERATEif sy-subrc <> 0.endif.start-of-selection.call screen 0100. " starting at 3 3 ending at 60 60. form build_screen_fields .* call function 'RS_SCRP_GET_SCREEN_INFOS' * exporting * dynnr = '1000' * progname = 'ZSDA008_SO_HEADER' * tables * fieldlist = lt_field_list * exceptions * dynpro_does_not_exist = 1 * no_field_list = 2 * cancelled = 3 * others = 4 . * if sy-subrc <> 0. ** implement suitable error handling here * endif.* ls_field_list-fnam = ''. 字段名 * ls_field_list-didx = ''. frame high * ls_field_list-flg1 = ''. * ls_field_list-flg2 = ''. * ls_field_list-flg3 = ''. A0 obligatory 00 entry and clear 80 entry * ls_field_list-fill = ''. C checkbutton R frame T P pushbutton * ls_field_list-fmb1 = ''. * ls_field_list-fmb2 = ''. * ls_field_list-colr = ''. color * ls_field_list-leng = ''. textarea length * ls_field_list-line = ''. row * ls_field_list-coln = ''. col * ls_field_list-ltyp = ''. circulated type * ls_field_list-lanf = ''. circulated starting line * ls_field_list-lblk = ''. circulated area * ls_field_list-lrep = ''. circulated elenments * ls_field_list-fmky = ''. function menu butttons * ls_field_list-paid = ''. set memory id * ls_field_list-ucnv = ''. * ls_field_list-type = ''. field type * ls_field_list-auth = ''. authority no * ls_field_list-wnam = ''. current button * ls_field_list-dmac = ''. * ls_field_list-grp1 = ''. * ls_field_list-grp2 = ''. * ls_field_list-grp3 = ''. * ls_field_list-grp4 = ''. * ls_field_list-ityp = ''. * ls_field_list-aglt = ''. * ls_field_list-adez = ''. * ls_field_list-stxt = ''. * ls_field_list-res1 = ''. * ls_field_list-res2 = ''. * append ls_field_list to lt_field_list. * clear ls_field_list. ls_field_list-fnam = 'FRAME'.ls_field_list-didx = '000B'.ls_field_list-flg1 = '80'.ls_field_list-flg2 = '02'.ls_field_list-flg3 = '80'.ls_field_list-fill = 'R'.ls_field_list-leng = '76'.ls_field_list-line = '01'.ls_field_list-coln = '02'.ls_field_list-type = 'CHAR'.ls_field_list-ityp = 'C'.append ls_field_list to lt_field_list.clear ls_field_list.ls_field_list-fnam = 'S_VBELN-TEXT'.ls_field_list-leng = '19'.ls_field_list-line = '02'.ls_field_list-coln = '04'.ls_field_list-type = 'CHAR'.ls_field_list-ityp = 'C'.ls_field_list-stxt = '订单号'.append ls_field_list to lt_field_list.clear ls_field_list.ls_field_list-fnam = 'TLOW'.ls_field_list-flg1 = '80'.ls_field_list-flg2 = '00'.ls_field_list-flg3 = '80'.ls_field_list-leng = '0A'.ls_field_list-line = '02'.ls_field_list-coln = '24'.ls_field_list-ucnv = 'ALPHA'.ls_field_list-type = 'CHAR'.ls_field_list-ityp = 'C'.ls_field_list-stxt = ''.append ls_field_list to lt_field_list.clear ls_field_list.ls_field_list-fnam = 'S_VBELN-TXT2'.ls_field_list-leng = '04'.ls_field_list-line = '02'.ls_field_list-coln = '37'.ls_field_list-type = 'CHAR'.ls_field_list-ityp = 'C'.ls_field_list-stxt = '到'.append ls_field_list to lt_field_list.clear ls_field_list.ls_field_list-fnam = 'THIGH'.ls_field_list-flg1 = '80'.ls_field_list-flg2 = '00'.ls_field_list-flg3 = '80'.ls_field_list-leng = '0A'.ls_field_list-line = '02'.ls_field_list-coln = '3C'.ls_field_list-ucnv = 'ALPHA'.ls_field_list-type = 'CHAR'.ls_field_list-ityp = 'C'.ls_field_list-stxt = ''.append ls_field_list to lt_field_list.clear ls_field_list.ls_field_list-fnam = 'TPUSH'.ls_field_list-didx = '0003'.ls_field_list-flg1 = '80'.ls_field_list-flg2 = '02'.ls_field_list-flg3 = '80'.ls_field_list-fill = 'P'. "C checkbutton R frame T P pushbuttonls_field_list-leng = '03'.ls_field_list-line = '02'.ls_field_list-coln = '50'.ls_field_list-fmky = '&ZZZ'.ls_field_list-wnam = '&RICO'.ls_field_list-type = 'CHAR'.ls_field_list-auth = '102'.ls_field_list-ityp = 'C'.append ls_field_list to lt_field_list.clear ls_field_list.ls_field_list-fnam = 'S_VBELN-TEXT1'.ls_field_list-leng = '19'.ls_field_list-line = '03'.ls_field_list-coln = '04'.ls_field_list-type = 'CHAR'.ls_field_list-ityp = 'C'.ls_field_list-stxt = '订单类型'.append ls_field_list to lt_field_list.clear ls_field_list.ls_field_list-FNAM = 'TAB-ALLTP'.ls_field_list-DIDX = '000C'.ls_field_list-FLG1 = '80'.ls_field_list-FLG2 = '00'.ls_field_list-FLG3 = '80'.ls_field_list-FMB1 = '00'.ls_field_list-FMB2 = '08'.ls_field_list-LENG = '09'.ls_field_list-LINE = '0A'.ls_field_list-COLN = '0D'.ls_field_list-LANF = '00'.ls_field_list-LBLK = '00'.ls_field_list-LREP = '00'.ls_field_list-TYPE = 'CHAR'.ls_field_list-ITYP = 'C'.ls_field_list-AGLT = '00'.ls_field_list-ADEZ = '00'.ls_field_list-RES1 = 'DL K'.append ls_field_list to lt_field_list.clear ls_field_list.ls_field_list-fnam = '<FS>'.ls_field_list-flg1 = '80'.ls_field_list-flg2 = '00'.ls_field_list-flg3 = '80'.ls_field_list-leng = '0A'.ls_field_list-line = '03'.ls_field_list-coln = '24'.ls_field_list-ucnv = 'ALPHA'.ls_field_list-type = 'CHAR'.ls_field_list-ityp = 'C'.ls_field_list-stxt = ''.append ls_field_list to lt_field_list.clear ls_field_list.ls_field_list-fnam = 'S_VBELN-TXT1'.ls_field_list-leng = '04'.ls_field_list-line = '03'.ls_field_list-coln = '37'.ls_field_list-type = 'CHAR'.ls_field_list-ityp = 'C'.ls_field_list-stxt = '到'.append ls_field_list to lt_field_list.clear ls_field_list.ls_field_list-fnam = 'THIGH1'.ls_field_list-flg1 = '80'.ls_field_list-flg2 = '00'.ls_field_list-flg3 = '80'.ls_field_list-leng = '0A'.ls_field_list-line = '03'.ls_field_list-coln = '3C'.ls_field_list-ucnv = 'ALPHA'.ls_field_list-type = 'CHAR'.ls_field_list-ityp = 'C'.ls_field_list-stxt = ''.append ls_field_list to lt_field_list.clear ls_field_list.ls_field_list-fnam = 'TPUSH1'.ls_field_list-didx = '0003'.ls_field_list-flg1 = '80'.ls_field_list-flg2 = '02'.ls_field_list-flg3 = '80'.ls_field_list-fill = 'P'. "C checkbutton R frame T P pushbuttonls_field_list-leng = '03'.ls_field_list-line = '03'.ls_field_list-coln = '50'.ls_field_list-fmky = '&ZZZ'.ls_field_list-type = 'CHAR'.ls_field_list-auth = '102'.ls_field_list-ityp = 'C'.append ls_field_list to lt_field_list.clear ls_field_list.endform. " BUILD_SCREEN_FIELDS form build_flow_logic_etc .field-symbols:<fs_flow_logic> type d022s,<fs_flow_logic1> type d022s,<fs_flow_logic2> type d022s.data:lt_field_list type table of d021s with header line.call function 'RS_DYNPRO_CREATE_INITIAL'exportingprogram = sy-repiddynnr = '0100'importingdynpro_header = ls_headertablesdynpro_fields = lt_field_listdynpro_flow = lt_flow_logicdynpro_params = lt_attrib.loop at lt_flow_logic assigning <fs_flow_logic>.if <fs_flow_logic>+0(1) = '*'.clear <fs_flow_logic>+0(1).endif.endloop.insert initial line into lt_flow_logic index 5 assigning <fs_flow_logic>.<fs_flow_logic>-line = 'MODULE exit_screen AT EXIT-COMMAND.'. "#EC NOTEXT endform. " BUILD_FLOW_LOGICmodule status_0100 output.set pf-status '100'. endmodule. "status_0100 OUTPUTmodule exit_screen.set screen 0.leave screen. endmodule. "exit_screenmodule user_command_0100 input." break-point.* loop at screen. * if screen-name = ''. * endif. * endloop. case sy-ucomm.when '&F4'."perform t_low_help. when '&SAVE'.leave to screen 0.when others.endcase.set screen 100.endmodule. "user_command_0100 INPUT*module etab_pbo output. * read table etab into etab index imptb-current_line. *endmodule. * *module etab_pai input. * modify etab from etab index imptb-current_line. *endmodule. " etab_pail inputmodule t_low_help." break-point. data:zwerks like standard table of t001w with header line.clear:zwerks. refresh:zwerks.select * into corresponding fields of table zwerks from t001w.call function 'F4IF_INT_TABLE_VALUE_REQUEST'exportingretfield = 'WERKS'value_org = 'S'dynpprog = sy-repiddynpnr = sy-dynnrdynprofield = 'TLOW'tablesvalue_tab = zwerksexceptionsparameter_error = 1no_values_found = 2others = 3.if sy-subrc <> 0....endif.clear:zwerks. refresh:zwerks.endmodule.form t_low_help.data:zwerks like standard table of t001w with header line.clear:zwerks. refresh:zwerks.select * into corresponding fields of table zwerks from t001w.call function 'F4IF_INT_TABLE_VALUE_REQUEST'exportingretfield = 'WERKS'value_org = 'S'dynpprog = sy-repiddynpnr = sy-dynnrdynprofield = 'TLOW'tablesvalue_tab = zwerksexceptionsparameter_error = 1no_values_found = 2others = 3.if sy-subrc <> 0....endif.clear:zwerks. refresh:zwerks.endform.
View Code
转载于:https://www.cnblogs.com/ricoo/p/10170074.html
ABAP-Generate dynpro动态屏幕相关推荐
- ABAP动态编程-动态生成报表、动态屏幕
目录 前言 一.动态生成报表并调用 二.动态生成屏幕并调用 总结 前言 本文主要讲述ABAP编程中根据逻辑自动生成报表及屏幕(依托语句GENERATE DYNPRO)的实现示例及简单说明. 一.动态生 ...
- 对话屏幕Dynpro(SE51) 屏幕元素 屏幕属性 PAI事件的触发、屏幕元素Function Code设置 屏幕流逻辑Screen Flow Logic 对话屏幕中的字段命名大小写问题
对话屏幕Dynpro(SE51) 屏幕元素 屏幕属性 l 屏幕序号(Screen number).四个数字组成的序列号,用于在程序中确定屏幕,该序号在同一个ABAP程序内部是唯一的. l 屏幕类型 ...
- 【整理】ABAP开发中的屏幕跳转
ABAP开发中的屏幕跳转 这里介绍常见的几种在开发中常用到的事务代码跳转功能. 1.最常用到的是"SET PARAMETER"语句赋值,然后再使用"CALL TRANSA ...
- ABAP开发如何动态的实现任意表的ALV显示
在ABAP开发中如何动态的实现任意表的ALV的显示,以下是具体操作步骤: 第一部分:程序框架 REPORT ZALV_20090304_EVENT. INCLUDE ZALV_DATA_INTI. ...
- ABAP中创建动态内表的三种方法(转载)
BAP中创建动态内表的三种方法 第一种: 如果我们需要的动态内表字段或者动态工作区和数据字典中的类型一致,可以直接使用CREATE DATA生成,当然也可以是自定义类型. 比如要产生和数据表MARA结 ...
- [SAP ABAP开发技术总结]屏幕跳转
12.18. 屏幕跳转 LEAVE SCREEN. or LEAVE TO SCREEN <next screen>. LEAVE SCREEN语句会结束当前屏幕并 ...
- 概览屏幕(最新动态屏幕、最近任务列表)
好吧,这一篇基本上就是Android官方文档抄过来了--文档写的很清楚简洁,似乎不会精简什么了--- 概览屏幕是一个系统级别的UI,其中列出了最近访问过的Activity和任务,用户可以浏览该列表并选 ...
- SAP ABAP ALV构建动态输出列与构建动态内表
首先,简单说明一下要用到的表类型.类.函数: 表类型 LVC_T_FCAT-(存放自定义列属性的表类型,一般用到的属性有:FIELDNAME.OUTPUTLEN.DATATYPE.INTTYPE.IN ...
- ABAP:DYNP_VALUES_READ读取屏幕字段值
在Screen显示之前,系统会自动将程序变量值放到屏幕字段中:在PAI事件中,系统会自动将屏幕字段的值更新到相应的程序变量.在Screen Logic中我们还有POH和POV事件,所以有时需要调用函数 ...
最新文章
- linux 驱动 内核模式,Linux内核模块和驱动的编写
- java.io.IOException: Stream closed
- 基于子类的动态代理:
- Apache Kafka-初体验Kafka(03)-Centos7下搭建kafka集群
- S5PV210开发 -- 通过 DNW、fastboot 烧写
- 网易云信携手LiveVideoStackCon 2019,探索多媒体技术新世界
- linux sed命令的常用方法
- 如何根据jar包的名称找到包含对应源代码的jar包
- 禁用F12和鼠标右键,防止查看控制台代码
- 关于Makefile,Makefile.in,Makefile.am,Configure功能及相互关系的问题
- Python time mktime()方法
- Michael Dell承诺打造新的EMC/戴尔/VMware工程技术系统
- paip.提升用户体验----记住用户名与自动登录
- 支付宝接口对接指南(四、回调通知对接:websoket方式)【保姆级】
- 什么是网络空间测绘?到底有什么作用?
- 供应链服务平台方案:助供应链服务公司实现商品+决策+物流+售后协同办公
- MFC win32 API串口同步模式代码示范
- Fbx File Format Identifier
- Dva中在effects中获取state的值
- Semantic SLAM源码解析