*&-------------------------------------------------------------------
*& Report zqmr002
*&-------------------------------------------------------------------
*& Author : NathanSun
*& Create Date : 2018-10-16
*& Program Type : Report
*& Description :
*&-------------------------------------------------------------------
REPORT zqmr002 .
*******数据定义******
*&---------------------------------------------------------------------*
*& 包含 ZQMR002_T001
*&---------------------------------------------------------------------*
TABLES:qals,qave,zpartappend,qapp,qamv,qamr,qase,qpct,qmtt,zqm01.
TYPE-POOLS:slis.
DATA:BEGIN OF ls_alv,
flag,
lifnr TYPE qals-lifnr, "供应商
name1 TYPE lfa1-name1, "供应商描述
sortl TYPE lfa1-sortl,"简称
matnr TYPE qals-matnr, "物料号
prueflos TYPE qals-prueflos, "检验批
lmengeist TYPE qals-lmengeist, " 数量 取SAP检验批数量
ktextmat TYPE qals-ktextmat, "物料描述
werk TYPE qals-werk , "工厂
lmenge01 TYPE qals-lmenge01, "非限制库存
lmenge04 TYPE qals-lmenge04, "已冻结的库存
zpm TYPE zpartappend-zpm, "品名
zcz TYPE zpartappend-zcz, "材质
zgg TYPE zpartappend-zgg, "产品规格
ppsortkey TYPE qapp-ppsortkey, "检验点
vorglfnr TYPE qapp-vorglfnr, "节点编号
* vcode TYPE qapp-vcode, "使用决策代码
* vcodegrp TYPE qapp-vcodegrp, "UD 代码组
probenr TYPE qapp-probenr, "节点
probenr1 TYPE qase-probenr, "
" kurztext1 TYPE qpct-kurztext, "代码的短文本 (最多 40 个字符)
mbewertg TYPE qamr-mbewertg, "检验结果记录 "A=合格 R=不合格
mittelwert TYPE qasr-mittelwert, "平均值
mbewertg2 TYPE qasr-mbewertg, "检验结果评估 A =合格 R =不合格
mbewertg3 TYPE qasr-mbewertg, "检验结果评估 A =合格 R =不合格
probenr2 TYPE qasr-probenr, "
mbewertg1 TYPE qase-mbewertg, "检验结果评估 A =合格 R =不合格
stuecknr TYPE qase-stuecknr, "检验结果号
messwert TYPE qase-messwert, "检验结果
merknr2 TYPE qase-merknr, "检验特性编号
detailerg TYPE qase-detailerg, "结构号
messwertni TYPE qase-messwertni, "判断 定性的单值
vcode TYPE qave-vcode, "使用决策代码
vcodegrp TYPE qave-vcodegrp, "UD 代码组
vname TYPE qave-vname, ""检验员
name_text TYPE user_addrp-name_text, "检验员中文
zmbewertg3(10) TYPE c , "QAMV-STEUERKZ 第一个字符为“X”为定量且含有"+"取QASE_MESSWERT QAMV-STEUERKZ 第一个字符为“X”为定量且不含有"+"取QAMR_MBEWERTG
messwert1(10) TYPE c, "检验结果
zmbewertg(3) TYPE c, "检验结果记录 "A=合格 R=不合格
zmbewertg1(3) TYPE c, "检验结果评估 A =合格 R =不合格
zmbewertg2(3) TYPE c, "检验结果评估 A =合格 R =不合格
" zmbewertg3(3) TYPE c, "检验结果评估 A =合格 R =不合格
" zmbewertg3(3) TYPE c, "检验结果评估 A =合格 R =不合格
zmittelwert(10) TYPE c, "平均值
vdatum TYPE qave-vdatum, " 检验日期
kurztext TYPE qpct-kurztext, "缺陷种类 代码的短文本 (最多 40 个字符)
merknr TYPE qamv-merknr, "检验特性编号
merknr1 TYPE qamv-merknr, "检验特性编号
kurztext1 TYPE qamv-kurztext, "检验特性
kurztext3 TYPE qamv-kurztext, "检验特性
kurztext4 TYPE qamv-kurztext, "检验特性
sollwert TYPE qamv-sollwert, "基本尺寸
toleranzob TYPE qamv-toleranzob, "规格上限
toleranzun TYPE qamv-toleranzun, "规格下限
zsollwert(10) TYPE c, "基本尺寸
ztoleranzob(10) TYPE c, "规格上限
ztoleranzun(10) TYPE c, "规格下限
zsollwert_js TYPE qsollwertc, "基本尺寸
ztoleranzob_js TYPE qsollwertc, "规格上限
ztoleranzun_js TYPE qsollwertc, "规格下限
pmethode TYPE qamv-pmethode, "检验方法 检测工具
steuerkz TYPE qamv-steuerkz,
"sollwert TYPE qamv-sollwert, "
"pmethode TYPE qamv-pmethode , "检测工具
kurztext2 TYPE qmtt-kurztext, "短文本
anzfehler TYPE qmfe-anzfehler , "产品数量: 通过qmel-QMNUM
qmnum TYPE qmel-qmnum, "通知 通过 PRUEFLOS 取 qmel-QMNUM
" zsgc TYPE p DECIMALS 3, "上公差 QAMV_TOLERANZOB减QAMV_SOLLWERT 保留三位小数位
"zxgc TYPE p DECIMALS 3, "下公差 QAMV_TOLERANZUN减QAMV_SOLLWERT 保留三位小数位
zxh(4) TYPE n,
zxh01(4) TYPE i,
zgsm(20) TYPE c, "sf公司名称
znum(3) TYPE c VALUE '000', "流水编码
d_style TYPE lvc_t_styl,
zkurztext(100) TYPE c, "sf 页脚 代码与检测工具对照
END OF ls_alv.
DATA:BEGIN OF gt_qamv OCCURS 0,
* merknr TYPE qamv-merknr,
* kurztext TYPE qamv-kurztext,
* pmethode TYPE qamv-pmethode,
* sollwert TYPE qamv-sollwert,
* toleranzob TYPE qamv-toleranzob,
* toleranzun TYPE qamv-toleranzun,
* prueflos TYPE qamv-prueflos,
* vorglfnr TYPE qamv-vorglfnr,
* verwmerkm TYPE qamv-verwmerkm,
*
prueflos TYPE qamv-prueflos,
vorglfnr TYPE qamv-vorglfnr,
merknr TYPE qamv-merknr, "检验特性编号
kurztext TYPE qamv-kurztext, "检验特性
sollwert TYPE qamv-sollwert, "基本尺寸
toleranzob TYPE qamv-toleranzob, "规格上限
toleranzun TYPE qamv-toleranzun, "规格下限
pmethode TYPE qamv-pmethode, "检验方法 检测工具
steuerkz TYPE qamv-steuerkz,
mbewertg TYPE qamr-mbewertg, "检验结果记录 "A=合格 R=不合格
mittelwert TYPE qamr-mittelwert, "平均值
END OF gt_qamv.
DATA:BEGIN OF gt_qave OCCURS 0,
vdatum TYPE qave-vdatum, " 检验日期
prueflos TYPE qave-prueflos,
vcode TYPE qave-vcode, "使用决策代码
vcodegrp TYPE qave-vcodegrp, "UD 代码组
vname TYPE qave-vname, ""检验员
END OF gt_qave.
DATA:BEGIN OF gt_zpart OCCURS 0,
matnr TYPE zpartappend-matnr , "物料
zpm TYPE zpartappend-zpm, "品名
zcz TYPE zpartappend-zcz, "材质
zgg TYPE zpartappend-zgg, "产品规格
END OF gt_zpart.
DATA:BEGIN OF gt_qase OCCURS 0,
mbewertg TYPE qase-mbewertg,
original_input TYPE qase-original_input,
pruefdatub TYPE qase-pruefdatub,
merknr TYPE qase-merknr,
detailerg TYPE qase-detailerg,
prueflos TYPE qase-prueflos,
vorglfnr TYPE qase-vorglfnr,
messwert TYPE qase-messwert,
probenr TYPE qase-probenr, "2018 01 25ADD 采样号
stuecknr TYPE qase-stuecknr, "
erstelldat TYPE qase-erstelldat , "检验时间
pruefzeitv TYPE qase-pruefzeitv , "检验时间
messwertni TYPE qase-messwertni, "判断 定性的单值
* vcode TYPE qase-vcode, "使用决策代码
* vcodegrp TYPE qase-vcodegrp, "UD 代码组
"merknr TYPE qamv-merknr,
kurztext TYPE qamv-kurztext,
pmethode TYPE qamv-pmethode,
sollwert TYPE qamv-sollwert,
toleranzob TYPE qamv-toleranzob,
toleranzun TYPE qamv-toleranzun,
"prueflos TYPE qamv-prueflos,
"vorglfnr TYPE qamv-vorglfnr,
verwmerkm TYPE qamv-verwmerkm,
steuerkz TYPE qamv-steuerkz,
mittelwert TYPE qamr-mittelwert, "平均值
* prueflos TYPE qase-prueflos,
* vorglfnr TYPE qase-vorglfnr,
* messwert TYPE qase-messwert, "检验结果
* stuecknr TYPE qase-stuecknr, "检验结果号
* "mbewertg TYPE qamr-mbewertg, "检验结果记录 "A=合格 R=不合格
* mbewertg1 TYPE qase-mbewertg, "检验结果评估 A =合格 R =不合格
* merknr TYPE qase-merknr, "检验特性编号
* detailerg TYPE qase-detailerg, "结构号
* mbewertg2 TYPE qasr-mbewertg, "检验结果评估 A =合格 R =不合格
END OF gt_qase.
DATA: BEGIN OF gt_qapp OCCURS 0,
" prueflos TYPE qapp-prueflos,
ppsortkey TYPE qapp-ppsortkey, "检验点
"vorglfnr TYPE qapp-vorglfnr, "节点编号
vcode TYPE qapp-vcode, "使用决策代码
probenr TYPE qapp-probenr, "节点
vcodegrp TYPE qapp-vcodegrp, "UD 代码组
entstehdat TYPE qapp-entstehdat, "检验点检验时间
" mittelwert TYPE qasr-mittelwert, "平均值
" mbewertg2 TYPE qasr-mbewertg, "检验结果评估 A =合格 R =不合格
" merknr TYPE qasr-merknr,
" PROBENR2 type qasr-PROBENR,"
prueflos TYPE qamv-prueflos,
vorglfnr TYPE qamv-vorglfnr,
merknr TYPE qamv-merknr, "检验特性编号
kurztext TYPE qamv-kurztext, "检验特性
sollwert TYPE qamv-sollwert, "基本尺寸
toleranzob TYPE qamv-toleranzob, "规格上限
toleranzun TYPE qamv-toleranzun, "规格下限
pmethode TYPE qamv-pmethode, "检验方法 检测工具
steuerkz TYPE qamv-steuerkz,
mbewertg TYPE qamr-mbewertg, "检验结果记录 "A=合格 R=不合格
mittelwert TYPE qamr-mittelwert, "平均值
sollstpanz TYPE qamv-sollstpanz,
END OF gt_qapp.
DATA: BEGIN OF gt_qasr OCCURS 0,
prueflos TYPE qasr-prueflos,
vorglfnr TYPE qasr-vorglfnr,
mittelwert TYPE qasr-mittelwert, "平均值
mbewertg2 TYPE qasr-mbewertg, "检验结果评估 A =合格 R =不合格
merknr TYPE qasr-merknr,
probenr TYPE qasr-probenr,
END OF gt_qasr.
DATA: BEGIN OF gt_qamr OCCURS 0,
prueflos TYPE qamr-prueflos,
vorglfnr TYPE qamr-vorglfnr,
mittelwert TYPE qamr-mittelwert, "平均值
mbewertg2 TYPE qamr-mbewertg, "检验结果评估 A =合格 R =不合格
merknr TYPE qamr-merknr,
END OF gt_qamr.
DATA: gt_alv LIKE STANDARD TABLE OF ls_alv,
gs_alv LIKE ls_alv.
DATA: gt_alv1 LIKE STANDARD TABLE OF ls_alv,
gs_alv1 LIKE ls_alv,
gt_alv2 LIKE STANDARD TABLE OF ls_alv,
gs_alv2 LIKE ls_alv,
gt_alv3 LIKE STANDARD TABLE OF ls_alv,
gs_alv3 LIKE ls_alv,
gt_alv4 LIKE STANDARD TABLE OF ls_alv,
gs_alv4 LIKE ls_alv,
gt_alv5 LIKE STANDARD TABLE OF ls_alv,
gs_alv5 LIKE ls_alv,
gt_alv6 LIKE STANDARD TABLE OF ls_alv,
gs_alv6 LIKE ls_alv,
gt_alv7 LIKE STANDARD TABLE OF ls_alv,
gs_alv7 LIKE ls_alv.
DATA : it_fieldcat TYPE slis_t_fieldcat_alv,
it_ls_fieldcat TYPE slis_fieldcat_alv,
it_layout TYPE slis_layout_alv,
wa_event TYPE slis_alv_event,
it_event TYPE slis_t_event.
DATA : lv_repid LIKE sy-repid.
DATA : lv_pos TYPE i VALUE 1.
DATA :it_title TYPE lvc_title,
grid TYPE REF TO cl_gui_alv_grid.
*
* DATA : gt_disable TYPE lvc_t_styl
* , gt_enable TYPE lvc_t_styl.
DATA:
za1(1) TYPE c,
za2(2) TYPE c,
za3(3) TYPE c,
za4(1) TYPE c,
za5(1) TYPE c,
za6(1) TYPE c.
za1 = '#'.
za4 = 'X'.
za6 = '+'.
*-------打印需要用的--------
DATA: ref TYPE REF TO cl_gui_alv_grid.
DATA : lv_stable TYPE lvc_s_stbl. "刷新稳定性
DATA : control_parameters TYPE ssfctrlop,
output_options TYPE ssfcompop.
DATA: job_output_info TYPE ssfcrescl.
lv_repid = sy-repid.
*************复选框 控制 跟行专列打印 使用
DATA : gt_disable TYPE lvc_t_styl
, gt_enable TYPE lvc_t_styl.
DATA : gv_saveok TYPE sy-ucomm,
gv_okcode TYPE sy-ucomm.
DATA : gw_variant TYPE disvariant,
gv_save TYPE c.
FIELD-SYMBOLS: <f_fs1> ,
<f_out> TYPE STANDARD TABLE,
<f_out_01> TYPE STANDARD TABLE,
<f_out_wa>,
<f_out_wa1>,
<dyn_field> .
DATA: max_count TYPE i,
dy_out TYPE REF TO data,
dy_out1 TYPE REF TO data,
dy_out_wa TYPE REF TO data,
dy_out_wa1 TYPE REF TO data,
xfc TYPE lvc_s_fcat,
ifc TYPE lvc_t_fcat.
DATA: c(2) TYPE n,
txt(20) TYPE c.
DATA: wa_layo TYPE lvc_s_layo.
DATA: wa_fcat TYPE lvc_s_fcat,
it_fcat TYPE lvc_t_fcat.
CONSTANTS : cns_x TYPE c VALUE 'X',
cns_d TYPE c VALUE 'D',
cns_a TYPE c VALUE 'A',
cns_back(4) TYPE c VALUE 'BACK',
cns_cancel(6) TYPE c VALUE 'CANCEL',
cns_exit(4) TYPE c VALUE 'EXIT'.
*******选择屏幕******
*&---------------------------------------------------------------------*
*& 包含 ZQMR002_S001
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS :
p_werk TYPE qals-werk DEFAULT '1011'."工厂
SELECT-OPTIONS:
s_matnr FOR qals-matnr ,"物料编码
s_lifnr FOR qals-lifnr,"供应商
s_prue FOR qals-prueflos,"检验批号
s_vdat FOR qave-vdatum."检验日期
SELECTION-SCREEN END OF BLOCK b1.
*******数据处理******
*&---------------------------------------------------------------------*
*& 包含 ZQMR002_F001
*&---------------------------------------------------------------------*
FORM frm_get_data.
*******勾选一个alv复选框 相同的检验批复选框勾上
DATA
: ls_style TYPE lvc_s_styl.
ls_style-fieldname = 'SEL'.
ls_style-style = cl_gui_alv_grid=>mc_style_disabled.
ls_style-style2 = space .
ls_style-style3 = space .
ls_style-style4 = space .
ls_style-maxlen = 1 .
APPEND ls_style TO gt_disable .
ls_style-style = cl_gui_alv_grid=>mc_style_enabled.
APPEND ls_style TO gt_enable .
*
******************
SELECT
qals~lifnr"供应商
qals~matnr "物料号
qals~werk "工厂
qals~prueflos "检验批
qals~lmengeist " 数量 取SAP检验批数量
qals~ktextmat "物料描述
qals~lmenge01 "非限制库存
qals~lmenge04 "已冻结的库存
FROM qals
INTO CORRESPONDING FIELDS OF TABLE gt_alv
WHERE qals~werk = p_werk "工厂
AND qals~matnr IN s_matnr "物料编码
AND qals~lifnr IN s_lifnr"供应商
AND qals~prueflos IN s_prue"检验批号
AND qals~herkunft = '01'. "检查源
IF gt_alv[] IS NOT INITIAL.
SELECT
qamv~merknr "检验特性编号
qamv~kurztext "检验特性
qamv~sollwert "基本尺寸
qamv~toleranzob"
qamv~toleranzun
qamv~steuerkz
qamv~pmethode "检验方法
qamv~prueflos
qamv~vorglfnr
qapp~ppsortkey"检验点
qapp~probenr "节点
qapp~entstehdat "检验点检验时间
"
FROM qamv
LEFT JOIN qapp ON qamv~prueflos = qapp~prueflos AND qamv~vorglfnr = qapp~vorglfnr
INTO CORRESPONDING FIELDS OF TABLE gt_qapp.
ENDIF.
LOOP AT gt_qapp . "把检验点为空的数据也输出
READ TABLE gt_alv INTO gs_alv WITH KEY prueflos = gt_qapp-prueflos .
IF sy-subrc = 0.
gs_alv-ppsortkey = gt_qapp-ppsortkey.
gs_alv-vorglfnr = gt_qapp-vorglfnr.
gs_alv-probenr = gt_qapp-probenr.
gs_alv-merknr = gt_qapp-merknr ."检验特性编号
gs_alv-kurztext1 = gt_qapp-kurztext. "检验特性
gs_alv-sollwert = gt_qapp-sollwert. "基本尺寸
gs_alv-toleranzob = gt_qapp-toleranzob ."
gs_alv-toleranzun = gt_qapp-toleranzun.
gs_alv-vorglfnr = gt_qapp-vorglfnr."检验结果记录 "A=合格 R=不合格
gs_alv-pmethode = gt_qapp-pmethode."检验方法 检测工具
gs_alv-steuerkz = gt_qapp-steuerkz.
DELETE gt_alv WHERE prueflos = gt_qapp-prueflos AND flag = ''.
gs_alv-flag = 'X'.
APPEND gs_alv TO gt_alv.
ENDIF.
ENDLOOP.
SORT gt_alv BY prueflos vorglfnr ppsortkey merknr probenr.
IF gt_alv[] IS NOT INITIAL.
SELECT
qase~prueflos
qase~vorglfnr
qase~stuecknr"检验结果号
qase~messwert"检验结果
qase~mbewertg "检验结果评估 A =合格 R =不合格
" qasr~mbewertg AS mbewertg2 "检验结果评估 A =合格 R =不合格
qase~merknr"检验特性编号
qase~probenr
qase~detailerg"结构号
qase~stuecknr"检验结果号
qase~erstelldat "检验时间
qase~pruefzeitv "检验时间
qase~messwertni"判断 定性的单值
INTO CORRESPONDING FIELDS OF TABLE gt_qase
FROM qase
FOR ALL ENTRIES IN gt_alv
WHERE prueflos = gt_alv-prueflos
AND merknr = gt_alv-merknr
AND vorglfnr = gt_alv-vorglfnr
AND probenr = gt_alv-probenr.
ENDIF .
*
LOOP AT gt_alv INTO gs_alv.
CLEAR : gs_alv-flag.
MODIFY gt_alv FROM gs_alv.
ENDLOOP.
SORT gt_qase BY prueflos probenr merknr detailerg.
LOOP AT gt_qase .
"
READ TABLE gt_alv INTO gs_alv WITH KEY prueflos = gt_qase-prueflos merknr = gt_qase-merknr vorglfnr = gt_qase-vorglfnr probenr = gt_qase-probenr.
IF sy-subrc = 0.
gs_alv-stuecknr = gt_qase-stuecknr."检验结果号
gs_alv-messwert = gt_qase-messwert."检验结果
gs_alv-detailerg = gt_qase-detailerg."结构号
gs_alv-stuecknr = gt_qase-stuecknr.
gs_alv-messwertni = gt_qase-messwertni."判断 定性的单值MESSWERTNI."判断 定性的单值
gs_alv-mbewertg1 = gt_qase-mbewertg .""检验结果评估 A =合格 R =不合格
DELETE gt_alv WHERE prueflos = gt_qase-prueflos AND vorglfnr = gt_qase-vorglfnr AND merknr = gt_qase-merknr AND probenr = gt_qase-probenr AND flag = '' ."
gs_alv-flag = 'X'.
APPEND gs_alv TO gt_alv .
ENDIF.
ENDLOOP.
IF gt_alv[] IS NOT INITIAL.
SELECT *
FROM zpartappend
INTO CORRESPONDING FIELDS OF TABLE gt_zpart
FOR ALL ENTRIES IN gt_alv
WHERE zpartappend~matnr = gt_alv-matnr.
SELECT prueflos vcodegrp vcode vdatum vname ""检验员
FROM qave
INTO CORRESPONDING FIELDS OF TABLE gt_qave
FOR ALL ENTRIES IN gt_alv
WHERE prueflos = gt_alv-prueflos
AND qave~vdatum IN s_vdat..
SELECT "当数据 有多值的时候 就在qasr里面取
qasr~prueflos
qasr~vorglfnr
qasr~mittelwert "平均值
qasr~mbewertg AS mbewertg2 "检验结果评估 A =合格 R =不合格
qasr~merknr
qasr~probenr
FROM qasr
INTO CORRESPONDING FIELDS OF TABLE gt_qasr
FOR ALL ENTRIES IN gt_alv
WHERE prueflos = gt_alv-prueflos
AND vorglfnr = gt_alv-vorglfnr
AND probenr = gt_alv-probenr
AND merknr = gt_alv-merknr.
*
ENDIF.
IF gt_qasr[] IS INITIAL.
SELECT "当数据 只有单值的时候 就在qamr里面取
qamr~prueflos
qamr~vorglfnr
qamr~mittelwert "平均值
qamr~mbewertg AS mbewertg2 "检验结果评估 A =合格 R =不合格
qamr~merknr
FROM qamr
INTO CORRESPONDING FIELDS OF TABLE gt_qasr
FOR ALL ENTRIES IN gt_alv
WHERE prueflos = gt_alv-prueflos
AND vorglfnr = gt_alv-vorglfnr
AND merknr = gt_alv-merknr.
ENDIF.
SORT gt_alv BY prueflos vorglfnr ppsortkey merknr.
LOOP AT gt_alv INTO gs_alv.
READ TABLE gt_zpart WITH KEY matnr = gs_alv-matnr.
IF sy-subrc = 0.
gs_alv-zpm = gt_zpart-zpm ."品名
gs_alv-zgg = gt_zpart-zgg. "规格
gs_alv-zcz = gt_zpart-zcz. "材质
ENDIF.
READ TABLE gt_qave WITH KEY prueflos = gs_alv-prueflos.
IF sy-subrc = 0.
gs_alv-vcodegrp = gt_qave-vcodegrp ."
gs_alv-vcode = gt_qave-vcode. "
gs_alv-vdatum = gt_qave-vdatum. "
gs_alv-vname = gt_qave-vname. ""检验员
ENDIF.
READ TABLE gt_qasr WITH KEY prueflos = gs_alv-prueflos vorglfnr = gs_alv-vorglfnr merknr = gs_alv-merknr probenr = gs_alv-probenr.
IF sy-subrc = 0.
gs_alv-mittelwert = gt_qasr-mittelwert. "平均值
gs_alv-mbewertg2 = gt_qasr-mbewertg2 . "检验结果评估 A =合格 R =不合格
*
ENDIF.
IF gt_qamr[] IS NOT INITIAL. "当数据 只有单值的时候 就在qamr里面取
READ TABLE gt_qamr WITH KEY prueflos = gs_alv-prueflos vorglfnr = gs_alv-vorglfnr merknr = gs_alv-merknr .
IF sy-subrc = 0.
gs_alv-mittelwert = gt_qamr-mittelwert. "平均值
gs_alv-mbewertg2 = gt_qamr-mbewertg2 . "检验结果评估 A =合格 R =不合格
*
ENDIF.
ENDIF.
SELECT SINGLE kurztext FROM qpct INTO gs_alv-kurztext WHERE codegruppe = gs_alv-vcodegrp AND code = gs_alv-vcode ."缺陷种类 代码的短文本 (最多 40 个字符)
SELECT SINGLE kurztext FROM qmtt INTO gs_alv-kurztext2 WHERE pmtnr = gs_alv-pmethode." SAP检测方法(工具)代码与检测工具对照通过
SELECT SINGLE qmnum FROM qmel INTO gs_alv-qmnum WHERE prueflos = gs_alv-prueflos .
SELECT SINGLE anzfehler FROM qmfe INTO gs_alv-anzfehler WHERE qmnum = gs_alv-qmnum. "产品数量:
SELECT SINGLE name1 sortl FROM lfa1 INTO ( gs_alv-name1 , gs_alv-sortl ) WHERE lifnr = gs_alv-lifnr. "供应商描述
SELECT SINGLE name_text FROM user_addrp INTO gs_alv-name_text WHERE bname = gs_alv-vname . ""检验员中文
SHIFT gs_alv-prueflos LEFT DELETING LEADING '0'.
SHIFT gs_alv-ppsortkey LEFT DELETING LEADING '0'.
SHIFT gs_alv-merknr LEFT DELETING LEADING '0'.
*
IF gs_alv-messwertni <> 'X'."定性的单值 显示 A F
gs_alv-zmbewertg3 = gs_alv-mbewertg1.
ENDIF.
CLEAR : gs_alv-flag.
MODIFY gt_alv FROM gs_alv.
ENDLOOP.
IF gt_alv[] IS INITIAL.
MESSAGE '查询的数据不存在,请检查你的查询条件!' TYPE 'I'.
STOP.
ENDIF.
ENDFORM.
FORM frm_procees_data.
DATA lv_zxh(4) TYPE n.
DATA lv_zxh_i(4) TYPE i.
DATA lv_zxh_01(3) TYPE n.
DATA lv_char TYPE char3.
LOOP AT gt_alv INTO gs_alv.
CALL FUNCTION 'FLTP_CHAR_CONVERSION' "基本尺寸 把科学计数法转换成普通数据类型
EXPORTING
decim = 3
expon = 0
input = gs_alv-messwert
ivalu = 'X '
maskn = ' '
IMPORTING
flstr = gs_alv-messwert1.
CALL FUNCTION 'FLTP_CHAR_CONVERSION' "基本尺寸 把科学计数法转换成普通数据类型
EXPORTING
decim = 3
expon = 0
input = gs_alv-sollwert
ivalu = 'X '
maskn = ' '
IMPORTING
flstr = gs_alv-zsollwert.
CALL FUNCTION 'CHAR_FLTP_CONVERSION'
EXPORTING
string = gs_alv-zsollwert
IMPORTING
flstr = gs_alv-zsollwert_js
EXCEPTIONS
exponent_too_big = 1
exponent_too_small = 2
string_not_fltp = 3
too_many_decim = 4
OTHERS = 5
.
* CALL FUNCTION 'QSS0_FLTP_TO_CHAR_CONVERSION' "把科学计数法显示的数字转换成一般数字
* EXPORTING
* i_number_of_digits = 3
* i_fltp_value = gs_alv-sollwert
** i_value_not_initial_flag = 'X'
** I_SCREEN_FIELDLENGTH = 16
* IMPORTING
* e_char_field = gs_alv-zsollwert_js
* .
CALL FUNCTION 'FLTP_CHAR_CONVERSION' "把科学计数法转换成普通数据类型
EXPORTING
decim = 3
expon = 0
input = gs_alv-toleranzob
ivalu = 'X '
maskn = ' '
IMPORTING
flstr = gs_alv-ztoleranzob.
CALL FUNCTION 'CHAR_FLTP_CONVERSION'
EXPORTING
string = gs_alv-ztoleranzob
IMPORTING
flstr = gs_alv-ztoleranzob_js
EXCEPTIONS
exponent_too_big = 1
exponent_too_small = 2
string_not_fltp = 3
too_many_decim = 4
OTHERS = 5
.
* CALL FUNCTION 'QSS0_FLTP_TO_CHAR_CONVERSION' "把科学计数法显示的数字转换成一般数字
* EXPORTING
* i_number_of_digits = 3
* i_fltp_value = gs_alv-toleranzob
** i_value_not_initial_flag = 'X'
** I_SCREEN_FIELDLENGTH = 16
* IMPORTING
* e_char_field = gs_alv-ztoleranzob_js
* .
CALL FUNCTION 'FLTP_CHAR_CONVERSION' "把科学计数法转换成普通数据类型
EXPORTING
decim = 3
expon = 0
input = gs_alv-toleranzun
ivalu = 'X '
maskn = ' '
IMPORTING
flstr = gs_alv-ztoleranzun.
CALL FUNCTION 'CHAR_FLTP_CONVERSION'
EXPORTING
string = gs_alv-ztoleranzun
IMPORTING
flstr = gs_alv-ztoleranzun_js
EXCEPTIONS
exponent_too_big = 1
exponent_too_small = 2
string_not_fltp = 3
too_many_decim = 4
OTHERS = 5
.
* CALL FUNCTION 'QSS0_FLTP_TO_CHAR_CONVERSION' "把科学计数法显示的数字转换成一般数字
* EXPORTING
* i_number_of_digits = 3
* i_fltp_value = gs_alv-toleranzun
** i_value_not_initial_flag = 'X'
** I_SCREEN_FIELDLENGTH = 16
* IMPORTING
* e_char_field = gs_alv-ztoleranzun_js
* .
CALL FUNCTION 'FLTP_CHAR_CONVERSION' "把科学计数法转换成普通数据类型
EXPORTING
decim = 3
expon = 0
input = gs_alv-mittelwert
ivalu = 'X '
maskn = ' '
IMPORTING
flstr = gs_alv-zmittelwert.
*************2018 03 08 取fs 四个框里面的数据
CONDENSE gs_alv-steuerkz NO-GAPS.
za4 = gs_alv-steuerkz+0(1).
SEARCH gs_alv-kurztext1 FOR za1 ." {options}.
IF sy-subrc = 0.
za2 = sy-fdpos - 1 .
za3 = gs_alv-kurztext1+za2(2).
ENDIF.
IF za3 IS NOT INITIAL." AND gs_alv-za4 = 'X'.
gs_alv-merknr1 = za3.
* ELSEIF za4 = 'X'.
* gs_alv-merknr1 = gs_alv-merknr.
ELSE.
gs_alv-merknr1 = gs_alv-merknr. "
ENDIF.
IF za4 <> 'X' AND gs_alv-steuerkz CS za6. " 非尺寸定性检验特性,则此三栏合并,填检验特性短文本 QAMV-STEUERKZ 第一个字符非“X”且字符中含有“+”QAMV-KURZTEXT
gs_alv-kurztext3 = gs_alv-kurztext .
ENDIF.
IF za4 = 'X'AND gs_alv-steuerkz CS za6. "QAMV-STEUERKZ 第一个字符为“X”为定量且含有"+"取QASE_MESSWERT
gs_alv-zmbewertg3 = gs_alv-messwert1.
ELSEIF za4 = 'X'AND gs_alv-steuerkz NS za6."QAMV-STEUERKZ 第一个字符为“X”为定量且不含有"+"取QAMR_MBEWERTG
gs_alv-zmbewertg3 = gs_alv-zmittelwert.
ENDIF.
IF za4 <> 'X' AND gs_alv-steuerkz NS za6.
gs_alv-mbewertg3 = gs_alv-mbewertg2.
gs_alv-kurztext4 = gs_alv-kurztext1.
ENDIF.
IF gs_alv-mbewertg3 = 'A'. "sf 页脚 评判结果
gs_alv-zmbewertg2 = '合格'.
ELSEIF gs_alv-mbewertg3 = 'R' .
gs_alv-zmbewertg2 = '不合格'.
ENDIF.
MODIFY gt_alv FROM gs_alv.
ENDLOOP.
********************打印列表 排序列号 序列号错误 会影响 打印排列
gt_alv3 = gt_alv.
SORT gt_alv3 BY prueflos merknr .
DELETE gt_alv3 WHERE zmbewertg2 IS NOT INITIAL.
DELETE ADJACENT DUPLICATES FROM gt_alv3 COMPARING prueflos merknr.
DELETE gt_alv3 WHERE merknr = '0000'.
" DELETE gt_alv3 WHERE mbewertg = '' and merknr = ''.
" DELETE gt_alv3 WHERE DETAILERG = '00000000' and ZMBEWERTG3 = '0.000'.
LOOP AT gt_alv3 INTO gs_alv3.
AT NEW prueflos.
CLEAR lv_zxh.
CLEAR lv_zxh_i.
ENDAT.
lv_zxh = lv_zxh + 10.
lv_zxh_i = lv_zxh_i + 1.
LOOP AT gt_alv INTO gs_alv WHERE prueflos = gs_alv3-prueflos AND merknr = gs_alv3-merknr ." and vorglfnr = gs_alv3-vorglfnr.
gs_alv-zxh = lv_zxh.
gs_alv-zxh01 = lv_zxh_i.
MODIFY gt_alv FROM gs_alv.
ENDLOOP.
ENDLOOP.
***********************
SORT gt_alv BY prueflos ppsortkey merknr detailerg.
IF s_vdat[] IS NOT INITIAL.
DELETE gt_alv WHERE vdatum NOT IN s_vdat[].
ENDIF.
ENDFORM.
*******数据显示******
*&---------------------------------------------------------------------*
*& 包含 ZQMR002_V001
*&----
*-----------------------------------------------------------------*
*FORM frm_alv_refresh USING p_soft TYPE char01.
*
* CHECK grid IS NOT INITIAL .
* DATA ls_stable TYPE lvc_s_stbl.
*
* ls_stable-row = 'X'.
* ls_stable-col = 'X'.
*
* CALL METHOD grid->refresh_table_display
* EXPORTING
* is_stable = ls_stable
* i_soft_refresh = p_soft. " Without Sort, Filter, etc.
* .
*ENDFORM.
*******勾选一个alv复选框 相同的检验批复选框勾上
FORM frm_add_fcat USING value1 value2 value3 value4.
wa_fcat-fieldname = value1.
wa_fcat-inttype = value2.
wa_fcat-reptext = value3.
wa_fcat-intlen = value4.
APPEND wa_fcat TO it_fcat.
CLEAR: wa_fcat.
ENDFORM.
FORM frm_display_data.
it_layout-colwidth_optimize = 'X'. "自动缩进行
it_layout-zebra = 'X'. "斑马条纹
" it_layout-cwidth_opt = 'X'.
"it_layout-zebra = 'X'.
"it_layout-stylefname = 'D_STYLE' .
" it_layout-box_fieldname = 'FLAG'.
" it_layout-info_fieldname = 'COLOR'.
PERFORM get_fieldcat_int.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = lv_repid "传入返回的程序
i_callback_pf_status_set = 'SET_PF' "
i_callback_user_command = 'USER_COM'
it_fieldcat = it_fieldcat
is_layout = it_layout
it_events = it_event
i_grid_title = it_title
i_default = 'X'
i_save = 'A'
TABLES
t_outtab = gt_alv. "输出内表
ENDFORM.
FORM get_fieldcat_int.
*************************** 列位置 列字段 列描述 长度 颜色 汇总 主键 复选框 编辑 小数位 不输出0数据
*************************** col_pos fieldname seltext_ outputlen emphasize sum key key1 edit dcm no_zero
PERFORM ls_fieldcat USING lv_pos 'FLAG' '复选框' 6 '' '' '' 'X' 'X' '' ''.
PERFORM ls_fieldcat USING lv_pos 'WERK' '工厂' 4 '' '' '' '' '' '' 'X'.
PERFORM ls_fieldcat USING lv_pos 'LIFNR' '供应商' 10 '' '' '' '' '' '' 'X'.
PERFORM ls_fieldcat USING lv_pos 'NAME1' '供应商名称' 50 '' '' '' '' '' '' 'X'.
PERFORM ls_fieldcat USING lv_pos 'MATNR' '物料号' 12 '' '' '' '' '' '' 'X'.
PERFORM ls_fieldcat USING lv_pos 'PRUEFLOS' '检验批' 15 '' '' '' '' '' '' 'X'.
PERFORM ls_fieldcat USING lv_pos 'KTEXTMAT' '物料描述' 100 '' '' '' '' '' '' 'x'.
PERFORM ls_fieldcat USING lv_pos 'ZPM' '品名' 100 '' '' '' '' '' '' 'x'.
PERFORM ls_fieldcat USING lv_pos 'ZGG' '规格' 100 '' '' '' '' '' '' 'x'.
PERFORM ls_fieldcat USING lv_pos 'PPSORTKEY' '检验点' 20 '' '' '' '' '' '' 'x'.
"PERFORM ls_fieldcat USING lv_pos 'VORGLFNR' '节点编号' 10 '' '' '' '' '' '' 'x'.
"PERFORM ls_fieldcat USING lv_pos 'VCODE' '使用决策代码' 20 '' '' '' '' '' '' 'x'.
PERFORM ls_fieldcat USING lv_pos 'VDATUM ' '检验日期' 10 '' '' '' '' '' '' 'x'.
PERFORM ls_fieldcat USING lv_pos 'MBEWERTG ' '检验结果记录' 10 '' '' '' '' '' '' 'x'.
" PERFORM ls_fieldcat USING lv_pos 'ZMBEWERTG ' '检验结果记录' 10 '' '' '' '' '' '' 'x'.
" PERFORM ls_fieldcat USING lv_pos 'MBEWERTG1 ' 'qase检验结果记录1' 10 '' '' '' '' '' '' 'x'.
"PERFORM ls_fieldcat USING lv_pos 'MBEWERTG2' 'qasr检验结果记录1' 10 '' '' '' '' '' '' 'x'.
" PERFORM ls_fieldcat USING lv_pos 'ZMBEWERTG2 ' '检验结果记录2' 10 '' '' '' '' '' '' 'x'.
" PERFORM ls_fieldcat USING lv_pos 'MBEWERTG1 ' 'QASE 结果' 10 '' '' '' '' '' '' 'x'.
PERFORM ls_fieldcat USING lv_pos 'MERKNR' '检验特性编号' 15 '' '' '' '' '' '' 'x'.
" PERFORM ls_fieldcat USING lv_pos 'KURZTEXT4 ' '检验特性' 12 '' '' '' '' '' '' 'x'.
"PERFORM ls_fieldcat USING lv_pos 'SOLLWERT ' '基本尺寸' 12 '' '' '' '' '' '' 'x'.
PERFORM ls_fieldcat USING lv_pos 'ZSOLLWERT ' '基本尺寸' 12 '' '' '' '' '' '' 'x'.
" PERFORM ls_fieldcat USING lv_pos 'TOLERANZOB ' '规格上限' 12 '' '' '' '' '' '' 'x'.
PERFORM ls_fieldcat USING lv_pos 'ZTOLERANZOB ' '规格上限' 12 '' '' '' '' '' '' 'x'.
" PERFORM ls_fieldcat USING lv_pos 'TOLERANZUN ' '规格下限' 12 '' '' '' '' '' '' 'x'.
PERFORM ls_fieldcat USING lv_pos 'ZTOLERANZUN ' '规格下限' 12 '' '' '' '' '' '' 'x'.
" PERFORM ls_fieldcat USING lv_pos 'MESSWERT1' '检验方法 检测工具' 12 '' '' '' '' '' '' 'x'.
" PERFORM ls_fieldcat USING lv_pos 'KURZTEXT2' '短文本'50 '' '' '' '' '' '' 'x'.
" PERFORM ls_fieldcat USING lv_pos ' ANZFEHLER' '产品数量'50 '' '' '' '' '' '' 'x'.
" PERFORM ls_fieldcat USING lv_pos ' ZSGC' '上公差'50 '' '' '' '' '' '' 'x'.
"PERFORM ls_fieldcat USING lv_pos 'ZMBEWERTG2' '下公差'50 '' '' '' '' '' '' 'X'.
" PERFORM ls_fieldcat USING lv_pos 'MERKNR1' '检验结果' 10 '' '' '' '' '' '' 'X'.
" PERFORM ls_fieldcat USING lv_pos 'ZNUM' '1111' 10 '' '' '' '' '' '' 'X'.
" PERFORM ls_fieldcat USING lv_pos 'DETAILERG' '2222' 10 '' '' '' '' '' '' 'X'.
" PERFORM ls_fieldcat USING lv_pos 'ZMBEWERTG3' '333' 10 '' '' '' '' '' '' 'X'.
wa_event-name = slis_ev_data_changed .
wa_event-form = 'FRM_DATA_CHANGED'.
APPEND wa_event TO it_event.
ENDFORM.
FORM ls_fieldcat USING col_pos fieldname seltext outputlen emphasize do_sum key key1 edit dem no_zero.
CLEAR :it_ls_fieldcat.
it_ls_fieldcat-col_pos = col_pos.
it_ls_fieldcat-fieldname = fieldname.
it_ls_fieldcat-seltext_l = it_ls_fieldcat-seltext_s = seltext.
it_ls_fieldcat-outputlen = outputlen.
it_ls_fieldcat-emphasize = emphasize.
it_ls_fieldcat-do_sum = do_sum.
it_ls_fieldcat-key = key.
it_ls_fieldcat-checkbox = key1.
it_ls_fieldcat-edit = edit. "可编辑
it_ls_fieldcat-decimals_out = dem. "小数位
it_ls_fieldcat-no_zero = no_zero.
APPEND it_ls_fieldcat TO it_fieldcat.
lv_pos = lv_pos + 1.
ENDFORM. "ls_fieldcat
FORM user_com USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield .
CALL METHOD grid->check_changed_data.
DATA:it_fidx TYPE lvc_t_fidx WITH HEADER LINE.
CALL METHOD grid->get_filtered_entries "获取被过滤的行
IMPORTING
et_filtered_entries = it_fidx[].
rs_selfield-refresh = 'X'.
CASE r_ucomm.
WHEN 'PRINT'.
PERFORM frm_print.
ENDCASE.
*
ENDFORM.
FORM set_pf USING extab TYPE slis_t_extab. "调用gui状态
****************
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = grid.
CALL METHOD grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
************ ,,
SET PF-STATUS 'STANDARD'.
ENDFORM.
FORM frm_print.
* *动态内表 行列转换
DATA : wa_head LIKE zqmr002_head,
lt_head LIKE STANDARD TABLE OF zqmr002_head, "表头数据结构
wa_head1 LIKE zqmr002_head,"处理sf 页脚检测结果使用
lt_head1 LIKE STANDARD TABLE OF zqmr002_head, "储存临时数据
wa_head2 LIKE zqmr002_head,"处理sf 页脚检测结果使用
lt_head2 LIKE STANDARD TABLE OF zqmr002_head, "储存临时数据
wa_head3 LIKE zqmr002_head, "处理sf 页脚检测结果使用
lt_head3 LIKE STANDARD TABLE OF zqmr002_head, "储存临时数据
wa_head4 LIKE zqmr002_head, "处理sf 工具对照表 使用
lt_head4 LIKE STANDARD TABLE OF zqmr002_head, "储存临时数据
wa_head5 LIKE zqmr002_head, "处理sf 工具对照表 使用
lt_head5 LIKE STANDARD TABLE OF zqmr002_head, "储存临时数据
wa_head5_c LIKE zqmr002_head, "处理sf 工具对照表 使用
lt_head5_c LIKE STANDARD TABLE OF zqmr002_head, "储存临时数据
wa_item LIKE zqmr002_item,
lt_item LIKE STANDARD TABLE OF zqmr002_item, "表体数据结构
wa_item_dyn LIKE zqmr002_item_dyn,
lt_item_dyn LIKE STANDARD TABLE OF zqmr002_item_dyn, "动态表体数据结构
wa_item_dyn1 LIKE zqmr002_item_dyn,
lt_item_dyn1 LIKE STANDARD TABLE OF zqmr002_item_dyn, "动态表体数据结构
***********************
wa_item_dyn2 LIKE zqmr001_item_dyn, "sf尺寸编码行
lt_item_dyn2 LIKE STANDARD TABLE OF zqmr001_item_dyn, "动态表体数据结构
wa_item_dyn3 LIKE zqmr001_item_dyn, "sf 基本尺寸行
lt_item_dyn3 LIKE STANDARD TABLE OF zqmr001_item_dyn, "动态表体数据结构
wa_item_dyn4 LIKE zqmr001_item_dyn, "sf 上公差行
lt_item_dyn4 LIKE STANDARD TABLE OF zqmr001_item_dyn, "动态表体数据结构
wa_item_dyn5 LIKE zqmr001_item_dyn, "sf 下公差行
lt_item_dyn5 LIKE STANDARD TABLE OF zqmr001_item_dyn, "动态表体数据结构
wa_item_dyn6 LIKE zqmr001_item_dyn, "sf 检测工具行
lt_item_dyn6 LIKE STANDARD TABLE OF zqmr001_item_dyn, "动态表体数据结构
wa_item_dyn7 LIKE zqmr001_item_dyn, "sf 检测工具行
lt_item_dyn7 LIKE STANDARD TABLE OF zqmr001_item_dyn, "动态表体数据结构
wa_item_dyn8 LIKE zqmr001_item_dyn, "sf 检测工具行
lt_item_dyn8 LIKE STANDARD TABLE OF zqmr001_item_dyn. "动态表体数据结构
*******************************
DATA : ztext2(20) TYPE c.
DATA: colname(10),
n1 TYPE i,
n2 TYPE i,
index(2).
DATA lv_zxh(4) TYPE n.
DATA lv_zxh_i(4) TYPE i.
DATA lv_zxh_01(3) TYPE n.
DATA lv_char TYPE char3.
DATA fm_name TYPE rs38l_fnam.
DATA xssfctrlop LIKE ssfctrlop.
DATA :ls_composet_param TYPE ssfcompop,
w_job_output_info TYPE ssfcrescl.
DATA option TYPE ssfcresop."SF使用参数
DATA countn TYPE i VALUE 0.
DATA countn1 TYPE i VALUE 0.
DATA : znum(3) TYPE c,
zznum(3) TYPE c.
DATA: BEGIN OF itab0 OCCURS 0,
zxhdy(4) TYPE n, "尺寸编号
zxh(4) TYPE n, "尺寸编号
zxh01(10) TYPE c,
END OF itab0.
DATA: BEGIN OF itab1 OCCURS 0,
zxhdy(4) TYPE n, "尺寸编号
zxh(4) TYPE n,
zsollwert(10) TYPE c, "基本尺寸
END OF itab1.
DATA: BEGIN OF itab2 OCCURS 0,
zxhdy(4) TYPE n, "尺寸编号
zxh(4) TYPE n,
" zsgc(10) TYPE c, "上公差
ztoleranzob(10) TYPE c, "规格上限
END OF itab2.
DATA: BEGIN OF itab2_u OCCURS 0,
zxhdy(4) TYPE n, "尺寸编号
zxh(4) TYPE n,
" zsgc(10) TYPE c, "上公差
ztoleranzob(10) TYPE c, "规格上限
END OF itab2_u.
DATA: BEGIN OF itab3 OCCURS 0,
zxhdy(4) TYPE n, "尺寸编号
zxh(4) TYPE n,
" zxgc(10) TYPE c, "下公差
ztoleranzun(10) TYPE c, "规格下限
END OF itab3.
DATA: BEGIN OF itab3_d OCCURS 0,
zxhdy(4) TYPE n, "尺寸编号
zxh(4) TYPE n,
" zxgc(10) TYPE c, "下公差
ztoleranzun(10) TYPE c, "规格下限
END OF itab3_d.
DATA: BEGIN OF itab4 OCCURS 0,
zxhdy(4) TYPE n, "尺寸编号
zxh(4) TYPE n,
pmethode TYPE qamv-pmethode, "工具文本
kurztext1 TYPE qmtt-kurztext,
END OF itab4.
DATA: BEGIN OF itab5 OCCURS 0,
xh(8) TYPE n,
zxhdy(4) TYPE n, "尺寸编号
zxh(4) TYPE n,
messwert1(10) TYPE c,
stuecknr(4) TYPE n, "检验单元编号 2018 01 29 把gt_main 的STUECKNR 赋值到内表 因为之前结果顺序错乱
zzmbewertg2(10) TYPE c, "2018 03 19
END OF itab5.
DATA: BEGIN OF itab6 OCCURS 0,
xh(8) TYPE n,
zxhdy(4) TYPE n, "尺寸编号
zxh(4) TYPE n,
mbewertg TYPE qase-mbewertg, "评估
stuecknr(4) TYPE n, "检验单元编号 2018 01 29 把gt_main 的STUECKNR 赋值到内表 因为之前结果顺序错乱
END OF itab6.
CLEAR :gt_alv5[].
LOOP AT gt_alv INTO gs_alv WHERE flag = 'X' ."and prueflos = wa_head-prueflos and ppsortkey = wa_head-ppsortkey . .
APPEND gs_alv TO gt_alv1.
APPEND gs_alv TO gt_alv2.
APPEND gs_alv TO gt_alv5.
"APPEND gs_alv TO gt_alv3.
"APPEND gs_alv TO gt_alv7.
* MOVE-CORRESPONDING gt_alv to gt_alv7.
* DELETE gt_alv7 WHERE flag <> 'X' .
ENDLOOP.
SORT gt_alv1 BY prueflos merknr.
SORT gt_alv2 BY prueflos merknr .
SORT gt_alv5 BY prueflos.
CLEAR :gt_alv7[] .
MOVE-CORRESPONDING gt_alv TO gt_alv7.
DELETE gt_alv7 WHERE flag <> 'X' .
DELETE gt_alv7 WHERE zmbewertg2 IS NOT INITIAL .
DELETE gt_alv5 WHERE zmbewertg2 IS NOT INITIAL .
"DELETE gt_alv5 WHERE ZMBEWERTG2 is NOT INITIAL .
" SORT gt_alv7 BY prueflos.
DELETE ADJACENT DUPLICATES FROM gt_alv1 COMPARING prueflos merknr.
DELETE ADJACENT DUPLICATES FROM gt_alv2 COMPARING prueflos merknr .
DELETE ADJACENT DUPLICATES FROM gt_alv5 COMPARING prueflos .
DESCRIBE TABLE gt_alv1 LINES n1. "获取表的行数 存放到n1中
DESCRIBE TABLE gt_alv2 LINES n2.
CLEAR: lt_head[] ,wa_head.
"DELETE gt_alv5 WHERE ZMBEWERTG2 is NOT INITIAL ." ZSOLLWERT = '0.000' and ZTOLERANZOB = '0.000' and ZTOLERANZUN = '0.000' and ZMBEWERTG3 = ''.
LOOP AT gt_alv5 INTO gs_alv5.
MOVE-CORRESPONDING gs_alv5 TO wa_head.
APPEND wa_head TO lt_head.
ENDLOOP.
*********************开始 sf 脚标需要判断外观是否合格 如果判断数据第一条为空 那么显示不出来 所以把同一个检验批 检验点的数据 存到一个内表 把评判结果为空的数据 删除 留下不为空的数据
CLEAR gs_alv-flag.
DATA :zz1(2) TYPE c."获取内表的行数
DATA:zz2(2) TYPE c.
LOOP AT gt_alv INTO gs_alv WHERE flag = 'X' AND prueflos = wa_head-prueflos AND ppsortkey = wa_head-ppsortkey . "
APPEND gs_alv TO gt_alv4.
ENDLOOP.
******* 处理sf 页脚SAP检测方法(工具)代码与检测工具对照
LOOP AT gt_alv4 INTO gs_alv4.
MOVE-CORRESPONDING gs_alv4 TO wa_head4.
APPEND wa_head4 TO lt_head4.
ENDLOOP.
SORT lt_head4[] BY pmethode kurztext2 .
DELETE ADJACENT DUPLICATES FROM lt_head4 COMPARING pmethode kurztext2. "去重复的无用数据
* SORT lt_head4[] BY ztext2 .
* DELETE ADJACENT DUPLICATES FROM lt_head4[] COMPARING pmethode. "去重复的无用数据
*
MOVE-CORRESPONDING lt_head4[] TO lt_head5[].
CLEAR lt_head5_c[] .
lt_head5_c[] = lt_head5[] .
SORT lt_head5_c[] BY ztext2 .
DELETE ADJACENT DUPLICATES FROM lt_head5_c[] COMPARING ztext2 .
LOOP AT lt_head4 INTO wa_head4.
LOOP AT lt_head5 INTO wa_head5 WHERE prueflos = wa_head4-prueflos AND ppsortkey = wa_head4-ppsortkey .
zz2 = sy-tabix.
IF sy-subrc = 0.
CONCATENATE wa_head5-pmethode wa_head5-kurztext2 INTO wa_head5-ztext2 SEPARATED BY'-'. "把工具 和描述文本 拼接
CASE zz2.
WHEN '1'.
wa_head4-za1 = wa_head5-ztext2.
WHEN '2'.
wa_head4-za2 = wa_head5-ztext2.
WHEN '3'.
wa_head4-za3 = wa_head5-ztext2.
WHEN '4'.
wa_head4-za4 = wa_head5-ztext2.
WHEN '5'.
wa_head4-za5 = wa_head5-ztext2.
WHEN '6'.
wa_head4-za6 = wa_head5-ztext2.
WHEN '7'.
wa_head4-za7 = wa_head5-ztext2.
WHEN '8'.
wa_head4-za8 = wa_head5-ztext2.
WHEN '9'.
wa_head4-za9 = wa_head5-ztext2.
WHEN '10'.
wa_head4-za10 = wa_head5-ztext2.
ENDCASE.
ENDIF.
IF wa_head4-za1 = '-'. CLEAR wa_head4-za1. ENDIF. "当wa_head5-ztext2 赋给某个变量为空时 会填入 / 为了美观 清除等于/的字段
IF wa_head4-za2 = '-'. CLEAR wa_head4-za2 .ENDIF.
IF wa_head4-za3 = '-'. CLEAR wa_head4-za3 .ENDIF.
IF wa_head4-za4 = '-'. CLEAR wa_head4-za4 .ENDIF.
IF wa_head4-za5 = '-'. CLEAR wa_head4-za5 .ENDIF.
IF wa_head4-za6 = '-'. CLEAR wa_head4-za6 .ENDIF.
IF wa_head4-za7 = '-'. CLEAR wa_head4-za7 .ENDIF.
IF wa_head4-za8 = '-'. CLEAR wa_head4-za8 .ENDIF.
IF wa_head4-za9 = '-'. CLEAR wa_head4-za9 .ENDIF.
IF wa_head4-za10 = '-'. CLEAR wa_head4-za10 .ENDIF.
CONCATENATE wa_head4-za1 wa_head4-za2 wa_head4-za3 wa_head4-za4 wa_head4-za5 wa_head4-za6 wa_head4-za7 wa_head4-za8 wa_head4-za9 wa_head4-za10
INTO wa_head4-zkurztext SEPARATED BY ' '.
"把所有的工具 跟文本 拼接到一个字段上面显示
MODIFY lt_head4 FROM wa_head4.
ENDLOOP.
ENDLOOP.
DO zz2 TIMES. "根据循环的次数 只保留内表里面第一条数据 填充到sf
DELETE lt_head4 INDEX 2.
ENDDO.
******** 页脚SAP检测方法(工具)代码与检测工具对照 结束
******** 处理 sf 页脚评判 外观等等 合格情况
DELETE gt_alv4 WHERE zmbewertg2 = ''. "存放脚标评断结果的字段
LOOP AT gt_alv4 INTO gs_alv4.
MOVE-CORRESPONDING gs_alv4 TO wa_head1.
MOVE-CORRESPONDING gs_alv4 TO wa_head2.
MOVE-CORRESPONDING gs_alv4 TO wa_head3.
APPEND wa_head1 TO lt_head1.
APPEND wa_head2 TO lt_head2.
APPEND wa_head3 TO lt_head3.
zz1 = sy-tfill.
ENDLOOP.
* MOVE-CORRESPONDING lt_head1 to lt_head2.
* MOVE-CORRESPONDING lt_head1 to lt_head3.
DO zz1 TIMES.
DELETE lt_head1 INDEX 2.
ENDDO.
DO 1 TIMES.
DELETE lt_head2 INDEX 1.
ENDDO.
DO zz1 TIMES.
DELETE lt_head2 INDEX 2.
ENDDO.
DO 2 TIMES.
DELETE lt_head3 INDEX 1.
ENDDO.
DO zz1 TIMES. "目前sf 脚标 评判合格的 目前只预留三个栏位 超过的直接删除了 不显示出来
DELETE lt_head3 INDEX 2.
ENDDO.
*************************处理 sf 页脚评判 外观等等 合格情况 结束
*
LOOP AT lt_head INTO wa_head.
* CLEAR:<F_OUT_01>,<F_OUT>.
*-----------------------调用smartforms函数打印----------------------*
AT FIRST.
xssfctrlop-no_close = 'X'.
ENDAT.
AT LAST.
xssfctrlop-no_close = ''.
ENDAT.
CLEAR : lt_item_dyn[], lt_item_dyn1[].
* CLEAR LT_ITEM_DYN. "清除表头,选择多个数据打印时 一页显示一条数据
* LOOP AT GT_MAIN_01 INTO GW_MAIN_01 WHERE PRUEFLOS = WA_HEAD-PRUEFLOS .
CLEAR itab0[].
CLEAR itab1[].
CLEAR itab2[].
CLEAR itab2_u[].
CLEAR itab3[].
CLEAR itab3_d[].
CLEAR itab4[].
CLEAR itab5[].
CLEAR itab6[].
LOOP AT gt_alv7 INTO gs_alv7 WHERE prueflos = wa_head-prueflos AND ppsortkey = wa_head-ppsortkey.
* ITAB0-MERKNR = GW_MAIN-MERKNR.
itab0-zxh = gs_alv7-zxh .
itab0-zxh01 = gs_alv7-zxh01 . "尺寸编号
itab0-zxh01 = gs_alv7-merknr1 . "尺寸编号
itab0-zxhdy = gs_alv7-merknr1 .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = itab0-zxhdy
IMPORTING
output = itab0-zxhdy.
CONDENSE itab0-zxh01 NO-GAPS.
APPEND itab0.
ENDLOOP.
LOOP AT gt_alv7 INTO gs_alv7 WHERE prueflos = wa_head-prueflos AND ppsortkey = wa_head-ppsortkey. "2018 01 29 ADD and ppsortkey = wa_head-ppsortkey
itab1-zxh = gs_alv7-zxh .
* ITAB1-MERKNR = GW_MAIN-MERKNR.
itab1-zsollwert = gs_alv7-zsollwert. "基本尺寸
itab1-zxhdy = gs_alv7-merknr1 .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = itab1-zxhdy
IMPORTING
output = itab1-zxhdy.
CONDENSE itab1-zsollwert NO-GAPS.
APPEND itab1.
ENDLOOP.
LOOP AT gt_alv7 INTO gs_alv7 WHERE prueflos = wa_head-prueflos AND ppsortkey = wa_head-ppsortkey. "2018 01 29 ADD and ppsortkey = wa_head-ppsortkey
itab2-zxh = gs_alv7-zxh .
* ITAB1-MERKNR = GW_MAIN-MERKNR.
itab2-ztoleranzob = gs_alv7-ztoleranzob. "上公差
itab2-zxhdy = gs_alv7-merknr1 .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = itab2-zxhdy
IMPORTING
output = itab2-zxhdy.
CONDENSE itab2-ztoleranzob NO-GAPS.
APPEND itab2.
ENDLOOP.
* zsollwert_js(10) TYPE c, "基本尺寸
* ztoleranzob_js(10) TYPE c, "规格上限
* ztoleranzun_js(10) TYPE c, "规格下限
LOOP AT gt_alv7 INTO gs_alv7 WHERE prueflos = wa_head-prueflos AND ppsortkey = wa_head-ppsortkey. "2018 01 29 ADD and ppsortkey = wa_head-ppsortkey
itab2_u-zxh = gs_alv7-zxh .
* ITAB1-MERKNR = GW_MAIN-MERKNR.
itab2_u-ztoleranzob = gs_alv7-ztoleranzob_js - gs_alv7-zsollwert_js. "上公差
itab2_u-zxhdy = gs_alv7-merknr1 .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = itab2_u-zxhdy
IMPORTING
output = itab2_u-zxhdy.
CONDENSE itab2_u-ztoleranzob NO-GAPS.
APPEND itab2_u.
ENDLOOP.
LOOP AT gt_alv7 INTO gs_alv7 WHERE prueflos = wa_head-prueflos AND ppsortkey = wa_head-ppsortkey. "2018 01 29 ADD and ppsortkey = wa_head-ppsortkey
itab3-zxh = gs_alv7-zxh .
* ITAB1-MERKNR = GW_MAIN-MERKNR.
itab3-ztoleranzun = gs_alv7-ztoleranzun . "下公差
itab3-zxhdy = gs_alv7-merknr1 .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = itab3-zxhdy
IMPORTING
output = itab3-zxhdy.
CONDENSE itab3-ztoleranzun NO-GAPS.
APPEND itab3.
ENDLOOP.
LOOP AT gt_alv7 INTO gs_alv7 WHERE prueflos = wa_head-prueflos AND ppsortkey = wa_head-ppsortkey. "2018 01 29 ADD and ppsortkey = wa_head-ppsortkey
itab3_d-zxh = gs_alv7-zxh .
* ITAB1-MERKNR = GW_MAIN-MERKNR.
itab3_d-ztoleranzun = gs_alv7-ztoleranzun_js - gs_alv7-zsollwert_js. "上公差
itab3_d-zxhdy = gs_alv7-merknr1 .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = itab3_d-zxhdy
IMPORTING
output = itab3_d-zxhdy.
CONDENSE itab3_d-ztoleranzun NO-GAPS.
APPEND itab3_d.
ENDLOOP.
LOOP AT gt_alv7 INTO gs_alv7 WHERE prueflos = wa_head-prueflos AND ppsortkey = wa_head-ppsortkey. "2018 01 29 ADD and ppsortkey = wa_head-ppsortkey
* ITAB4-MERKNR = GW_MAIN-MERKNR.
itab4-zxh = gs_alv7-zxh .
itab4-pmethode = gs_alv7-pmethode. "工具文本
itab4-zxhdy = gs_alv7-merknr1 .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = itab4-zxhdy
IMPORTING
output = itab4-zxhdy.
" itab4-kurztext1 = gs_alv-kurztext1.
APPEND itab4.
*
ENDLOOP.
LOOP AT gt_alv7 INTO gs_alv7 WHERE prueflos = wa_head-prueflos AND ppsortkey = wa_head-ppsortkey. "2018 01 29 ADD and ppsortkey = wa_head-ppsortkey
itab5-zxh = gs_alv7-zxh .
itab5-messwert1 = gs_alv7-zmbewertg3." gs_alv-messwert1. "检验记录结果
itab5-stuecknr = gs_alv7-stuecknr .""检验单元编号 2018 01 29 把gt_main 的STUECKNR 赋值到内表 因为之前结果顺序错乱
itab5-zxhdy = gs_alv7-merknr1 .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = itab5-zxhdy
IMPORTING
output = itab5-zxhdy.
" itab5-zZMBEWERTG2 = gs_alv-ZMBEWERTG2."2018 03 19
CONDENSE itab5-messwert1 NO-GAPS.
APPEND itab5.
ENDLOOP.
" DELETE itab5 WHERE zZMBEWERTG2 is NOT INITIAL.
"CLEAR :itab6.
LOOP AT gt_alv7 INTO gs_alv7 WHERE prueflos = wa_head-prueflos AND ppsortkey = wa_head-ppsortkey. "2018 01 29 ADD and ppsortkey = wa_head-ppsortkey
itab6-zxh = gs_alv7-zxh .
itab6-mbewertg = gs_alv7-mbewertg1.
itab6-stuecknr = gs_alv7-stuecknr ."检验单元编号 2018 01 29 把gt_main 的STUECKNR 赋值到内表 因为之前结果顺序错乱
itab6-zxhdy = gs_alv7-merknr1 .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = itab6-zxhdy
IMPORTING
output = itab6-zxhdy.
APPEND itab6.
ENDLOOP.
DATA n(8) TYPE n.
DATA a(8) TYPE n.
"SORT itab5 BY zxh stuecknr .
SORT itab5 BY zxhdy.
SORT itab6 BY zxhdy.
LOOP AT itab5.
n = n + 1.
itab5-xh = n.
a = itab5-xh. "最后一条会变成0 数据会混乱
AT END OF zxhdy.
n = 0.
ENDAT.
IF itab5-xh = '00000000'. "防止数据混乱 定义一个变量
itab5-xh = a .
ENDIF.
MODIFY itab5.
" CLEAR itab5-xh.
ENDLOOP.
"sort itab5 by xh.
DATA n3(8) TYPE n.
DATA b(8) TYPE n.
"SORT itab6 BY zxh stuecknr.
LOOP AT itab6.
n3 = n3 + 1.
itab6-xh = n3.
b = itab6-xh.
AT END OF zxhdy. "最后一条会变成0 数据会混乱
n3 = 0.
ENDAT.
IF itab6-xh = '00000000'. " 防止数据混乱 定义一个变量
itab6-xh = b.
ENDIF.
MODIFY itab6.
"CLEAR itab6-xh.
ENDLOOP.
SORT itab0 BY zxh .
SORT itab1 BY zxh .
SORT itab2 BY zxh .
SORT itab2_u BY zxh .
SORT itab3 BY zxh .
SORT itab3_d BY zxh .
SORT itab4 BY zxh .
SORT itab5 BY zxh xh.
SORT itab6 BY zxh xh.
* DELETE ADJACENT DUPLICATES FROM itab0 COMPARING zxh.
* DELETE ADJACENT DUPLICATES FROM itab1 COMPARING zxh.
* DELETE ADJACENT DUPLICATES FROM itab2 COMPARING zxh.
* DELETE ADJACENT DUPLICATES FROM itab3 COMPARING zxh.
* DELETE ADJACENT DUPLICATES FROM itab4 COMPARING zxh.
*
DATA tmerknr LIKE qamv-merknr OCCURS 0 WITH HEADER LINE.
LOOP AT itab1.
tmerknr = itab1-zxh.
COLLECT tmerknr.
ENDLOOP.
DATA: dy_table TYPE REF TO data,
dy_wa TYPE REF TO data,
it_str TYPE lvc_t_fcat, "Table Type
wa_str TYPE lvc_s_fcat. "Sturcture
FIELD-SYMBOLS: <dyn_table> TYPE table,
<dyn_wa> TYPE any,
<fs> TYPE any.
CLEAR c.
LOOP AT tmerknr.
c = c + 1.
colname = tmerknr.
PERFORM frm_add_fcat USING:
colname 'C' '描述' '100'.
ENDLOOP.
AT FIRST.
IF dy_out IS INITIAL.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fcat
IMPORTING
ep_table = dy_out.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fcat
IMPORTING
ep_table = dy_out1.
ENDIF.
ENDAT.
ASSIGN dy_out->* TO <f_out>.
ASSIGN dy_out1->* TO <f_out_01>.
CREATE DATA dy_out_wa LIKE LINE OF <f_out>.
CREATE DATA dy_out_wa1 LIKE LINE OF <f_out_01>.
ASSIGN dy_out_wa->* TO <f_out_wa>.
ASSIGN dy_out_wa1->* TO <f_out_wa1>.
DATA fieldname(20).
IF <f_out> IS NOT INITIAL .
LOOP AT <f_out> INTO <f_out_wa> .
DELETE TABLE <f_out> FROM <f_out_wa> .
ENDLOOP.
ENDIF.
IF <f_out_01> IS NOT INITIAL .
LOOP AT <f_out_01> INTO <f_out_wa> .
DELETE TABLE <f_out_01> FROM <f_out_wa> .
ENDLOOP.
ENDIF.
LOOP AT itab0.
* ASSIGN COMPONENT 'BEZEI' OF STRUCTURE <DYN_WA> TO <FS>. "分配结构里的销售办事处,用FS字段 指向它
* <FS> = ITAB8-BEZEI.
fieldname = itab0-zxhdy. "这里把日期类型定义为char型,因为用DATS报错。
ASSIGN COMPONENT fieldname OF STRUCTURE <f_out_wa> TO <f_fs1>. "分配结构的日期,将FS指向它
<f_fs1> = itab0-zxhdy .
AT LAST.
APPEND <f_out_wa> TO <f_out>.
CLEAR <f_out_wa>.
ENDAT.
ENDLOOP.
LOOP AT itab1.
* ASSIGN COMPONENT 'BEZEI' OF STRUCTURE <DYN_WA> TO <FS>. "分配结构里的销售办事处,用FS字段 指向它
* <FS> = ITAB8-BEZEI.
fieldname = itab1-zxhdy. "这里把日期类型定义为char型,因为用DATS报错。
ASSIGN COMPONENT fieldname OF STRUCTURE <f_out_wa> TO <f_fs1>. "分配结构的日期,将FS指向它
<f_fs1> = itab1-zsollwert.
AT LAST.
APPEND <f_out_wa> TO <f_out>.
CLEAR <f_out_wa>.
ENDAT.
ENDLOOP.
LOOP AT itab2.
fieldname = itab2-zxhdy.
ASSIGN COMPONENT fieldname OF STRUCTURE <f_out_wa> TO <f_fs1>.
<f_fs1> = itab2-ztoleranzob.
AT LAST.
APPEND <f_out_wa> TO <f_out>.
CLEAR <f_out_wa>.
ENDAT.
ENDLOOP.
LOOP AT itab3.
fieldname = itab3-zxhdy.
ASSIGN COMPONENT fieldname OF STRUCTURE <f_out_wa> TO <f_fs1>.
<f_fs1> = itab3-ztoleranzun.
AT LAST.
APPEND <f_out_wa> TO <f_out>.
CLEAR <f_out_wa>.
ENDAT.
ENDLOOP.
LOOP AT itab2_u.
fieldname = itab2_u-zxhdy.
ASSIGN COMPONENT fieldname OF STRUCTURE <f_out_wa> TO <f_fs1>.
<f_fs1> = itab2_u-ztoleranzob.
AT LAST.
APPEND <f_out_wa> TO <f_out>.
CLEAR <f_out_wa>.
ENDAT.
ENDLOOP.
LOOP AT itab3_d.
fieldname = itab3_d-zxhdy.
ASSIGN COMPONENT fieldname OF STRUCTURE <f_out_wa> TO <f_fs1>.
<f_fs1> = itab3_d-ztoleranzun.
AT LAST.
APPEND <f_out_wa> TO <f_out>.
CLEAR <f_out_wa>.
ENDAT.
ENDLOOP.
LOOP AT itab4.
fieldname = itab4-zxhdy.
ASSIGN COMPONENT fieldname OF STRUCTURE <f_out_wa> TO <f_fs1>.
<f_fs1> = itab4-pmethode.
AT LAST.
APPEND <f_out_wa> TO <f_out>.
CLEAR <f_out_wa>.
ENDAT.
ENDLOOP.
SORT itab5 BY xh .
LOOP AT itab5.
* ASSIGN COMPONENT 'XH' OF STRUCTURE <F_OUT_WA> TO <F_OUT_WA>. "分配结构里的销售办事处,用FS字段 指向它
* <F_OUT_WA> = ITAB8-BEZEI.
fieldname = itab5-zxhdy.
ASSIGN COMPONENT fieldname OF STRUCTURE <f_out_wa> TO <f_fs1>.
<f_fs1> = itab5-messwert1.
"<f_fs1> = itab5-ZMBEWERTG3.
* IF ITAB5-MBEWERTG = 'R'.
* LV_FLAG = 'X'.
* ENDIF.
AT END OF xh.
* IF LV_FLAG = 'X'.
* <F_OUT_WA>-
APPEND <f_out_wa> TO <f_out>.
CLEAR <f_out_wa>.
* CLEAR LV_FLAG.
ENDAT.
ENDLOOP.
"SORT itab5 BY xh ."
SORT itab6 BY xh.
LOOP AT itab6.
* ASSIGN COMPONENT 'XH' OF STRUCTURE <F_OUT_WA> TO <F_OUT_WA>. "分配结构里的销售办事处,用FS字段 指向它
* <F_OUT_WA> = ITAB8-BEZEI.
fieldname = itab6-zxhdy.
ASSIGN COMPONENT fieldname OF STRUCTURE <f_out_wa1> TO <f_fs1>.
<f_fs1> = itab6-mbewertg.
AT END OF xh.
APPEND <f_out_wa1> TO <f_out_01>.
CLEAR <f_out_wa1>.
ENDAT.
ENDLOOP.
"SORT itab6 BY xh ."
"CLEAR wa_item_dyn.
" CLEAR lt_item_dyn.
LOOP AT <f_out> INTO <f_out_wa> ."条件字段选择不会重复
CLEAR wa_item_dyn.
MOVE-CORRESPONDING <f_out_wa> TO wa_item_dyn.
APPEND wa_item_dyn TO lt_item_dyn.
CLEAR : gs_alv7, wa_item_dyn.
ENDLOOP.
CLEAR lt_item_dyn1. "清除表头,选择多个数据打印时 一页显示一条数据
LOOP AT <f_out_01> INTO <f_out_wa> ."条件字段选择不会重复
CLEAR wa_item_dyn1.
MOVE-CORRESPONDING <f_out_wa> TO wa_item_dyn1.
APPEND wa_item_dyn1 TO lt_item_dyn1.
CLEAR : gs_alv7, wa_item_dyn1.
ENDLOOP.
CLEAR countn.
LOOP AT lt_item_dyn INTO wa_item_dyn.
IF sy-tabix = 1.
wa_item_dyn-zzbj = '尺寸编号'.
ELSEIF sy-tabix = 2.
wa_item_dyn-zzbj = '基本尺寸'.
ELSEIF sy-tabix = 3.
wa_item_dyn-zzbj = '最大极限值'.
ELSEIF sy-tabix = 4.
wa_item_dyn-zzbj = '最小极限值'.
ELSEIF sy-tabix = 5.
wa_item_dyn-zzbj = '上公差'.
ELSEIF sy-tabix = 6.
wa_item_dyn-zzbj = '下公差'.
ELSEIF sy-tabix = 7.
wa_item_dyn-zzbj = '检测工具'.
wa_item_dyn-zsfhg = '判定'.
ELSEIF sy-tabix > 7.
countn = countn + 1.
wa_item_dyn-zzbj = countn.
CONDENSE wa_item_dyn-zzbj NO-GAPS.
ENDIF.
* IF WA_ITEM_DYN-PRUEFLOS IS INITIAL.
wa_item_dyn-prueflos = wa_head-prueflos.
* ENDIF.
MODIFY lt_item_dyn FROM wa_item_dyn.
ENDLOOP.
DATA :z11(1) TYPE c VALUE 'R',
z12(1) TYPE c VALUE 'F'.
CLEAR countn1.
LOOP AT lt_item_dyn1 INTO wa_item_dyn1.
countn1 = countn1 + 1.
wa_item_dyn1-zzbj = countn1.
* IF WA_ITEM_DYN1-PRUEFLOS IS INITIAL.
wa_item_dyn1-prueflos = wa_head-prueflos.
* ENDIF.
CONDENSE wa_item_dyn1-zzbj NO-GAPS.
* IF wa_item_dyn1-0010 = 'A' OR wa_item_dyn1-0020 = 'A' OR wa_item_dyn1-0030 = 'A' OR wa_item_dyn1-0040 = 'A' OR wa_item_dyn1-0050 = 'A' OR wa_item_dyn1-0060 = 'A'
* OR wa_item_dyn1-0070 = 'A' OR wa_item_dyn1-0080 = 'A' OR wa_item_dyn1-0090 = 'A' OR wa_item_dyn1-0100 = 'A' OR wa_item_dyn1-0110 = 'A'.
* wa_item_dyn1-zsfhg = '合格'.
IF wa_item_dyn1-0010 CS z11 OR wa_item_dyn1-0010 CS z12 OR wa_item_dyn1-0020 CS z11 OR wa_item_dyn1-0020 CS z12
OR wa_item_dyn1-0030 CS z11 OR wa_item_dyn1-0030 CS z12 OR wa_item_dyn1-0040 CS z11 OR wa_item_dyn1-0040 CS z12
OR wa_item_dyn1-0050 CS z11 OR wa_item_dyn1-0050 CS z12 OR wa_item_dyn1-0060 CS z11 OR wa_item_dyn1-0060 CS z12
OR wa_item_dyn1-0070 CS z11 OR wa_item_dyn1-0070 CS z12
OR wa_item_dyn1-0080 CS z11 OR wa_item_dyn1-0080 CS z12
OR wa_item_dyn1-0090 CS z11 OR wa_item_dyn1-0090 CS z12
OR wa_item_dyn1-0100 CS z11 OR wa_item_dyn1-0100 CS z12
OR wa_item_dyn1-0110 CS z11 OR wa_item_dyn1-0110 CS z12 ."OR wa_item_dyn1-0050 = 'A' OR wa_item_dyn1-0060 = 'A'
* OR wa_item_dyn1-0070 = 'A' OR wa_item_dyn1-0080 = 'A' OR wa_item_dyn1-0090 = 'A' OR wa_item_dyn1-0100 = 'A' OR wa_item_dyn1-0110 = 'A'.
wa_item_dyn1-zsfhg = '不合格'.
ELSE.
wa_item_dyn1-zsfhg = '合格'.
* if wa_item_dyn1-0010 = 'A' OR wa_item_dyn1-0020 = 'A' OR wa_item_dyn1-0030 = 'A' OR wa_item_dyn1-0040 = 'A' OR wa_item_dyn1-0050 = 'A' OR wa_item_dyn1-0060 = 'A'
* OR wa_item_dyn1-0070 = 'A' OR wa_item_dyn1-0080 = 'A' OR wa_item_dyn1-0090 = 'A' OR wa_item_dyn1-0100 = 'A' OR wa_item_dyn1-0110 = 'A'.
* wa_item_dyn1-zsfhg = '合格'.
ENDIF.
MODIFY lt_item_dyn1 FROM wa_item_dyn1.
ENDLOOP.
LOOP AT lt_item_dyn INTO wa_item_dyn.
READ TABLE lt_item_dyn1 INTO wa_item_dyn1 WITH KEY zzbj = wa_item_dyn-zzbj prueflos = wa_item_dyn-prueflos.
IF sy-subrc = 0 .
wa_item_dyn-zsfhg = wa_item_dyn1-zsfhg.
MODIFY lt_item_dyn FROM wa_item_dyn.
ENDIF.
ENDLOOP.
* DELETE ADJACENT DUPLICATES FROM itab4 COMPARING pmethode.
** LT_ITEM_DYN_BK = LT_ITEM_DYN.
* CLEAR lv_kurztext1.
* LOOP AT itab4.
* CONCATENATE itab4-pmethode ':' itab4-kurztext1 ',' lv_kurztext1 INTO lv_kurztext1.
* ENDLOOP.
*
* wa_head-kurztext = lv_kurztext1.
*******************************SF 打印 从尺寸编码行 开始 因为都是同一个字段 同时填充会报错 所以每一行定义一个表
MOVE-CORRESPONDING lt_item_dyn[] TO lt_item_dyn2[]."第一行
MOVE-CORRESPONDING lt_item_dyn[] TO lt_item_dyn3[]."第二行
MOVE-CORRESPONDING lt_item_dyn[] TO lt_item_dyn4[]."第三行
MOVE-CORRESPONDING lt_item_dyn[] TO lt_item_dyn5[]."第四行
MOVE-CORRESPONDING lt_item_dyn[] TO lt_item_dyn6[]."第五行
MOVE-CORRESPONDING lt_item_dyn[] TO lt_item_dyn7[]."第五行
MOVE-CORRESPONDING lt_item_dyn[] TO lt_item_dyn8[]."第五行
* IF sy-tabix = 1.
* wa_item_dyn-zzbj = '尺寸编号'.
* ELSEIF sy-tabix = 2.
* wa_item_dyn-zzbj = '基本尺寸'.
* ELSEIF sy-tabix = 3.
* wa_item_dyn-zzbj = '最大极限值'.
* ELSEIF sy-tabix = 4.
* wa_item_dyn-zzbj = '最小极限值'.
* ELSEIF sy-tabix = 5.
* wa_item_dyn-zzbj = '上公差'.
* ELSEIF sy-tabix = 6.
* wa_item_dyn-zzbj = '下公差'.
* ELSEIF sy-tabix = 7.
* wa_item_dyn-zzbj = '检测工具'.
* wa_item_dyn-zsfhg = '判定'.
" DELETE lt_item_dyn2 WHERE 0020 = ''.
*****循环5次 把前5次的数据删除
DO 7 TIMES.
DELETE lt_item_dyn INDEX 1 . "
ENDDO.
******把第2条开始的数据 删除 尺寸行
LOOP AT lt_item_dyn2 INTO wa_item_dyn2.
DELETE lt_item_dyn2 INDEX 2. "尺寸编号
ENDLOOP.
*******************************
**********************
"第二行
LOOP AT lt_item_dyn3 INTO wa_item_dyn3.
DELETE lt_item_dyn3 INDEX 3. "基本尺寸
ENDLOOP.
DO 1 TIMES.
DELETE lt_item_dyn3 INDEX 1 .
ENDDO.
**********************
**********************
"第三行
LOOP AT lt_item_dyn4 INTO wa_item_dyn4. "上公差
DELETE lt_item_dyn4 INDEX 4.
ENDLOOP.
DO 2 TIMES.
DELETE lt_item_dyn4 INDEX 1 .
ENDDO.
**********************
**********************
"第四行
LOOP AT lt_item_dyn5 INTO wa_item_dyn5."下公差
DELETE lt_item_dyn5 INDEX 5.
ENDLOOP.
DO 3 TIMES.
DELETE lt_item_dyn5 INDEX 1 .
ENDDO.
**********************
**********************
"第五行
LOOP AT lt_item_dyn7 INTO wa_item_dyn7.
DELETE lt_item_dyn7 INDEX 6.
ENDLOOP.
DO 4 TIMES.
DELETE lt_item_dyn7 INDEX 1 .
ENDDO.
**********************
**********************
"第六行
LOOP AT lt_item_dyn8 INTO wa_item_dyn8.
DELETE lt_item_dyn8 INDEX 7.
ENDLOOP.
DO 5 TIMES.
DELETE lt_item_dyn8 INDEX 1 .
ENDDO.
**********************
**********************
"第七行
LOOP AT lt_item_dyn6 INTO wa_item_dyn6.
DELETE lt_item_dyn6 INDEX 8.
ENDLOOP.
DO 6 TIMES.
DELETE lt_item_dyn6 INDEX 1 .
ENDDO.
**********************
**** 2018 03 10 620系统 10000007663
"DELETE lt_item_dyn WHERE 0010 = '' and 0020 = '' and 0030 = '' and 0040 = ''and 0050 = ''and 0060 = ''and 0070 = ''and 0080 = ''and 0090 = '' and 0100 = ''.
" DELETE lt_item_dyn2 WHERE 0020 = ''.
IF w_job_output_info-outputdone = 'X' OR w_job_output_info-outputdone = ''. "选择打印预览或者打印时 改变流水号 每天从001开始
"wa_head-znum = '000'.
SELECT SINGLE znum
FROM zqm01
INTO wa_head-znum
WHERE erdat = sy-datum.
IF sy-subrc = 4.
zqm01-erdat = sy-datum.
zqm01-znum = '001'.
wa_head-znum = '001'.
MODIFY zqm01.
ELSE.
wa_head-znum = wa_head-znum + 001.
zqm01-znum = wa_head-znum.
zqm01-erdat = sy-datum.
MODIFY zqm01.
ENDIF.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' "把获取的流水号 加上前导零
EXPORTING
input = wa_head-znum
IMPORTING
output = wa_head-zznum.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZQMSF002_C' "smartforms 名字
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.
** *--------------------------打印函数---------------------------------*
CALL FUNCTION fm_name
EXPORTING
control_parameters = xssfctrlop
wa_head = wa_head
wa_head1 = wa_head1
** wa_head2 = lt_head2
** wa_head1 = wa_head1
* wa_head2 = wa_head2
* wa_head3 = wa_head3
TABLES
it_item = lt_item
lt_head1 = lt_head1
lt_head2 = lt_head2
lt_head3 = lt_head3
lt_head4 = lt_head4
it_item_dyn = lt_item_dyn
it_item_dyn2 = lt_item_dyn2
it_item_dyn3 = lt_item_dyn3
it_item_dyn4 = lt_item_dyn4
it_item_dyn5 = lt_item_dyn5
it_item_dyn6 = lt_item_dyn6
it_item_dyn7 = lt_item_dyn7
it_item_dyn8 = lt_item_dyn8
* IT_HEAD = LT_HEAD
EXCEPTIONS
formatting-error = 1
internal_error = 2
send_error = 3
user_anceled = 4.
xssfctrlop-no_open = 'X'.
IF sy-subrc <> 0 .
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDLOOP.
ENDFORM.
FORM frm_data_changed USING r_data_changed TYPE REF TO cl_alv_changed_data_protocol. "alv界面 同一个检验批 检验点 勾选其中一个 勾选所有相同的数据
DATA: ls_modi TYPE lvc_s_modi,
ls_out LIKE gt_alv,
l_exit.
FIELD-SYMBOLS <fs_main> LIKE gt_alv.
LOOP AT r_data_changed->mt_good_cells INTO ls_modi .
CASE ls_modi-fieldname.
WHEN 'FLAG'.
READ TABLE gt_alv INTO gs_alv INDEX ls_modi-row_id.
CHECK sy-subrc = 0 .
LOOP AT gt_alv INTO gs_alv6 WHERE prueflos = gs_alv-prueflos AND ppsortkey = gs_alv-ppsortkey."匹配条件 满足什么条件 就勾选复选框
CHECK sy-tabix <> ls_modi-row_id.
IF ls_modi-value = 'X'.
gs_alv6-d_style = gt_disable.
gs_alv6-flag = 'X' .
ELSE.
gs_alv6-d_style = gt_enable .
gs_alv6-flag = space .
ENDIF.
MODIFY gt_alv FROM gs_alv6.
ENDLOOP.
IF sy-subrc = 0.
PERFORM frm_alv_refresh USING 'X'.
ENDIF.
ENDCASE.
ENDLOOP.
ENDFORM.
FORM frm_alv_refresh USING p_soft TYPE char01.
CHECK grid IS NOT INITIAL .
DATA ls_stable TYPE lvc_s_stbl.
ls_stable-row = 'X'.
ls_stable-col = 'X'.
CALL METHOD grid->refresh_table_display
EXPORTING
is_stable = ls_stable
i_soft_refresh = p_soft. " Without Sort, Filter, etc.
.
ENDFORM.
INITIALIZATION.
START-OF-SELECTION.
PERFORM frm_get_data.
PERFORM frm_procees_data.
PERFORM frm_display_data.