1.实现

  • 基于视图 SFLIGHTS
  • 代码
    DATA: ls_selid  TYPE rsdynsel-selid,lt_rsdtab TYPE TABLE OF rsdstabs.DATA: lt_cond  TYPE rsds_twhere,lt_field TYPE TABLE OF rsdsfields.
    DATA: dref          TYPE REF TO data.FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
    FIELD-SYMBOLS <cond>  LIKE LINE OF lt_cond.SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE l_text.PARAMETERS: p_pritab TYPE tabname DEFAULT 'SFLIGHTS' OBLIGATORY,    "这是一个视图p_stab1  TYPE tabname DEFAULT 'SCARR' OBLIGATORY,      "这是一个表p_stab2  TYPE tabname DEFAULT 'SPFLI' OBLIGATORY,      "这是一个表p_stab3  TYPE tabname DEFAULT 'SFLIGHT' OBLIGATORY.    "这是一个表SELECTION-SCREEN END OF BLOCK b1.INITIALIZATION.l_text = '选择透明表'.START-OF-SELECTION.PERFORM frm_check_existence USING  p_pritab 'X'.      "'X' VIEWPERFORM frm_check_existence USING  p_stab1 ''.PERFORM frm_check_existence USING  p_stab2 ''.PERFORM frm_check_existence USING  p_stab3 ''.PERFORM frm_generate_condition.PERFORM frm_show_alv.end-of-SELECTION.
    *&---------------------------------------------------------------------*
    *& Form FRM_check_existence
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *& -->  p1        text
    *& <--  p2        text
    *&---------------------------------------------------------------------*
    FORM frm_check_existence USING p1 p2.IF p2 = 'X'.TRY.p1 = cl_abap_dyn_prg=>check_table_or_view_name_str(val = p1packages = 'SAPBC_DATAMODEL_SERVICE' ).CATCH cx_abap_not_a_table.MESSAGE |视图:{ p1 }不存在!| TYPE 'I' DISPLAY LIKE 'E'.LEAVE PROGRAM.CATCH cx_abap_not_in_package.MESSAGE |只能输入 PACKAGE: SAPBC_DATAMODEL_SERVICE 中的视图!| TYPE 'I' DISPLAY LIKE 'E'.LEAVE PROGRAM.ENDTRY.ELSE.TRY.p1 = cl_abap_dyn_prg=>check_table_name_str(val = p1packages = 'SAPBC_DATAMODEL' ).CATCH cx_abap_not_a_table.MESSAGE |透明表:{ p1 }不存在!| TYPE 'I' DISPLAY LIKE 'E'.LEAVE PROGRAM.CATCH cx_abap_not_in_package.MESSAGE |只能输入 PACKAGE: SAPBC_DATAMODEL 中的视图!| TYPE 'I' DISPLAY LIKE 'E'.LEAVE PROGRAM.ENDTRY.ENDIF.ENDFORM.
    *&---------------------------------------------------------------------*
    *& Form frm_Generate_condition
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *& -->  p1        text
    *& <--  p2        text
    *&---------------------------------------------------------------------*
    FORM frm_generate_condition .lt_rsdtab = VALUE #( ( prim_tab = p_pritab sec_tab = p_stab1 prim_fname = 'CARRID' sec_fname = 'CARRID'  )( prim_tab = p_pritab sec_tab = p_stab2 prim_fname = 'CARRID' sec_fname = 'CARRID'  )( prim_tab = p_pritab sec_tab = p_stab2 prim_fname = 'CONNID' sec_fname = 'CONNID'  )( prim_tab = p_pritab sec_tab = p_stab3 prim_fname = 'CARRID' sec_fname = 'CARRID'  )( prim_tab = p_pritab sec_tab = p_stab3 prim_fname = 'CONNID' sec_fname = 'CONNID'  )( prim_tab = p_pritab sec_tab = p_stab3 prim_fname = 'FLDATE' sec_fname = 'FLDATE'  ) ).DATA lt_11 TYPE rsds_texpr.CALL FUNCTION 'FREE_SELECTIONS_INIT'EXPORTINGkind         = 'T'IMPORTINGselection_id = ls_selidTABLEStables_tab   = lt_rsdtabEXCEPTIONSOTHERS       = 4.IF sy-subrc <> 0.MESSAGE '初始化动态选择失败!' TYPE 'I' DISPLAY LIKE 'E'.LEAVE PROGRAM.ENDIF.PERFORM frm_selections_dialog.ENDFORM.
    *&---------------------------------------------------------------------*
    *& Form FRM_SELECTIONS_DIALOG
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *& -->  p1        text
    *& <--  p2        text
    *&---------------------------------------------------------------------*
    FORM frm_selections_dialog .CALL FUNCTION 'FREE_SELECTIONS_DIALOG'EXPORTINGselection_id  = ls_selidtitle         = '屏幕字段动态选择对话窗口'as_window     = ' 'IMPORTINGwhere_clauses = lt_condTABLESfields_tab    = lt_fieldEXCEPTIONSOTHERS        = 4.IF lt_field IS INITIAL AND sy-subrc = 0.MESSAGE '未选择任何字段,请重新输入!' TYPE 'S'.PERFORM frm_selections_dialog.ENDIF.ENDFORM.
    *&---------------------------------------------------------------------*
    *& Form FRM_SHOW_ALV
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *& -->  p1        text
    *& <--  p2        text
    *&---------------------------------------------------------------------*
    FORM frm_show_alv .CREATE DATA dref TYPE TABLE OF (p_pritab).ASSIGN dref->* TO <table>.IF lt_cond IS NOT INITIAL.ASSIGN lt_cond[ tablename = p_pritab ] TO <cond>."get dataTRY.SELECT *FROM (p_pritab)WHERE (<cond>-where_tab)INTO TABLE @<table>.CATCH cx_sy_dynamic_osql_error.MESSAGE 'Error in dynamic Open SQL' TYPE 'I' DISPLAY LIKE 'E'.LEAVE PROGRAM.ENDTRY.ENDIF."show alvTRY.cl_salv_table=>factory(IMPORTING r_salv_table = DATA(alv)CHANGING  t_table      = <table> ).alv->display( ).CATCH cx_salv_msg.MESSAGE 'Error in ALV display' TYPE 'I' DISPLAY LIKE 'E'.ENDTRY.
    ENDFORM.
    

2.

  • 选择界面
  • 动态参数选择
  • 执行结果

XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

SAP FREE_SELECTIONS_INIT多表动态选择演示相关推荐

  1. SAP ABAP 动态选择屏幕

    常规实现方式: 1. 动态控制属性,使用如下语句代码控制. 2. 标准模块实现的free selection 3. 结合逻辑数据库的动态选择屏幕 具体实现: 第一种大致通过如下代码实现 AT SELE ...

  2. 动态选择屏幕(FREE_SELECTIONS_INIT)

    使用标准的函数来动态创建选择屏幕 *动态选择屏幕 DATA: lv_selection_id TYPE rsdynsel-selid,       lt_tables_tab   TYPE STAND ...

  3. 关于程序变式中动态选择的一点说明

    今天在做一个程序,功能是调用FBL3N(总账科目行项目显示),并且向这个程序传入相应的选择屏幕值,直接展示报表.但是,遇到了一个问题,就是这里面的动态选择中的屏幕选项,无法写入值,废了好大的周折,才搞 ...

  4. 动态加载子节点_省市区递归嵌套子流程动态选择实现

    5.省市区递归嵌套子流程动态选择实现 5.0 流程特色 展开子流程(容器)中可以无限的嵌套子流程.嵌套子流程可以无限的进行嵌套,类似递归流程. 子流程的实例可以有上一个节点进行动态选择. 子流程完成条 ...

  5. excel按条件选择工作表_在Excel工作表中选择“实际使用范围”

    excel按条件选择工作表 It's easy to select the current range in Excel – just press Ctrl + A. That shortcut se ...

  6. SAP字段与表的对应关系

    SAP字段与表的对应关系   MASTER DATA-主数据 Customer Master KNA1                         Customer Basic Data KNB1 ...

  7. oracle 合并多个不同结构的表_视频演示| 如何将多个工作簿合并为一张工作表

    * 西玛小课堂·免费视频课 *  电子表格实用技能演示   PPT课件制作技巧   照片图像处理实战   语音文件编辑技巧   公众号文章排版实战   标志.字体设计技巧   平面广告设计技能   快 ...

  8. SAP abap内表分类与增删改查操作

    SAP abap内表分类与增删改查操作 1.内表的分类 1.1.标准表 (standard table ) 系统为该表每一行生成一个院级索引.填表是可以将数据附加在现有行之后,也可以插入到指定的位置, ...

  9. IBatis.Net学习笔记九--动态选择Dao的设计分析

    在IBatis.Net中可以通过配置文件动态选择数据库.动态选择Dao对象. Dao对象也就是操作数据库的类,通过配置文件我们可以选择DataMapper的方式.Ado的方式.NHibernet的方式 ...

最新文章

  1. 12年后,人工智能和人类会是什么样?这是900位专家的看法|报告
  2. ELK结合logback搭建日志中心
  3. 数据中心着火,工程师用嘴一吹就灭了?
  4. 简单,方便,功能全的php分页类
  5. 接口测试(java+testng+ant+jenkins)第三篇ant
  6. php 获取config,PHP MVC如何自动调用config?
  7. Hadoop系列-分布式集群
  8. AI队列长度检测:R-CNN用于使用Keras进行自定义对象检测
  9. 解决bootstrap dropdown 下拉菜单有时候不能显示的问题
  10. python请求url非阻塞_python 如何连续读取一个由服务器发来的非阻塞请求?
  11. Win10 CMD命令大全—超好用快捷键
  12. dompdf中文乱码、换行解决方案
  13. Spring Bean生命周期(简单易懂)
  14. python基础语法学习一
  15. 数据结构大作-学生信息管理系统
  16. 紫光云这匹黑马,了解一下
  17. php视频怎么看,教你“如何巧看PHP中文网课程视频,悄悄成为高手?”
  18. linux yum 安装的路径在哪,yum 下载软件的存放位置
  19. 安装试用国产系统 ——中标麒麟V7.0
  20. 【分享】QT读取EXCEL文件(附代码)

热门文章

  1. build vue 指定版本_vue buid及部署踩坑记录
  2. mysql -省市区(市)
  3. git-lfs使用笔记
  4. 计算机网络的形成与发展
  5. 磁盘管理找不到新加硬盘,借助DG(DiskGenius)实现新加硬盘初始化分区和之前硬盘的数据迁移
  6. Gopher China 2019 讲师专访-滴滴出行/R lab 高级专家工程师杜欢
  7. opus 编码和解码完整demo代码,opus和wav互转(js源码)
  8. 【安全牛学习笔记】反射型XSS***漏洞的原理及解决办法
  9. Servlet 03
  10. 嵌入式Web项目(二)——CGI的引入