![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ALV知识点
在这里分享一下ALV的一些小功能点
小飞猪猪猪猪猪猪猪
Henry Jiang
展开
-
ABAP选择屏幕:动态选择屏幕
导语:在做ALV报表的时候,碰见过用 RADIOBUTTON区分不同页签,或者是区分不同的选择屏幕字段的需求,这里简单的说一下,如何通过RADIOBUTTON来实现动态选择屏幕。关键元素:1、 MODIF ID在需要实现动态的屏幕定义后面定义一下 MODIF IDSELECT-OPTIONS:s_werks FOR marc-werks, s_matnr FOR mara-matnr, s_bismt FOR mara-bismt,原创 2020-12-31 11:10:19 · 4082 阅读 · 6 评论 -
ABAP 选择屏幕按钮
导语:在做一些批导程序,或者程序附带配置表的时候,需要用到选择屏幕按钮,下面分享一下如何实现选择屏幕按钮。一、定义选择屏幕按钮选择屏幕按钮,SAP给预留了五个,也就是说最多可以定义五个,随着选择屏幕一起定义。关键字:SELECTION-SCREEN FUNCTION KEY 1.最多可以写到KEY 5.TABLES :t001,sscrfields.SELECTION-SCREEN BEGIN OF BLOCK blc_001 WITH FRAME TITLE TEXT-001. PARAM原创 2022-04-12 17:06:03 · 3388 阅读 · 0 评论 -
ABAP选择屏幕下拉框
导语:好久没有写选择屏幕了,下面分享一个选择屏幕下拉框的实现,用户认为在选择屏幕上的搜索帮助不太友好,希望做一个下拉框来选。原创 2022-07-15 14:08:41 · 2032 阅读 · 0 评论 -
SAP ABAP SUBMIT常用用法
SAP ABAP SUBMIT常用用法分享原创 2024-01-22 17:10:36 · 702 阅读 · 0 评论 -
SAP ABAP ALV单元格按钮
最近在做WM的开发,功能比较复杂,其中涉及到对于ALV行数据的扩展处理,需要用到ALV单元格上展示按钮,并触发按钮事件,下面分享一下实现过程,文章末尾附带效果展示,如果对你帮助,请为Henry点一个赞,谢谢~原创 2023-12-22 10:31:04 · 909 阅读 · 4 评论 -
SAP ALV动态GUI标题
导语:最近在做的客制化平台中,顾问需要在不同的按钮对应的ALV中,展示不同的GUI标题。原创 2023-12-15 14:12:12 · 530 阅读 · 0 评论 -
SAP 万能搜索帮助!
导语:最近在做ALV的自定义屏幕,由于屏幕的字段,参考的内表字段,导致没有标准的搜索帮助可以用,又懒得大动逻辑,就只能添加F4事件,但是F4的常规函数不能跳出标准的日期的POP框,emm。。。。原创 2023-06-02 16:35:51 · 538 阅读 · 2 评论 -
ALV动态搜索帮助 F4
导语:前面有做过一些F4事件,没有分享,最近在做EPIC的收款认领平台,顾问提出了一个有意思的需求,在填写凭证的时候,根据记账码(BSCHL)的不同,搜索帮助来展示【总账科目】或者是【客户编码】,其实很简单,就在F4事件上稍加变通就可以了原创 2023-05-31 11:30:11 · 331 阅读 · 0 评论 -
ME28/ME2L/ME2N增强字段
导语:用户希望在ME28采购订单审批的时候显示采购订单创建人以及描述,需要通过增强字段来实现,查询了一下SAP有标准的BADI可以进行增强,好像ME28、ME2L、ME2N都是通过这里实现,使用不同的展示结构,这里没有深入测试其他事物,仅以ME28作为说明。BADI名称:ME_CHANGE_OUTTAB_CUS增强结构:MEREP_OUTTAB_PURCHDOC_REL。原创 2023-05-08 16:17:05 · 1068 阅读 · 0 评论 -
ALV处理进度条
在ALV中处理大量数据的时候,可能要等很久,很多时候不知道处理了多少,再即将处理完的时候手动结束了进程,下面分享一下处理ALV时展示进度条。原创 2023-01-30 15:24:41 · 336 阅读 · 3 评论 -
SAP ALV 负号前置/去掉小数点后多余的0
导语:我们都知道SAP的负数,负号都是在数字之后展示的,下面分享一下通过例程实现ALV负号前置的解决办法,告别给每个字段都用CHAR类型,在判断小于0,用0相减,在拼接负号的方式。一、创建一个例程所有对于数字的处理都放在这个例程里进行处理,ALV只要处理在FIELDCAT中添加这个例程,系统就会自动处理了。注意:1、要定义好outsing这个参数的小数长度。2、例程的名称格式为:CONVERSION_EXIT_XXXX_OUTPUT中间XXXX的位置,作为例程名称。FUNCTION conve原创 2021-12-31 16:33:58 · 2687 阅读 · 1 评论 -
ALV 调用标准程序并获取结果
导语:最近需求需要获取一个函数的结果,但是这个结果是ALV显示的,但是只需要他的数据,不需要他的展示。需求:获取到函数【K_KKB_KKBCS_ORDER_REPORT】的ALV输出内表得值。实现方法:调用cl_salv_bs_runtime_info=>get_data_ref,来获取。FIELD-SYMBOLS <lt_data> TYPE STANDARD TABLE. "定义承接数据的动态内表DATA lcl_data TYPE REF TO data.DATA(l原创 2021-12-16 14:40:57 · 1057 阅读 · 0 评论 -
FUNCTION ALV回车事件
导语:function alv相对于ooalv没有那么灵活,但是该有的东西也都有,只不过实现方式不同,下面说一下function alv回车事件如何实现,回车事件一半伴随着ALV编辑,以及编辑后优化列宽,以前都有分享过。【????ALV编辑后更新内表】【????ALV编辑后自动优化列宽】一、定义"ALV定义DATA: gt_fieldcat TYPE lvc_t_fcat .DATA: gs_fieldcat TYPE lvc_s_fcat .DATA: gs_layout TYPE lv原创 2021-12-14 15:06:16 · 1720 阅读 · 1 评论 -
ABAP 复制内容到剪切板
导语:SAP程序中可以复制内容到剪切板,在最近做的一个预付款平台有应用,下面简单说一下。类:CL_GUI_FRONTEND_SERVICES方法:CLIPBOARD_EXPORT 内表复制到剪切板CLIPBOARD_IMPORT 从剪切板复制到内表 DATA : BEGIN OF ls_copy, message TYPE char120, END OF ls_copy. DATA : lt_copy LIKE TABLE OF ls_copy. l原创 2021-11-08 10:28:39 · 675 阅读 · 0 评论 -
ABAP 选择屏幕调用SM30
导语:在做功能性开发的时候,时常会有对应的配置表,配置表通过SM30,或者分配事务码给配置表进行维护,还是比较麻烦,下面说一下如何在选择屏幕直接进入配置表进行维护,文末有效果图。前提:给数据库表通过表维护生成器创建一个可以用SM30使用的视图。一、新增一个屏幕按钮在选择屏幕定义好后,在后面增加语句,这里最多可以增加5个,这里用三个进行举例*--SELECTION-SCREENSELECTION-SCREEN BEGIN OF BLOCK blc_001 WITH FRAME TITLE TEXT-原创 2021-10-11 11:11:42 · 2114 阅读 · 2 评论 -
ALV导出到EXCEL数据被截断
导语:最近顾问反馈用户在把ALV导出到EXCEL的时候单号90000001会变成900000就没了,后面会丢失一部分,此问题在ECC环境下产生的,目前S4还没注意到有这样的问题,下面提供一下解决办法。用户操作产生问题截图:问题原因:目前观察是因为这个字段AUFNR他是带有ALPHA例程的数据,虽然在ALV中显示没有异常,但是在导出的时候会因为前置零有问题。解决办法:在字段的fieldcat的格式中,添加上参考表,参考字段。 CASE gs_fieldcat-fieldname.原创 2021-05-24 14:37:12 · 485 阅读 · 0 评论 -
ALV TREE DEMO
导语:关于alv tree网上的资料比较少,在这里分享一个简单的demo这个也是我通过网上找的一个demo自己修改测试了一下,原文章的链接找不到了,后续有时间我会测一下事件,再分享alv tree的资料。具体代码如下,只需要建一个screen就可以用了,屏幕上的控件我定义的名字就是alv tree,里面的注释还算明确。*&---------------------------------------------------------------------**& Report Z_A原创 2021-05-19 12:12:47 · 358 阅读 · 1 评论 -
ALV小计
导语:最近开发程序的时候,用户方有需求为特定商品以月维度看每天的销售明细,然后还要在没个月最后一单下面显示出月汇总,这就属于分组汇总的意思了。标准的合计按钮只能合计一列的所有,下面说一下具体实现方式。我一般喜欢用OOALV来做东西,下面我举例销售订单按单汇总,展示出每单有多少个数量。关键要素:IT_SORT ,IT_FIELDCATALOG. CALL METHOD g_grid->set_table_for_first_display EXPORTING is原创 2021-05-11 11:21:58 · 769 阅读 · 1 评论 -
ALV可编辑金额/数量字段输入后缩小100/1000倍
导语:最近在做一个给用户使用的前天维护批价的ALV的时候,不小心漏下了一个点,导致用户输入金额为18,ALV最后展示为0.18,小数点提前了两位,这样只有输入1800,才会变成18.00,下面分享一下解决办法。SAP对于数量或金额字段总有一些特殊的点来进行控制,比如建表的时候要有参考表明,参考字段,在ALV中对金额也有一定的限制,需要在设置字段格式的时候,将DATATYPE赋值’CURR’,才可以正常使用。"在定义字段格式的时候,加上如下代码CASE gs_fieldcat-fieldname.原创 2021-04-06 10:11:57 · 2362 阅读 · 0 评论 -
ABAP弹窗函数使用方法
导语:最近在写通用接口生成器,因为最终是要面向用户使用的,让用户通过配置完成接口开发,实现【零代码】,所以就要在程序里加很多友好的提示性报错,其中就用到了弹窗报错,在这里分享一下。SAP有一个标准的ALV展示弹窗,这里就不详细说ALV弹窗怎么实现了,直接调用就好了,后期会专门写一篇如何创建OOALV弹窗。标准的函数名为:UPC_ALV_POPUP,可以自己定义位置以及长宽高,入参的内表可以随意定义,不局限于示例中的bapiret2,内表参考的数据库表描述会直接展示在弹窗的抬头,这个函数我一般只用来做提示原创 2021-02-02 11:47:38 · 853 阅读 · 2 评论 -
ALV编辑后更新内表
导语:应该很多刚学习ABAP开发的小伙伴都碰见过这样的问题,就是ALV输入值后,不会更新到内表,我刚开始做的时候也发生了这样的事情,下面简单说一下如何在ALV字段更新时,就将数据传入内表。方法一:在回车的时候将数据写入内表在ALV展示之前注册一下修改事件,代码如下 DATA : g_grid TYPE REF TO cl_gui_alv_grid. CALL METHOD g_grid->register_edit_event EXPORTING i原创 2021-02-01 16:40:19 · 1356 阅读 · 0 评论 -
ABAP隐藏F8执行按钮
导语:最近在写接口生成器,用docking画的屏幕,所有按钮都是自定义的,所以就不需要使用【F8】执行按钮,下面说一下如何隐藏F8按钮。代码要写在【INITIALIZATION】事件下DATA :it_exclude TYPE TABLE OF sy-ucomm.INITIALIZATION. APPEND 'ONLI' TO it_exclude. CALL FUNCTION 'RS_SET_SELSCREEN_STATUS' EXPORTING p_status =原创 2021-01-29 18:24:16 · 749 阅读 · 2 评论 -
ABAP DATABASE储存数据到系统
导语:最近在写一个通用接口生成器,在翻阅资料得时候偶然发现了一个语法,就是将内表数据保存在database上(可能这里描述的不太准确),而不是数据库表里,这样可以在不储存到数据库表的情况下,形成一个版本的概念,在这里分享一下。其实这个语法是一套的,一个储存,一个读取,都是在DATABASE上完成的。储存语法EXPRORT 储存名称 = 内表名称 TO DATABASE indx(st) ID 储存ID."示例DATA :g_indxid TYPE indx_srtfd.g_indxid原创 2021-01-29 16:36:33 · 1527 阅读 · 4 评论 -
ALV隐藏GUI状态/应用程序工具栏
导语:个人在开发中一般喜欢用OOALV,这里就涉及到GUI状态的工具栏和容器的工具栏了,一般来说我们会COPY一个标准的GUI状态过来,【】,同时在CALL SCREEN的时候也会有一个自带的应用程序工具栏,今天这里讲一下如何隐藏GUI状态/应用程序工具栏一、两者同时存在,不太美观二、隐藏上面的工具栏在对应的SCREEN里有一个复选框【无应用程序工具栏】选中就可以了效果展示:二、去掉下面的工具栏在LAYOUT的属性参数里有一个【NO_TOOLBAR】来控制下面的工具栏是否展示* 定义列自原创 2021-01-23 10:08:56 · 1857 阅读 · 1 评论 -
ALV编辑后自动优化列宽
导语:最近开发了一个修改商品主数据的OOALV报表,毕竟用户不能使用SE16N,但是MM42又只能一条一条修改,很麻烦,这里就涉及到了指定列可编辑,以及优化列宽,业务顾问希望人性化一点,进来的时候优化列宽,然后输入完再优化列宽,我直呼,好家伙。OOALV的优化列宽是在layout里边控制的,实现在首次进入的时候优化列宽,需要设置gs_layout-cwidth_opt = ‘X’,不知道是我设置有问题还是咋回事,结果并不理想,商品编码没有全部展示出来。在【输入之后自动优化列宽】需要一段代码,因为我这里原创 2020-12-09 10:00:36 · 2838 阅读 · 0 评论 -
ALV单元格可编辑或不可编辑
说明:项目中和涉及到一些关于OOALV的需求,其中有一个就是业务顾问希望可以让用户编辑指定的单元格,而不是所有的单元格,降低一下用户操作中的风险,所以这里就涉及到了【指定单元格可编辑】。首先,在定义内表的时候添加一个定义,我这里习惯用【celtab】 celtab TYPE lvc_t_styl然后再layout中也添加一个定义 gs_layout-stylefname = 'CELTAB'.最后在你希望的条件下写代码来实现,这里我喜欢用perfrom,这样简洁一点。编辑状态原创 2020-11-19 15:50:59 · 3384 阅读 · 0 评论 -
ALV光标移动事件
导语:最近在做ooalv的时候,为了方便用户使用,一般用户不喜欢没输入完一条数据回车一下,所以附带描述的字段不能及时展示在ALV中,希望可以通过输入信息之后自动带出描述,我还忘了要怎么实现了,想了好一会,写在记录一下。需要在ooalv展示的时候加一个modify事件,其实等同于enter事件。代码如下 CALL METHOD g_grid->register_edit_event EXPORTING i_event_id = cl_gui_alv_grid=>原创 2020-11-18 18:17:06 · 1121 阅读 · 0 评论