ABAP中宏的使用
来源:互联网 发布:打电话的软件s 编辑:程序博客网 时间:2024/05/03 11:55
在使用过程中发现参数超过9个出现错误,通过查找,找到如下资料:
宏是一种单纯 源代码复用技术, 不 存在参数传递机制, 宏比include形式更为简单, 往往只是为了增强程序的可读性。 宏可以在程序中定义, 再进行调用使用,此宏只在本程序中可用。 也可以将宏定义存贮在Macros 库Trmac(se11中查看) 中, 这样可以在任何程序中直接调用。
Define macro_name .
End-of-definition.
必须在Define和End-of-definition之间指定完整的语句,这些语句最多包含9个占位符,即&1-&9。占位符的意义在于暂时不指定代码,调用的时候进行代码替换。
注:可以从宏中调用另一个宏,但宏不能调用自身
宏的定义一定要出现在引用它的程序段之前
一般Macro_name不超过20个字符
1.下面内容为在ALV Report中常用的关于CATALOG的写法
FORM INIT_FIELDCAT CHANGING PT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA : LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
L_INDEX LIKE SY-INDEX.
CLEAR :L_INDEX, PT_FIELDCAT.
* Define a macro
DEFINE CATALOG.
L_INDEX = L_INDEX + 1.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-COL_POS = L_INDEX.
LS_FIELDCAT-TABNAME = 'GT_LIST'.
LS_FIELDCAT-DDICTXT = 'M'.
LS_FIELDCAT-FIELDNAME = &1.
LS_FIELDCAT-SELTEXT_M = &2.
LS_FIELDCAT-OUTPUTLEN = &3.
LS_FIELDCAT-KEY = &4.
LS_FIELDCAT-REF_TABNAME = &5.
LS_FIELDCAT-REF_FIELDNAME = &6.
LS_FIELDCAT-JUST = &7.
LS_FIELDCAT-QFIELDNAME = &8.
LS_FIELDCAT-CURRENCY = &9.
APPEND LS_FIELDCAT TO PT_FIELDCAT.
END-OF-DEFINITION.
* Use the macro
CATALOG:
'PERNR' TEXT-001 '12' '' '' '' '' '' '',
'ENAME' TEXT-002 '10' '' '' '' '' '' '',
'ZYEAR' TEXT-003 '04' '' '' '' '' '' '',
'BEGDA' TEXT-004 '10' '' '' '' '' '' '',
'ENDDA' TEXT-005 '10' '' '' '' '' '' '',
'PERIOD' TEXT-006 '21' '' '' '' '' '' '',
'ORGEH' TEXT-007 '08' '' '' '' '' '' '',
'ORGTX' TEXT-008 '20' '' '' '' '' '' '',
'RATING' TEXT-010 '10' '' '' '' '' '' '',
'RTEXT' TEXT-009 '08' '' '' '' '' '' '',
'ID' TEXT-011 '08' '' '' '' '' '' '',
'TSTEXT' TEXT-012 '15' '' '' '' '' '' ''.
ENDFORM. " INIT_FIELDCAT
2.下面内容为HR模块中常用的存贮在Macros库Trmac中的宏
RP-PROVIDE-FROM-FRST Pnnnn SPACE PN-BEGDA PN-ENDDA .
PNP-SW-FOUND = '0'
LOOP AT &1
IF &2 NE SPACE
CHECK &1-SUBTY EQ &2
ENDIF
IF &1-BEGDA LE &4 AND &1-ENDDA GE&3
PNP-SW-FOUND = '1'
EXIT
ENDIF
ENDLOOP
IF PNP-SW-FOUND EQ '0'
CLEAR &1
ENDIF
RP-PROVIDE-FROM-FRST Pnnnn SPACE PN-BEGDA PN-ENDDA.
参数:&1 (Pnnnn) &2(SPACE可为常量) &3(PN-BEGDA可为常量) &4(PN-ENDDA可为常量)
功能:如果Pnnnn-BEGDA <= PN-ENDDA
Pnnnn-ENDDA >= PN-BEGDA
则PNP-SW-FOUND=1,Pnnnn会存入符合上面时间条件的内表中的第一行数据,否则Pnnnn将会被清空。
- ABAP中宏的使用
- abap中 provide 的使用
- SAP ABAP中宏使用
- ABAP 宏的简单使用
- ABAP中正则表达式的简单使用
- ABAP中正则表达式的简单使用
- ABAP中正则表达式的简单使用
- ABAP中动态内表的使用
- abap中方法file_open_dialog的使用
- ABAP中特殊字符的使用
- ABAP中ALV使用HTML的例子
- abap中TEXT_CONVERT_XLS_TO_SAP、CS_WHERE_USED_MAT的使用
- BW中使用abap
- abap消息的使用
- ABAP游标的使用
- abap-使用vim做abap的编辑器
- ABAP--如何在abap中使用日志管理
- ABAP--如何在abap中使用日志管理
- ka代码问题
- Select语句中使用FOR ALL ENTRIES IN需要注意的问题
- 货员的难题 程序
- 压力测试jmeter入门教程
- mysql的视图中有一项为null,则查询出的一条数据全为null
- ABAP中宏的使用
- 修改tomcat内存
- Java web项目中解决乱码问题的思路
- Selenium源码之PageFactory
- windows 拖动文件执行 bat脚本
- SQL Server 触发器
- swagger 生成 PHP restful API 接口文档
- 车厢重组
- android_67_musicPlayer