1)6.40以前可以使用代码
REPORT Z_dyn_attribute LINE-SIZE 500..
* Dynamische Attributbeschaffung
*================================================================
PARAMETERS tabnam(10) TYPE c DEFAULT 'SFLIGHT'.
DATA objekt TYPE REF TO data.
FIELD-SYMBOLS <aber> TYPE ANY.
FIELD-SYMBOLS <feld> TYPE ANY.
DATA tab TYPE i VALUE 1.
*================================================================
START-OF-SELECTION.
CREATE DATA objekt TYPE (tabnam).
ASSIGN objekt->* TO <aber>.
SELECT * FROM (tabnam) INTO <aber>.
NEW-LINE.
tab = 1.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE <aber> TO <feld>.
IF sy-subrc NE 0. EXIT. ENDIF.
WRITE AT tab(10) <feld>.
ADD 11 TO tab.
ENDDO.
ENDSELECT.
TOP-OF-PAGE.
DATA struktur TYPE REF TO cl_abap_structdescr.
DATA beschrieb TYPE abap_compdescr.
struktur ?= cl_abap_typedescr=>describe_by_data( <aber> ).
NEW-LINE.
tab = 1.
LOOP AT struktur->components INTO beschrieb.
WRITE AT tab(10) beschrieb-name.
ADD 11 TO tab.
ENDLOOP.
ULINE.
tab = 1.
2)6.40以后可以使用代码
REPORT zdany_dynamic_select.
* We use some parameters to dynamically control the select, this is not very
* clever but this is just a test program !!
PARAMETER : p_tabnam TYPE tabname DEFAULT 'SFLIGHT',
p_selfl1 TYPE edpline DEFAULT 'CARRID',
p_selfl2 TYPE edpline DEFAULT 'CONNID',
p_selfl3 TYPE edpline DEFAULT 'FLDATE',
p_selfl4 TYPE edpline DEFAULT 'PRICE',
p_selfl5 TYPE edpline DEFAULT 'CURRENCY',
p_where1 TYPE edpline DEFAULT 'PRICE > 300',
p_where2 TYPE edpline DEFAULT 'AND CURRENCY = ''EUR'''.
FIELD-SYMBOLS : <lt_outtab> TYPE ANY TABLE,
<ls_outtab> TYPE ANY,
<l_fld> TYPE ANY.
DATA: lt_where TYPE TABLE OF edpline,
lt_sel_list TYPE TABLE OF edpline,
lt_group TYPE TABLE OF edpline,
l_having TYPE string,
l_wa_name TYPE string,
l_sel_list TYPE edpline,
dref TYPE REF TO data,
itab_type TYPE REF TO cl_abap_tabledescr,
struct_type TYPE REF TO cl_abap_structdescr,
elem_type TYPE REF TO cl_abap_elemdescr,
comp_tab TYPE cl_abap_structdescr=>component_table,
comp_fld TYPE cl_abap_structdescr=>component.
TYPES: f_count TYPE i.
* Creation of the output table including a non standard field, f_count
* see ABAP FAQ #14 for more information on this topic
struct_type ?= cl_abap_typedescr=>describe_by_name( p_tabnam ).
elem_type ?= cl_abap_elemdescr=>describe_by_name( 'F_COUNT' ).
comp_tab = struct_type->get_components( ).
* We remove the unnecessary fields
LOOP AT comp_tab INTO comp_fld.
IF comp_fld-name <> p_selfl1 AND
comp_fld-name <> p_selfl2 AND
comp_fld-name <> p_selfl3 AND
comp_fld-name <> p_selfl4 AND
comp_fld-name <> p_selfl5.
DELETE TABLE comp_tab WITH TABLE KEY name = comp_fld-name.
ENDIF.
ENDLOOP.
comp_fld-name = 'F_COUNT'.
comp_fld-type = elem_type.
APPEND comp_fld TO comp_tab.
struct_type = cl_abap_structdescr=>create( comp_tab ).
itab_type = cl_abap_tabledescr=>create( struct_type ).
l_wa_name = 'l_WA'.
CREATE DATA dref TYPE HANDLE itab_type.
ASSIGN dref->* TO <lt_outtab>.
CREATE DATA dref TYPE HANDLE struct_type.
ASSIGN dref->* TO <ls_outtab>.
* Creation of the selection fields and the "group by" clause
APPEND p_selfl1 TO lt_sel_list.
APPEND p_selfl1 TO lt_group.
APPEND p_selfl2 TO lt_sel_list.
APPEND p_selfl2 TO lt_group.
APPEND p_selfl3 TO lt_sel_list.
APPEND p_selfl3 TO lt_group.
APPEND p_selfl4 TO lt_sel_list.
APPEND p_selfl4 TO lt_group.
APPEND p_selfl5 TO lt_sel_list.
APPEND p_selfl5 TO lt_group.
APPEND 'COUNT(*) AS F_COUNT' TO lt_sel_list.
* creation of the "where" clause
APPEND p_where1 TO lt_where.
APPEND p_where2 TO lt_where.
* Creation of the "having" clause
l_having = 'count(*) >= 1'.
* THE dynamic select
SELECT (lt_sel_list)
FROM (p_tabnam)
INTO CORRESPONDING FIELDS OF TABLE <lt_outtab>
WHERE (lt_where)
GROUP BY (lt_group)
HAVING (l_having)
ORDER BY (lt_group).
* display of the results
LOOP AT <lt_outtab> ASSIGNING <ls_outtab>.
LOOP AT comp_tab INTO comp_fld.
ASSIGN COMPONENT comp_fld-name OF STRUCTURE <ls_outtab> TO <l_fld>.
WRITE: <l_fld>.
ENDLOOP.
SKIP.
ENDLOOP.
分享到:
相关推荐
ABAP - Keyword Documentation This documentation describes the syntax and meaning of the keywords of the ABAP language and its object-oriented part ABAP Objects. Alongside this, language frameworks ...
总的来说,《SAP中文教材全系列之ABAP-BC400_ZH》是一套全面、系统地介绍SAP ABAP编程的教材,适用于SAP专业开发者和ABAP程序员的学习和参考。通过本系列教材的学习,开发者可以充分理解ABAP编程的原理和实践,为SAP...
- 包括程序类型(如报告、函数模块等)和其他元数据信息。 - **编写与测试程序**: - 使用ABAP开发环境进行编码,并利用调试工具进行错误检测和修正。 - **显示或更改程序**: - 通过SE38等事务代码可以查看和...
ABAP-培训教材附录 ABAP-培训教材ABAP-培训教材ABAP-培训教材ABAP-培训教材
CD260-ABAP-in-Eclipse-开发-CN CD260-ABAP-in-Eclipse-开发-CNCD260-ABAP-in-Eclipse-开发-CNCD260-ABAP-in-Eclipse-开发-CN
eclipse-abap-keywordcolors eclipse-abap-关键字颜色
### SAP-ABAP-OO 实现 CL-SALV-TABLE 的关键知识点 #### 1. ABAP 面向对象的 ALV 显示方法 在 SAP 的 ABAP 环境中,ALV (Application List Viewer) 是一种非常常用的技术,用于在屏幕上以表格的形式展示数据。传统...
SAP ABAP 中的动态内表是一种特殊的内表结构,它可以根据实际情况动态地生成和赋值。本文将详细介绍动态内表的创建、赋值和读取显示。 动态内表的创建 动态内表的创建主要分为两步:首先定义动态结构,然后根据...
ABAP-WebDynpro 实例 ABAP-WebDynpro 实例是 SAP 中的一种开发技术...总结来说,本实例展示了如何使用 ABAP-WebDynpro 创建一个基于 Web 的应用程序,并介绍了控制器COMPONENTCONTROLLER 和 Context 节点的设置方法。
ABAP-数据类型学习笔记
ABAP-OLE开发是SAP系统中的一种技术,它允许ABAP编程语言与外部对象链接和嵌入(OLE)应用程序进行交互。OLE自动化是Windows环境中的一种技术,它使得不同的应用程序可以共享数据和服务,通常用于控制一个应用程序...
ABAP-ALV进阶是指在SAP系统中使用ABAP语言开发的高级列表查看器(ALV)。ALV是SAP系统中心的列表标准,可以在ABAP程序中进行报表输出。下面是ABAP-ALV进阶的知识点详解: 一、ALV概要 ALV 全称为 ABAP List Viewer...
总结来说,“web-dynpro-abap-ui-element-tree”涵盖了Web Dynpro ABAP中创建和管理树形UI元素的核心概念和技术,包括UI元素定义、数据绑定、用户交互处理和测试。通过深入学习这一章节,开发者将能够构建出更加灵活...
这个“SAP的开发工具ABAP-4学习资料”压缩包提供了关于ABAP的关键字使用方法的学习资源,这对于想要深入理解并掌握ABAP编程的人来说是非常宝贵的。 首先,我们要了解ABAP的基本结构和语法。ABAP是一种结构化编程...
在SAP编程中,ABAP-OLE(Object Linking and Embedding)是一种技术,它允许SAP应用程序与外部非SAP系统进行交互,例如创建、读取、更新和删除Excel电子表格。在上述代码中,我们看到了一个名为`ZWM_015`的报告,它...
ABAP-学习笔记-通用
2. ABAP编程技巧:ABAP-BC401可能介绍了在SAP系统中进行高效编程所需的技巧和最佳实践,如使用ABAP字典、内联声明、程序组织单元(POU)的创建和管理等。 3. 报表开发:SAP ABAP的一个重要应用是报表开发,教材中...
ABAP-子程序宏函数学习笔记.py
此外,还会讲解动态编程,例如使用CALL METHOD动态调用方法,以及使用DATA和TYPES来动态定义数据结构。ABAP的对象导向编程(OOP)也会被涵盖,包括类的创建、继承和多态性等概念。同时,函数库和增强技术,如BADI...