抓取SAP报表ALV GRID上的数据

在开发的产销存报表的过程中,由于数据量过大,且取数逻辑太过于复杂,导致报表性能上很缓慢;

后来业务顾问要求直接在MB5B上取数,一开始有点纳闷,怎么从标准报表上取数。

于是从网络上搜索相关资料发现还真有,即将其转摘下来,以做备用。

查看明细…

自定义ALV Grid 通用模板(ALV Grid Template)

ALV 通用模板

在项目中,如若定制的Report开发量较大时,ALV的通用模板则能起到相应的作用;

如若需要开发的Report较少时,还是不适宜用该模板;

 

1.添加自定义 ALV 工具栏

首先,需要为ALV模板创建标准工具栏,新建Function Module:ZCA_ALV_PRINT_SELECTION

然后,通过标准程序拷贝相应的ALV工具栏;

具体操作可以查看前面笔者的愚作:《REUSE_ALV_GRID_DISPLAY_LVC函数输入参数属性的应用》中自定义工具栏的内容。

查看明细…

REUSE_ALV_GRID_DISPLAY_LVC函数输入参数属性的应用

前面我们讲过,ALV Grid 函数的输出有两个:REUSE_ALV_GRID_DISPLAY 和 REUSE_ALV_GRID_DISPLAY_LVC

两者的操作大同小异,只是后者能更好的和ALV容器结合使用,前后则不能;而在输入参数属性的结构上也有些差异。

本篇文章主要讲解下ALV函数中输入参数的一些应用。

 

首先了解下ALV函数输入参数的作用(粗体为常用参数):

I_INTERFACE_CHECK: 检查接口一致性

I_BYPASSING_BUFFER: 是否使用缓存

I_BUFFER_ACTIVE:是否激活缓存,如果每次显示ALV都是相同的字段目录,则该字段目录会被放到一特殊的缓存里,加快显示速度。

I_CALLBACK_PROGRAM:调用ALV的程序名称

I_CALLBACK_PF_STATUS_SET:ALV工具栏Subroutine(子程序)

I_CALLBACK_USER_COMMAND:ALV User Command Subroutine(子程序),实现对应菜单项及相应事件功能

I_CALLBACK_TOP_OF_PAGE:ALV抬头内容信息

I_CALLBACK_HTML_TOP_OF_PAGE:ALV HTML格式抬头内容信息

查看明细…

ALV FIELDCAT添加属性 – REUSE_ALV_FIELDCATALOG_MERGE函数

在上篇文章中,介绍了ALV的两个输出函数,及其 Layout 和 Fieldcat 的相关属性;

在 ALV 定义 Fieldcat 的时候,我们往往需要通过 slis_fieldcat_alv 的赋值给Fieldcat导入结构。

如上篇文章中给出的例子:


DATA: wa_fieldcat TYPE slis_fieldcat_alv ,    
      i_fieldcat  TYPE slis_t_fieldcat_alv ,   
      i_layout    TYPE slis_layout_alv.

wa_fieldcat-tabname     = 'I_TAB'.
wa_fieldcat-fieldname   = 'MATNR'.        " 需要输出的内表的字段名
wa_fieldcat-seltext_l   = 'Material NO.'. " 字段的描述-长字段标签
wa_fieldcat-seltext_m   = 'Material NO.'. " 字段描述-中字段标签
wa_fieldcat-seltext_s   = 'Material NO.'. " 字段描述-短字段标签
wa_fieldcat-fix_column  = 'X' .           " 是否是固定列

APPEND wa_fieldcat TO i_fieldcat.
CLEAR  wa_fieldcat.

查看明细…

ALV简介和Fieldcat与Layout相关参数属性

1.ALV简介

2.ALV报表开发的相关参数及属性

3.Layout的相关属性

4.Fieldcat的相关属性

5.调用ALV输出函数

 

1.ALV简介

ALV(SAP List Viewer) 是SAP常用的屏幕显示列表控件对象,通过传递数据内表方式显示数据;

ALV显示格式分为Grid 和 List两种模式:

Grid模式有栏位选择按钮功能,允许用户直接输出格式,操作更为灵活;

List 模式则固定格式,应用于较严格的标准报表。

查看明细…

VF01 开票BAPI :BAPI_BILLINGDOC_CREATEMULTIPLE

需求:合并开票
同一种发票类型的开在一张发票上,不同类型的发票类型开在不同发票上;
即:同一客户、销售组织、开票类型的结算单,开在同一张发票上。

也可以通过 VF04 合并开票。
如若通过BAPI,则可以通过 BAPI_BILLINGDOC_CREATEMULTIPLE 开票:

查看明细…

FOR ALL ENTRIES 优化

该语法在生成 Native SQL 时会根据内表数据将 Open SQL 拆分成多条在数据库中执行,在内表数据量较大的时候会发生性能问题.

优化 FOR ALL ENTRIES 可以在全局配置参数文件;

针对单独的程序可以使用 HINT 语句 覆盖参数文件的值。

 
查看明细…

SAP 基本单位与物料计量单位间的转换

基本单位的转换函数

UNIT_CONVERSION_SIMPLE  - 基本单位间的转换(如:1MIN = 60S)

物料单位转换的两个函数

1) MD_CONVERT_MATERIAL_UNIT  -  计量单位之间转换(如:每PCS 等于多少 SET)

2) MATERIAL_UNIT_CONVERSION  - 每基本单位等于多少计量单位(如:KG),如果KZMEINH = ‘X’ 则为每计量单位等于多少基本单位

 
查看明细…

生产订单完工确认(CO11N) BAPI : BAPI_PRODORDCONF_CREATE_TT

生产完成后,需要对产品进行完工确认(也叫 报工确认);

一般情况下,可以通过事务码(T-Code)CO11CO11N 进行确认。

 

对于一些零配件的生产时,往往需要确认大量的数量,因而有些用户就会有批量报工的需求。

批量报工可以通过两种方式实现:录制BDC 或者 Call 系统标准 BAPI

1) 录制BDC这里就不讲述了,直接在CO11N上录屏即可;

2) Call 系统标准 BAPIBAPI_PRODORDCONF_CREATE_TT.

查看明细…

ABAP 开发系列(09): ABAP 数据字典

SAP ABAP 数据字典ABAP Dictionary)SAP定义和管理数据的主要工具,是 ABAP Workbench 的重要组成部分。

通过数据字典可以定义系统中的各类数据对象,包括数据类型、数据结构、数据库表、视图等。

数据字典中的所有对象可以供所有SAP程序使用。

用户也可以创建自定义表,称之为Add-On表,一般通过字母 ‘Z’ 或者 ‘Y’ 开头定义。

 
查看明细…

ABAP 开发系列(08): SAP Open SQL

在前面我们介绍ABAP WorkBench时了解到 SAP 的三层架构:

表现层(Presentation),应用层(Application),数据层(Database)

Open SQL就发生在 Application 和 Database 之间;

SAP Application将发送的Open SQL请求,与Database进行匹配,转换成接受的SQL语句,

DB再执行SQL,将结果返回给Application。

 
查看明细…

ABAP 四舍五入函数

ABAP 中处理数据的函数方法很多,其中涉及到四舍五入的有两个(可能还有更多):ROUNDHR_NZ_ROUNDING_DECIMALS

前者位于Basis功能开发包 SZME 里面,在标准中用于计量单位的计算;

后者主要用于HR模块,位于 PB43 开发包,处理HR模块中的主数据。

 
查看明细…

ABAP 开发系列(07): 模块化 – 子程序

4. 模块化(Modularization)

ABAP 主要有三种模块单元:

1).Event:事件
2).Subroutine子程序
3).Function module:功能模块

这里主要讲解的是第2种模块单元: ABAP子程序 (Subroutine)

它是包含在程序中的一段功能代码,单独作为一个小程序封装并包含在主程序中;

特别是主程序中多次用到的代码,可以抽离出来,放在子程序中,方便多次使用。

以便于分析与简化代码可读性,更主要的是能便于程序的维护。

 
查看明细…

ABAP 开发系列(06): ABAP 控制语句

3. 控制语句

ABAP语言的掌握到一定程序后,会处理一些复杂的内容,而SAP的数据流控制中,更有很多复杂的逻辑操作。

这时候需要一些手段来管理和组织这些项目,ABAP的分支结构,如 if,case;循环操作,如 Do,While 等。

以便程序按照所需要的逻辑处理相应的任务。

 
查看明细…