smartforms句柄与以簇的方式存储数据。
说明:Smartforms输出打印,设置句柄,用于传递参数。
REPORT ZIEB_WWFLD.
*----------------- TABLES ----------------------------*
*----------------- VARIANTS ----------------------------*
DATA l_sno TYPE ZIEB_ZSNNM.
DATA: ls_ctr TYPE ssfctrlop,
ls_cre TYPE ssfcrescl,
ls_opt TYPE ssfcompop.
DATA : wa_indx TYPE indx . " 作为全局声明
* 以下是一个定义宏的语句,在DEFINE和END-OF-DEFINITION之间有完整的ABAP语句,
* 用&N作为占位符,在调用的时候把真正的字符传入并取代。
** 例子:
*DATA: RESULT TYPE I,
*N1 TYPE I VALUE 5,
*N2 TYPE I VALUE 6.
*DEFINE OPERATION.
*RESULT = &1 &2 &3.
*OUTPUT &1 &2 &3 RESULT.
*END-OF-DEFINITION.
*OPERATION 4 + 3.
*OPERATION 2 ** 7.
*OPERATION N2 - N1.
DEFINE savebuffer.
perform save_to_buffer using &1 &2.
END-OF-DEFINITION.
DEFINE clearbuffer.
perform clear_buffer using &1.
END-OF-DEFINITION.
*----------------- CONSTANTS ----------------------------*
*----------------- INTERNAL TABLES ----------------------------*
DATA: item_LFA1 LIKE LFA1 OCCURS 0 WITH HEADER LINE,
item_T156T LIKE T156T OCCURS 0 WITH HEADER LINE,
item_MAKT LIKE MAKT OCCURS 0 WITH HEADER LINE.
*结果内表item_out
TYPES: BEGIN OF TY_item_out,
SNO TYPE ZIEB_zsnnm, " 序号 说明: 数据元素不能用LIKE
WERKS LIKE MSEG-WERKS, " 工厂
TName1 LIKE T001W-NAME1, " 工厂名称
Ebeln LIKE EKPO-EBELN, " 采购订单号
LIFNR LIKE MSEG-LIFNR, " 委外加工商代码
LNAME1 LIKE LFA1-NAME1, " 委外加工商名称
BLDAT LIKE MKPF-BLDAT, " 凭证日期
MBLNR LIKE MSEG-MBLNR, " 物料凭证号
BWART LIKE MSEG-BWART, " 移动类型
BTEXT LIKE T156T-BTEXT, " 移动类型描述
ZEILE LIKE MSEG-ZEILE, " 序号
MATNR LIKE MSEG-MATNR, " 物料编号
MAKTX LIKE MAKT-MAKTX, " 物料描述
ERFMG LIKE MSEG-ERFMG, " 数量
ERFME LIKE MSEG-ERFME, " 单位
LGORT LIKE MSEG-LGORT, " 库存地代码
LGOBE LIKE T001L-LGOBE, " 库存地描述
CHARG LIKE MSEG-CHARG, " 批次
SGTXT LIKE MSEG-SGTXT, " 备注
END OF TY_item_out.
DATA : item_out TYPE TABLE OF TY_item_out WITH HEADER LINE.
Data hd_item_out TYPE TY_item_out. " 用来存放抬头的固定内容。
Data wa_item_out TYPE TY_item_out. " 用来存放行项目的可循环内容。
*----------------- SELECTION-SCREEN --------------------------*
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
PARAMETERS: p_werks LIKE mseg-werks OBLIGATORY DEFAULT '2100', " 工厂
p_MJAHR LIKE mseg-MJAHR OBLIGATORY DEFAULT sy-datum," 当前年度
p_MBLNR LIKE MSEG-MBLNR OBLIGATORY DEFAULT '4900001625'. " 物料凭证
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN END OF BLOCK block1.
*----------------- START-OF-SELECTION --------------------------*
" MSEG - a, T001W - b,EKPO-c,LFA1-d,MKPF-e,T156T-f,MAKT-g,T001L-h
if p_werks <> '2100'.
" MESSAGE S004 with '工厂选择错误!'. " MESSAGE-ID ZIEB01
MESSAGE '工厂选择错误!' TYPE 'E'.
STOP.
endif.
if p_MJAHR <> sy-datum(04).
MESSAGE '凭证年度选择错误!' TYPE 'E'.
STOP.
ENDIF.
START-OF-SELECTION.
* b~NAME1 as TName1 d~NAME1 as LNAME1 f~BTEXT g~MAKTX h~LGOBE
SELECT a~werks c~EBELN a~LIFNR
e~BLDAT a~MBLNR a~BWART a~ZEILE a~MATNR
a~ERFMG a~ERFME a~LGORT a~CHARG a~SGTXT APPENDING CORRESPONDING
FIELDS OF TABLE item_out from MSEG as a
left join EKPO as c on a~MATNR = c~MATNR
left join MKPF as e on a~MBLNR = e~MBLNR
WHERE a~WERKS = p_werks and a~MJAHR = p_MJAHR and a~MBLNR = p_MBLNR and a~BWART in ('541','542')
.
if sy-subrc <> 0 .
MESSAGE '没有委外发料凭证的行项目!' TYPE 'I'.
STOP.
endif.
CLEAR item_out.
LOOP AT item_out.
SELECT SINGLE NAME1 INTO item_out-TName1
FROM T001W WHERE werks EQ item_out-werks
AND SPRAS = SY-LANGU.
SELECT SINGLE NAME1 INTO item_out-LNAME1
FROM LFA1 WHERE LIFNR EQ item_out-LIFNR
AND SPRAS = SY-LANGU.
SELECT SINGLE BTEXT INTO item_out-BTEXT
FROM T156T WHERE BWART EQ item_out-BWART
AND SPRAS = SY-LANGU.
SELECT SINGLE MAKTX INTO item_out-MAKTX
FROM MAKT WHERE MATNR EQ item_out-MATNR
AND SPRAS = SY-LANGU.
SELECT SINGLE LGOBE INTO item_out-LGOBE
FROM T001L WHERE LGORT EQ item_out-LGORT.
l_sno = l_sno + 1.
item_out-SNO = l_sno.
MODIFY item_out.
ENDLOOP.
read TABLE item_out INDEX 1 INTO hd_item_out.
PERFORM Display_BySF.
*&---------------------------------------------------------------------*
*& Form Display_BySF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
Form Display_BySF.
* 取得smartforms中的参数
DATA : fm_name TYPE rs38l_fnam.
*NOTE:SmartForms中的内表不能有HeaderLine
*通过SmartForms的名称取得编译以后的对应的Function Module的名称
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZFIEB_WWFLD'
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
fm_name = fm_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* 句柄的声明
DATA : prt_handler1(22) .
DATA : prt_handler2(22) .
DATA : wa_indx TYPE indx .
*smartforms中的内存地址给句柄
*在句柄中加上服务器当前时间作为句柄名称,防止多人同时使用该程序,导致句柄名称相同
CONCATENATE 'ZFMM_HDR' sy-uzeit INTO prt_handler1 .
CONCATENATE 'ZFMM_ITEM' sy-uzeit INTO prt_handler2 .
* 将内表数据传输到数据簇表里
* wa_indx-aedat = sy-datum .
* wa_indx-usera = sy-uname .
* wa_indx-pgmid = sy-repid .
*在SAP中可以将一个对象Export到内存或者数据库中,我们就可以根据一个类似于句柄的字符串再次取出该数据,
*传送一个字符串到SmartForms中是没有任何问题的,所以我们只需要Export内表到内存或者数据库中,
*然后将句柄传递到SmartForms中,在SmartForms中首先定义完全相同类型的内表,
*再将数据Impor到内表中即可完全恢复数据,这样就完成的数据的传递工作。
* Report中用EXPORT:
EXPORT hd_item_out TO DATABASE indx(hk) ID prt_handler1 FROM wa_indx .
* EXPORT item_out TO DATABASE indx(hk) ID prt_handler2 FROM wa_indx .
*Smartforms中用IMPORT:
*IMPORT HD_ITEM_OUT FROM DATABASE indx(hk) id PRT_HANDLER1.
*IMPORT ITEM_OUT FROM DATABASE indx(hk) id PRT_HANDLER2.
savebuffer item_out[] prt_handler2.
DATA : output_opt TYPE ssfcompop. " ssfcompop :打印参数设置的“结构”
output_opt-rqposname ='Local'.
output_opt-tdimmed = 'X'.
CALL FUNCTION fm_name
EXPORTING
prt_handler1 = prt_handler1 " 要跟Smartfroms中的全局变量对应好
prt_handler2 = prt_handler2
output_options = output_opt
control_parameters = ls_ctr
user_settings = 'X'
IMPORTING
job_output_info = ls_cre
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* DELETE FROM DATABASE indx(hk) ID prt_handler1.
* DELETE FROM DATABASE indx(hk) ID prt_handler2.
clearbuffer prt_handler1.
clearbuffer prt_handler2.
ENDFORM. "Display_BySF
*&可以用数据簇方式对程序的任何复杂内部数据对像过行分组保存,
*&并将其临时存储在程序内存中,或长时间存储在数据库中,
*&使用export to memory 语句在内存中存储数据对像
*&格式: Export <f1>[from<g1>]<f2>[from<g2>]…..to memory ID <key>.
*&
*&使用import from memory 语句从内存中读取数据对像
*&格式: IMPORT <F1> [TO <g1>] <F2> [TO <g2>] ... FROM MEMORY ID <key>.
*&
*&使用 free memory 语句从内存中删除数据簇;
*&Free memory [id<key>].
*& 说明:如果不附加ID<key>,则此语句删除整个内存,包括此前用exoprt存储到内存中的所有数据簇 附加ID<key>之后,该语句只能删除此名称命名的数据簇;
*&
FORM save_to_buffer USING t TYPE table typeid TYPE c .
wa_indx-aedat = sy-datum.
wa_indx-usera = sy-uname.
wa_indx-pgmid = sy-repid.
*以簇方式存储数据对像
*数据对像从程序写入到内存
EXPORT t TO DATABASE indx(hk) ID typeid from wa_indx.
ENDFORM.
FORM clear_buffer using buffid TYPE c.
DELETE FROM DATABASE indx(hk) ID buffid.
ENDFORM.
smartforms句柄与以簇的方式存储数据。相关推荐
- Android学习笔记36:使用SQLite方式存储数据
在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...
- 尽量使用写文本方式存储数据(pandas 和 file write效率对比)
对比:使用 pandas 存储数据 VS 使用写文本 方式存储数据 import pandas as pd import time def pandasWrite():t0 = time.time() ...
- Kubernetes(k8s)的Secret以密文的方式存储数据
1.用--from-env-file来创建Secret,需要创建一个env.txt(文件)来存储数据 # cat << EOF > env.txt > username=adm ...
- 使用SQLite方式存储数据
声明:本文参考N篇文章所该,并加上自己的理解.由于参考博文很多,所以可能某些地方忘记注明转载出处,还望原作者见谅. 1.SQL基本命令 **(重点) 转自:http://www.cnblo ...
- android的数据存储方式有哪几种方式,Android存储数据的5种方式
第一种:SharedPreferences 1.使用键值对的方式存储数据 2.通常用于:保存用户的偏好设置.选择是否保存密码.记录文档阅读的位置等 3.实现方式(写入): a).获取SharedPre ...
- string生成固定长度的哈希_Redis 选择Hash还是String 存储数据?
点击上方"Java之间",选择"置顶或者星标" 你关注的就是我关心的! 作者:goodspeed 微信公众号:四月(ID:hiiiapril) 在stackov ...
- 关于计算机硬盘的详细分类及不同硬盘存储数据的方式
文章目录 计算机硬盘的发展历史 标志性历史事件 后续发展 现存主要硬盘制造商 计算机硬盘分类 按照运行模式,存储介质和结构分类 按照硬盘接口类型分类 计算机硬盘储存数据的基础知识和原理 机械硬盘 机械 ...
- 数据结构--二叉树--路径 假设二叉树采用二叉链表方式存储, root指向根结点,node 指向二叉树中的一个结点, 编写函数 path,计算root到 node 之间的路径,(该路径包括root结
假设二叉树采用二叉链表方式存储, root指向根结点,node 指向二叉树中的一个结点, 编写函数 path,计算root到 node 之间的路径,(该路径包括root结点和 node 结点).pat ...
- 采用存储复制方式同步数据,实现数据库安全升级
2017年年初,海天起点为某省中行机房搬迁工作保驾护航.在机房搬迁过程中发现有多套数据库需要升级到11g,但由于有些数据库比较老旧,升级过程不能一次性完成,需要先升级到一个中间版本,再升级到最终目标版 ...
最新文章
- Ant Design 入门-参照官方文档使用组件
- mysql用法之创建事件
- @Data 注解对类静态字段, 无效
- 合成孔径成像算法与实现_声呐二维成像技术
- (转)响应式Web设计是大势所趋还是时代的产物
- 计算信源熵和香农编码C语言,信息论与编码课程设计报告-统计信源熵与香农编码.pdf...
- 2017西安交大ACM小学期数论 [等差数列]
- 案例:使用XPath的的爬虫
- NUMA架构下的CPU拓扑
- java script 视频教程_智能社JS全套视频教程+高清入门javascript下载
- mac如何安装svn
- 计算机组装与维护启发式教学,电工技能与电子工艺技术实训
- 2.3Java NIO
- 【数据】【自动化交易】Python获取中国股市行情和指数
- 阿里云服务器ubuntu 16.04 安装mysql
- 大数据初学必须掌握的技能
- Oracle数据库学习基础
- 二手交易管理系统SSM
- 2020牛客国庆DYA6
- 华为云CCE集群节点磁盘告警处理
热门文章
- CentOS安装crontab及使用方法
- 永信至诚CTO张凯:CloudStack+Docker构建云端信息安全实验场
- 上海首次正式试用人脸识别系统抓医药代表:频繁出入的非就医可疑人员
- PHP问题 —— 丢失SESSION
- Easyui入门视频教程 第01集---认识Easyui
- nagios用NsClient自定义windows监控
- 面试官:如果让你设计一个消息中间件,如何将其网络通信性能优化10倍以上?【石杉的架构笔记】...
- 职场升职加薪不二法则,德到领袖偷偷告诉你
- 【26】Python Iterator笔记
- 《OpenGL编程指南(原书第9版)》——导读