Product settype list tool - report PROD_DISPLAY_SETTYPE
时间:2022-06-25
本文章向大家介绍Product settype list tool - report PROD_DISPLAY_SETTYPE,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
Created by Jerry Wang, last modified on Dec 20, 2014
使用该tool 列出指定的product type下能assign的所有settype name和description:
可根据settype的类型做filter:
source code:
REPORT ZHANA_DISPLAY_SETTYPE.
PARAMETERS: prod TYPE COMM_PRODUCT-product_type,
set type COMT_PROD_COMP_TYPE.
DATA: lt_prod_set type STANDARD TABLE OF COMM_PROD_FRG,
lt_set TYPE STANDARD TABLE OF COMC_SETTYPE,
lt_set_text TYPE STANDARD TABLE OF COMC_SETTYPE_T,
ls_set LIKE LINE OF lt_set,
ls_set_text LIKE LINE OF lt_set_text.
IF prod IS NOT INITIAL.
SELECT * INTO TABLE lt_prod_set FROM COMM_PROD_FRG WHERE product_type = prod.
ELSE.
SELECT * INTO TABLE lt_prod_set FROM COMM_PROD_FRG.
ENDIF.
CHECK sy-subrc = 0.
IF set IS NOT INITIAL.
SELECT * INTO TABLE lt_set FROM COMC_SETTYPE FOR ALL ENTRIES IN lt_prod_set WHERE FRGTYPE_GUID = lt_prod_set-FRAGMENT_TYPE
AND PROD_COMP_TYPE = set.
ELSE.
SELECT * INTO TABLE lt_set FROM COMC_SETTYPE FOR ALL ENTRIES IN lt_prod_set WHERE FRGTYPE_GUID = lt_prod_set-FRAGMENT_TYPE.
ENDIF.
SELECT * INTO TABLE lt_set_text FROM COMC_SETTYPE_T FOR ALL ENTRIES IN lt_set WHERE FRGTYPE_GUID = lt_set-FRGTYPE_GUID.
LOOP AT lt_set INTO ls_set.
READ TABLE lt_set_text INTO ls_set_text WITH KEY FRGTYPE_GUID = ls_set-FRGTYPE_GUID LANGU = sy-langu.
WRITE: / ls_set-FRGTYPE_ID, ls_set_text-FRGTYPE_TEXT.
ENDLOOP.
test report: read complete set type by my self
REPORT ZHANA_PRODUCT_READ_ALL1.
PARAMETER: prd_id TYPE comm_product-product_id OBLIGATORY.
TYPES: tt_set_guid_tab TYPE STANDARD TABLE OF COMT_FRG_GUID.
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,
lt_rel_meta TYPE COMT_PR_ORG_REL_TAB,
ls_rel_meta LIKE LINE OF lt_rel_meta,
ls_cate_sel_rel LIKE LINE OF lt_cate_set_rel,
lr_old TYPE REF TO data,
lv_set_guid TYPE COMT_FRG_GUID,
lt_set_guid TYPE tt_set_guid_tab,
lr_new TYPE REF TO data,
lr_data TYPE REF TO data,
lv_first_time TYPE abap_bool VALUE abap_true,
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_typedescr TYPE REF TO cl_abap_typedescr,
lr_tabdescr TYPE REF TO cl_abap_tabledescr,
lr_chardescr TYPE REF TO CL_ABAP_ELEMDESCR,
lr_strucdescr TYPE REF TO cl_abap_structdescr.
FIELD-SYMBOLS: <data> TYPE ANY,
<field> TYPE any,
<struc> TYPE any,
<line> TYPE any,
<table> TYPE ANY TABLE.
CONSTANTS: co_set_guid TYPE string value 'IV_SET_GUID',
co_product_guid TYPE string VALUE 'IV_PRODUCT_GUID'.
START-OF-SELECTION.
SELECT SINGLE product_id product_guid INTO ls_product FROM comm_product WHERE product_id = prd_id.
IF sy-subrc <> 0.
WRITE:/ 'Cannot find product with ID: ' , prd_id COLOR COL_NEGATIVE INTENSIFIED ON.
RETURN.
ENDIF.
CALL METHOD cl_com_product_org_type=>comc_pr_org_link_read_all
IMPORTING
et_pr_org_rel = lt_rel_meta
EXCEPTIONS
not_found = 1
OTHERS = 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'
EXPORTING
iv_category_guid = ls_product_assigned-category_guid
IMPORTING
et_prcat_frag_rel = lt_cate_set_rel
EXCEPTIONS
wrong_call = 1
OTHERS = 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'
EXPORTING
iv_settype_guid = ls_cate_sel_rel-FRGTYPE_GUID
IMPORTING
es_settype = ls_settype
EXCEPTIONS
not_found = 1
no_import_values = 2
no_text_found = 3
OTHERS = 4.
CHECK ls_settype-func_read IS NOT INITIAL.
CLEAR: params,ptab,etab.
CALL FUNCTION 'RFC_GET_FUNCTION_INTERFACE'
EXPORTING
FUNCNAME = ls_settype-func_read
TABLES
PARAMS = 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 program
ptab_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.
CLEAR: lt_set_guid.
PERFORM get_set_guid USING ls_product-product_guid LS_SETTYPE CHANGING lt_set_guid.
READ TABLE lt_set_guid INTO lv_set_guid INDEX 1.
<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>.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDLOOP.
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.
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.
READ TABLE lt_para_table1 INTO ls_line1 INDEX sy-index.
WRITE:/ ls_line1-name, ' Content:' , <local_field1> COLOR COL_POSITIVE INTENSIFIED ON.
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_SETTYPE
FOR 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 table
TRY.
"struc
lr_strucdescr ?= lr_typedescr.
PERFORM display_struct using <local_field2>.
CATCH CX_SY_MOVE_CAST_ERROR.
PERFORM display_table USING <local_field2>.
ENDTRY.
ENDTRY.
ENDIF.
ENDDO.
ENDLOOP.
ENDFORM.
FORM display_content USING struc TYPE ANY.
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>.
PERFORM display_table USING <local_table>.
ENDTRY.
ENDFORM.
FORM get_set_guid USING product_guid TYPE comm_prprdcatr-product_guid settype TYPE COMT_SETTYPE_EXT
"CHANGING set_guid TYPE COMT_FRG_GUID.
CHANGING set_guid_tab TYPE tt_set_guid_tab.
READ TABLE lt_rel_meta
WITH KEY org_type = settype-org_unit
INTO 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_table
TYPE (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_mu
EXPORTING
it_product_set_type = <key_tab>
iv_current = lv_current
iv_read_old_values = 'X'
iv_update_buffer = space
IMPORTING
et_rel = <rel_tab>
et_rel_old = <rel_tab_db>
EXCEPTIONS
not_found = 1
wrong_call = 2
OTHERS = 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.
APPEND <field> TO set_guid_tab.
EXIT.
ENDIF.
ENDLOOP.
ENDFORM.
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Shopify主题title/description等SEO设置
- Golang实现守护进程
- LaTeX简单常用方法笔记
- Convolution_model_Application_v1a
- Windows平台快速安装MongoDB和Robo 3T
- Linux内存管理 - slab分配器
- akka-grpc - 基于akka-http和akka-streams的scala gRPC开发工具
- Redis Sentinel原理与实现 (中)
- Keras_Tutorial_v2a
- 根据字符串生成对应Hash值
- Redis Sentinel原理与实现 (下)
- 要点4:C的文件操作
- 服务器端请求伪造——SSRF
- 唯一ID生成原理与PHP实现
- Liquid模板语言参考文档