关闭

experience-ABAP

标签: parametersstructuretablefunctionreturningmodule
401人阅读 评论(0) 收藏 举报

 

se11 进入创建table   YUSERINFO.    保存时选 Local Object   不选package。

 

保存后在 se80 进入 点击 Repository Browser    在Dictionary Objects -- Database Tables 中可以找到。

 

====================================================================================================

 

创建package:

 

se80 -- Repository Browser -- ApplicationHierarchy  -- Class / Interface

 

Cross-Application Components -- BC400 -- 右击 create -- Development coordination  --package

 

package  alva_test

short text alva_text

Appl.Component  sd

Software Component  home

 

Click the 3th button to create  -- 

Request  :the 3th button to create  --  short text: abap learning  -- save

 

ok

 

在 ApplicationHierarchy  -- packages -- Sales andDistribution 中 可以看到已建好的 alva_test

 

====================================================================================================

 

program --> include  ||  executable

 

         includeprogram can not be executed directly. need executable program to include it forexecution.

 

         executableprogram can be executed directly.

 

class --> create in program  (local) || create in class builder(global)

 

function --> create in fuction builder(global)  || form in program or class(local)

 

         可以直接调用执行的代码块。

 

 

 

Table type(二维结构)   structure(一维结构)   workarea(一维对象)    internaltable (create inclass or program)

 

data type(数据类型)    domain (datatype & len 就像 类)     data element (datatype&len 就像对象)

 

=======================================================================================================================

 

Data element || Structure || Table type 创建  :

 

se11 -- Data type -- 输入名称 -- create -- Data element || Structure || Table type

 

 

然后 Dataelement 的创建可以基于 domain 也可以选择 predefined Type

 

=======================================================================================================================

 

实体的表只能通过 se11 进入创建。  在程序中声明的都只是 internal table。 会随 程序运行结束 而结束。

 

在创建表时 on Fields tab    Predefined type& data element can be switched. (before switching, data element should beempty)

 

Table 主键的key和initialvalue 要都勾上。

 

要是价格等字段,DEC类型要给它定义长度,不然激活table时会报错。

 

最后 还要 进行 Technical Setting。 指定该表是做什么用的。

 

 

 

外键的设定:

Entry help/check tab    --- 光标放在字段上 --- 点击 钥匙(foreign keys)--- ...

==========================================================================================================

 

实体table的维护可以通过 新建相应的维护视图 来进行。  也可以直接建一个维护对话框。

或者如果建表时选Display/maintenance Allowed. 就可以直接通过T-code se16 进入维护。

 

se11 进入 create 一个maitain view, 选好table和相应的显示字段,

 

在自己的navigatior上一个节点 右击  create  -- function group  (保存时是local object)

 

回到 maitainview 的 界面 utilities  -- table MaintenanceGenerator

 

Authorization Group :  &NC&

fuction group: 刚才自己建的function group

package : local object

 

Maintenance type: one step

Maint. Screen No. Overview screan:  1

 

(当table的结构被修改后,其maintenance dialog 不会同步被改变,需要同样的方法进入maintenancegenerator,

  按删除键删除原来的,然后新建一个)

 

 

se54 或 sm30  进入维护 视图  可以添加数据

 

se11 进入table  在工具栏上点击 contents 图标, 然后execute 看到表里的内容

 

se93 进入T-code 维护界面  为维护视频 创建一个T-code     yuserinfo_view:

Start object 选  Transaction with parameters (parameter transaction)

Tranaction 填 sm30   勾选 Skip initial screen    勾选 Inherit GUI  attributes

Defaut values 中 选 VIEWNAME 赋值为 yuserinfo_view   选 UPDATE 赋值为 x

 

==========================================================================================================

赋值时 等号“=” 两边都要有空格。 如: INP01 = SAVE_OK.

 

==========================================================================================================

在program里定义的Module名称,要和在screen的flow logic 里PBO,PAI中Module的名称一致。

 

==========================================================================================================

在MODULEuser_command_0130 INPUT.根据ok_code调用屏幕没成功。 原来是因为 屏幕0130中忘了添加ok_code。

 

==========================================================================================================

 

按钮的 Fct code: 可以给定系统内置的code 如E等;也可以给一个与按钮name一致的值。

 

==========================================================================================================

 

在写program时 要是 call function。可以点击 工具栏的 Pattern 按钮, 然后输入 function 名。 代码自动被掉出来。

没有注释的变量为必须项。

 

==========================================================================================================

 

CALL SCREEN 0100. 这句话会执行 screen 0100 的 PBO 和 PAI 完后才执行 主程序中 CALL SCREEN0100. 下面的语句。

 

============================================================================================================

 

AT-SELECTION-SCREEN-OUTPUT 相当于 选择屏幕的 PBO, AT-SELECTION-SCREEN 相当于 选择屏幕的 PAI (f8后执行)

============================================================================================================

 

While painting the screen and use the data columnsfrom dictionary. the input field type need to set consistent with

that in dictionary. such as  SPFLI-CONNID need to benumber type on input control attribute so that it can display

the values on screen.

 

============================================================================================================

se32 进入 文本编辑  时  当填好代号和文本内容后, 保存则最大长度固定。 下次修改时只能 先删除然后在添加一个代号一样的。

 

 

============================================================================================================

message class 中& & & 表示可输入的三个变量。记得& & &之间一定要有空格。

 

 

============================================================================================================

 

FORMAT COLOR 中 format color off 对于前景来说会变成 白色。

 

FORMAT COLOR INVERSE OFF. 取消不了对前景的影响。

除非 FORMATCOLOR COL_BACKGROUND INVERSE OFF, 或在设置背景颜色时加 INVERSE OFF。

 

因为INVERSE ON 的时候INTENSIFIED ON 是无效的,所以如果先前是设置前景颜色,

则需要用上面的方法取消前景操作。如:FORMAT COLOR COL_BACKGROUND INVERSE OFF。

才能设置背景颜色。

 

============================================================================================================

call screen 后在screen的PBO 或PAI里所执行的write语句,是看不到的。执行后再leave to screen 0 也看不到。

除非是写在module的外面。leave toscreen 0 才能看到。

 

============================================================================================================

 

form 里面不能定义事件块。

 

program 里只能用语句调用form或function  不能调module。module 只能通过屏幕的PBO或PAI调用。

============================================================================================================

 

MESSAGE I007(Y_MSG_01) DISPLAY LIKE 'E'. 会跳出对话框显示消息像error的样子  但程序继续往下执行。

MESSAGE E007(Y_MSG_01). 则程序窗口左下角会显示报错信息。 同时程序终止。

 

============================================================================================================

 

要使子窗口的按钮起作用,要在主窗口的 AT USER-COMMAND 的case块加代码:

WHEN 'CANCEL'. LEAVE PROGRAM.

 

============================================================================================================

Call method 中的Exporting 是相对于程序自身来说的。所谓“导出” 是指到参数的值传给method。

Importing 所谓导入,则是指从method把值传回来。比如method的执行结果等。

 

Call method 时exporting 过去的参数值,应该是method的importing类型的同名形参接收到的。

 

Changing 指定一个或多个传入传出参数。

=========================================================================================

Method 中changing 相当于importing和exporting;

Returning 相当于exporting 一个返回值,call method时receiving 接收returning定义的形参。

 

Form 中 changing 相当于 using。

 

Function 中 changing 相当于 importing和exporting。

 

 

SE11 然后选data type可以进去创建一个表类型table type 和 结构类型sturcture。

先创建structure,然后在创建table type时直接在line type选项上选中以创建好的structure。

Ok。

 

然后classbuilder对method的exporting 参数设置就可以添加一个返回内表的参数了,associated type 为新创建的table type。

 

第一次操作失败是因为在创建structure时USRID的Rtype打钩了。Rtype是rate type的意思。

勾选的话,在show_user_list方法体上会报错:

The work area(internal table) “e_itab” is not flat,or contains reference or internal tables as components.

 

 

在sap在线帮助http://help.sap.com  上对Rtype的解释如下:

Rtype enables you to display key figures based onrate type.

The rate type indicates the rate that is used todetermine the market value of a security, for example spot rate or forwardrate.

 

====================================================================================

在创建functionmodule时因为有tables选项,所以在tables参数中直接把参数类型设为实体表yuser就可以,不需要设为表类型 yuser_tb。方法体中向程序返回内表,或接收程序传过来的内表都可以通过该参数进行传递。

在callfunction时tables和importing是一样格式写的。

 

====================================================================================

修改对象所属的包:

在navigation上右击对象 --- more function --- change package assignment。

 

==============================================================================

 

在屏幕设计中,要使工具栏的退出按钮起作用:

Step1:给程序创建 GUI Status –>在function key 中填上exit的名称

                                   双击设置属性 

 

Step2:在屏幕的PAI中添加MODULE cancel AT EXIT-COMMAND:

Step3:在程序中添加 cancelmodule:

Step4:在程序的屏幕PBO模块代码中调用GUI Status:

 

==========================================================================

Tables 关键字可以声明一个 和在SE11中定义好的数据表,视图,结构等对象同名的工作区,

该工作区是全局的,就算在一个form里声明的,也可以在其他form里使用。重复声明会报错。

例如:

Tables yuserinfo. 这句代码就声明了一个工作区yuserinfo,它和se11里的表yuserinfo有一样的字段结构。

TABLES spfli

SELECT * FROM spfli
WRITE: / spfli-carrid, spfli-connid
ENDSELECT.

=======================================================================

SELECTION-SCREEN,里面有两个子项,PARAMETERSselect-options
PARAMETERS
一般是用于必输项的屏幕参数设置,如果这个参数不是必输项的,就要用select-options。在select ...where条件里,用PARAMETERS的条件语法是数据字段 = 屏幕字段;而select-options的条件语法是数据字段 in 屏幕字段

=======================================================================

用parameters定义的屏幕参数在用户界面显示的text默认是和参数名一样的,要想定义另外的显示文字就要在程序界面中点击

GOTO --- TEXT ELEMENT – SELECTION TEXT 里进行维护。(记得要先激活程序后再过去维护,这样看到的参数列表才是最新的)

(每个程序的textelement 是独立的。 Text element 维护界面的 t-code  se32)

=======================================================================

对程序中 parameters定义的参数 的text element 进行多国语言设置:

在程序的界面 点击 GOTO – translation 然后在“target language”中选择语言, 确定进入设置。

这样一次次的为不同语言设置该参数的textelement。

之后,在用户选择自己的语言登陆到系统的时候,执行该程序看到的用户界面上的参数就是设置好的  文字内容  了。

======================================================================

在单引号里定义一个带有 单引号的  字符如: it’s cool  应写成:’it’’s cool’ .

 

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4526次
    • 积分:112
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:0篇
    • 译文:1篇
    • 评论:2条
    最新评论