Created by Jerry Wang on Mar 09, 2014

自己写了一个小工具,输入product ID,输出这个product所有settype包含的内容.

输出结果如下图所示:

REPORT  ZHANA_PRODUCT_READ_COMPLETE.PARAMETER: prd_id TYPE comm_product-product_id OBLIGATORY.CALL FUNCTION 'ZCRM_PRODUCT_GET_ALL_DATA'EXPORTINGiv_product_id = prd_id.FUNCTION zcrm_product_get_all_data.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(IV_PRODUCT_ID) TYPE  COMM_PRODUCT-PRODUCT_ID
*"----------------------------------------------------------------------DATA: lt_product_assigned TYPE STANDARD TABLE OF comm_prprdcatr,ls_product_assigned LIKE LINE OF lt_product_assigned,lt_cate_set_rel     TYPE comt_prcat_frag_rel_tab,ls_settype          TYPE comt_settype_ext,ls_cate_sel_rel     LIKE LINE OF lt_cate_set_rel,lr_old              TYPE REF TO data,lv_set_guid         TYPE comt_frg_guid,lr_new              TYPE REF TO data,lr_data             TYPE REF TO data,params              TYPE TABLE OF rfc_funint,ptab                TYPE abap_func_parmbind_tab,ptab_line           TYPE abap_func_parmbind,etab                TYPE abap_func_excpbind_tab,etab_line           TYPE abap_func_excpbind,ls_params           LIKE LINE OF params,nametab             TYPE TABLE OF x031l,ls_nametab          LIKE LINE OF nametab,ls_product          TYPE comm_product,lr_tabdescr         TYPE REF TO cl_abap_tabledescr.FIELD-SYMBOLS: <data>  TYPE any,<field> TYPE any,<struc> TYPE any,<line>  TYPE any,<table> TYPE ANY TABLE.SELECT SINGLE product_id product_guid INTO ls_product FROM comm_product WHERE product_id = iv_product_id.IF sy-subrc <> 0.WRITE:/ 'Cannot find product with ID: ' , iv_product_id COLOR COL_NEGATIVE INTENSIFIED ON.RETURN.ENDIF.CALL METHOD cl_com_product_org_type=>comc_pr_org_link_read_allIMPORTINGet_pr_org_rel = lt_rel_metaEXCEPTIONSnot_found     = 1OTHERS        = 2.SELECT * INTO TABLE lt_product_assigned FROM comm_prprdcatr WHERE product_guid = ls_product-product_guid.LOOP AT lt_product_assigned INTO ls_product_assigned.CALL FUNCTION 'COM_PRCAT_FRAG_REL_READ'EXPORTINGiv_category_guid  = ls_product_assigned-category_guidIMPORTINGet_prcat_frag_rel = lt_cate_set_relEXCEPTIONSwrong_call        = 1OTHERS            = 2.ASSERT sy-subrc = 0.PERFORM add_settype CHANGING lt_cate_set_rel.LOOP AT lt_cate_set_rel INTO ls_cate_sel_rel.CALL FUNCTION 'COM_SETTYPE_READ_SINGLE'EXPORTINGiv_settype_guid  = ls_cate_sel_rel-frgtype_guidIMPORTINGes_settype       = ls_settypeEXCEPTIONSnot_found        = 1no_import_values = 2no_text_found    = 3OTHERS           = 4.CHECK ls_settype-func_read IS NOT INITIAL.CLEAR: params,ptab,etab.CALL FUNCTION 'RFC_GET_FUNCTION_INTERFACE'EXPORTINGfuncname = ls_settype-func_readTABLESparams   = params.LOOP AT params INTO ls_params WHERE optional = space.CLEAR: ptab_line.CASE ls_params-paramclass.WHEN 'E'.ptab_line-name = ls_params-parameter.ptab_line-kind = abap_func_importing.CREATE DATA lr_data TYPE (ls_params-tabname).ptab_line-value = lr_data.INSERT ptab_line INTO TABLE ptab.WHEN 'I'. "exporting parameter in the programptab_line-name = ls_params-parameter.ptab_line-kind = abap_func_exporting.CREATE DATA lr_data TYPE (ls_params-tabname).ASSIGN lr_data->* TO <data>.IF ptab_line-name = co_set_guid.PERFORM get_set_guid USING ls_product-product_guid ls_settype CHANGING lv_set_guid.<data> = lv_set_guid.ELSEIF ptab_line-name = co_product_guid.<data> = ls_product-product_guid.ENDIF.ptab_line-value = lr_data.INSERT ptab_line INTO TABLE ptab.WHEN 'X'.etab_line-name = 'NOT_FOUND'.etab_line-value = 10.INSERT etab_line INTO TABLE etab.ENDCASE.ENDLOOP.ULINE.WRITE:/ 'Start processing Set type:' , ls_settype-frgtype_id COLOR COL_TOTAL.CHECK ptab IS NOT INITIAL.CALL FUNCTION ls_settype-func_read PARAMETER-TABLE ptab EXCEPTION-TABLE etab.IF sy-subrc <> 0.WRITE:/ 'No data maintained for Set type:' , ls_settype-frgtype_id COLOR COL_NEGATIVE.ELSE.LOOP AT ptab INTO ptab_line WHERE kind = abap_func_importing.CHECK ptab_line-value IS NOT INITIAL.ASSIGN ptab_line-value->* TO <struc>.PERFORM display_content USING <struc> ptab_line-value.ENDLOOP.ENDIF.ENDLOOP.ENDLOOP.ENDFUNCTION.
FORM display_struct USING struc TYPE any.FIELD-SYMBOLS: <local_field1> TYPE any.DATA: lt_para_table1 TYPE abap_compdescr_tab,ls_line1       LIKE LINE OF lt_para_table1,lv_type        TYPE i.CLEAR: lv_type.PERFORM get_field_table USING struc CHANGING lt_para_table1.DO.ASSIGN COMPONENT sy-index OF STRUCTURE struc TO <local_field1>.IF sy-subrc <> 0.EXIT.ENDIF.IF <local_field1> IS NOT INITIAL." IF <local_field1> is still structure" THENTRY.lr_strucdescr ?= cl_abap_typedescr=>describe_by_data( <local_field1> ).lv_type = co_struct.CATCH cx_sy_move_cast_error.TRY.lr_tabledescr ?= cl_abap_tabledescr=>describe_by_data( <local_field1> ).lv_type = co_table.CATCH cx_sy_move_cast_error.TRY.lr_refdescr ?= cl_abap_refdescr=>describe_by_data( <local_field1> ).CATCH cx_sy_move_cast_error.lv_type = co_ref.ENDTRY.lv_type = co_other.ENDTRY.ENDTRY.CASE lv_type.WHEN co_struct.PERFORM display_struct USING <local_field1>.WHEN co_table.PERFORM display_table USING <local_field1>.WHEN co_ref.BREAK-POINT.WHEN co_other.READ TABLE lt_para_table1 INTO ls_line1 INDEX sy-index.WRITE:/ ls_line1-name, ' Content:' , <local_field1> COLOR COL_POSITIVE INTENSIFIED ON.ENDCASE.ENDIF.ENDDO.
ENDFORM.FORM add_settype CHANGING rel_table TYPE comt_prcat_frag_rel_tab.DATA: lt_table    TYPE STANDARD TABLE OF comc_settype,lt_copy     LIKE lt_table,ls_rel_line TYPE comt_prcat_frag_rel,ls_table    LIKE LINE OF lt_table.CHECK lv_first_time = abap_true.ls_table-frgtype_id = 'COMM_PR_STATUS'.APPEND ls_table TO lt_copy.ls_table-frgtype_id = 'COMM_PR_CATEGORY'.APPEND ls_table TO lt_copy.SELECT frgtype_guid frgtype_id INTO CORRESPONDING FIELDS OF TABLE lt_table FROM comc_settypeFOR ALL ENTRIES IN lt_copy WHERE frgtype_id = lt_copy-frgtype_id.LOOP AT lt_table INTO ls_table.ls_rel_line-frgtype_guid = ls_table-frgtype_guid.APPEND ls_rel_line TO rel_table.ENDLOOP.lv_first_time = abap_false.ENDFORM.FORM get_field_table USING struc TYPE any CHANGING para_tab TYPE abap_compdescr_tab.TRY.lr_strucdescr ?= cl_abap_typedescr=>describe_by_data( struc ).CLEAR: para_tab.para_tab = lr_strucdescr->components.CATCH cx_sy_move_cast_error.ENDTRY.
ENDFORM.FORM display_table USING struc TYPE ANY TABLE.FIELD-SYMBOLS: <local_line2>  TYPE any,<local_field2> TYPE any.DATA: lt_para_table TYPE abap_compdescr_tab,ls_line       LIKE LINE OF lt_para_table.LOOP AT struc ASSIGNING <local_line2>.DO.PERFORM get_field_table USING <local_line2> CHANGING lt_para_table.ASSIGN COMPONENT sy-index OF STRUCTURE <local_line2> TO <local_field2>.IF sy-subrc <> 0.EXIT.ENDIF.IF <local_field2> IS NOT INITIAL.lr_typedescr = cl_abap_typedescr=>describe_by_data( <local_field2> ).TRY.lr_chardescr ?= lr_typedescr.READ TABLE lt_para_table INTO ls_line INDEX sy-index.WRITE:/ ls_line-name, ' Content:' , <local_field2> COLOR COL_POSITIVE INTENSIFIED ON.CATCH cx_sy_move_cast_error."struc or tableTRY."struclr_strucdescr ?= lr_typedescr.PERFORM display_struct USING <local_field2>.CATCH cx_sy_move_cast_error.TRY.lr_tabledescr ?= lr_typedescr.PERFORM display_table USING <local_field2>.CATCH cx_sy_move_cast_error.FIELD-SYMBOLS: <temp_table> TYPE REF TO data.ASSIGN <local_field2> TO <temp_table>.PERFORM display_ref USING <temp_table>.ENDTRY.ENDTRY.ENDTRY.ENDIF.ENDDO.ENDLOOP.
ENDFORM.FORM display_ref USING ref_data TYPE REF TO data.FIELD-SYMBOLS:<local_table> TYPE ANY TABLE,<line>        TYPE any.ASSIGN ref_data->* TO <local_table>.LOOP AT <local_table> ASSIGNING <line>.PERFORM display_struct USING <line>.ENDLOOP.
ENDFORM.
FORM display_content USING struc TYPE any top_table TYPE REF TO data.FIELD-SYMBOLS: <local_table> TYPE ANY TABLE,<local_line>  TYPE any,<local_field> TYPE any.lr_typedescr = cl_abap_typedescr=>describe_by_data( struc ).TRY.lr_strucdescr ?= lr_typedescr.PERFORM display_struct USING struc.CATCH cx_sy_move_cast_error."ASSIGN ptab_line-value->* TO <local_table>.ASSIGN top_table->* TO <local_table>.PERFORM display_table USING <local_table>.ENDTRY.
ENDFORM.FORM get_set_guid USING product_guid TYPE comm_prprdcatr-product_guid settype TYPE comt_settype_extCHANGING set_guid TYPE comt_frg_guid.READ TABLE lt_rel_metaWITH KEY org_type = settype-org_unitINTO ls_rel_meta.ASSERT sy-subrc = 0.DATA:lt_rel_table      TYPE REF TO data,lt_set_table      TYPE REF TO data,lt_set_table_sort TYPE REF TO data,lt_key_tab        TYPE REF TO data,ls_key_line       TYPE REF TO data,ls_result         TYPE REF TO data,lt_rel_db_tab     TYPE REF TO data,lt_set_guid       TYPE comt_frg_guid_tab,lv_current        TYPE abap_bool VALUE abap_true.FIELD-SYMBOLS:<rel_tab>      TYPE ANY TABLE,<rel_tab_db>   TYPE ANY TABLE,<set_tab>      TYPE ANY TABLE,<key_line>     TYPE any,<field>        TYPE any,<result>       TYPE any,<key_tab>      TYPE ANY TABLE,<set_tab_sort> TYPE ANY TABLE."* create relation table:CREATE DATA lt_rel_tableTYPE (ls_rel_meta-link_table_ttyp).ASSIGN lt_rel_table->* TO <rel_tab>.ASSERT <rel_tab> IS ASSIGNED.CREATE DATA lt_key_tab TYPE (ls_rel_meta-link_sel_ttyp).ASSIGN lt_key_tab->* TO <key_tab>.ASSERT <key_tab> IS ASSIGNED.CREATE DATA lt_rel_db_tab TYPE (ls_rel_meta-link_table_ttyp).ASSIGN lt_rel_db_tab->* TO <rel_tab_db>.CREATE DATA ls_key_line TYPE (ls_rel_meta-link_sel_struc).ASSIGN ls_key_line->* TO <key_line>.ASSIGN COMPONENT 1 OF STRUCTURE <key_line> TO <field>.<field> = product_guid.ASSIGN COMPONENT 2 OF STRUCTURE <key_line> TO <field>.<field> = settype-frgtype_guid.INSERT <key_line> INTO TABLE <key_tab>.CALL FUNCTION ls_rel_meta-func_rel_read_muEXPORTINGit_product_set_type = <key_tab>iv_current          = lv_currentiv_read_old_values  = 'X'iv_update_buffer    = spaceIMPORTINGet_rel              = <rel_tab>et_rel_old          = <rel_tab_db>EXCEPTIONSnot_found           = 1wrong_call          = 2OTHERS              = 3.CHECK sy-subrc = 0.CREATE DATA ls_result TYPE (ls_rel_meta-link_table_struc).ASSIGN ls_result->* TO <result>.LOOP AT <rel_tab> ASSIGNING <result>.ASSIGN COMPONENT 'FRAGMENT_GUID' OF STRUCTURE <result> TO <field>.IF sy-subrc = 0.set_guid = <field>.ENDIF.EXIT.ENDLOOP.ENDFORM.

读取一个product全部数据的工具相关推荐

  1. 一个java随机数据的工具类

    获得随机数据工具类 在一些业务还有测试中可能需要一些有实际意义的测试数据,编写这些数据可能比较头大,这里写了一个随机数据的工具类,具有以下功能: 获得指定长度的随机大写.小写.数字字母 获得随机的性别 ...

  2. 请用python实现读取一个文本文件到数据数组中

    可以使用Python中的内置函数open()和readlines()来读取文本文件并将其存储到数据数组中.具体实现步骤如下: 使用open()函数打开文本文件,指定文件路径和打开模式(例如,'r'表示 ...

  3. 如何选择一个合适的大数据可视化工具

    高质量的可视化工具对数据分析是必不可少的.数据可视化工具是一种应用软件,它帮助用户以可视化和图形化的格式显示数据,并提供数据的完整轮廓.饼图.曲线.热图.直方图.雷达/蜘蛛图只是可视化的一小部分,这些 ...

  4. bin文件数据处理,读取一个文件数据写入另一个文件中

    C程序读取一个Bin文件数据,然后存入另一个Bin文件 最近工作遇到需要bin文件数据处理,对程序语言其实不大熟悉,还是凭着一些浅显的C语言基础,各种折磨一天时间才实现了工作需求,好了,废话不多说,直 ...

  5. 读取其他软件页面数据_电脑软件分享之硬盘数据完美恢复

    #科技V计划# 硬盘数据恢复是指通过技术手段,将保存在台式机硬盘.笔记本硬盘.服务器硬盘移动硬盘等设备上丢失的电子数据进行抢救和恢复的技术. 硬盘维修只是将故障硬盘恢复到正常运转状态,在维修过程中不会 ...

  6. python 3d大数据可视化软件_十大顶级大数据可视化工具推荐

    要使数据分析真正有价值和有洞察力,就需要高质量的可视化工具.市场上有很多产品,特点和价格各不相同,本文列出了一些广泛认可的工具.其实企业如何选择一个合适的可视化工具,并不是一件容易的事情,需要仔细的考 ...

  7. 强推!十大顶级大数据可视化工具 | 程序员硬核评测

    戳蓝字"CSDN云计算"关注我们哦! 程序员硬核评测:客观.高效.不说软话.无论是技术质量.性能水平,还是工具筛选,一测便知! 编译作者:风车云马 前言 Salesforce公司的 ...

  8. 让效率“爆表”的49个数据可视化工具

    工欲善其事,必先利其器.好的工具可以大大提升你的工作效率,并获得身边人的羡慕和赞赏.今天,我们就来向小伙伴们分享一大波非常实用的工具,武装你的大脑. ▲图表类 iCharts 简介:各种主题的开放图表 ...

  9. 30 个最好的数据可视化工具推荐

    转载自:http://www.iteye.com/news/28936 如今,同质化的应用越来越多,应用开发者也开始在用户体验上下功夫,比如数据可视化,将一大堆密密麻麻的数字转成图表形式,可以更直观地 ...

最新文章

  1. 图解GeoHash算法--MongoDB 地理位置索引的实现原理
  2. 民营企业的ERP之路
  3. javascript 鼠标事件总结
  4. 常见的网页技巧(转)
  5. Django2中使用xadmin
  6. UOJ #584. 天天去哪吃
  7. java中的几种泛型类——HashSet、HashMap、TreeSet、TreeMap,遍历map,排序,HashTable比较
  8. ADO.net中临时表DataTable的简单应用
  9. Team Foundation 使用第三方比较工具
  10. Python 语言使用中遇到的问题汇总
  11. 菜鸟教程python100例-菜鸟教程python
  12. mysqldump set-gtid-purged=OFF的问题
  13. T 型与π型衰减网络
  14. PCB中产生电磁干扰的原因及消除干扰技巧
  15. Amlogic Linux系列(四) 视频解码分析2
  16. 如何制作生成GIF?手把手教你生成GIF动态图
  17. SlackwareLinux安装速成班(转)
  18. OpenWrt的SR9000有线网卡驱动
  19. linux dd新建文件,linux dd命令 创造一个文件
  20. 《程序员防近视指南》学习笔记全

热门文章

  1. 判断浏览器是否支持某个css属性
  2. 关于vc6 在mfc ClassWizard中无法添加成员变量
  3. Linux上搭建伪集群 Hadoop3.1
  4. 《终身成长》读书笔记(part3)--如果一个人能学会什么东西,那么世界上其他人也都可以学会
  5. 初识Mysql(part4)--我需要知道的5条Mysql语句之排序
  6. R语言之离群点检验(part3)--利用聚类检测离群点
  7. 《黑天鹅》读书笔记(part4)--对许多人而言,知识的强大作用在于制造自信,而不是提高能力。
  8. 报错:TypeError: can‘t pickle _thread.RLock objects
  9. Python中 __init__的通俗解释是什么?
  10. 动手开始创建第一个 Angular 应用并通过 gh-pages 发布到 Github 上