ABAP动态编程之功能实现
来源:互联网 发布:push二维数组 编辑:程序博客网 时间:2024/06/06 03:56
根据名字获取结构DATA: STRUCTTYPE TYPE REF TO CL_ABAP_STRUCTDESCR.STRUCTTYPE ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( 'SPFLI' ).根据变量获取结构DATA: DATATYPE TYPE REF TO CL_ABAP_ELEMDESCR, W_CHAR TYPE CHAR5.DATATYPE ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( W_CHAR ).自定义数值结构DATA: ELEMTYPE TYPE REF TO CL_ABAP_ELEMDESCR.ELEMTYPE ?= CL_ABAP_ELEMDESCR=>GET_I( ).ELEMTYPE ?= CL_ABAP_ELEMDESCR=>GET_C( 20 ).定义动态长度的字符串DATA: W_C10 TYPE CHAR10 VALUE 'HB', W_C20 TYPE CHAR20, W_CNT TYPE I.W_CNT = STRLEN( W_C10 ).DATA: DREF TYPE REF TO DATA, CTYPE TYPE REF TO CL_ABAP_ELEMDESCR.FIELD-SYMBOLS: <FS>.CTYPE = CL_ABAP_ELEMDESCR=>GET_C( W_CNT ).CREATE DATA DREF TYPE HANDLE CTYPE.ASSIGN DREF->* TO <FS>.*ASSIGN DREF->* TO <FS> CASTING TYPE HANDLE CTYPE.<FS> = W_C10(W_CNT).CONCATENATE '***' <FS> '***' INTO W_C20 RESPECTING BLANKS.WRITE W_C20.动态读取系统表数据PARAMETERS P_NAME TYPE TABNAME.DATA: LR_STRUC TYPE REF TO CL_ABAP_STRUCTDESCR, LR_DATA TYPE REF TO CL_ABAP_DATADESCR, LR_TABLE TYPE REF TO CL_ABAP_TABLEDESCR, DYN_TABLE TYPE REF TO DATA, DYN_WA TYPE REF TO DATA.FIELD-SYMBOLS: <DYN_TABLE> TYPE STANDARD TABLE, <DYN_WA> TYPE ANY.LR_STRUC ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( P_NAME ).LR_TABLE ?= CL_ABAP_TABLEDESCR=>CREATE( P_LINE_TYPE = LR_STRUC ).*ASSIGN DYN_WA->* TO <DYN_WA> CASTING TYPE HANDLE LR_STRUC.*ASSIGN DYN_TABLE->* TO <DYN_TABLE> CASTING TYPE HANDLE LR_TABLE.CREATE DATA DYN_WA TYPE HANDLE LR_STRUC.CREATE DATA DYN_TABLE TYPE HANDLE LR_TABLE.ASSIGN DYN_WA->* TO <DYN_WA>.ASSIGN DYN_TABLE->* TO <DYN_TABLE>.SELECT * INTO CORRESPONDING FIELDS OF TABLE <DYN_TABLE> UP TO 100 ROWS FROM (P_NAME).*CALL METHOD LR_TABLE->GET_TABLE_LINE_TYPE* RECEIVING* P_DESCR_REF = LR_DATA* .CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_STRUCTURE_NAME = P_NAME TABLES T_OUTTAB = <DYN_TABLE> EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2.IF SY-SUBRC <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.动态定义表结构TYPES: BEGIN OF TYP_PERSON, NAME TYPE CHAR10, SEX TYPE CHAR1, AGE TYPE I, END OF TYP_PERSON.DATA: ST_PERSON TYPE TYP_PERSON, TR_TABLE TYPE REF TO CL_ABAP_TABLEDESCR, TR_STRUCT TYPE REF TO CL_ABAP_STRUCTDESCR, TR_TYPE TYPE REF TO CL_ABAP_TYPEDESCR, FS_TABLE TYPE REF TO DATA, FS_STRUCT TYPE REF TO DATA, TD_COMP TYPE CL_ABAP_STRUCTDESCR=>COMPONENT_TABLE, TH_COMP LIKE LINE OF TD_COMP.FIELD-SYMBOLS: <FS_TABLE> TYPE STANDARD TABLE, <FS_STRUCT> TYPE ANY.TR_STRUCT ?= CL_ABAP_STRUCTDESCR=>DESCRIBE_BY_DATA( ST_PERSON ).TD_COMP = TR_STRUCT->GET_COMPONENTS( ).CALL METHOD CL_ABAP_STRUCTDESCR=>CREATE EXPORTING P_COMPONENTS = TD_COMP* P_STRICT = TRUE RECEIVING P_RESULT = TR_STRUCT .CALL METHOD CL_ABAP_TABLEDESCR=>CREATE EXPORTING P_LINE_TYPE = TR_STRUCT RECEIVING P_RESULT = TR_TABLE .CREATE DATA FS_STRUCT TYPE HANDLE TR_STRUCT.CREATE DATA FS_TABLE TYPE HANDLE TR_TABLE.ASSIGN FS_STRUCT->* TO <FS_STRUCT>.ASSIGN FS_TABLE->* TO <FS_TABLE>.动态读取表结构TYPES: BEGIN OF TYP_PERSON, NAME TYPE CHAR10, SEX TYPE CHAR1, AGE TYPE I, END OF TYP_PERSON.DATA: TH_PERSON TYPE TYP_PERSON, TD_PERSON TYPE TABLE OF TYP_PERSON.PERFORM FRM_SWAP_TABLE TABLES TD_PERSON.*&---------------------------------------------------------------------**& Form FRM_SWAP_TABLE*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->PTD_PERSON text*----------------------------------------------------------------------*FORM FRM_SWAP_TABLE TABLES PTD_PERSON.DATA: FS_TABLE TYPE REF TO DATA, FS_STRUCT TYPE REF TO DATA, TR_TABLE TYPE REF TO CL_ABAP_TABLEDESCR, TR_STRUCT TYPE REF TO CL_ABAP_STRUCTDESCR, TR_TYPE TYPE REF TO CL_ABAP_TYPEDESCR.FIELD-SYMBOLS: <FS_TABLE> TYPE STANDARD TABLE, <FS_STRUCT> TYPE ANY.TR_STRUCT ?= CL_ABAP_TABLEDESCR=>DESCRIBE_BY_DATA( P_DATA = PTD_PERSON ).CREATE DATA FS_STRUCT TYPE HANDLE TR_STRUCT.ASSIGN FS_STRUCT->* TO <FS_STRUCT>.CREATE DATA FS_TABLE LIKE TABLE OF <FS_STRUCT>.ASSIGN FS_TABLE->* TO <FS_TABLE>.ENDFORM. " FRM_SWAP_TABLE
1 0
- ABAP动态编程之功能实现
- ABAP动态编程之功能实现
- ABAP动态编程
- abap动态编程的几种实现方式
- 动态编程:了解ABAP指针
- 动态编程:ABAP指针常用语法
- SAP ABAP实现发送邮件功能
- ABAP RANGE 实现 SELECTION-OPTION 功能
- ABAP 报表求和统计功能实现方法
- ABAP RANGE 实现 SELECTION-OPTION 功能
- ABAP RANGE 实现 SELECTION-OPTION 功能
- ABAP实现ALV表头动态输出--日期
- c语言之动态栈的功能实现
- Android设计模式之动态代理,实现方法拦截功能
- android项目开发之-动态任务分配功能的实现
- ABAP中的动态编程(1): Run Time Type Services(RTTS)
- SAP ABAP编程 Table Control动态隐藏列
- SAP ABAP编程 Table Control动态隐藏列
- O盟如何绑定卡教程
- 关于python3.5-32 pyinstaller 启动时提示"ImportError: No system module 'pywintypes' (pywintypes35.dll)的解决方法"
- 解决Gradle DSL method not found: ‘android()’
- thinkphp5 环境变量配置
- Android 百度地图简单定位
- ABAP动态编程之功能实现
- 六,Java集合类(4)——HashMap实现原理
- android 开发收集
- 欢迎使用CSDN-markdown编辑器
- Activity窗口设置大小
- Python基础-字典详解
- STarting
- servlet学习总结七
- Alcatraz的安装和使用