08 2019 档案
摘要:在SAP系统中,通过SE11显示一个table的内容,可以发现ALV grid的显示界面上有个spread sheet的标准按钮,点击这个按钮可以将显示的内容下载成excel文件,其中也包括扩展名.xlsx的文件。 这个功能很方便,因为下载的结果和ALV中看到的是一样的。 debug研究了一下标准代
阅读全文
摘要:函数组SCMS_CONV下包含了若干字符串转换的函数,包括二进制,文本,string,xstring之间的相互转换, SCMS_BINARY_TO_FTEXT SCMS_BINARY_TO_STRING SCMS_BINARY_TO_TEXT SCMS_BINARY_TO_XSTRING SCMS_
阅读全文
摘要:1, 问题描述 table control的垂直滚动条(scroll)不起作用,不能向下滚动。 2, 问题解决 查看代码,发现table control不是wizard创建的,是自己写的,漏掉了下面一段代码,计算一下table control对应的内表的行数,在PBO中加上之后scroll就起作用了
阅读全文
摘要:选择画面中有两个radio button,点击不同的radio button,显示不同的选择条件,并且做必输项检查,如下: 选择download,显示plant和sales Document两个条件 选择Upload,显示File name, 实现代码, 注意:屏幕字段必输属性设置时,要赋值2(sc
阅读全文
摘要:利用SALV可以简单的实现一个alv弹出窗口,代码如下: 运行结果: 以上。
阅读全文
摘要:SAP提供了很多随机数生成的函数,可以在SE37中查到。 下面介绍其中三个. 1, CACS_RANDOM_I4 CACS_RANDOM_I4能生成正整数随机数。 2, <!--StartFragment -->QF05_RANDOM_INTEGER 3, <!--StartFragment -->
阅读全文
摘要:在执行一些数据量大的程序时,通常在程序下方的状态栏中加一个秒表用来显示进度,供用户了解程序运行到什么程度。实现方法有如下两种: 1, SAPGUI_PROGRESS_INDICATOR 常用而古老的方法,调用<!--StartFragment -->SAPGUI_PROGRESS_INDICATOR
阅读全文
摘要:1, 问题描述 用excel上载大数据量的BOM数据到SAP系统中,一次上载的数量级别在10万条左右,这时用ALSM_EXCEL_TO_INTERNAL_TABLE上载时会dump,查看了代码发现ALSM_EXCEL_TO_INTERNAL_TABLE中是将数据先保存到剪贴板(<!--StartFr
阅读全文
摘要:选择画面上创建按钮,并且在按钮上通过<!--StartFragment -->ICON_CREATE()添加图标。 代码: 运行效果: 以上。
阅读全文
摘要:1, 前台操作 Tcode:CSKB 输入销售订单号和行项目,点击start order browser展开订单BOM(order BOM). 找到对应的物料,右键display 可以看到链接的文档信息, 2, 例子程序 可以通过函数<!--StartFragment -->BAPI_DOCUMEN
阅读全文
摘要:通常SAP系统中的表维护视图(sm30)把所有数据都显示在一个屏幕上,没有筛选,如下,左图是sm30,右图是SE11中的表数据显示。 如何要按条件进行筛选,要用到<!--StartFragment -->VIEW_RANGETAB_TO_SELLIST创建筛选条件内表, 例子程序如下: 简单介绍:
阅读全文
摘要:下面介绍将smartforms转换成PDF文档,然后下载的实例以及相关的代码。 1, 创建smartform Tcode:smartforms创建一个简单的smartform 添加一个文本节点, 2, 创建程序 创建程序生成smartform,然后通过<!--StartFragment -->CON
阅读全文
摘要:介绍一个项目中经常会遇到的场景:将smartform转化成PDF,然后再把PDF作为邮件的附件发送出去。 1, 创建smartform Tcode:smartforms创建一个简单的smartform 添加一个文本节点, 2, 创建程序 创建一个abap程序,简单逻辑如下: 1,生成smartfor
阅读全文
摘要:介绍一个有趣的函数<!--StartFragment -->SYSTEM_CALLSTACK(),这个函数可以得到abap程序执行的堆栈,包括事件(event),form。。。 例子代码如下: 执行结果,先触发事件 start-of-selection,然后调用frm_call,最后是frm_out
阅读全文
摘要:OO ALV中经常会用的行单击,行双击,application tool bar上添加按钮以及按钮的相应事件,如下: 1,单击:handle_hotspot_click 事件 2,双击:handle_double_click 3,工具栏上添加自定按钮: handle_toolbar,其中,butn_
阅读全文
摘要:SAP系统中用Excel上载数据时,为防止用户用错模板,可以将excel模板保存在SMW0中,每次上载前通过程序再从SMW0下载下来。 1, SMW0 模板上载 Tcode SMW0选择‘Binary data...'选项 输入package,运行 进入下一屏后,点击创建按钮添加excel文档, 如
阅读全文
摘要:如何传输请求(TR)已经释放了,就不能通过SE01更改它的描述, 这时只能用非法手段,直接更改保存传输请求(TR)的数据库表E07T中的描述字段AS4TEXT,表Eo7T是E070的文本表,TR的相关信息是保存在E070中的。 直接更改表的方法-->通过Debug直接更改数据库表中数据 以上。
阅读全文
摘要:用<!--StartFragment -->STARTING NEW TASK 方式调用函数ABAP4_CALL_TRANSACTION,会打开一个新的窗口(session)运行tcode。 函数ABAP4_CALL_TRANSACTION本质上是封装了<!--StartFragment -->CA
阅读全文
摘要:调用类cl_abap_structdescr中的方法<!--StartFragment -->describe_by_data()和<!--StartFragment -->get_ddic_field_list()能得到表或结构的列名字(colomn name). 代码: REPORT ztest
阅读全文
摘要:SAP提供了一个类CL_ABAP_ZIP来创建.zip扩展名的压缩文件。 代码: 先将文件通过<!--StartFragment -->cl_gui_frontend_services=>gui_upload以BIN的文件类型上载,然后通过<!--StartFragment -->cl_abap_z
阅读全文
摘要:下面介绍如何在在表维护视图(maintenance view)的工具栏上添加自定义按钮,如下红框内的眼睛按钮。 步骤如下: 1, 创建表维护视图 SE11,输入自定义表名 ZLM_TEST_MT,通过菜单进入table maintenance generator或者直接SE54进入 如下输入相关信息
阅读全文
摘要:SAP项目有会要动态显示ALV列的需求,就是ALV的列数量不固定,这是就要用到动态内表的技术,动态内表通过<!--StartFragment -->cl_alv_table_create=>create_dynamic_table来创建。 完整代码: 运行结果: 选择画面上输入alv显示的列数目,
阅读全文
摘要:可以通过MM03产看物料的单位转换关系, MM03进入显示物料,点击additional data按钮, 在units of measure tab页中可以看到物料维护的单位转换关系,1pc = 50 M 这个物料单位转换可以通过调用函数MD_CONVERT_MATERIAL_UNIT实现, SE3
阅读全文
摘要:开发文件上载或下载的程序时,经常会遇到拆分全路径名的情况,就是从全路径名(full path name)中得到文件名和路径。 这个可以通过函数STPU1_EXTRACT_FILENAME实现, SE37 当然也有其他函数能实现这个功能,比如SPLIT_FILENAME,不过它支持的全路径名长度有限,
阅读全文
摘要:SAP提供了一个XML相关类cl_xml_document_base,通过这个类可以将abap程序中内表中的数据转化成XML格式的数据,然在再下载到本地。 方法<!--StartFragment -->create_with_data:转换内表数据到XML格式 方法<!--StartFragment
阅读全文
摘要:可以调用函数<!--StartFragment -->RS_SET_SELSCREEN_STATUS隐藏选择画面中状态栏中的按钮,比如运行按钮(function code是‘ONLI’)。这个功能键可以通过/HS 启动系统debug(System Debugging)得到,如下: 系统变量 sy-u
阅读全文
摘要:ABAP程序中的ALV显示是很常用的一种数据展示手段,除了常规的alv,有时也会用到ALV tree这种有层次结构的展示方式更好的展现数据,下面介绍一个创建list alv tree的方法: 1)用函数RS_TREE_CONSTRUCT构造alv 树的层次结构, alv tree的节点类型(node
阅读全文
摘要:介绍几个abap中的弹出选择框函数: 1, POPUP_TO_DECIDE_LIST 弹出供选择窗口,最多为25个选项选择可以是单选或是多选. 缺点是弹出窗口的大小不能设置,只和<!--StartFragment --> textline1/textline2中的文本长度相关。 代码: 2, POP
阅读全文
摘要:ABAP开发中经常会对字符串操作,下面列出一些相关命令/函数: SHIFT STRING:左移字符串。长度减1。CONCATENATE:连接字符串。SPLIT:拆分字符串。SEARCH:查询字符串。REPLACE:替换字符串。CONDENSE:删除多余的空格。TRANSLATE:转换字符格式,如将'
阅读全文
摘要:使用REUSE_ALV_GRID_DISPLAY_LVC显示ALV时,如何将列、行或者具体的某个单元格设置成可编辑能输入状态?这个其实很简单,下面一一讲解: 1, 列可编辑 只要将catalog中的字段edit设置成‘X',整列就变成能输入的了,LVC_S_FCAT-EDIT 代码: 运行结果: 2
阅读全文
摘要:下面介绍SAP SD的销售订单外向交货单按批次拆分(Batch-Managed),包括前台操作和调用bapi ‘BAPI_OUTB_DELIVERY_CHANGE’ 实现。 1, 前台操作 按批次拆分操作: 外向交货单Tcode: VL02n 选中10行项目,点击‘批次拆分’按钮,填写批次后,回车,
阅读全文
摘要:UUID含义是通用唯一识别码 (Universally Unique Identifier),通俗一点就是一个不重复的字符串,有时会把UUID作为数据库的一个主键,这样就不用担心主键重复的问题。 SAP中有个专门生成CL_SYSTEM_UUID,提供了4个静态方法创建生成不同类型的UUID:2进制,
阅读全文
摘要:1, BADI ‘BOM_UPDATE’介绍 SE18,查看BADi BOM_UPDATE,Chage_AT_SAVE就是BOM创建和修改保存时触发的方法,也就是CS01,CS02保存时触发 输入参数: 2, 实例业务场景 公司实际业务过程中,设计变更比较频繁,导致BOM的组件也要经常修改更新,在用
阅读全文
摘要:全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。SAP也提供了几个函数来创建生成GUID。 /IBS/RB_GENERATE_GUID ISH_N2_RAD_GENERATE_GUID RS_DME_MG_GENER
阅读全文
摘要:ABAP程序中使用REUSE_ALV_GRID_DISPLAY_LVC显示alv,如何实现行选择功能?方法如下: 1,在输出内表中,定义一个C类型字段用来标记哪些行被选中,选中的为‘X’ 2,在LVC_S_LAYO-BOX_FNAME 中指定1中定义的行选择字段 完整代码: 为程序创建一个statu
阅读全文
摘要:ABAP程序中调用REUSE_ALV_GRID_DISPLAY_LVC显示ALV,经常会有双击某行或某字段跳转到其他tcode的需求。下面简单介绍一下。 双击事件的ucomm是'&IC1'. 完整代码: 运行: 跳转到me23n显示采购订单3000000100 以上。
阅读全文
摘要:一个简单的调用REUSE_ALV_GRID_DISPLAY_LVC显示ALV的abap程序模板。 实现一下几个简单功能: 1,双击跳转-‘&IC1’ 2,在自定义状态栏(status)上添加按钮,copy自函数组KKBL中的status。 SE80: 3,行选择功能 基本上能满足简单的ALV显示。
阅读全文
摘要:介绍两个SAP函数FREE_SELECTIONS_DIALOG和FREE_SELECTIONS_INIT,通过这两个函数能生成基于某个数据库表的动态选择屏幕。 比如要根据销售订单抬头表VBAK生成动态屏幕, 对应的完整代码: 运行结果: 然后可以按需要将左侧的vbak中的字段,选到右边生成选择屏幕。
阅读全文
摘要:一段创建动态内表和动态select数据库表的abap程序。 逻辑如下: 1,通过<!--StartFragment --> cl_abap_tabledescr=>create()创建动态内表 2,通过动态Select语句抽取数据库表数据 3,ALV显示 完整代码: 运行: 输入表T000,运行,
阅读全文
摘要:利用类CL_ABAP_ELEMDESCR中的方法GET_C()可以创建动态长的字符串, 当然还可以调用其他方法 GET_I,GET_F,GET_N等等创建动态长的I,F,N类型的数据。 代码: 运行:超出7位的就被截断不显示了。
阅读全文
摘要:如果仅仅知道类方法中某个参数的名字,如何找到用到这个参数的类方法呢? 其实很简单,可以通过表SEOSUBCO来查询。方法如下: SEOSUBCO-SCONAME字段中保存的就是参数名字,CLSNAME中是类的名字,CMPNAME是方法名字 SE24中验证一下类CL_SQL_CONNECTION中的m
阅读全文
摘要:SAP类 cl_proxy_ui_utils中提供了一个方法show_xml_diff,可以比较两个XML文件的差异点,并以不同颜色显示两个xml的差异之处。 代码: 其中可以通过SCMS_BINARY_TO_XSTRING,将xml转换成xstring,实际上最后比较的就是这个xstring 显示
阅读全文
摘要:函数DAY_ATTRIBUTES_GET可以查看某日期的一些属性,比如:是否是休息日,是否是节假日,星期几的描述。 SE37,输入工厂日历,factory_calendar,运行: 在输出table day_attributes看结果: 其他: 工厂日历和节假日可以通过表TFACD查看,TFACD-
阅读全文
摘要:1, 拆分字符串split 语法: 代码: 2, 连接字符串Concatenate 语法: 代码: 显示结果: 在 C1 到 C5 之间,忽略 尾部空格。 分隔符 SEP 保留尾部空格。 3, 获得字符串长度STRLEN 语法: 代码: 显示结果: 请注意,STRLEN 将操作数 <c> 作为字符数
阅读全文
摘要:1, 替换字段内容REPLACE 语法: REPLACE <str1> WITH <str2> INTO <c> [LENGTH <l>]. ABAP/4 搜索字段 <c> 中模式 <str1> 前 <l> 个位置第一 次出现的地 方。如果未 指定长度, 按全长度搜 索模式 <str1>。 然后,语
阅读全文
摘要:1, 问题描述 ALV单元格在可输入状态下,金额和数量类型的字段小数点的位置会发生错误,数量是quan类型,金额是curr类型,如下: 错误情况如下:qty输入66,结果显示0.066小数点提前3位,差1000倍,price输入7,结果显示0.07,小数点提前两位,差100倍。 2, 问题解决 方法
阅读全文
摘要:总结了ABAP程序开发中,经常会用到的一些客户主数据相关的表,如下: 1、KNA1:客户主文件的一般数据 2、KNB1:客户主数据 (公司代码) 3、KNVV:客户主记录销售数据 4、KNVP:客户主记录伙伴功能 5、KNVK:客户主要联系伙伴 6、KNAS:客户主数据(一般地区的增值税登记号) &
阅读全文
摘要:1, 问题描述 在多clientSAP系统中修改abap程序时,经常会遇到下面的提示信息: “Carry out repairs in non-original system only if they are urgent” 然后强制修改时,会有些代码不能编辑 这是由于程序是在另外一个client创
阅读全文
摘要:介绍一个PP模块的BAPI, “BAPI_PRODORD_GET_DETAIL”,通过这个BAPI能取得PP订单的详细信息. 具体能读取的详细信息包括: 抬头(Header) 行项目(Item) 工序中的Sequence 工序(Operation) 子工序(Suboperation or secon
阅读全文
摘要:1, 视图簇介绍 SAP系统中经常会看到有层次结构的可以维护数据的屏幕,比如Tcode OMT3: 这个其实就是视图簇(View cluster),是通过SE54将多个表维护视图按照一定的关联关系链接起来,形成层次结构,方便维护数据。 用SE93查看OMT3,看到实际上维护视图簇是调用了Tcode:
阅读全文
摘要:通过vl02n可以修改包装单元(handling unit)的用户状态,如下图: 调用函数HU_STATUS_UPDATE也可以更新HU的用户状态。 例子代码:
阅读全文
摘要:下面介绍一下如何如何在table control中创建单选按钮(radio button),其实很简单, 只要右键点击table control中的单元格,通过convert->radio button->left button或right button就可以将单元个转换成radio button。
阅读全文
摘要:在AT SELECTION-SCREEN ON VALUE-REQUEST事件中,是不能直接取得选择屏幕字段的默认值或输入的值,而是需要通过函数<!--StartFragment --> DYNP_VALUES_READ读取。 例子程序: debug截图: 发现,虽然P_folder有初始默认值z:
阅读全文
摘要:ABAP语言中提供了好几种ALV的展示方式,比如grid alv,SALV,list alv,OO alv等等。 不同种类alv对应的一些数据结构也是不一样的,比如,OO alv(也就是调用<!--StartFragment --> grid->set_table_for_first_display
阅读全文
摘要:1, List ALV 通过调用函数REUSE_ALV_LIST_DISPLAY实现。List AlV显示如下: 2, Hierarchical sequential list 有层次结构的ALV对应的函数REUSE_ALV_HIERSEQ_LIST_DISPLAY。界面显示如下: 3, Tree
阅读全文
摘要:1, 用到的函数,类方法 下面介绍一个能根据所选表字段自动创建动态select-options的例子代码,代码中用到了以下函数和类方法: 1,<!--StartFragment --> FREE_SELECTIONS_INIT:初始化动态选择画面 2, FREE_SELECTIONS_DIALOG:
阅读全文
摘要:1, 简介 在网上第一次看到有人用BAPI BAPI_PATIENT_CREATE创建病人主数据,特此转贴记录一下。 SE37 2, NEW_PATIENT_DATA为空 调用之后,如果没能成功创建任何数据(NEW_PATIENT_DATA为空), 该问题有几种可能性: 3, 地址数据没有更新 调用
阅读全文
摘要:1, 简介 整理了一段代码,实现上载本地图片到SAP的数据库表中,并且显示在屏幕上。 其中用到了一下函数: 1, GUI_UPLOAD:上载图片文件 2,<!--StartFragment --> SCMS_BINARY_TO_XSTRING:将图片文件转换成xstring 3,<!--StartF
阅读全文
摘要:1, READ_TEXT参数填写 可以通过函数READ_TEXT读取物料BOM行项目和抬头上的长文本。本文着重介绍如何读取物料BOM行项目上的长文本。 SE37: 读取物料BOM行项目长文本时,函数READ_TEXT的参数如下: ID:<!--StartFragment --> 固定值 ‘MPO’
阅读全文
摘要:1, 问题描述 调用函数<!--StartFragment --> CSAP_ORD_BOM_CREATE创建订单BOM,在创建Variable-size item时,一切正常只是发现字段Qty Var-Sz Item更新失败,总是用系统自动计算出来的值来替代函数输入的值。 CS63前台查看, 看了
阅读全文
摘要:下面介绍如何在ALV头中显示Logo图片的方法,其中ALV是调用函数REUSE_ALV_GRID_DISPLAY创建的。详细步骤如下: 1, OAER上载Logo Tcode: OAER上载需要显示的LOGO图片, 输入Class name ’PICTURERS',Class type以及Objec
阅读全文
摘要:只要将ICON的名字或ID传送到SELECTION-SCREEN COMMENT中,就可以在选择画面中显示ICON图标。 ICON的ID和名字可以在type pool ICON中得到: 也可以通过表ICON看到图标的样子 代码如下: 显示结果: 以上。
阅读全文
摘要:可以通过函数COPO_POPUP_TO_DISPLAY_TEXTLIST为选择画面中字段创建一个简单的F1帮助文档。 代码: 为选择画面中的一个checkbox创建F1帮助文档。 运行结果: 以上。
阅读全文
摘要:函数RS_REFRESH_FROM_SELECTOPTIONS可以取得选择画面中的select-option和parameters的输入值。 代码如下 测试: 选择画面中输入需要的值: 运行结果: 以上。
阅读全文
摘要:下面通过一段代码介绍如何在选择画面中显示图片。 1, SMW0上载图片 Tcode:SMW0,选择Binary的选项 由于是测试,选择$TMP本地package,然后运行进入下一屏幕, 上载图片,命名为ZPIC,程序中会用来标识图片的。 2, 例子代码 3, 测试运行 以上。
阅读全文
摘要:下面介绍调用REUSE_ALV_GRID_DISPLAY_LVC创建ALV时,如何显示单选按钮(radio button),以及对应的单选按钮选择相应。 简单逻辑: 1,radio button的ICON:<!--StartFragment --> '@TB@' <!--StartFragment
阅读全文
摘要:1, 问题描述 ALV显示时,使用标准的ALV工具栏上的过滤功能,发现不起作用,如下,对Change Indicator列过滤失效,不能正确显示过滤结果。 2, 问题解决 失效的原因其实就是,alv中显示的内容中有小写字母,但是过滤的时候会默认输入的都是大写,大小写不匹配导致过滤失败。 解决办法:
阅读全文
摘要:有时在进行字符串处理的时候,需要将字符串中的数字提取出来,这个数字可能是金额或者数量。 比如:需要将‘2.5 days’中的2.5提取出来。 通过函数<!--StartFragment --> PREPARE_STRING可以快速实现这个功能。此函数可以用来实现将字符串中非法字符删除的功能,也就是保
阅读全文
摘要:1, CONVERT_OTFSPOOLJOB_2_PDF 无论是SAP script还是smartform,要想转换成PDF其实就是通过Spool list中的Spool ID转换的。 可以用于PDF转换的函数有几个,这里介绍<!--StartFragment --> CONVERT_OTFSPOO
阅读全文
摘要:可以通过函数ICON_CREATE将alv中的单元格(Cell)变成ICON. 代码如下: 另外不要忘了声明一个TYPE-POOLS:icon. 显示结果: 以上。
阅读全文
摘要:1, 介绍 一般来说可以通过函数CLAF_CLASSIFICATION_OF_OBJECTS读取物料的特性值。 不过有的场合下,需要根据特性值来筛选物料,比如说在SAP系统抽取所有特性A为’5‘的物料,这时就不能利用CLAF_CLASSIFICATION_OF_OBJECTS来便利全部物料了,效率低
阅读全文
摘要:可以通过函数<!--StartFragment --> STATUS_TEXT_EDIT读取销售订单的用户状态(user status)以及系统状态(system status)。 SE37: 其中输入参数OBJNR的格式如下: VB+销售订单号+销售订单行项目号,如果读取header的状态行项目号
阅读全文
摘要:1. 前台操作 可以通过函数VC_I_GET_CONFIGURATION读取销售订单行项目上的特性值。 前台操作,tcode VA03,双击进入行项目 双击Characteristics 按钮 可以看到特性 Actual Lead Time-total 有值,16.0 days,双击右边的叹号按钮。
阅读全文
摘要:1, CP_EX_PLAN_READ 可以通过函数<!--StartFragment --> CP_EX_PLAN_READ对PP模块中的routing进行展开。 SE37,展开的结果放在各个Table参数中。 2, 前台操作 前台可以通过tcode:CA03来查看routing的展开 输入物料,工
阅读全文
摘要:1, 前台操作 在前台可以通过tcode:CO03查看生产订单工序。 选择order entered 选项,输入生产订单 进入到工序的详细屏幕: 2, 例子代码 可以通过函数<!--StartFragment --> PM_ORDER_DATA_READ来读取生产订单下的工序(operation),
阅读全文
摘要:TCode:SU01或SU3中可以看到用户参数文件(user profile)中的parameter : 这个parameters可以通过函数<!--StartFragment --> BAPI_USER_GET_DETAIL 例子代码 运行结果: 也可以在表USR05中直接抽取数据: 以上。
阅读全文
摘要:在abap程序的BDC录屏中,数量和日期格式是和su3中的设置相关的,如果格式不一致BDC会报错。 Tcode:SU3,可以看到小数点,日期格式以及时间格式的设置。 所以在处理数量,日期和时间时要用write to转换一下: 数量转换: 注意不要忘了单位 UNIT 日期时间: 调用CONVERT_D
阅读全文
摘要:Tcode:VA03进入销售订单显示屏幕,点击header按钮。 可以看到订单货币和本位币之间的汇率(exchange rate) 订单货币:VBAK-WAERK 汇率:VBKD-KURSK 本位币保存在表TVKO中的字段TVKO-WAERS,可以根据销售订单采购组织(Sales Organizat
阅读全文
摘要:SAP后台Job数据保存在表TBTCP/TBTCO中,也可以通过视图V_OP查看。 TBTCO: TBTCP: view: V_OP 前台可以通过SM37查看后台job: 以上。
阅读全文
摘要:ABAP提供了一个函数K_WERKS_OF_BUKRS_FIND能取得公司代码下的所有工厂。 SE37 以上。
阅读全文
摘要:可以通过函数TH_POPUP给指定用户发送系统消息。 SE37测试: 输入client,用户名以及要发送的SAP系统消息,运行: 运行结果: 以上。
阅读全文
摘要:在登录SAP系统的时候,经常会看到一个弹出的对话框,这个是通过tcode SM02实现的,如下: SM02,点击创建按钮,然后在弹出的窗口中输入消息内容,服务器和语言以及有效时间段。 以上。
阅读全文
摘要:在用户登录SAP系统时会自动触发用户出口SUSR0001,tcode SMOD显示如下: CMOD创建project,然后代码写在下面的include中, 以上。
阅读全文
摘要:可以通过 BAPI_COSTELEMENTGRP_GETDETAIL取得成本要素组(cost element group),也就是tcode KAH3对应的bapi是BAPI_COSTELEMENTGRP_GETDETAIL。 例子代码: 其中输入参数 1, CHARTOFACCOUNTS和cont
阅读全文
摘要:SAP系统中有两种内存: 1,ABAP内存 简单说来一个session就是登录SAP系统开的窗口。 可以通过abap内存实现同一session中的数据交换。具体使用到 EXPORT 和IMPORT memory id 语句,这里不详细讲述。 2,SAP内存 在整个登录过程中,可以通过SAP内存实现多
阅读全文
摘要:Alv grid/OO ALV中有两个事件(Event):data_changed和ata_changed_finished. 第一个事件在可编辑字段的数据发生变化时触发,可用来检查数据的输入正确性,第二个事件是当数据修改完成后触发 如果数据没有被修改,当失去焦点(比如输入结束后,光标移动到下一个需
阅读全文
摘要:经常会在ALV的状态栏上加入自定义的按钮(button),有时还需要动态更改自定义按钮上的文本和图标,如下:开始是修改按钮,点击后变成显示按钮,按钮上的显示的内容可以自动切换。 下面介绍具体实现方法: 1,现在程序中定义一个全局变量,类型是<!--StartFragment --> smp_dynt
阅读全文
摘要:下面介绍一下如何在选择画面中创建下拉列表字段(drop down list box),语法使用到parameter中的as list box,如下: 下拉列表创建完毕后,使用函数VRM_SET_VALUES填入下拉列表值。 例子代码如下: 运行如下: 以上。
阅读全文
摘要:ABAP中,如果可以通过下图方法重新分配函数的函数组。 se37中,点击reassign 按钮可以更改function group。 注意,new function group一定是要激活状态的。可以通过se80激活函数组。 以上。
阅读全文
摘要:下面简单介绍一下如何在abap语言中定义一个嵌套内表(nested internal table),也就是内表中的一个字段也是内表。 1, SE11中定义一个表类型 这里找了一个SAP标准的表类型EKKO_TTY 2, 定义内表时使用table type 例子代码如下,其中字段podata就是嵌套的
阅读全文
摘要:下面简单介绍一下使用REUSE_ALV_GRID_DISPLAY函数时,如何设定单元格颜色,方法比较简单,直接上代码: 测试结果: 第一行的最后一列单元格颜色变为浅绿色。 以上。
阅读全文
摘要:下面介绍一下如何在ABAP程序中创建嵌套动态内表,也就是动态内表中的某个字段也是个内表。 步骤如下: 1, SE11创建表类型 2, SE11创建结构 创建的结构中包含第一步中创建的表类型。 3, 程序中参考这个字段创建动态表的catalog 如下图红框内,然后调用cl_alv_table_crea
阅读全文
摘要:ABAP中可以通过tcode SE84根据方法名查询类名,也就是在已知method名的情况下,找到method所在的class。 SE84-->Class Library-->Methods 输入Method名字然后点击运行。 查询结果: 其他,可以看到,也可以根据attributes, event
阅读全文
摘要:Table Name Description ANAR 资产类型ANAT 资产类型文本ANEA 比例值的资产行项目ANEK 凭证抬头资产过帐ANEKPV 在建工程科目单项视图ANEP 资产行项目ANEV 资产定金结算ANGA 资产目录一般数据ANGB 资产目录折旧范围ANGT 资产目录文本表ANIA
阅读全文
摘要:从网上抄来的程序,没运行过。。。仅供参考: 更新了usr04,ust04,usrbf2这三张表。 ABAP REPORT ZTESTCREATEUSER. data: l_USR04 LIKE USR04 , l_UST04 LIKE UST04 , l_PROFS LIKE USR04-PROFS
阅读全文
摘要:在SAP中没有专门的Tcode创建parameter ID,只能通过SM30给表TPARA添加parameter ID记录来实现。 1, SM30输入TPARA表名,然后点击maintain按钮 2, 输入paramterID名字,然后回车 3, 输入描述点击SAVE按钮 以上。
阅读全文
摘要:可以通过函数<!--StartFragment --> SSFCOMP_PDF_PREVIEW以pdf格式预览smartforms输出结果。 例子代码: 运行结果: 以上。
阅读全文
摘要:下面ABAP代码实现在选择画面中收起/展开部分字段的功能,供参考。 初始化面: 点击Data Collapse按钮后,下面的两个字段收起不显示。 以上。
阅读全文
摘要:ABAP程序中使用call screen弹出窗口时,会涉及到弹出窗口的坐标位置。 Call screen语法如下, 这个starting和ending的坐标(起始坐标是col1 lin1,终止坐标是col2 lin2)对应屏幕位置如下: 以上。
阅读全文
摘要:下面介绍一个不常用的ABAP函数<!--StartFragment --> BKK_POPUP_DISPLAY_LIST,看函数名字就知道,这个函数可以弹出个窗口并在窗口中显示list。 例子代码: 显示结果:
阅读全文
摘要:在使用BAPI BAPI_GOODSMVT_CREATE需要通过制定GM_CODE来确定bapi 模拟的货物移动的事务代码(Tcode)。 相关GM_code保存在表T158G中, GMCODE TCODE: 以上。
阅读全文
摘要:下面介绍一下使用bapi BAPI_GOODSMVT_CREATE为委外订单创建物料移动凭证。 例子代码: 代码不复杂,需要注意的是字段line_id,parent_id,line_depth要填写正确, line_id是用来唯一标识行项目的,委外行要正确制定上层行项目ID,也就是把上层行项目的li
阅读全文
摘要:abap语言中是不能使用select语句直接从维护视图(maintenance view)中抽取数据的,会报错说维护视图在数据字典中不存在,如下: "YEKKO" 没有在 ABAP 字典中定义为表、映射视图或数据库视图。 这时可以通过函数VIEW_GET_DATA来读取维护视图中的数据。 下面通过一
阅读全文
摘要:下面介绍一个通过ref->*和field-symbols创建内表的方法。 代码如下 debug查看一下创建出来EKKO类型的内表, 以上。
阅读全文
摘要:通过Tcode MIR7创建预制发票凭证(Parking invoice)时,可以使用badi MRM_HEADER_CHECK中的HEADERDATA_CHECK方法,对预制发票P凭证的抬头和行项目进行校验检查,并把消息日志通过函数<!--StartFragment --> MRM_PROT_FI
阅读全文
摘要:ABAP中屏幕跳转,通常会先用set parameter语句赋值,然后再使用call transaction语句跳转屏幕,如下: 但是在遇到MIGO这样的Tcode就无法使用set parameter了,因为有些字段是没有parameter ID的。 这时要通过调用函数MIGO_DIALOG进行跳转
阅读全文
摘要:介绍一个简单的可输入的值的弹出窗口函数<!--StartFragment --> POPUP_GET_VALUES_USER_HELP,通过调用这个函数能创建如下样子的弹出窗口,可以看到订单数量字段是可输入的。 字段是否能输入,是通过函数输入table参数fields中的字段field_attr来控
阅读全文
摘要:1,BAPI简介 可以使用BAPI_REQUISITION_RELEASE_GEN对采购申请进行整体的审批,也就是说,无论采购申请有多少行项目,使用此BAPI可以统一审批。 BAPI中的采购申请的审批代码(rel_code),可以从T16FC-FRGCO中读取 2,例子代码 写一个简单的例子代码,实
阅读全文
摘要:取域值 (当一些业务需要的值只有数字或者字母时 ,汉字描述在域里面) &lt;img class="alignnone size-full wp-image-6147" src="http://www.baidusap.com/wp-content/uploads/1554780667.pn
阅读全文
摘要:在SAP中,采购订单和采购申请的审批 使用到的ABAP表主要有: 审批组: T16FG 批准组 (审批组的值表) T16FH 批准组的描述 (审批组的文本表) 审批组中审批代码: T16FC 批准代码 (审批组可用的审批代码) T16FD 批准代码的描述(审批代码文本描述) 审批策略: T16FS
阅读全文
摘要:1,BAPI简介 可以通过调用BAPI BAPI_ALM_ORDER_MAINTAI来更改工单的状态,具体使用到的参数是IT_METHODS。 IT_METHODS的定义如下: 各个字段含义如下: REFNUMBER:是objecttype参数中填入的相关对象对应的内表行数,OBJECTTYPE:对
阅读全文
摘要:表CDPOS和CDHDR中保存了凭证的更改历史,我们可以从这两张表里读取到采购订单和采购申请的更改历史,也可以通过SAP标准函数ME_CHANGEDOC_READ2读取相关更改记录。 其中参数含义如下: I_DOCUMENT_CATEGORY:决定凭证类型,B-采购申请;F-采购订单 I_DOCUM
阅读全文
摘要:极个别情况需要开发人员在测试系统或生产系统直接修改abap代码,如果没有大权限账号的情况下,可以通过debug的方式跳过SAP系统对开发权限的校验,当然前提是要有debug change的权限,也就是可以在debug的过程中修改变量值。 方法如下: 1,SE80 找到函数组STRD, 2,在函数TR
阅读全文
摘要:方法1: Tcode SE24,输入interface名字回车,然后点击[显示对象列表]按钮,就可以看到所有应用到此接口的实施类了。 方法2,通过类 CL_OO_INTERFACE中的方法GET_IMPLEMENTING_CLASSES可以得到全部的实施类。 se24测试: 以上。
阅读全文
摘要:可以通过BAPI BAPI_PO_GETRELINFO 直接读取采购订单PO的审批信息数据,包括审批策略,审批组,审批状态,审批代码,发布标识以及对应的描述,还有审批代码对应的前序审批。 举例说明: Tcode me29n查看一个采购订单PO审批的相关数据,如下: 从中可以看出,这个采购订单有两级审
阅读全文
摘要:在使用sm30维护表数据时,经常会要求一些字段是不可输入的,它们的值要自动带出来,也就是给一个默认值,比如一些描述字段,表数据的维护人,维护日期以及时间。这些是通过SE54中的“事件(EVENT)”来实现的。 下面以一个小例子详细说一下具体的实现过程。 1,首先要有一个表,咔嚓~~~下面这个表就创建
阅读全文
摘要:1,在MARA添加自定义字段 把屏幕增强中用到的字段通过tcode SE11 append到MARA表中,如下,append 一个ZMM_MARAA,里面有一些自定义字段 2,创建自定义屏幕 这个自定义屏幕就是要添加到物料主数据中的,tcode:SPRO 后勤-常规-->物料主数据-->创建定制子屏
阅读全文
摘要:很多BAPI允许用户将自定义字段通过一个table参数EXTENSIONIN传入BAPI中,比如采购订单创建的bapi BAPI_PO_CREATE1,如下: 定义EXTENSIONIN的结构类型BAPIPAREX如下: STRUCTURE字段用来填写结构名字,这个结构里面就是自定义增强字段,BAP
阅读全文
摘要:用ME28对采购订单进行审批时,想在ALV显示屏幕上加字段,如何实现? 查了一下好像没有什么标准增强能实现,也许有,只是我没找到。。。。 debug ME28时发现了一个BADI ME_CHANGE_OUTTAB,但是很不幸这个是内部使用,俺不是内部人,用不了。。。 下面用一个例子来讲解一下,客户就
阅读全文
摘要:如果是半路加入一个项目,肯定对系统内已经实施 的增强不是清楚,比如说采购订单me23n下都创建了什么增强,SAP提供了一个程序SNIF,可以通过这个直接查找出已经实施的BADi、user-exit、BTE甚至是调用的BAPI。 1,首先先找到ME23N所在的包 点击对象列表按钮,然后再点击上级对象,
阅读全文
摘要:BAPIRETURN的结构比较特殊没有针对消息类ID号的字段,SE11中可以看到BAPIRETURN的具体定义, 这个结构可以通过FM BALW_BAPIRETURN_GET 来填充赋值,消息类的ID通过CL输入。 但是,看了一下代码,发现有点小限制,当CL输入的消息类ID长度大于2时会raise错
阅读全文
摘要:给ABAP程序创建一个用于后台处理的变式,供SM36设置时使用,但是你会发现这个变式在前台运行程序时看不到, SE38创建一个仅用于后台处理的变式 变式已经保存,但是确实看不到。。。 这时需要在SE38中,选择变式选项,然后再查看或修改。 点击变式字段的F4,这时可以看到刚才创建的后台变式TEST
阅读全文
摘要:在采购订单屏幕的左上角有个特殊的按钮,可以通过它创建、查看或删除采购订单的附件。这个按钮是使用GOS(Generic Object Service)工具实现的,可以把GOS理解为一个连接文档和SAP内各种对象的一个工具,包括,采购订单(me23n),会计凭证(FB03)等等都用到了GOS。 下面就是
阅读全文
摘要:1,表VRSD 可以在SE11中看到TR相关版本管理信息,比如,版本号,对象名,对象类型,版本创建者,创建日期等。 通过这个表也可查询某个人在特定的事件内都更改创建了什么SAP对象,当然也可以通过SE01查看某人的TR来实现。。。。 2,表REPOSRC 此表只保存了最终的版本号,详细可以到SE11
阅读全文
摘要:正常情况下ABAP是不能debug调试宏的,可但是有个变通的方法能让你初略的一步一步执行宏内的代码。 写了一段简单的abap代码,里面包括一个宏,用来取EKPO表内数据,然后sort一下。 REPORT ztest_debug_macro. DATA:lt_ekpo TYPE STANDARD TA
阅读全文
摘要:1,问题描述 SAP 调用webservice时发生一个错误ICM_HTTP_SSL_PEER_CERT_UNTRUSTED SRT:Processing error in Internet Communication Framework:("ICM_HTTP_SSL_PEER_CERT_UNTRU
阅读全文
摘要:AUT10是审计时使用的一个Tcode ,可以用来查找特定时间内,某个tcode都修改了什么内容,包括更改的表、字段、修改时间、修改人、更改凭证对象、对象值等等。 AUT10界面如下,输入Tcode,开始和截止日期之后运行, 运行之后的屏幕, 以上。
阅读全文
摘要:众所周知,更改凭证抬头表CDHDR和更改凭证项目表CDPOS中保存了SAP中业务数据的创建和变更历史。 但是在查询这两个表时,通常会面临不知道如何填写OBJECTCLAS和OBJECTID这两个字段的值。 对于OBJECTCLAS,可以通过表TCDOB查找到,以TABNAME为条件,查询对应的OBJ
阅读全文
摘要:1,MEREQ001 用户出口(user-exit)MEREQ001是针对采购申请的增强,其中FM EXIT_SAPLMEREQ_010可以对采购申请的账户分配进行校验。 EXIT_SAPLMEREQ_010的输入参数,IM_T_EBAN、IM_T_EBKN是更改之后的采购申请和账户分配的值, IM
阅读全文
摘要:1,问题描述 项目里使用了ADSUBCON,在调用BAPI_GOODSMVT_CREATE创建带subcontractor行项目的物料移动凭证时,发现主行项目中的批次赋值错误。 错误截图: 看到第一行,也就是物料移动类型是101的行项目上的批次是1208221560,实际调用bapi时的输入批次是另
阅读全文
摘要:ABAP接口程序开发中时常会用到JSON格式来传输数据,在监控传输的JSON串内容时,把JSON转换为HTML格式来显示会很便利。 下面提供一个简单例子来实现JSON转化为HTML并显示的功能。 其中: 1,使用 /ui2/cl_json=>serialize来生成JSON串, 2,调用<!--St
阅读全文
摘要:可以使用函数 SUSR_USER_READ_CHECKS来做用户存在检查。 SE37测试一下,在用户字段user_name输入Baidusap后运行,提示用户不存在 以上。
阅读全文
摘要:1,问题描述 在BADI ME_PROCESS_PO_CUST的方法CHECK中增强,增加对采购订单行项目的校验,发现使用宏mpur_message_forced添加错误消息时,这些错误消息只能显示到采购订单的最后一行上,并不能按照行项目归集显示。 增强点: 错误截图, 点击检查按钮后,下图中,可以
阅读全文
摘要:下面介绍一个方法删除或修改在SAP系统内已经释放的传输请求TR。 1,修改TR状态 SE38运行RDDIT076程序,将TR的状态由已释放R修改为可修改的D状态。 首先有个已经释放的TR SE38 输入TR,运行 修改TR状态,R->D 修改后就是这个样子的,然后退出程序就行了。 2,删除TR的EX
阅读全文
摘要:1,问题描述 调用BAPI_ACC_DOCUMENT_POST或者BAPI_ACC_DOCUMENT_CHECK时 创建或检查凭证时,报错“被合并的公司 xxxx 和 xxxx 是不同的”,比如“被合并的公司 3001 和 9999 是不同的”。 错误消息ID: F5 消息号:080 2,问题解决
阅读全文
摘要:ME21N创建采购订单时,可以通过点击暂存按钮将PO保存成暂存订单。 暂存订单的EKKO-MEMORY字段值是‘X’,可以通过此字段区分正常订单和暂存订单。 另外,字段MEMORYTYPE中保存了PO不完整性的类别。 以上。
阅读全文
摘要:业务背景: 在与其他外部系统的对接过程中,主要推荐的是JSON的数据格式,但是有的系统因为历史原因或管理要求上的原因,会要求使用XML的格式进行数据交换。本文档将介绍一种XML与SAP内表转换的方法。 1,内表转XML 1.首先需要定义要转换为内表的结构 在企业服务中新建Data Type 选择Da
阅读全文
摘要:1,问题描述 调用bapi <!--StartFragment --> BAPI_INCOMINGINVOICE_PARK创建预制发票时,报了个错误"采购凭证的帐户设置00不存在", 消息类ME,消息编号715. 2,问题解决 查看一下bapi的输入参数发现,账户设置对应的是BAPI_INCINV_
阅读全文
摘要:SAP中的物料编码有内部编码和外部编码之分,它们之间的对照关系保存在表MATERIALID中。 其中,MATNR_INT是内部编码,MATNR_EXT是40位的外部长物料编号。 部分物料的外部编码也会以制造商零件编号保存在MARA-MFRPN,但不是全部的。。。 以上。
阅读全文
摘要:1. Goto SE16N 2. Input &SAP_EDIT in command field, and press ENTER 3. 直接删除不需要的数据 注意:&SAP_EDIT方法在产品版本EHP5之后不好用,SAP通过一个notes取消了&SAP_EDIT功能。 产品版本可以在系统状态中
阅读全文
摘要:可以使用标准bapi BAPI_EQUI_GETSTATUS来获取设备的用户状态和系统状态。 SE37 测试: 系统状态system_status中有一条数据 用户状态user_status中也返回一条数据 tcode IE03 点击惊叹号图标查看设备状态, 以上。
阅读全文
摘要:有个需求要维护设备的库存信息,也就是IE02序列化tab页中红框内的字段,比如库存类型,工厂,库存批次,客户,供应商等信息,如下: 看了一下F1,发现这些字段都是保存在EQBS表中,在常用的设备更新bapi BAPI_EQUI_CHANGE输入参数中却没有EQBS相关数据,所以这个bapi并不能实现
阅读全文
摘要:大多数小伙伴一定知道smart form(Transaction: smartforms) 和 adobe form(Transaction: SFP) 实际上是一个function module。 &lt;img class="size-medium wp-image-6899" src=
阅读全文
摘要:我们知道SE11或SE16N中并不支持物料外部编码的模糊查询,比如:se11中模糊查询64771-062-*找不到符合条件的数据, 但实际上是有一条符合条件的物料。 如果想支持外部编码的模糊查询,就需要使用到函数<!--StartFragment --> MGV_SELOP_AFTER_START_
阅读全文
摘要:恢复内容开始 业务背景: 有时候我们可能对自建屏幕上的字段要进行双击操作,要触发自建屏幕的双击需要设置一些东西,本文将介绍一种触发自建屏幕字段双击的例子。 解决步骤 其中模块STATUS_0100和USER_COMMAND_0100是需要我们完成的,其他字段皆是TAB_CTRL向导模式生成的。 恢复
阅读全文

浙公网安备 33010602011771号