王顾问,请教您一个问题。
生产订单报工之后,他们工艺路线删掉,又重建了。然后两边的工艺路线组就对不上了。标工就取错了。
后来想,我不按工单里面的组来关联,按物料来关联。后来发现PLPO 一个组有很多行,甚者有上百行,光凭组代码也无法确定哪条与前台的标工对应。
abcde 2018/7/23 9:35:46
这个问题要怎么解决?
2018/7/23 11:12:30
顾问 2018/7/23 11:12:30
那个报表?
abcde 2018/7/23 11:13:00
ZPP014 报工明细查询
顾问 2018/7/23 11:13:31
那你能不能改成标准的工时取生产订单的,别取工艺路线的?
2018/7/23 11:15:01
abcde 2018/7/23 11:15:01
生产订单的标工不是最新的。
abcde 2018/7/23 11:15:56
最新的他们只能维护到工艺路线里面。
顾问 2018/7/23 11:16:03
稍等,给你找个函数。。
2018/7/23 11:30:18
顾问- 2018/7/23 11:30:18
你调试下CPCC_S_TASK_LIST_READ这个函数。
顾问 2018/7/23 11:30:22
看行不行。。
你们用量很多替代工序,应该是有好多条才对。。
顾问- 2018/7/23 14:23:14
了
2018/7/23 14:28:15
abcde 2018/7/23 14:28:15
那我的标工是不是只要取节点1就好了?
顾问- 2018/7/23 14:29:14
应该是可以的,如果每个替代工序都是一样的话。。
顾问- 2018/7/23 14:29:33
比如A1拉、A2拉的效率如果一样的话,就没啥所谓。。
*&---------------------------------------------------------------------*
*& Report ZPPR014
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zppr014 NO STANDARD PAGE HEADING.
TYPE-POOLS: slis,vrm.
TABLES:afru,afko,afpo,crhd,aufk,anla,cobrb.
TYPES:BEGIN OF ty_list,
ersda TYPE afru-ersda, "
auart TYPE aufk-auart,
aufnr TYPE afru-aufnr,
gamng TYPE afko-gamng,
rueck TYPE afru-rueck,
rmzhl TYPE afru-rmzhl,
lmnga TYPE afru-lmnga,
aueru TYPE afru-aueru,
arbid TYPE afru-arbid,
ism01 TYPE plpo-vgw01,
ism02 TYPE plpo-vgw01,
ism03 TYPE plpo-vgw01,
arbpl TYPE crhd-arbpl,
plnbez TYPE afko-plnbez,
maktx TYPE makt-maktx,
werks TYPE afru-werks,
all_s_rg TYPE plpo-vgw01,
all_s_jq TYPE plpo-vgw01,
all_s_zf TYPE plpo-vgw01,
all_s_mj TYPE plpo-vgw01,
all_a_rg TYPE plpo-vgw01,
all_a_jq TYPE plpo-vgw01,
all_a_zf TYPE plpo-vgw01,
all_d_rg TYPE plpo-vgw01,
all_d_zf TYPE plpo-vgw01,
all_d_jq TYPE plpo-vgw01,
r_rg(10),
r_zf(10),
r_jq(10),
* ltxa1 TYPE afru-ltxa1,
ltxa1 TYPE c LENGTH 300,
ktext LIKE aufk-ktext,
anln(15),
anln1 LIKE anla-anln1,
anln2 LIKE anla-anln2,
txt50 LIKE anla-txt50,
ddzt(100),
budat LIKE afru-budat,
zzrr LIKE afru-zzrr,
ernam LIKE aufk-ernam,
END OF ty_list.
TYPES: BEGIN OF ty_internal,
_number TYPE i , "***
_excp TYPE c, "需要在LAYOUT-EXCP_FNAME中指定,绿灯3,红灯1,黄灯2"
_check TYPE c , "复选框,还需要在FCAT中设置成CHECKBOX,记录用户的选择
_box TYPE c , "需要在LAYOUT-BOX_NAME中指定,记录用户的选择,跟_BOX不同,记录的是ALV控件的标准选择框,
_delete TYPE c , "记录删除标识X"
_action TYPE c , "用户操作,插入I,更新U,删除D"
_row_id TYPE sytabix, "行项目ID"
_tabix TYPE sytabix, "引用的表行标识"
_line_color(4) TYPE c, "行项目的颜色"
_field_style TYPE lvc_t_styl, "行项目的样式"
_mess_type TYPE c, "消息类型,用于数据检查"
_message TYPE char255, "行项目的消息内容"
reffi TYPE mara-meins,
END OF ty_internal.
TYPES: BEGIN OF ty_type.
INCLUDE TYPE ty_list.
INCLUDE TYPE ty_internal.
TYPES END OF ty_type.
DATA: gt_table TYPE TABLE OF ty_type WITH HEADER LINE.
*ALV类变量定义
DATA: gs_layout TYPE lvc_s_layo.
DATA: gt_fieldcat TYPE lvc_t_fcat.
DATA: global_alv_sort TYPE lvc_t_sort.
DATA: ls_style TYPE lvc_s_styl,
lt_style TYPE lvc_t_styl.
DATA: x_save TYPE c,
gs_variant TYPE disvariant,
g_title TYPE lvc_title.
DATA: g_grid TYPE REF TO cl_gui_alv_grid.
DATA:BEGIN OF gs_aufk,
aufnr LIKE aufk-aufnr,
ktext LIKE aufk-ktext, "订单描述
objnr LIKE aufk-objnr, "对象号
auart LIKE aufk-auart, "订单类型
END OF gs_aufk.
DATA:BEGIN OF gs_afko,
aufnr LIKE afko-aufnr,
plnty LIKE afko-plnty,
plnnr LIKE afko-plnnr,
plnal LIKE afko-plnal,
END OF gs_afko.
DATA:BEGIN OF gs_plpo,
plnty LIKE plpo-plnty,
plnnr LIKE plpo-plnnr,
vgw01 LIKE plpo-vgw01,
vgw02 LIKE plpo-vgw01,
vgw03 LIKE plpo-vgw01,
plnkn LIKE plpo-plnkn,
END OF gs_plpo.
DATA:BEGIN OF gs_cobrb,
objnr LIKE cobrb-objnr, "对象号
anln1 LIKE cobrb-anln1, "主资产号
anln2 LIKE cobrb-anln2, "次级资产号
END OF gs_cobrb.
DATA:BEGIN OF gs_anla,
anln1 LIKE cobrb-anln1, "主资产号
anln2 LIKE cobrb-anln2, "次级资产号
txt50 LIKE anla-txt50, "资产描述
END OF gs_anla.
DATA:gt_aufk LIKE TABLE OF gs_aufk,
gt_cobrb LIKE TABLE OF gs_cobrb,
gt_afko LIKE TABLE OF gs_afko,
gt_plpo LIKE TABLE OF gs_plpo,
gt_anla LIKE TABLE OF gs_anla.
SELECTION-SCREEN:BEGIN OF BLOCK blk1 WITH FRAME TITLE TEXT-001.
PARAMETERS:p_werks LIKE aufk-werks DEFAULT '1000' OBLIGATORY.
SELECT-OPTIONS:s_ersda FOR afru-ersda DEFAULT sy-datum,
s_budat FOR afru-budat,
s_aufnr FOR afko-aufnr,
s_auart FOR aufk-auart,
s_arbpl FOR crhd-arbpl MATCHCODE OBJECT zarbpl.
SELECTION-SCREEN:END OF BLOCK blk1.
START-OF-SELECTION.
PERFORM frm_get_data.
IF gt_table[] IS NOT INITIAL.
PERFORM frm_dis_data.
ELSE.
MESSAGE '无符合条件的数据' TYPE 'I' DISPLAY LIKE 'E'.
ENDIF.
*&---------------------------------------------------------------------*
*& Form frm_dis_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_dis_data.
PERFORM dis_prepare_layout CHANGING gs_layout.
PERFORM dis_prepare_field_catalog CHANGING gt_fieldcat.
PERFORM dis_show_data_alv.
ENDFORM. "frm_dis_data
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_get_data.
DATA:vgw01 LIKE plpo-vgw01,
vgw02 LIKE plpo-vgw01,
vgw03 LIKE plpo-vgw01,
vgw04 LIKE plpo-vgw01,
vgw05 LIKE plpo-vgw01,
vgw06 LIKE plpo-vgw01.
DATA:rate TYPE p DECIMALS 2.
DATA: BEGIN OF lt_itab OCCURS 0,
arbid TYPE afru-arbid,
END OF lt_itab.
DATA:BEGIN OF gs_plpo,
werks LIKE plpo-werks,
plnnr LIKE plpo-plnnr,
arbid LIKE plpo-arbid,
* ltxa1 LIKE plpo-ltxa1,
ltxa1 TYPE c LENGTH 300,
bmsch LIKE plpo-bmsch,
vgw01 LIKE plpo-vgw01,
vgw02 LIKE plpo-vgw02,
vgw03 LIKE plpo-vgw03,
vgw04 LIKE plpo-vgw04,
anzma LIKE plpo-anzma,
splim LIKE plpo-splim,
aufnr LIKE afko-aufnr,
plnbez LIKE afko-plnbez,
gamng LIKE afko-gamng,
auart LIKE aufk-auart,
ernam LIKE aufk-ernam,
plnkn LIKE plpo-plnkn,
END OF gs_plpo.
DATA:BEGIN OF gs_makt,
matnr LIKE makt-matnr,
maktx LIKE makt-maktx,
END OF gs_makt.
DATA:BEGIN OF gs_crhd,
objid LIKE crhd-objid,
arbpl LIKE crhd-arbpl,
END OF gs_crhd.
DATA:gt_plpo LIKE TABLE OF gs_plpo,
gt_makt LIKE TABLE OF gs_makt,
gt_crhd LIKE TABLE OF gs_crhd.
SELECT DISTINCT objid INTO TABLE lt_itab FROM crhd
WHERE arbpl IN s_arbpl.
IF lt_itab[] IS NOT INITIAL.
SELECT DISTINCT * INTO CORRESPONDING FIELDS OF TABLE gt_table FROM afru
FOR ALL ENTRIES IN lt_itab
WHERE ersda IN s_ersda AND werks EQ p_werks AND stokz = '' AND stzhl = ''
AND aufnr IN s_aufnr AND arbid EQ lt_itab-arbid AND budat IN s_budat.
ELSE.
SELECT DISTINCT * INTO CORRESPONDING FIELDS OF TABLE gt_table FROM afru
WHERE ersda IN s_ersda AND werks EQ p_werks AND stokz = '' AND stzhl = ''
AND aufnr IN s_aufnr AND budat IN s_budat."
ENDIF.
IF gt_table[] IS NOT INITIAL.
SELECT plpo~werks plpo~plnnr arbid ltxa1 bmsch vgw01 vgw02 vgw03 vgw04 anzma
splim afko~aufnr plnbez gamng auart ernam plnkn
INTO CORRESPONDING FIELDS OF TABLE gt_plpo FROM plpo
INNER JOIN afko ON plpo~plnnr = afko~plnnr
JOIN aufk ON afko~aufnr = aufk~aufnr
FOR ALL ENTRIES IN gt_table WHERE plpo~arbid = gt_table-arbid
AND afko~aufnr = gt_table-aufnr
AND plpo~werks = p_werks .
SELECT matnr maktx INTO TABLE gt_makt FROM makt FOR ALL ENTRIES IN gt_plpo WHERE matnr = gt_plpo-plnbez.
SELECT objid arbpl INTO TABLE gt_crhd FROM crhd FOR ALL ENTRIES IN gt_plpo WHERE objid = gt_plpo-arbid.
SORT gt_plpo BY aufnr .
SORT gt_makt BY matnr.
SORT gt_crhd BY objid.
DELETE ADJACENT DUPLICATES FROM gt_makt COMPARING matnr.
DELETE ADJACENT DUPLICATES FROM gt_crhd COMPARING objid.
DATA p_arbpl(2) TYPE c.
DATA: lv_name TYPE thead-tdname.
DATA: ls_tline TYPE tline .
DATA: lt_tline LIKE TABLE OF tline .
LOOP AT gt_table.
CLEAR gs_crhd.
READ TABLE gt_crhd INTO gs_crhd WITH KEY objid = gt_table-arbid BINARY SEARCH.
IF sy-subrc EQ 0 .
gt_table-arbpl = gs_crhd-arbpl.
ENDIF.
p_arbpl = gt_table-arbpl+0(2).
SELECT SINGLE plnbez INTO gt_table-plnbez FROM afko WHERE aufnr = gt_table-aufnr .
CLEAR gs_plpo.
READ TABLE gt_plpo INTO gs_plpo WITH KEY aufnr = gt_table-aufnr BINARY SEARCH .
IF sy-subrc EQ 0.
"MODIFY BY LXF START
DATA: lv_plnnr LIKE mapl-plnnr .
DATA: lt_re LIKE TABLE OF opr_class_data .
DATA: ls_re LIKE opr_class_data .
SELECT SINGLE plnnr INTO lv_plnnr FROM mapl
WHERE matnr = gt_table-plnbez
AND plnty EQ 'N'
AND werks = gt_table-werks
AND loekz EQ ''.
CALL FUNCTION 'CPCC_S_TASK_LIST_READ'
EXPORTING
iv_plnty = 'N'
iv_plnnr = lv_plnnr
iv_plnal = '01'
iv_datuv = sy-datum
iv_datub = '99991231'
* IV_READ_FROM_DB =
* IV_DISPLAY_LOG = ' '
IMPORTING
* ET_TSK_CLASS_DATA =
* ET_MTK_CLASS_DATA =
et_opr_class_data = lt_re
* ET_PRT_CLASS_DATA =
* ET_CHA_CLASS_DATA =
* ET_CHV_CLASS_DATA =
* ET_RETURN =
.
* gs_plpo-bmsch
* gs_plpo-vgw02
* gs_plpo-anzma
* gs_plpo-splim.
LOOP AT lt_re INTO ls_re WHERE plnfl EQ '000000' AND vornr EQ '0010'.
gs_plpo-bmsch = ls_re-bmsch .
gs_plpo-vgw02 = ls_re-vgw02 .
gs_plpo-anzma = ls_re-anzma .
gs_plpo-splim = ls_re-splim .
ENDLOOP .
CLEAR lt_re[] .
CLEAR ls_re.
"MODIFY BY LXF END
gt_table-auart = gs_plpo-auart.
gt_table-ernam = gs_plpo-ernam.
gt_table-gamng = gs_plpo-gamng.
gt_table-plnbez = gs_plpo-plnbez.
* IF gt_table-auart = 'LX03' OR gt_table-auart = 'LX08' OR gt_table-auart = 'LX22'
* OR gt_table-auart = 'LX23' OR gt_table-auart = 'LX31' OR gt_table-auart = 'LX32'
* OR ( gt_table-auart = 'LX21' AND p_arbpl <> '再加')
* OR ( gt_table-auart = 'LX33' AND p_arbpl <> '再加')
* OR ( gt_table-auart = 'LX07' AND p_arbpl = 'ZS' )
* OR ( gt_table-auart = 'LX06' AND p_arbpl = 'ZS' )
* OR ( gt_table-auart = 'LX12' AND p_arbpl = 'ZS' ) .
IF gt_table-auart = 'LX08' OR gt_table-auart = 'LX22'
OR gt_table-auart = 'LX23' OR gt_table-auart = 'LX31' OR gt_table-auart = 'LX32'
OR ( gt_table-auart = 'LX03' AND p_arbpl <> '再加')
OR ( gt_table-auart = 'LX21' AND p_arbpl <> '再加')
OR ( gt_table-auart = 'LX33' AND p_arbpl <> '再加')
OR ( gt_table-auart = 'LX07' AND p_arbpl = 'ZS' )
OR ( gt_table-auart = 'LX06' AND p_arbpl = 'ZS' )
OR ( gt_table-auart = 'LX12' AND p_arbpl = 'ZS' ) .
IF gs_plpo-bmsch <> 0 AND gs_plpo-splim <> 0.
gt_table-all_s_rg = gt_table-lmnga / gs_plpo-bmsch * gs_plpo-vgw02 * gs_plpo-anzma / gs_plpo-splim.
gt_table-all_s_jq = gt_table-lmnga / gs_plpo-bmsch * gs_plpo-vgw01 / gs_plpo-splim.
gt_table-all_s_zf = gt_table-lmnga / gs_plpo-bmsch * gs_plpo-vgw03 * gs_plpo-anzma / gs_plpo-splim.
ELSE.
gt_table-all_s_rg = 0.
gt_table-all_s_jq = 0.
gt_table-all_s_zf = 0.
ENDIF.
gt_table-all_s_mj = gt_table-lmnga.
gt_table-all_a_rg = gt_table-ism02.
gt_table-all_a_jq = gt_table-ism01.
gt_table-all_a_zf = gt_table-ism03.
gt_table-all_d_rg = gt_table-all_a_rg - gt_table-all_s_rg.
gt_table-all_d_jq = gt_table-all_a_jq - gt_table-all_s_jq.
gt_table-all_d_zf = gt_table-all_a_zf - gt_table-all_s_zf.
CLEAR rate.
IF gt_table-all_a_rg <> 0.
rate = gt_table-all_s_rg / gt_table-all_a_rg * 100.
gt_table-r_rg = rate.
CONCATENATE gt_table-r_rg '%' INTO gt_table-r_rg.
ENDIF.
CLEAR rate.
IF gt_table-all_a_jq <> 0.
rate = gt_table-all_s_jq / gt_table-all_a_jq * 100.
gt_table-r_jq = rate.
CONCATENATE gt_table-r_jq '%' INTO gt_table-r_jq.
ENDIF.
CLEAR rate.
IF gt_table-all_a_zf <> 0.
rate = gt_table-all_s_zf / gt_table-all_a_zf * 100.
gt_table-r_zf = rate.
CONCATENATE gt_table-r_zf '%' INTO gt_table-r_zf.
ENDIF.
ELSE.
IF gs_plpo-bmsch <> 0.
gt_table-all_s_rg = gt_table-lmnga * gs_plpo-vgw01 * gs_plpo-anzma / gs_plpo-bmsch .
gt_table-all_s_zf = gt_table-lmnga * gs_plpo-vgw02 * gs_plpo-anzma / gs_plpo-bmsch .
ELSE.
gt_table-all_s_rg = 0.
gt_table-all_s_zf = 0.
ENDIF.
gt_table-all_a_rg = gt_table-ism01.
gt_table-all_a_zf = gt_table-ism02.
gt_table-all_d_rg = gt_table-all_a_rg - gt_table-all_s_rg.
gt_table-all_d_zf = gt_table-all_a_zf - gt_table-all_s_zf.
CLEAR rate.
IF gt_table-all_a_rg <> 0.
rate = gt_table-all_s_rg / gt_table-all_a_rg * 100.
gt_table-r_rg = rate.
CONCATENATE gt_table-r_rg '%' INTO gt_table-r_rg.
ENDIF.
CLEAR rate.
IF gt_table-all_a_zf <> 0.
rate = gt_table-all_s_zf / gt_table-all_a_zf * 100.
gt_table-r_zf = rate.
CONCATENATE gt_table-r_zf '%' INTO gt_table-r_zf.
ENDIF.
ENDIF.
ENDIF.
gt_table-reffi = 'KAR'.
CLEAR gs_makt.
READ TABLE gt_makt INTO gs_makt WITH KEY matnr = gt_table-plnbez BINARY SEARCH .
IF sy-subrc EQ 0.
gt_table-maktx = gs_makt-maktx.
ENDIF.
"LTXA1 异常原因 modify by lxf START
CONCATENATE sy-mandt gt_table-rueck gt_table-rmzhl INTO lv_name.
CLEAR: lt_tline[] .
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = 'RMEL'
language = sy-langu
name = lv_name
object = 'AUFK'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
* OLD_LINE_COUNTER =
TABLES
lines = lt_tline
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
IF lt_tline IS NOT INITIAL .
CLEAR gt_table-ltxa1 .
LOOP AT lt_tline INTO ls_tline .
CONCATENATE gt_table-ltxa1 ls_tline-tdline INTO gt_table-ltxa1 .
ENDLOOP.
ENDIF .
CLEAR lt_tline[] .
"LTXA1 异常原因 modify by lxf END
MODIFY gt_table.
CLEAR gt_table.
* SELECT SINGLE auart ernam INTO (gt_table-auart,gt_table-ernam) FROM aufk WHERE aufnr EQ gt_table-aufnr.
* SELECT SINGLE gamng INTO gt_table-gamng FROM afko WHERE aufnr EQ gt_table-aufnr.
* SELECT SINGLE arbpl INTO gt_table-arbpl FROM crhd WHERE objid EQ gt_table-arbid.
* SELECT SINGLE plnbez INTO gt_table-plnbez FROM afko WHERE aufnr EQ gt_table-aufnr.
* SELECT SINGLE maktx INTO gt_table-maktx FROM makt WHERE matnr EQ gt_table-plnbez.
* CLEAR:vgw01,vgw02,vgw03,vgw04,vgw05,vgw06.
* CALL FUNCTION 'ZPP_MATERIAL_STANDARD_ROUTING'
* EXPORTING
* lmnga = gt_table-lmnga
* matnr = gt_table-plnbez
* arbid = gt_table-arbid
* werks = gt_table-werks
* IMPORTING
* vgw01 = vgw01
* vgw02 = vgw02
* vgw03 = vgw03
* vgw04 = vgw04
* vgw05 = vgw05
* vgw06 = vgw06.
* CASE gt_table-auart.
* WHEN 'LX03' OR 'LX08' OR 'LX07' OR 'LX06' OR 'LX12'.
* gt_table-all_s_rg = vgw02.
* gt_table-all_s_jq = vgw01.
* gt_table-all_s_zf = vgw03.
* gt_table-all_s_mj = vgw04.
* gt_table-all_a_rg = gt_table-ism02.
* gt_table-all_a_jq = gt_table-ism01.
* gt_table-all_a_zf = gt_table-ism03.
* gt_table-all_d_rg = gt_table-all_a_rg - gt_table-all_s_rg.
* gt_table-all_d_jq = gt_table-all_a_jq - gt_table-all_s_jq.
* gt_table-all_d_zf = gt_table-all_a_zf - gt_table-all_s_zf.
* CLEAR rate.
* IF gt_table-all_a_rg <> 0.
* rate = gt_table-all_s_rg / gt_table-all_a_rg * 100.
* gt_table-r_rg = rate.
* CONCATENATE gt_table-r_rg '%' INTO gt_table-r_rg.
* ENDIF.
* CLEAR rate.
* IF gt_table-all_a_jq <> 0.
* rate = gt_table-all_s_jq / gt_table-all_a_jq * 100.
* gt_table-r_jq = rate.
* CONCATENATE gt_table-r_jq '%' INTO gt_table-r_jq.
* ENDIF.
* CLEAR rate.
* IF gt_table-all_a_zf <> 0.
* rate = gt_table-all_s_zf / gt_table-all_a_zf * 100.
* gt_table-r_zf = rate.
* CONCATENATE gt_table-r_zf '%' INTO gt_table-r_zf.
* ENDIF.
* WHEN OTHERS.
* gt_table-all_s_rg = vgw01.
* gt_table-all_s_zf = vgw02.
* gt_table-all_a_rg = gt_table-ism01.
* gt_table-all_a_zf = gt_table-ism02.
* gt_table-all_d_rg = gt_table-all_a_rg - gt_table-all_s_rg.
** GT_TABLE-ALL_D_JQ = GT_TABLE-ALL_A_JQ - GT_TABLE-ALL_S_JQ.
* gt_table-all_d_zf = gt_table-all_a_zf - gt_table-all_s_zf.
* CLEAR rate.
* IF gt_table-all_a_rg <> 0.
* rate = gt_table-all_s_rg / gt_table-all_a_rg * 100.
* gt_table-r_rg = rate.
* CONCATENATE gt_table-r_rg '%' INTO gt_table-r_rg.
* ENDIF.
* CLEAR rate.
* IF gt_table-all_a_zf <> 0.
* rate = gt_table-all_s_zf / gt_table-all_a_zf * 100.
* gt_table-r_zf = rate.
* CONCATENATE gt_table-r_zf '%' INTO gt_table-r_zf.
* ENDIF.
* ENDCASE.
* gt_table-reffi = 'KAR'.
* MODIFY gt_table.
* CLEAR gt_table.
ENDLOOP.
ENDIF.
IF s_auart IS NOT INITIAL.
DELETE gt_table WHERE auart NOT IN s_auart.
ENDIF.
*处理LX08
PERFORM: frm_lx08.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form UPD_PREPARE_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PS_LAYOUT text
*----------------------------------------------------------------------*
FORM dis_prepare_layout CHANGING ps_layout TYPE lvc_s_layo.
g_title = sy-title.
ps_layout-cwidth_opt = 'X'.
ps_layout-zebra = 'X'.
ps_layout-box_fname = '_BOX'.
ps_layout-sel_mode = 'A'.
* PS_LAYOUT-EXCP_FNAME = '_EXCP'.
ps_layout-info_fname = '_LINE_COLOR'.
ps_layout-grid_title = g_title.
ps_layout-detailinit = 'X' . " 是否可以弹出细节屏幕
ps_layout-detailtitl = g_title. " 细节屏幕标题
ENDFORM. "UPD_PREPARE_LAYOUT
*&---------------------------------------------------------------------*
*& Form FRM_LX08
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_lx08 .
DATA: lt_table TYPE TABLE OF ty_type.
DATA: ls_table TYPE ty_type.
DATA:z_pp_0001 TYPE REF TO zhele_pp_0001.
CREATE OBJECT z_pp_0001.
lt_table = gt_table[].
DELETE lt_table WHERE auart <> 'LX08'.
IF lt_table[] IS INITIAL.
EXIT.
ENDIF.
SELECT aufnr ktext objnr auart
INTO TABLE gt_aufk FROM aufk
FOR ALL ENTRIES IN lt_table
WHERE aufnr = lt_table-aufnr.
SELECT objnr anln1 anln2
INTO TABLE gt_cobrb
FROM cobrb
FOR ALL ENTRIES IN gt_aufk
WHERE objnr = gt_aufk-objnr.
SELECT anln1 anln2 txt50
INTO TABLE gt_anla
FROM anla FOR ALL ENTRIES IN gt_cobrb
WHERE anln1 = gt_cobrb-anln1
AND anln2 = gt_cobrb-anln2.
SELECT aufnr plnty plnnr plnal INTO TABLE gt_afko FROM afko
FOR ALL ENTRIES IN gt_aufk
WHERE aufnr = gt_aufk-aufnr.
SELECT plnty plnnr vgw01 vgw02 vgw03 INTO TABLE gt_plpo FROM plpo
FOR ALL ENTRIES IN gt_afko
WHERE plnty = gt_afko-plnty
AND plnnr = gt_afko-plnnr.
SORT gt_aufk BY aufnr.
SORT gt_cobrb BY objnr.
SORT gt_anla BY anln1 anln2.
SORT gt_afko BY aufnr.
SORT gt_plpo BY plnty plnnr.
LOOP AT gt_table WHERE auart = 'LX08'.
READ TABLE gt_aufk INTO gs_aufk
WITH KEY aufnr = gt_table-aufnr
BINARY SEARCH.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.
gt_table-ktext = gs_aufk-ktext.
CALL METHOD z_pp_0001->dingdanzhuangtai
EXPORTING
aufnr = gs_aufk-aufnr
IMPORTING
status_en = gt_table-ddzt.
CLEAR gs_cobrb.
READ TABLE gt_cobrb INTO gs_cobrb
WITH KEY objnr = gs_aufk-objnr
BINARY SEARCH.
IF sy-subrc EQ 0 .
gt_table-anln1 = gs_cobrb-anln1 .
gt_table-anln2 = gs_cobrb-anln2.
CONCATENATE gs_cobrb-anln1 '-' gs_cobrb-anln2 INTO gt_table-anln.
IF gt_table-anln = '-' .
gt_table-anln =''.
ENDIF.
ENDIF.
CLEAR:gs_anla.
READ TABLE gt_anla INTO gs_anla
WITH KEY anln1 = gt_table-anln1 anln2 = gt_table-anln2
BINARY SEARCH.
IF sy-subrc EQ 0.
gt_table-txt50 = gs_anla-txt50.
* MODIFY gt_table.
ENDIF.
CLEAR:gs_afko,gs_plpo.
READ TABLE gt_afko INTO gs_afko
WITH KEY aufnr = gs_aufk-aufnr
BINARY SEARCH .
IF sy-subrc EQ 0.
READ TABLE gt_plpo INTO gs_plpo
WITH KEY plnty = gs_afko-plnty plnnr = gs_afko-plnnr
BINARY SEARCH.
IF sy-subrc EQ 0.
gt_table-all_s_jq = gs_plpo-vgw01.
gt_table-all_s_rg = gs_plpo-vgw02.
gt_table-all_s_zf = gs_plpo-vgw03.
ENDIF.
ENDIF.
MODIFY gt_table.
ENDLOOP.
"新增字段——订单描述、资产编号、资产描述
* IF gt_table-auart = 'LX08' .
* CLEAR:gt_aufk,gt_cobrb,gt_anla,gt_afko,gt_plpo.
* SELECT aufnr ktext objnr auart INTO TABLE gt_aufk FROM aufk FOR ALL ENTRIES IN gt_table
* WHERE aufnr = gt_table-aufnr AND auart = 'LX08'.
* SELECT objnr anln1 anln2 INTO TABLE gt_cobrb FROM cobrb
* FOR ALL ENTRIES IN gt_aufk WHERE objnr = gt_aufk-objnr.
* SELECT anln1 anln2 txt50 INTO TABLE gt_anla FROM anla FOR ALL ENTRIES IN gt_cobrb
* WHERE anln1 = gt_cobrb-anln1 AND anln2 = gt_cobrb-anln2.
* SELECT aufnr plnty plnnr plnal INTO TABLE gt_afko FROM afko FOR ALL ENTRIES IN gt_aufk WHERE aufnr = gt_aufk-aufnr.
* SELECT plnty plnnr vgw01 vgw02 vgw03 INTO TABLE gt_plpo FROM plpo FOR ALL ENTRIES IN gt_afko
* WHERE plnty = gt_afko-plnty
* AND plnnr = gt_afko-plnnr.
*
* SORT gt_aufk BY aufnr.
* SORT gt_cobrb BY objnr.
* SORT gt_anla BY anln1 anln2.
* SORT gt_afko BY aufnr.
* SORT gt_plpo BY plnty plnnr.
*
* CLEAR:gs_aufk."gs_afko,gs_cobrb,gs_anla,gs_plpo.
*
* DATA:z_pp_0001 TYPE REF TO zhele_pp_0001.
* CREATE OBJECT z_pp_0001.
*
* LOOP AT gt_aufk INTO gs_aufk.
* gt_table-ktext = gs_aufk-ktext.
* CALL METHOD z_pp_0001->dingdanzhuangtai
* EXPORTING
* aufnr = gs_aufk-aufnr
* IMPORTING
* status_en = gt_table-ddzt.
* CLEAR gs_cobrb.
* READ TABLE gt_cobrb INTO gs_cobrb WITH KEY objnr = gs_aufk-objnr BINARY SEARCH.
* IF sy-subrc EQ 0 .
** gt_table-anln1 = gs_cobrb-anln1 .
** gt_table-anln2 = gs_cobrb-anln2.
* CONCATENATE gs_cobrb-anln1 '-' gs_cobrb-anln2 INTO gt_table-anln1.
* ENDIF.
* CLEAR:gs_anla.
* READ TABLE gt_anla INTO gs_anla WITH KEY anln1 = gs_cobrb-anln1 anln2 = gs_cobrb-anln2 BINARY SEARCH.
* IF sy-subrc EQ 0.
* gt_table-txt50 = gs_anla-txt50.
* ENDIF.
* CLEAR:gs_afko,gs_plpo.
* READ TABLE gt_afko INTO gs_afko WITH KEY aufnr = gs_aufk-aufnr BINARY SEARCH .
* IF sy-subrc EQ 0.
* READ TABLE gt_plpo INTO gs_plpo WITH KEY plnty = gs_afko-plnty plnnr = gs_afko-plnnr BINARY SEARCH.
* IF sy-subrc EQ 0.
* gt_table-all_s_jq = gs_plpo-vgw01.
* gt_table-all_s_rg = gs_plpo-vgw02.
* gt_table-all_s_zf = gs_plpo-vgw03.
* ENDIF.
* ENDIF.
* MODIFY gt_table.
*
* ENDLOOP.
*
* ENDIF.
ENDFORM.
FORM dis_prepare_field_catalog CHANGING pt_fieldcat TYPE lvc_t_fcat.
CLEAR pt_fieldcat[].
DATA ls_fcat TYPE lvc_s_fcat .
CLEAR ls_fcat .
ls_fcat-coltext = '报工日期'.
ls_fcat-fieldname = 'ERSDA'.
* ls_fcat-ref_table = 'AFRU'.
* ls_fcat-ref_field = 'ERDAT'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '过账日期'.
ls_fcat-fieldname = 'BUDAT'.
* ls_fcat-ref_table = 'AFRU'.
* ls_fcat-ref_field = 'ERDAT'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '订单类型'.
ls_fcat-fieldname = 'AUART'.
ls_fcat-ref_table = 'AUFK'.
ls_fcat-ref_field = 'AUART'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '订单号'.
ls_fcat-fieldname = 'AUFNR'.
ls_fcat-ref_table = 'AUFK'.
ls_fcat-ref_field = 'AUFNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat."ernam
ls_fcat-coltext = '订单创建者'.
ls_fcat-fieldname = 'ERNAM'.
ls_fcat-ref_table = 'AUFK'.
ls_fcat-ref_field = 'ERNAM'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '订单描述'.
ls_fcat-fieldname = 'KTEXT'.
ls_fcat-ref_table = 'AUFK'.
ls_fcat-ref_field = 'AUFTEXT'.
* ls_fcat-no_zero = 'X'.
* ls_fcat-fix_column = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '订单状态'.
ls_fcat-fieldname = 'DDZT'.
* ls_fcat-ref_table = 'X'.
* ls_fcat-ref_field = 'DDZT'.
ls_fcat-no_zero = 'X'.
* ls_fcat-fix_column = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '资产编号'.
ls_fcat-fieldname = 'ANLN'.
* ls_fcat-ref_table = 'COBRB'.
* ls_fcat-ref_field = 'ANLN1'.
ls_fcat-no_zero = 'X'.
* ls_fcat-fix_column = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '资产描述'.
ls_fcat-fieldname = 'TXT50'.
ls_fcat-ref_table = 'ANLA'.
ls_fcat-ref_field = 'TXA50_ANLT'.
* ls_fcat-no_zero = 'X'.
* ls_fcat-fix_column = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '订单数量'.
ls_fcat-fieldname = 'GAMNG'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = 'X'.
ls_fcat-qfieldname = 'REFFI'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '确认编号'.
ls_fcat-fieldname = 'RUECK'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '确认计数器'.
ls_fcat-fieldname = 'RMZHL'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = 'X'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '报工数量'.
ls_fcat-fieldname = 'LMNGA'.
ls_fcat-qfieldname = 'REFFI'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '确认标识'.
ls_fcat-fieldname = 'AUERU'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '工作中心'.
ls_fcat-fieldname = 'ARBPL'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '产品编码'.
ls_fcat-fieldname = 'PLNBEZ'.
ls_fcat-ref_table = 'MARA'.
ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '产品描述'.
ls_fcat-fieldname = 'MAKTX'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '标准人工总工时'.
ls_fcat-fieldname = 'ALL_S_RG'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = 'X'.
ls_fcat-qfieldname = 'REFFI'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '标准机器总工时'.
ls_fcat-fieldname = 'ALL_S_JQ'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
ls_fcat-qfieldname = 'REFFI'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '标准其他总工时'.
ls_fcat-fieldname = 'ALL_S_ZF'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
ls_fcat-qfieldname = 'REFFI'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '模具分摊数量'.
ls_fcat-fieldname = 'ALL_S_MJ'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
ls_fcat-qfieldname = 'REFFI'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '实际人工总工时'.
ls_fcat-fieldname = 'ALL_A_RG'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
ls_fcat-qfieldname = 'REFFI'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '实际机器总工时'.
ls_fcat-fieldname = 'ALL_A_JQ'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
ls_fcat-qfieldname = 'REFFI'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '实际其他总工时'.
ls_fcat-fieldname = 'ALL_A_ZF'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
ls_fcat-qfieldname = 'REFFI'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '差异人工工时'.
ls_fcat-fieldname = 'ALL_D_RG'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
ls_fcat-qfieldname = 'REFFI'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '差异机器工时'.
ls_fcat-fieldname = 'ALL_D_JQ'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
ls_fcat-qfieldname = 'REFFI'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '差异其他工时'.
ls_fcat-fieldname = 'ALL_D_ZF'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
ls_fcat-qfieldname = 'REFFI'.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '人工效率达成率'.
ls_fcat-fieldname = 'R_RG'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '机器效率达成率'.
ls_fcat-fieldname = 'R_JQ'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '其他效率达成率'.
ls_fcat-fieldname = 'R_ZF'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '异常原因'.
ls_fcat-fieldname = 'LTXA1'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ls_fcat-coltext = '责任人'.
ls_fcat-fieldname = 'ZZRR'.
* ls_fcat-ref_table = 'MARA'.
* ls_fcat-ref_field = 'MATNR'.
* ls_fcat-no_zero = 'X'.
ls_fcat-fix_column = ''.
APPEND ls_fcat TO pt_fieldcat.CLEAR ls_fcat.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form dis_SHOW_DATA_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM dis_show_data_alv.
DATA: i_grid_title TYPE lvc_title .
i_grid_title = g_title . "'ALV标题' .
" 定义隐藏标准按钮的变量
DATA: wa_excluding TYPE slis_extab,
it_excluding TYPE slis_t_extab.
" 设置要隐藏的按钮的“FCODE”
wa_excluding-fcode = '&ABC' .
APPEND wa_excluding TO it_excluding .
CLEAR wa_excluding.
DATA:lt_events TYPE TABLE OF slis_alv_event WITH HEADER LINE.
lt_events-name = 'CALLER_EXIT'.
lt_events-form = 'ALV_EVENT_CALLER_EXIT'.
APPEND lt_events.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid " 当前程序
is_layout_lvc = gs_layout " 属性内表
it_fieldcat_lvc = gt_fieldcat[] " 列明内表
* it_excluding = it_excluding[]
i_save = 'A' " 是否保存布局
i_callback_pf_status_set = 'ALV_PF_STATUS_SET'
* i_callback_user_command = 'ALV_USER_COMMAND'
* IT_EVENTS = LT_EVENTS[]
"i_callback_html_top_of_page = 'ALV_TOP_OF_PAGE1'
"I_GRID_TITLE = I_GRID_TITLE
* it_sort_lvc = gt_alv_sort[]
TABLES
t_outtab = gt_table[] " 数据内表
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. "dis_SHOW_DATA_ALV
*&---------------------------------------------------------------------*
*& Form alv_pf_status_set
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RT_EXTAB text
*----------------------------------------------------------------------*
FORM alv_pf_status_set USING rt_extab TYPE slis_t_extab.
*copy the status from SAPLKKBL,and renamed it as ZSTANDARD.
SET PF-STATUS 'STANDARD'.
ENDFORM. "ALV_PF_STATUS_SET