当前位置: 首页 > news >正文

ABAP 开发的那些小技巧

在对话框程序中的选择屏幕添加图标

要在选择屏幕中添加图标,其中包括参数:

在参数的选择文本中或选择选项(select-option)中写入 @01@

或选择选项:

您可以使用 01、02、03,依此类推,以获取不同的不同图标。

在运行时更改参数的名称

这是在运行时更改参数的很酷的技巧:

在特定时间或单击参数标签将更改…

SELECTION-SCREEN BEGIN OF BLOCK b1.  
PARAMETERS : rd1 RADIOBUTTON GROUP g1 USER-COMMAND abc DEFAULT 'X',  rd2 RADIOBUTTON GROUP g1.  SELECTION-SCREEN: BEGIN OF LINE.  SELECTION-SCREEN: COMMENT 1(50) text_003.   " (text_003 will holds the name)  
PARAMETERS  p_matnr TYPE matnr .  
SELECTION-SCREEN: END   OF LINE.  
SELECTION-SCREEN END OF BLOCK b1.  *To change the name on click of radio button  AT SELECTION-SCREEN OUTPUT.  IF rd1 = 'X'.  text_003 = 'Matnr'.  ELSEIF rd2 = 'X'.  text_003 = 'Material Number'.  ENDIF.

图片.png

实际开发中遇到的解决方式:

代码如下:

**----------------------------------------------------------------------*
*& 选择屏幕部分
SELECTION-SCREEN FUNCTION KEY 1.SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text002.SELECTION-SCREEN: BEGIN OF LINE.
PARAMETERS: p1 TYPE c RADIOBUTTON GROUP rb1 USER-COMMAND uc DEFAULT 'X'.
SELECTION-SCREEN: COMMENT (30) FOR FIELD p1.PARAMETERS: p2 TYPE c RADIOBUTTON GROUP rb1.
SELECTION-SCREEN: COMMENT (30) FOR FIELD p2.
SELECTION-SCREEN: END OF LINE.SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text001.SELECT-OPTIONS:s_pbom FOR zmmt076-zcompocode MODIF ID ty1, " Component Codes_fbom FOR zmmt077-zforpegcode MODIF ID ty2," Forecast Pegging Codeso_sku FOR mara-zmatsku, " SKUs_zbrand FOR mara-zbrand , " Brands_zrange FOR mara-zrange, " Ranges_zprod FOR mara-zprod, " Products_zprgrp FOR mara-zprdgrp, " Product Groups_series FOR mara-zseries_int, " Internal Seriess_erdat FOR zmmt076-erdat, " Update Dates_bismt FOR zmmt076-zbismt, " Old Material No.s_crdat FOR zmmt076-erdat. " Sales Order Created Date
SELECTION-SCREEN END OF BLOCK b1.INITIALIZATION.text001 = 'Selection'.text002 = 'PBOM/FBOM'.s_crdat-low = '20200101'. s_crdat-high = sy-datum.s_crdat-sign = 'I'.s_crdat-option = 'BT'.APPEND s_crdat.CLEAR s_crdat.AT SELECTION-SCREEN OUTPUT.LOOP AT SCREEN.CASE screen-group1.WHEN 'TY1'.IF p1 = 'X'.screen-active = '1'.ELSE.screen-active = '0'.ENDIF.WHEN 'TY2'.IF p2 IS INITIAL.screen-active = '0'.ELSE.screen-active = '1'.ENDIF.ENDCASE.MODIFY SCREEN.ENDLOOP.

显示效果如下:

图片.png

Describe 方法的替代

我们可以在不使用 DESCRIBE 语句的情况下计算内表的行:

count = lines(itab)

动态 SQL 语句

动态创建选择查询语句的技巧:

SELECT (<fs_fields>)FROM (<fs_tabname>)APPENDING TABLE <fs_itab>WHERE (wa_tab) .
[every variable should be of character type]

显示 ALV 的最简单方式

使用此代码显示 ALV 的最简单和最短方法:

DATA: gr_table TYPE REF TO cl_salv_table.CALL METHOD cl_salv_table=>factoryIMPORTINGr_salv_table = gr_tableCHANGINGt_table = itab. " internal table having data to displaygr_table->display( ).

运行阻塞的 T-Code

Tcodes 被中断…不是一个大问题。这是运行任何 T-code 的两种方法:

  1. RS_HDSYS_CALL_TC_VARIANT: RS_HDSYS_CALL_TC_VARIANT 并使用参数进行权限检查
  2. 在报表中使用如下的代码:
DATA: l_tcode TYPE sytcode.  PARAMETERS: p_tcode TYPE sy-tcode.  START-OF-SELECTION.  SELECT SINGLE tcode FROM tstc  INTO l_tcode  WHERE tcode = p_tcode.  IF sy-subrc = 0.  CALL TRANSACTION p_tcode.  ELSE.  MESSAGE 'TCODE not found.' TYPE 'I'.  ENDIF.

显示弹出窗口

使用 method th_popup 函数来显示弹出框或消息提示。

CALL FUNCTION 'POPUP_TO_CONFIRM'  EXPORTING  text_question  = '确定删除?'  IMPORTING  answer         = lv_answer  
*       TABLES  
*     PARAMETER      =  EXCEPTIONS  text_not_found = 1  OTHERS         = 2.  CHECK lv_answer = '1'.

报表中创建日志

这是在 ABAP 中创建日志显示的代码:

CREATE OBJECT lc_app_log  EXCEPTIONS  log_header_inconsistent = 1  OTHERS                  = 2.  *Error messages  LOOP AT i_msg_log INTO wa_msg_log.  lw_msg = wa_msg_log-message.  lw_msgty = wa_msg_log-msgtyp.  CALL METHOD lc_app_log->add_msg_free_text  EXPORTING  im_msg    = lw_msg  im_msgty  = lw_msgty  EXCEPTIONS  msg_error = 1  OTHERS    = 2.  IF NOT sy-subrc IS INITIAL.  RETURN.  ENDIF.  CLEAR wa_msg_log.  ENDLOOP.  lc_app_log->display_log( ).

用字符串查找报表

我们可以通过使用报表输入任何程序中编写的字符串来找到报表:RS_ABAP_SOURCE_SCAN

在不按 CTRL+C 或 CTRL+V 的情况下复制任何行

使用 CTRL+D 来复制任何一行,通常在更新代码时使用,将原有的逻辑注释,复制当前行的代码,重新写新的业务逻辑代码

http://www.lryc.cn/news/477975.html

相关文章:

  • 电科金仓(人大金仓)更新授权文件(致命错误: XX000: License file expired.)
  • 玩转「HF/魔搭/魔乐」平台
  • 鸿蒙系统的优势 开发 环境搭建 开发小示例
  • python批量合并excel文件
  • AWS S3 JavaScript SDK(v3)常用操作
  • 数据结构——图的基本操作
  • 掌握全球速递:在表格中高效利用国际快递公式查询快递
  • 【MySQL系列】字符集设置
  • Vue2进阶之Vue3高级用法
  • 基于微信的追星小程序+ssm(lw+演示+源码+运行)
  • 【51单片机】串口通信原理 + 使用
  • 优选算法第五讲:位运算模块
  • 【07】Maven项目多环境打包配置
  • 嵌入式Linux入门具备:C语言基础与基本驱动学习(2):Linux GIibc IO基础
  • 【微服务】Docker 容器化
  • [前端] 为网站侧边栏添加搜索引擎模块
  • 解决CORS (跨源资源共享) 错误
  • Redis 实现分布式缓存
  • Chrome与火狐哪个浏览器的移动版本更流畅
  • 7篇Python爬虫实例,直接代码可运行,全网最全,注释超详细(适合收藏)——2、爬取图片信息。
  • 25.停车场管理系统(基于web的Java项目)
  • 展览搭建公司怎么跟展会主办打好交道
  • 软件开发方法
  • 「Mac畅玩鸿蒙与硬件24」UI互动应用篇1 - 灯光控制小项目
  • 十二:java web(4)-- Spring核心基础
  • new和malloc有什么区别,他们的用法是什么?malloc分配失败会导致什么问题
  • 了解SQLExpress数据库
  • geoserver创建一个根据属性显示不同形状的点样式
  • 中国遗传学会2024全国学术研讨会在长沙成功召开
  • Android Studio 多工程公用module引用