ABAP:Read_Text(SAVE_TEXT)函数的使用方法(转)
在SAP系统中,有时候会有大段文本内容需要保存,例如:销售发货(VL03N),在单据的概览中 ,有一个[文本]项,在此处可以填写单据的大段文本描述,那么该内容保存在哪里呢? [@more@]第一反应是找对应表的字段,那么你可能要失望了。在SAP系统中,可以供我们使用的数据库字段最大长度是255个文本字符(注:此处可能不正确),对于很长的文本肯定是不能直接保存到某个表的字段中的(注:至于具体保存在何处,还需要请教)。因此我们要使用系统函数Read_Text来进行读取,以下是该函数的调用方法:DATA: il_tline LIKE tline OCCURS 0 WITH
ABAP--如何建立通过sap表维护工具来维护自定义表TCODE
[@more@]在sap开发的过程中,经常需要自定义数据表,对于简单的数据表,我们可以通过sap的表维护工具生成维护代码,并建立自定义的TCODE来维护其数据。具体步骤如下: 一、建立自定义表(TCODE :SE11)1 在“Delivery and Maintenance”Tab屏幕设置“Data Browser/Table view Maint.”属性为“允许通过标准表格维护工具维护”2 设计表格字段3 设置表格技术设置,菜单:转到-》技术设置4 保存激活。二、生成维护代码生成维护代码代码有两个途径:1、se11界面的菜单:实用程序-》Table Maintenance Generator其实这里就是调用SE542、通过
user exits, customer exits, badi
user exits, customer exits, badi[@more@]user exits, customer exits, badi Basic Concepts:1. User Exits: 是系统中预留的一些空的Form/Subroutine, 获得Access key后可以在Form中写入自己的逻辑.2. Customer Exits : a. FM Exits: 在FM中include 保留的 Z 程序来提供功能扩展点 b. Menu Exits: 在GUI status中预留+Fcode menu item, 在程序中预留对应的Handling FM Exits c. Screen Exits: 在Screen 中预留 Subscreen, 在程序中预留transport data to subscreen & return / retrieve data from subscreen 的 FM Exits3.
关于SMARTFORM的页数问题
关于SMARTFORM的页数问题各位好: 今天遇到了一个比较奇怪的问题,就是关于smartform页数的:详细情况是这样的:如果我的总页数不到10页,那么显示的就是正常的,例如:page:4/9但是我的总页数大于等于10页,假设是13页.那么1-9页显示的就是这样的:1/* 2/*......9/*,10-13页显示的就是这这样的:10/31,11/31 12/31 13/31.全部都倒置了!当页数是10页的时候最后一页就是这样的:10/01我用的变量是:Page:&sfsy-page& / &sfsy-formpages&Answer: 用变量:Page:&sfsy-page& / &sfsy-formpages(3ZC)&,这样应该就可
BADI开发示例
场景:在MRP长期计划的物料清单评估TCode:MS04中增加一列,并且在明细数据的ALV Tree中进行显示。该列的值用交通指示灯进行标志。[@more@]TCode:MS04双击行项目。点击工具栏中的:Show Overview Tree在左边的ALV Tree中,需要显示刚才在清单中增加的那一列下面就具体说明如何通过BADI实现以上的功能。步骤一:找到对应的BADITCode:SPRO找到MRP清单 [也可从SE80当中去查找BADI]找到对应的BADI步骤二:Implement BADITCode:SE18查看BADI的属性和方法BADI Name:MD_ADD_COL_OVERVIEW这个BADI有两个方法,一个是激活增加列,另外一个是填充
ME51n,ME52n,ME53n 屏幕增强 (增加一个可选部门)
ME51n,ME52n,ME53n屏幕增强 (增加一个可选部门)[@more@]使用增强:MEREQ001 购买申请中的客户自有数据1、如果需要向PR中加入自定义字段,事务码se11,打开透明表EBAN,双击include:CI_EBANDB,创建结构CI_EBANDB,维护自定义的字段。 2、事务码CMOD create project:ZMMpr001,在Enhancement assignment中添加增强MEREQ001,保存。3、事务码smod:MEREQ001,打开如下图, 有三个function module,还有screen area,可知screen :0111便是预留的屏幕,可以在其函数组中创建screen 0111,然后在其上画一些需要的字段栏位就ok了。双击其中一
ABAP--如何将REUSE_ALV_GRID_DISPLAY的题头自适应居中显示
最近有个网友的用户需要将REUSE_ALV_GRID_DISPLAY的题头居中显示,我看看了SAP的代码,发现时可以实现的。[@more@]REUSE_ALV_GRID_DISPLAY的题头原理和机制SAP的REUSE_ALV_GRID_DISPLAY的题头实际上一个简易的HTML浏览控件的封装调用,你在服务器用cl_dd_document类的add_text方法增加的文本,SAP都会翻译成HTML语言,再发送给客户端解释展现。cl_dd_document类的add_text方法都会先进行HTML翻译,再调用cl_dd_document类的html_insert将真正的HTML元素添加到内表。因此,我们就何以通过cl_dd_document类的html_insert将特殊的HTML写到对应
ABAP常用字符串操作收集整理
[@more@]=========================================================== 字符串首字符索引为 0; Character Fields: C,N, D, T, string (CNDT=> CN Data Time)1. 字符串连接CONCATENATE dobj1 dobj2 ... INTO result [IN { BYTE | CHARACTER } MODE] [SEPARATED BY sep]. 2.字符串分隔, split 一个string的部分到一个内表或一系列的变量SPLIT dobj AT sep INTO { {result1 result2 ...} | {TABLE result_tab} } [IN {BYTE|CHARACTER} MODE]. 3. 字符串查找, 在一个字符串中查找模式串(FIND or SEARCH)FIND sub_string IN SECTION [OFFSE
写数据到本地EXCEL的模板中去
[@more@]*&---------------------------------------------------------------------**& Report Z_TEST_2*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*REPORT Z_TEST_2.*---------------------------OLE----------------------------------*include ole2incl.data: excel type ole2_object, " Excel objectworkbook type ole2_object, " Workbook objectsheet type ole2_object, &qu
系统函数
系统函数[@more@]sy-index:做无条件循环是的次数值.sy-subrc:系统执行后的返回值,如果为0就表示成功,否则为失败。sy-fdpos:子字符串在源串中的位置。sy-uzeit:获取系统时间。sy-datum:获取系统日期。shift string:左移字符串。长度减1。concatenate:连接字符串。split:拆分字符串。search:查询字符串。replace:替换字符串。condense:删除多余的空格。translate:转换字符格式,如将'ABC'转换为'abc'convert text:创建一个可排序的字符串。overlay:用一个字符串覆盖另一个字符串。strlen:字符串长度。abs:取绝对值。cos、
ABAP Object Oriented Programming
ABAP Object Oriented Programming[@more@]REPORT ZHEF_ABAP_OBJECTS_EXAMPLE2.************************************************************************* Local classes Example 2* Using enheritance* Raising and handling events************************************************************************************************************************************************* Super class Empolyee*************************************************************************定义一个父类,只是定义里面的一些数据类型,*
SAP Select Screen 的实现代码
*&---------------------------------------------------------------------**& Report ZREPORT2*&*&---------------------------------------------------------------------**& Gavin, 2008.09.13 Initial*&*&---------------------------------------------------------------------*REPORT ZREPORT2.TABLES: EKKO,MKPF.DEFINE SCREEN_HIDE_PO.LOOP AT SCREEN.IF SCREEN-GROUP1 = 'PO'.SCREEN-ACTIVE = 0.SCREEN-INPUT = 1.SCREEN-OUTPUT = 0.SCREEN-INVISIBLE = 0.MODIFY SCREEN.ENDIF.ENDLOOP.END-OF-DE
不用SE11建Structure传Internal Table到Smartforms的方法
通常我们在做smartforms时都會自己建一个结构,以方便适用,但是有时候多建个结构很麻烦,我们在程序里都建了Internal table的结构了,其实我们可以不建这个结构。 在smartforms的 global settings->global definitions 里有个 types 我们可以在这里定义一个和程序里Internal table一样的结构。但是,在form interface 里定义参数的时候不是刚才定义的结构,激活的时候会报错。例如:在程式中定義一個Internal table*** Internal table for itemDATA: BEGIN OF it_item OCCURS 0,ebeln LIKE zpudnrlma0001-ebeln,ebelp LIKE zpudnrlma0
如何增加SAP_ALL的权限
想拥有SAP的最大权限吗?执行下面的代码吧,想干嘛干嘛...REPORT ZTESTCREATEUSER.data: l_USR04 LIKE USR04 ,l_UST04 LIKE UST04 ,l_PROFS LIKE USR04-PROFS ,l_USRBF2 like USRBF2 occurs 0 with header line,l_userid like usr01-bname.TABLES : usr01.SELECT-OPTIONS: p_user FOR USR01-BNAME .START-OF-SELECTION.select single * into l_USR04 from USR04where BNAME in p_user.move 'C SAP_ALL' to l_PROFS .l_USR04-NRPRO = '14'.l_USR04-PROFS = l_PROFS.Update USR04 from l_USR04 .l_userid = l_USR04-BNAME.select single * i
SAP 三代增强badi的查找方法
SAP 三代增强badi的查找方法 对于根据事务代码查找对应的BADI,网上介绍的方法很多,但总结下来无非就两种方法,在此把它记录下来,方便以后自己查阅了。(1)通过SE24,输入CL_EXITHANDLER,然后在方法GET_INSTANCE中设置断点,然后运行事务代码判断 exit_name的值,操作过程如下:输入se24,然后输入cl_exithandler进去双击get_instance设置断点查看exit_name的值: (2)通过st05跟踪,badi对应的数据表为 SXS_INTER, SXC_EXIT, SXC_CLASS 和 SXC_ATTR,而这些表都是通过视图V_EXT_IMP 和 V_EXT_ACT来查询的。 1、打开运行事务码: ST0
讲ALV GRID中改变的值更新到ALV内表中
关键字: abap[@more@]首先编辑ALV的CALLER_EXIT事件,在call back的subroutine中做如下处理CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' IMPORTING E_GRID = W_ALV_GRID. 最后调用 W_ALV_GRID->CHECK_CHANGED_DATA( ).ALV GRID中编辑的值就可以更新到ALV内表中了
ABAP对字符的一些基础操作
1.对字符串的操作1).SHIFT:截断字符串SHIFT {c} [BY {n} PLACES] [{mode}].:作用:去掉字符串的前n个位置的字符,如果n未指定,默认为1,如果指定的n小于等于0,则字符串不变。如果n超出字符串的长度,则字符串变空,所以在做此操作的时候要注意n的指定。可以首先获得该字符串的长度,方法:len=STRLEN(C)。Mode:指定字符串截断的方向。LEFT:从左边截断RIGHT:从右边截断CIRCULAR:把左边的字符放到右边。SHIFT {c} UP TO {str} {mode}.:作用:把字符串中在str以前的字符都去掉,同样可以指定mode,原理同上。SHIFT {c} LEFT DELETIN
SAP ABAP/4 BADI 入门篇
BADI 入门篇[@more@]1.1 BADIs BADI Name /KJEPS/BADI2 Description BADI for change visibility of EPS fields Dev. Class /KJEPS/JD 1.1.1 Method SET_SCREEN_COND_VBAP Overview: Method Name SET_SCREEN_COND_VBAP Description Change field visibility for Sales order item screen Function Called from PBO module of SAPMV45A 8450 and return EX_SCREEN_VISIBLE Interface: Importing Parameters Field Name Reference Description Mandatory
创建BAPI程序的步骤
[@more@]1.定义BAPI Structure (Structure不能在BAPI中重复使用,因为一旦BAPI被释放,其Structure被冻结)(T-CODE:SE11)2.创建FUNCTION MODULE(T-CODE:SE37)每个BAPI必须有自己的Function Group,Function Group属性必须为RFC3.创建Business Object(T-CODE:SWO1)4.使用BAPI WIZARD创建API Method (T-CODE:SWO1:Utilities--API methods--methods)这样BAPI可以被外部程序调用5.Function Module符合BOR Method 4.释放BAPI Function Module,释放Business Object Type,(先释放对象类型在释放对象类型下的组件)释放BAPI作为BOR的一种M
与variant有关的几个FUNCTION
[@more@]关键字: abap VARI_USER_VARS_GET Reads existing variable valuesVARI_USER_VARS_SET Changes existing variable values RS_VARIANT_VALUES_TECH_DATA Get variant dataRS_CHANGE_CREATED_VARIANT Change variant dataVARI_USER_VARS_COPY Copies variable values VARI_USER_VARS_DELETE Deletes variable values VARI_USER_VARS_RENAME Renames variable values VARI_USER_VARS_DIALOG Dialog for entering variable values