Query 的制作和传输

来源:互联网 发布:淘宝买家登记表 编辑:程序博客网 时间:2024/06/07 23:33

最近做了关于采购报表的query,总结一下。

先说说QUERY AREA:

Standard Area(Client-specific)和Global Area(Cross-client).这两项是什么意思呢?

从字面上我们知道Standard Area是与客户端相关的,只能在特定的客户端使用的;而Global Area是可以跨客户端的,也就是能够在不同的客户端使用的,可以在不同的客户端传输。默认的Query是可以在不同的客户端传输使用的。如果要传输QUERY,QUERY AREA =Global Area(Cross-client).

 

Query 的制作分为3步:

一,创建用户组-user group 

 TCODE-SQ03

 

输入user group ,点击 ‘CREATE' ,再assign user 给这个用户组。

 

二,创建infoset (信息集)

参考

http://blog.csdn.net/zjut_xiongfeng/article/details/5290099

 

TCODE-SQ02

输入infoset ,点击 ‘CREATE',进入表

这里我们想做一个基于采购凭证的报表(可能要很多报表,而不是一个),

我们需要建立这样一个信息集,能够包含所出报表的各种信息,而这些信息可能来自多个表格。

基础表格连接方式:

在“使用基础表进行表连接”输入一个表格EKKO(涉及到7个表,EKPO,MARA,EKET,EKES,LIFM1,LIFA1和 EKBE),涉及到的其它表格,我们在进入后续界面能够加进去。
 
这里的表之间的连接只有2种:连接和左外连接,连接好之后就可以点’infoset‘了。
然后再建几个FIELD GROUP,把左侧的表里需要的字段托到右边不同的FIELD GROUP中。
增加新的自定义的字段订单状态-STATUS也是在这里加的,点’EXTRA',输入文本,格式-长度,类型等。
点‘CODE',加入自己写的逻辑:
1).CODE 可以直接取用信息集里的表。
code section : Record Processing
IF EKPO-MENGE EKET-WEMNG AND EKET-WEMNG > '0'.
  STATUS '3'.
ELSEIF EKPO-MENGE <> EKET-WEMNG AND EKET-WEMNG > '0'.
  STATUS '2'.
ELSEIF  EKES-EBTYP <> SPACE AND EKET-WEMNG '0'.
  STATUS '1'.
ELSEIF EKES-EBTYP <> 'AB' AND EKES-EBTYP <> 'LA' AND EKES-EBTYP <>
'ZF' AND EKES-EBTYP <> 'GW' AND  EKET-WEMNG '0'.
  STATUS '0'.
  ENDIF.
 
2).直接读取后台表,必须声明一下该表
code section : Data
TABLES:RSEG.
TYPES:BEGIN OF TP_RSEG,
    EBELN TYPE RSEG-EBELN,
    EBELP TYPE RSEG-EBELP,
    MENGE TYPE RSEG-MENGE,
      END OF TP_RSEG.
DATA IT_RSEG TYPE TABLE OF TP_RSEG.
DATA LS_RSEG TYPE TP_RSEG.
DATA LV_MENGE TYPE RSEG-MENGE.
 
code section : Record Processing
SELECT EBELN EBELP MENGE FROM RSEG INTO CORRESPONDING FIELDS OF TABLE
IT_RSEG WHERE EBELN EKPO-EBELN AND EBELP EKPO-EBELP.
CLEARLS_RSEG,LV_MENGE.
IF SY-SUBRC 0.
LOOP AT IT_RSEG INTO LS_RSEG.
  LV_MENGE LV_MENGE + LS_RSEG-MENGE.
ENDLOOP.
ELSE.
   LV_MENGE 0.
ENDIF.
 
最后在把user group 分给infoset.
 
注意:
code section一定要选对,不然报表出来有问题。这就看你对事件的了解程度了,设断点要在code 里,写’BREAK POINT'。
 
 
三,创建QUERY
 
TCODE-SQ01
 
创建QUERY时,要选择已经建好的infoset。
然后单击“基本清单”

在左侧,有字段清单和选择字段2列,众所周知,报表是要有选择条件和输出列的,

选择条件就是选择字段( 选择屏幕),输出列就是字段清单。这里单击区分先后顺序,先单击的出现在前面,后单击的出现在后面。你可以自己做一下测试。

操作后,可以保存。

然后退出程序返回SQ01界面,按F8执行此报表。

Query就做完了

 

 

 

 
 QUERY 的传输:
在SAP Query的维护界面(SQ02)选择菜单Environment->Transports,这样就到了SAP Query的传输工具的界面,请选择必要的参数,填写所需要传输的Query、InfoSet,执行就能够产生传输请求。这样就可以被传输到其他的客户端了。
1.Query Copy : Standard Area ToGlobe Area
 

SQ02 里输入你的infoset点击‘Transport’小车,就进入"transport tool'.

去掉,选择copy from Standard Area ToGlobe Area , Test RUN, 输入用户组,infoset和Query ,点击运行。生成新的pakage 和Request .

2.传输到另外的系统

se01释放请求号 ,选择'display', 找到你的请求号,点小车release.

stms传输请求号,点击‘Import overview', 找到target system,双击进去后,点击'import request'.

输入target system的client 、用户名和密码,就OK了。
传输到另外的系统后,QUERY还是需要在SQ01里面执行generated program生成本地程序。
 

 
 

 

 

原创粉丝点击