利用标准的BOL编辑工具,添加BOL对象,重写查询方法,实现简答的BOL查询

1.SE11创建查询对象结构:

2.SE11创建查询结果对象:

3.SE24新建处理类:

重写查询结果方法:

  METHOD IF_GENIL_APPL_INTLAY~GET_DYNAMIC_QUERY_RESULT.
TYPES:BEGIN OF TY_ADM,
GUID_H TYPE CRMT_OBJECT_GUID, "销售订单
OBJECT_ID TYPE CRMT_OBJECT_ID_DB,
OBJECT_ID_H TYPE CRMT_OBJECT_ID_DB, "销售订单
ZZZTRACKRETURN TYPE ZTRACKRETURN, "销售订单-发回运单号
GUID_D TYPE CRMT_OBJECT_GUID, "维修工单
OBJECT_ID_D TYPE CRMT_OBJECT_ID_DB, "维修工单
END OF TY_ADM,
BEGIN OF TY_PARTNER,
GUID_HI TYPE CRMT_OBJECT_GUID,
GUID_SET TYPE CRMT_OBJECT_GUID,
PARTNER_NO TYPE CRMT_PARTNER_NO,
PARTNER TYPE BU_PARTNER,
BU_SORT1 TYPE BU_SORT1,
END OF TY_PARTNER,
BEGIN OF TY_ITEM,
HEADER TYPE CRMT_OBJECT_GUID, "销售订单
PRODUCT TYPE CRMT_PRODUCT_GUID_DB,
ORDERED_PROD TYPE CRMT_ORDERED_PROD_DB,
NUMBER_INT TYPE CRMT_ITEM_NO,
ITM_TYPE TYPE CRMT_ITEM_TYPE_DB,
QUANTITY TYPE CRMT_SCHEDLIN_QUAN,
END OF TY_ITEM,
BEGIN OF TY_RESU,
GUID_H TYPE CRMT_OBJECT_GUID,
OBJECT_ID TYPE CRMT_OBJECT_ID_DB,
CREATED_AT TYPE COMT_CREATED_AT_USR,
ZZZMODENO TYPE ZMODENO,
ZZCLIENT_TYPE TYPE ZADTEL000056,
PO_NUMBER_SOLD TYPE CRMT_PO_NUMBER_SOLD,
END OF TY_RESU. DATA: LT_SELECTION TYPE AXTT_TABLES_SEL_PARAM,
LS_SELECTION TYPE AXT_TABLES_SEL_PARAM,
RT_OBJECT_ID TYPE RANGE OF CRMT_OBJECT_ID,
RS_OBJECT_ID LIKE LINE OF RT_OBJECT_ID,
RT_ZZAFLD00001X TYPE RANGE OF ZADTEL00009Q,
RS_ZZAFLD00001X LIKE LINE OF RT_ZZAFLD00001X,
LV_DATE TYPE ZADTEL00009Q,
RT_ZZAFLD00001Y TYPE RANGE OF ZADTEL00009U,
RS_ZZAFLD00001Y LIKE LINE OF RT_ZZAFLD00001Y,
LV_TIME TYPE ZADTEL00009U,
LX_ROOT TYPE REF TO CX_ROOT. "#EC NEEDED
DATA:GT_ADM TYPE TABLE OF TY_ADM,
VT_ADM TYPE TABLE OF TY_ADM,
GW_ADM LIKE LINE OF GT_ADM,
GT_PARTNER TYPE TABLE OF TY_PARTNER,
LT_PARTNER TYPE TABLE OF TY_PARTNER,
GW_PARTNER LIKE LINE OF GT_PARTNER,
LS_PARTNER LIKE LINE OF LT_PARTNER,
GV_PARTNER TYPE BU_PARTNER_GUID,
GT_ITEM TYPE TABLE OF TY_ITEM,
VT_ITEM TYPE TABLE OF TY_ITEM,
GW_ITEM LIKE LINE OF GT_ITEM,
GT_PRTEXT TYPE TABLE OF COMM_PRSHTEXT,
GW_PRTEXT LIKE LINE OF GT_PRTEXT,
GV_INDEX TYPE I,
GT_PRICE TYPE TABLE OF CNCCRMPRSAP032,
GW_PRICE LIKE LINE OF GT_PRICE,
GV_TIMESTMP TYPE /SAPCND/TIMESTAMP_TO.. " DATA LS_SELECTION_PARAS TYPE GENILT_SELECTION_PARAMETER.
DATA LT_WHERE_CONDITION TYPE CRMT_REPORT_DYN_SQL_LINE_TA. DATA: LT_RESULT TYPE TABLE OF ZCRMS0031,
LT_RESU TYPE TABLE OF TY_RESU,
LS_RESU LIKE LINE OF LT_RESU,
GT_RESULT TYPE TABLE OF ZCRMS0031,
LS_RESULT TYPE ZCRMS0031. DATA: LV_MAXHIT TYPE INT4,
LV_NAME TYPE THEAD-TDNAME,
LV_STR1 TYPE STRING,
LV_STR2 TYPE STRING,
LV_OBJECT_KEY TYPE CRMT_BSP_OBJECTKEY,
LR_OBJECT TYPE REF TO IF_GENIL_CONT_ROOT_OBJECT. DEFINE SET_RESULT.
LOOP AT GT_RESULT INTO LS_RESULT.
LR_OBJECT = IV_ROOT_LIST->ADD_OBJECT( IV_OBJECT_NAME = 'ZODRESULT'
IS_OBJECT_KEY = LS_RESULT-OBJECT_ID ).
LV_OBJECT_KEY = LS_RESULT-OBJECT_ID.
LR_OBJECT->SET_KEY( LV_OBJECT_KEY ).
LR_OBJECT->SET_ATTRIBUTES( LS_RESULT ).
CLEAR LS_RESULT.
ENDLOOP.
END-OF-DEFINITION . * IF ZCL_CRM_BUFFER=>GT_RESULT IS NOT INITIAL.
* LT_RESULT = ZCL_CRM_BUFFER=>GT_RESULT .
* SET_RESULT.
*
* CLEAR ZCL_CRM_BUFFER=>GT_RESULT.
* EXIT.
* ENDIF. LT_SELECTION = IT_SELECTION_PARAMETERS.
* SORT LT_SELECTION BY ATTR_NAME.
LOOP AT LT_SELECTION INTO LS_SELECTION.
CASE LS_SELECTION-ATTR_NAME.
WHEN 'OBJECT_ID'.
MOVE-CORRESPONDING LS_SELECTION TO RS_OBJECT_ID.
INSERT RS_OBJECT_ID INTO TABLE RT_OBJECT_ID.
WHEN 'ZZAFLD00001X'.
MOVE-CORRESPONDING LS_SELECTION TO RS_ZZAFLD00001X.
INSERT RS_ZZAFLD00001X INTO TABLE RT_ZZAFLD00001X.
WHEN 'ZZAFLD00001Y'.
MOVE-CORRESPONDING LS_SELECTION TO RS_ZZAFLD00001Y.
INSERT RS_ZZAFLD00001Y INTO TABLE RT_ZZAFLD00001Y.
ENDCASE.
ENDLOOP. LV_MAXHIT = IS_QUERY_PARAMETERS-MAX_HITS. SELECT SINGLE PARTNER_GUID INTO GV_PARTNER
FROM BUT000 WHERE PARTNER = ''."'0000202525'. "取到销售订单抬头信息
SELECT A~GUID AS GUID_H
A~OBJECT_ID
A~PO_NUMBER_SOLD AS OBJECT_ID_H
A~ZZZTRACKRETURN
INTO CORRESPONDING FIELDS OF TABLE GT_ADM
FROM ZHSB_SALES_INDEX AS A
INNER JOIN CRMD_ORDERADM_I AS B
ON A~GUID = B~HEADER
WHERE A~OBJECT_ID IN RT_OBJECT_ID
AND B~ZZAFLD00001X IN RT_ZZAFLD00001X
AND B~ZZAFLD00001Y IN RT_ZZAFLD00001Y
* AND B~ZZAFLD00001X <> LV_DATE
AND A~PROCESS_TYPE = 'ZSO5'
AND A~SALES_ORG = 'O 50000231'."日期不为空 IF GT_ADM[] IS NOT INITIAL.
"合作伙伴过滤
SELECT A~GUID_HI" TYPE CRMT_OBJECT_GUID,
A~GUID_SET" TYPE CRMT_OBJECT_GUID,
B~PARTNER_NO" TYPE CRMT_PARTNER_NO,
INTO CORRESPONDING FIELDS OF TABLE GT_PARTNER
FROM CRMD_LINK AS A
INNER JOIN CRMD_PARTNER AS B
ON A~GUID_SET = B~GUID
AND B~PARTNER_NO = GV_PARTNER
FOR ALL ENTRIES IN GT_ADM
WHERE A~GUID_HI = GT_ADM-GUID_H
AND A~OBJTYPE_SET = ''. "付款方为202525
"取销售订单项目
SELECT A~HEADER" TYPE CRMT_OBJECT_GUID, "销售订单
A~PRODUCT " TYPE CRMT_PRODUCT_GUID_DB,
A~ORDERED_PROD" TYPE CRMT_ORDERED_PROD_DB,
A~NUMBER_INT " TYPE CRMT_ITEM_NO,
A~ITM_TYPE " TYPE CRMT_ITEM_TYPE_DB,
B~QUANTITY
INTO TABLE GT_ITEM
FROM CRMD_ORDERADM_I AS A
INNER JOIN CRMD_SCHEDLIN AS B
ON A~GUID = B~ITEM_GUID
AND B~EVENT_TYPE = 'ORDER'
FOR ALL ENTRIES IN GT_ADM
WHERE HEADER = GT_ADM-GUID_H.
"销售订单项目 物料文本
IF GT_ITEM[] IS NOT INITIAL.
VT_ITEM[] = GT_ITEM[].
SORT VT_ITEM BY PRODUCT.
DELETE ADJACENT DUPLICATES FROM VT_ITEM COMPARING PRODUCT.
SELECT * INTO TABLE GT_PRTEXT
FROM COMM_PRSHTEXT
FOR ALL ENTRIES IN VT_ITEM
WHERE PRODUCT_GUID = VT_ITEM-PRODUCT
AND LANGU = 'J'. CONCATENATE SY-DATUM SY-UZEIT INTO GV_TIMESTMP.
SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_PRICE
FROM CNCCRMPRSAP032
FOR ALL ENTRIES IN VT_ITEM
WHERE PRODUCT = VT_ITEM-PRODUCT
AND SALES_ORG = 'O 50000231'
AND DIS_CHANNEL = ''
AND PRICE_GRP IN ('','','')
AND KSCHL = 'ZPR0'
AND TIMESTAMP_TO >= GV_TIMESTMP
AND TIMESTAMP_FROM < GV_TIMESTMP.
ENDIF.
"取维修工单抬头
VT_ADM[] = GT_ADM[].
DELETE VT_ADM WHERE OBJECT_ID_H IS INITIAL.
IF VT_ADM[] IS NOT INITIAL.
SELECT GUID AS GUID_H
OBJECT_ID
CREATED_AT
ZZZMODENO
ZZCLIENT_TYPE
PO_NUMBER_SOLD
INTO CORRESPONDING FIELDS OF TABLE LT_RESU
FROM ZHSB_ORDER_INDEX
FOR ALL ENTRIES IN VT_ADM
WHERE OBJECT_ID = VT_ADM-OBJECT_ID_H
AND PROCESS_TYPE = 'ZSV1'.
ENDIF. CHECK LT_RESU[] IS NOT INITIAL. IF LT_RESU[] IS NOT INITIAL.
SELECT A~GUID_HI" TYPE CRMT_OBJECT_GUID,
A~GUID_SET" TYPE CRMT_OBJECT_GUID,
B~PARTNER_NO" TYPE CRMT_PARTNER_NO,
C~PARTNER
C~BU_SORT1
INTO CORRESPONDING FIELDS OF TABLE LT_PARTNER
FROM CRMD_LINK AS A
INNER JOIN CRMD_PARTNER AS B
ON A~GUID_SET = B~GUID
AND B~PARTNER_FCT = 'ZHSI00SN'
INNER JOIN BUT000 AS C
ON B~PARTNER_NO = C~PARTNER_GUID
FOR ALL ENTRIES IN LT_RESU
WHERE A~GUID_HI = LT_RESU-GUID_H
AND A~OBJTYPE_SET = ''.
ENDIF.
ENDIF. LOOP AT GT_ADM INTO GW_ADM.
READ TABLE GT_PARTNER INTO GW_PARTNER WITH KEY GUID_HI = GW_ADM-GUID_H."过滤条件
IF SY-SUBRC = .
READ TABLE LT_RESU INTO LS_RESU WITH KEY OBJECT_ID = GW_ADM-OBJECT_ID_H.
IF SY-SUBRC = .
MOVE-CORRESPONDING LS_RESU TO LS_RESULT.
READ TABLE LT_PARTNER INTO LS_PARTNER WITH KEY GUID_HI = LS_RESU-GUID_H.
IF SY-SUBRC = .
LS_RESULT-BU_SORT1 = LS_PARTNER-BU_SORT1.
ENDIF.
LOOP AT GT_ITEM INTO GW_ITEM WHERE HEADER = GW_ADM-GUID_H."销售订单项目
LS_RESULT-ZZZTRACKRETURN = GW_ADM-ZZZTRACKRETURN."跟踪单号
* LS_RESULT-PRODUCT = GW_ITEM-PRODUCT."产品GUID
LS_RESULT-ORDERED_PROD = GW_ITEM-ORDERED_PROD.
LS_RESULT-PRODUCT_ID = GW_ITEM-ORDERED_PROD.
LS_RESULT-QUANTITY = GW_ITEM-QUANTITY. READ TABLE GT_PRTEXT INTO GW_PRTEXT WITH KEY PRODUCT_GUID = GW_ITEM-PRODUCT.
IF SY-SUBRC = .
LS_RESULT-SHORT_TEXT = GW_PRTEXT-SHORT_TEXT.
ENDIF. LOOP AT GT_PRICE INTO GW_PRICE WHERE PRODUCT = GW_ITEM-PRODUCT.
CASE GW_PRICE-PRICE_GRP.
WHEN ''."End User
LS_RESULT-SUBTOTAL3 = GW_PRICE-KBETR.
WHEN ''."Retailer
LS_RESULT-SUBTOTAL1 = GW_PRICE-KBETR.
WHEN ''."Distributor
LS_RESULT-SUBTOTAL2 = GW_PRICE-KBETR.
WHEN OTHERS.
ENDCASE.
ENDLOOP. APPEND LS_RESULT TO GT_RESULT. ENDLOOP.
ENDIF.
ENDIF.
ENDLOOP. SET_RESULT."添加结果 ENDMETHOD.

4.编辑BOL类:

事务代码:GENIL_MODEL_EDITOR

输入组件:ZCRMOD 点击创建

点击查询结果对象,右键创建:

点击动态查询对象,右键新建:ZODSEARCH

实施类:ZCL_DOWNLOAD_ORDER_IL

5.SPRO新建组件集,添加组件到组件集

6.UI组件:

事务代码:BSP_WD_CMPWB

输入组件名称:ZPARTLIST创建,

运行时资源库,添加组件集

退出重新事务代码进入,右键视图,创建搜索页面。根据向导一直做完就可以了,然后配置页面,就OK了

UI基础一:简单的BOL查询的更多相关文章

  1. ASP.NET Core 使用 EF 框架查询数据 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 使用 EF 框架查询数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 使用 EF 框架查询数据 上一章节我们学习了如何设置 ...

  2. 【云开发】10分钟零基础学会做一个快递查询微信小程序,快速掌握微信小程序开发技能(轮播图、API请求)

    大家好,我叫小秃僧 这次分享的是10分钟零基础学会做一个快递查询微信小程序,快速掌握开发微信小程序技能. 这篇文章偏基础,特别适合还没有开发过微信小程序的童鞋,一些概念和逻辑我会讲细一点,尽可能用图说 ...

  3. 转发-UI基础教程 – 原生App切图的那些事儿

    UI基础教程 – 原生App切图的那些事儿 转发:http://www.shejidaren.com/app-ui-cut-and-slice.html 移动APP切图是UI设计必须学会的一项技能,切 ...

  4. 【T-SQL基础】01.单表查询-几道sql查询题

    概述: 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础 ...

  5. iOS开发UI篇—Kvc简单介绍

    ios开发UI篇—Kvc简单介绍 一.KVC简单介绍 KVC key valued coding 键值编码 KVC通过键值间接编码 补充: 与KVC相对的时KVO,即key valued observ ...

  6. Android UI基础之五大布局

    Android  UI基础之五大布局 Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Andro ...

  7. mysql数据库基础的简单操作指南

    最近在学习mysql,本文是做的关于mysql学习的笔记,跟大家分享一下,希望对大家学习mysql知识有所助益.mysql现在几乎已经成了网站建设的主流数据库,很多php网站系统都采用了mysql数据 ...

  8. iOS开发UI基础—手写控件,frame,center和bounds属性

    iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4 ...

  9. Vc数据库编程基础MySql数据库的表查询功能

    Vc数据库编程基础MySql数据库的表查询功能 一丶简介 不管是任何数据库.都会有查询功能.而且是很重要的功能.上一讲知识简单的讲解了表的查询所有. 那么这次我们需要掌握的则是. 1.使用select ...

随机推荐

  1. WEB安全学习二、注入工具 sqlmap的使用

    使用的是Kali Linux 系统,系统中默认的sqlmap 是安装好了的,电脑上没有安装sqlmap,自己百度  ,需要python的环境 使用 命令   sqlmap -h 可以查看   sqlm ...

  2. JS 事件绑定、事件监听、事件委托详细介绍

    原:http://www.jb51.net/article/93752.htm 在JavaScript的学习中,我们经常会遇到JavaScript的事件机制,例如,事件绑定.事件监听.事件委托(事件代 ...

  3. HDU 4323 Magic Number(编辑距离DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=4323 题意: 给出n个串和m次询问,每个询问给出一个串和改变次数上限,在不超过这个上限的情况下,n个串中有多少个 ...

  4. label和span的区别

    label标签主要用于绑定一个表单元素,当点击label标签的时候,被绑定的表单元素就会获得输入焦点. <div class="form-group col-lg-12"&g ...

  5. main方法介绍

    main方法是程序的入口点,程序从这里开始,也是从这里结束. 执行过程:程序在执行编译的过程中先找main方法,然后执行main‘{’下的第一行代码,以此执行,如果遇到main方法中有调用其他的方法时 ...

  6. JDBC的通用查询的方法

    PreparedStatement 1.Why 1):使用Statement需要进行拼写SQL语句,很辛苦,而且容易出错. 2):使用Statement可以发生SQL注入. SQl注入: SQL注入是 ...

  7. 力扣(LeetCode) 66. 加一

    给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示例 1: 输入 ...

  8. 学习笔记16—Matlab 基础集

    1.常用相关 [r, p] = corr(X,Y), [r, p] = partialcorr(X,Y, Z) , 其中Z是协变量. 2.TD_age = importdata('F:\BrainAg ...

  9. MYSQL常用函数(控制流函数)

    MySQL有4个函数是用来进行条件操作的,这些函数可以实现SQL的条件逻辑,允许开发者将一些应用程序业务逻辑转换到数据库后台. MySQL控制流函数: CASE WHEN[test1] THEN [r ...

  10. [C#]创建表格(.xlsx)的典型方法

    Time:2017-10-11   10:12:13 利用EPPlus(4.1): 下载引用地址:http://epplus.codeplex.com/ --EPPlus is a .net libr ...