关于ABAP的一个简单程序调用问题。程序如下。 ls_fieldcat-ref_fieldname 是什么意思在程序里面。

关于ABAP的一个简单程序调用问题。程序如下。 ls_fieldcat-ref_fieldname 是什么意思在程序里面。,第1张

FORM frm_catlg_set

USING p_field p_text

DATA: ls_fieldcat TYPE slis_fieldcat_alv

ls_fieldcat-fieldname = p_field

ls_fieldcat-seltext_l = p_text

IF ls_fieldcat-fieldname = 'MATNR'

ls_fieldcat-ref_tabname = 'MARA'

ls_fieldcat-ref_fieldname = 'MATNR'

ENDIF

APPEND ls_fieldcat TO gd_fieldcat

CLEAR ls_fieldcat

ENDFORM " frm_catlg_set

好吧,你小子一分不给就想要答案。

这是个出力ALV时候编辑fieldcatalog属性的语法,举个例子,A TYPE DATUM, 而DATUM的DATAELEMENT是“系统时间”,如果你不编辑他,直接在ALV显示,就会是默认的值“系统时间”,如果我对它进行编辑, 在编辑fileldcat的时候把“ABAP”赋给它,ALV就会显示“ABAP”

(你是对这子程序一句不懂还是对ALV一点不懂?)

具体的可以在程序属性的程序类型选择列表里面看到,主要是下面这几类:

1、可执行程序 (stand-along program类型为 1) ,特点是可以直接执行,而无需事务码,这个也是一般报表开发最常用的程序类型。

2、为屏幕绘制器画出的屏幕所用的模块池 (module pool程序类型为 M) ,包含了来自业务的屏幕模块的处理步骤,它只能通过事务码或者菜单功能调用。

3、包含程序 (include program程序类型为 I) ,包含了不能独立运行的程序代码,也就是说,无论你是在 SE38 里用执行功能还是通过事务码或菜单调用,都无法打开一个包含程序。它们的作用主要是让程序变得清晰和可以被重用,在其他程序里,用 INCLUDE 语句可以把一个包含程序加到程序里。最终的效果相当于用被包含的程序里的全部内容替换调 INCLUDE 语句。

4、子程序 (subroutine pool程序类型为 S) ,这种类型的程序里只包含被外部 PERFORM 语句调用的程序块。也就是说,只包含形如 FORM ENDFORM 块的程序代码,从外部程序里,用 PERFORM IN PROGRAM [IF FOUND] 来调用。

5、函数组 (function group程序类型为 F) ,这类程序包含了函数模块。函数组和函数模块用函数制作器进行管理,事务码 SE37。在创建函数组和函数模块时,函数制作器把程序类型设置为 F。

6、接口池 (interface definitions程序类型为 J) 包含了接口。类和接口都在类制作器中管理,事务码 SE24。

7、类池 (class definitions程序类型为 K) ,包含了类。类和接口都在类制作器中管理,事务码 SE24。

分配字段串 组件

可以用 ASSIGN 语句将字段 串的特殊组 件分配给字 段符号,过 程如下:

语法

ASSIGN COMPONENT <comp> OF STRUCTURE <s> TO <FS>

系统将字符 串 <s> 的组件 <comp> 分配给字段 符号 <FS>。 可以指定 <comp> 为文字或变 量。如果 <comp> 属于类型 C 或字段串( 象组件一样 没有内表) ,它指定组 件的名称。 如果 <comp> 有任何其它 基本数据类 型,将被转 化为类型 I(参见 类型转换),并且指 定组件号。

如果分配成 功,SY-SUBRC 设为 0。否则, 返回 4。

DATA: BEGIN OF LINE,

COL1 TYPE I VALUE '11',

COL2 TYPE I VALUE '22',

COL3 TYPE I VALUE '33',

END OF LINE

DATA COMP(5) VALUE 'COL3'

FIELD-SYMBOLS: <F1>, <F2>, <F3>

ASSIGN LINE TO <F1>

ASSIGN COMP TO <F2>

DO 3 TIMES

ASSIGN COMPONENT SY-INDEX OF STRUCTURE <F1> TO <F3>

WRITE <F3>

ENDDO

ASSIGN COMPONENT <F2> OF STRUCTURE <F1> TO <F3>

WRITE / <F3>

输出如下:

11 22 33

33

该示例中, <F1> 指向字段串 LINE, <F2> 指向字段 COMP。 循环中,LINE 的组件由其 号码指定, 并且一个接 一个地被分 配到 <F3>。 循环之后, LINE 的组件 COL3 由其名称指 定,并被分 配到 <F3>。

这代码很简单呀就是先定义一个选择屏幕500,选择屏幕上面定义了一个单值的输入字段p_carr,然后调用显示选择屏幕500你不明白的可能是PARAMETERS p_carr LIKE (name)这个语句吧?(name)意思是用name这个变量的值因为在call屏幕之前有一个赋值语句name = 'SPFLI-CARRID'所以实际上PARAMETERS p_carr LIKE (name)在上面赋值语句的条件下就相当于这个语句PARAMETERS p_carr LIKE spfli-carrid这么说不知道你明不明白?你可以改变赋值语句name的值再试试,比如说name = 'spfli-connid',那就相当于PARAMETERS p_carr LIKE spfli-connid运行后看字段长度或者F4都能看到效果。

以上就是关于关于ABAP的一个简单程序调用问题。程序如下。 ls_fieldcat-ref_fieldname 是什么意思在程序里面。全部的内容,包括:关于ABAP的一个简单程序调用问题。程序如下。 ls_fieldcat-ref_fieldname 是什么意思在程序里面。、ABAP 程序有哪些类型、求助abap 编程:ASSIGN COMPONENT ld_index OF STRUCTURE t_output TO <fs>.这句要怎么理解呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10087922.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存