*&---------------------------------------------------------------------* *& Report ZPPRP027 *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* REPORT ZPPRP027. INCLUDE ZPPRP027TOP. INCLUDE ZPPRP027A01. INCLUDE ZPPRP027ALV. INITIALIZATION. AT SELECTION-SCREEN OUTPUT. AT SELECTION-SCREEN. START-OF-SELECTION. PERFORM FRM_GETDATA. GS_LAYOUT-CWIDTH_OPT = 'X'. GS_LAYOUT-CWIDTH_OPT = 'X'. GS_LAYOUT-STYLEFNAME = 'FIELD_STYLE'. PERFORM FIELDS_BUILD CHANGING IT_FIELDCAT[]. PERFORM ALV_SHOW. "展示alv" END-OF-SELECTION. *======================================================================* * List Events *======================================================================* *** page header TOP-OF-PAGE. *** page header after first list TOP-OF-PAGE DURING LINE-SELECTION. *** page footer END-OF-PAGE. *** when double click AT LINE-SELECTION.
*&---------------------------------------------------------------------* *& 包含 ZPPRP027TOP *&---------------------------------------------------------------------* TABLES: plaf,makt,mapl,plpo. DATA: BEGIN OF wtab, check(1), pwwrk LIKE plaf-pwwrk, "工厂" plnum LIKE plaf-plnum, "计划单号" kdauf LIKE plaf-kdauf, "销售订单" kdpos LIKE plaf-kdpos, matnr LIKE plaf-matnr, "物料" maktx LIKE makt-maktx, "物料描述" plnnr LIKE mapl-plnnr, "组" vornr LIKE plpo-vornr, "工序编号" ltxa1 LIKE plpo-ltxa1, "工序名字" pedtr LIKE plaf-pedtr, "计划完工日期" annam LIKE plpo-annam, "创建者" gsmng LIKE plaf-gsmng, "数量" vgw02 LIKE plpo-vgw02, "工时" vge02 LIKE plpo-vge02, "单位" vgw03 LIKE plpo-vgw03, "计时工资" vge03 LIKE plpo-vge03, "单位" vgw04 LIKE plpo-vgw04, "计件工资" vge04 LIKE plpo-vge04, "单位" vgw06 LIKE plpo-vgw06, "其他间接费用" vge06 LIKE plpo-vge06, "单位" END OF wtab. DATA: itab LIKE TABLE OF wtab WITH HEADER LINE. DATA: itab001 LIKE TABLE OF wtab WITH HEADER LINE. DATA: it_fieldcat TYPE TABLE OF lvc_s_fcat WITH HEADER LINE,gs_layout TYPE lvc_s_layo. SELECTION-SCREEN BEGIN OF BLOCK blk_1 WITH FRAME TITLE TEXT-001. PARAMETER: p_pwwrk LIKE plaf-pwwrk OBLIGATORY MEMORY ID kun. SELECT-OPTIONS: p_matnr FOR plaf-matnr,"物料编号" p_plnum FOR plaf-plnum,"计划单号" p_kdauf FOR plaf-kdauf,"销售订单" p_plnnr FOR mapl-plnnr"组" . SELECTION-SCREEN END OF BLOCK blk_1.
*&---------------------------------------------------------------------* *& 包含 ZPPRP027A01 *&---------------------------------------------------------------------* FORM frm_getdata. SELECT DISTINCT plaf~pwwrk"工厂" plaf~plnum"计划单号" plaf~kdauf"销售订单" plaf~kdpos plaf~matnr"物料" makt~maktx"物料描述" mapl~plnnr"组" * plpo~vornr"工序编号" * plpo~ltxa1"工序名字" * plaf~pedtr"计划完工日期" * plpo~annam"创建者" * plaf~gsmng"数量" * plpo~vgw02"工时" * plpo~vge02"单位" * plpo~vgw03"计时工资" * plpo~vge03"单位" * plpo~vgw04"计件工资" * plpo~vge04"单位" * plpo~vgw06"其他间接费用" * plpo~vge06"单位" INTO CORRESPONDING FIELDS OF TABLE itab FROM plaf INNER JOIN makt ON plaf~matnr = makt~matnr INNER JOIN mapl ON plaf~matnr = mapl~matnr AND plaf~pwwrk = mapl~werks INNER JOIN plpo ON mapl~werks = plpo~werks AND mapl~plnnr = plpo~plnnr WHERE plaf~pwwrk = p_pwwrk"工厂" AND plpo~ltxa1 <> '' AND plaf~matnr IN p_matnr"物料编号" AND plaf~plnum IN p_plnum"计划单号" AND plaf~kdauf IN p_kdauf"销售订单" AND mapl~plnnr IN p_plnnr"组" ORDER BY plaf~plnum plaf~kdauf plaf~matnr mapl~plnnr "plpo~vornr . IF sy-subrc IS NOT INITIAL. MESSAGE '没有数据' TYPE 'I'. STOP. ENDIF. ENDFORM. FORM func001. itab-check = 'X'. MODIFY itab FROM itab TRANSPORTING check WHERE check = ''. CLEAR itab. ENDFORM. FORM func002. itab-check = ''. MODIFY itab FROM itab TRANSPORTING check WHERE check = 'X'. CLEAR itab. ENDFORM. FORM func003. READ TABLE itab WITH KEY check = 'X'. "是否有选中的记录 IF sy-subrc <> 0. MESSAGE '请选择' TYPE 'S'. ENDIF. SELECT DISTINCT plaf~pwwrk"工厂" plaf~plnum"计划单号" plaf~kdauf"销售订单" plaf~kdpos plaf~matnr"物料" makt~maktx"物料描述" mapl~plnnr"组" plpo~vornr"工序编号" plpo~ltxa1"工序名字" plaf~pedtr"计划完工日期" plpo~annam"创建者" plaf~gsmng"数量" plpo~vgw02"工时" plpo~vge02"单位" plpo~vgw03"计时工资" plpo~vge03"单位" plpo~vgw04"计件工资" plpo~vge04"单位" plpo~vgw06"其他间接费用" plpo~vge06"单位" INTO CORRESPONDING FIELDS OF TABLE itab001 FROM plaf INNER JOIN makt ON plaf~matnr = makt~matnr INNER JOIN mapl ON plaf~matnr = mapl~matnr AND plaf~pwwrk = mapl~werks INNER JOIN plpo ON mapl~werks = plpo~werks AND mapl~plnnr = plpo~plnnr WHERE plaf~pwwrk = p_pwwrk"工厂" AND plpo~ltxa1 <> '' AND plaf~matnr IN p_matnr"物料编号" AND plaf~plnum IN p_plnum"计划单号" AND plaf~kdauf IN p_kdauf"销售订单" AND mapl~plnnr IN p_plnnr"组" ORDER BY plaf~plnum plaf~kdauf plaf~matnr mapl~plnnr plpo~vornr . DATA: printab LIKE TABLE OF itab WITH HEADER LINE. DATA: it_head LIKE TABLE OF zspp001head WITH HEADER LINE, it_item LIKE TABLE OF zspp001detail WITH HEADER LINE. "获取选中的数据" LOOP AT itab WHERE check <> ''. INSERT itab INTO TABLE printab. ENDLOOP. "调用打印 DATA:ls_ssfcompop TYPE ssfcompop, ls_ssfctrlop TYPE ssfctrlop. ls_ssfctrlop-no_open = 'X'. ls_ssfctrlop-no_close = 'X'. ls_ssfctrlop-preview = 'X'. ls_ssfctrlop-no_dialog = 'X'. CLEAR:it_head,it_item. CALL FUNCTION 'SSF_OPEN' EXPORTING control_parameters = ls_ssfctrlop EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 5. * DELETE ADJACENT DUPLICATES FROM printab COMPARING pwwrk kdauf kdpos matnr plnum plnnr."去重复 LOOP AT printab. MOVE-CORRESPONDING printab TO it_head. APPEND: it_head. LOOP AT itab001 WHERE pwwrk = printab-pwwrk AND kdauf = printab-kdauf AND kdpos = printab-kdpos AND matnr = printab-matnr AND plnum = printab-plnum AND plnnr = printab-plnnr. MOVE-CORRESPONDING itab001 TO it_item. APPEND: it_item. ENDLOOP. DATA fm_name TYPE rs38l_fnam. fm_name = 'ZLHFR001'. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = fm_name variant = ' ' direct_call = ' ' IMPORTING fm_name = fm_name EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3. IF sy-subrc <> 0. ENDIF. CALL FUNCTION fm_name EXPORTING control_parameters = ls_ssfctrlop TABLES tb_detail = it_item tb_head = it_head. IF sy-subrc <> 0. ENDIF. CLEAR:it_item,it_item[],it_head,it_head[]. ENDLOOP. CLEAR:it_head,it_item,it_head[],it_item[],itab. CALL FUNCTION 'SSF_CLOSE'. ENDFORM.
*&---------------------------------------------------------------------* *& 包含 ZPPRP027ALV *&---------------------------------------------------------------------* FORM SET_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB. SET PF-STATUS 'ZPPRP027STATUS' EXCLUDING RT_EXTAB . ENDFORM. FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM RS_SELFIELD TYPE SLIS_SELFIELD. DATA: LR_GRID TYPE REF TO CL_GUI_ALV_GRID. DATA: L_VALID TYPE C. CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' IMPORTING E_GRID = LR_GRID. CALL METHOD LR_GRID->CHECK_CHANGED_DATA. RS_SELFIELD-REFRESH = 'X'. READ TABLE ITAB INDEX rs_selfield-tabindex. CASE R_UCOMM. WHEN '&FUNC001'. PERFORM FUNC001. WHEN '&FUNC002'. PERFORM FUNC002. WHEN '&FUNC003'. PERFORM FUNC003. ENDCASE. ENDFORM. FORM FIELDS_BUILD CHANGING M_FIELDCAT TYPE LVC_T_FCAT. PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'CHECK' '选择' '' '' '' '' 'X' 'X' '' '' . PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'PWWRK' '工厂' '' '' '' '' '' '' '' '' . PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'PLNUM' '计划单号' '' '' '' '' '' '' '' '' . PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'KDAUF' '销售订单' '' '' '' '' '' '' '' '' . PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'MATNR' '物料' '' '' '' '' '' '' '' '' . PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'MAKTX' '物料描述' '' '' '' '' '' '' '' '' . PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'PLNNR' '组' '' '' '' '' '' '' '' '' . * PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'VORNR' '工序编号' '' '' '' '' '' '' '' '' . * PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'LTXA1' '工序名字' '' '' '' '' '' '' '' '' . * PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'PEDTR' '计划完工日期' '' '' '' '' '' '' '' '' . * PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'ANNAM' '创建者' '' '' '' '' '' '' '' '' . * PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'GSMNG' '数量' '' '' '' '' '' '' '' '' . * PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'VGW02' '工时' '' '' '' '' '' '' '' '' . * PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'VGE02' '单位' '' '' '' '' '' '' '' '' . * PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'VGW03' '计时工资' '' '' '' '' '' '' '' '' . * PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'VGE03' '单位' '' '' '' '' '' '' '' '' . * PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'VGW04' '计件工资' '' '' '' '' '' '' '' '' . * PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'VGE04' '单位' '' '' '' '' '' '' '' '' . * PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'VGW06' '其他间接费用' '' '' '' '' '' '' '' '' . * PERFORM FRM_FIELDCAT_INIT TABLES M_FIELDCAT USING 'VGE06' '单位' '' '' '' '' '' '' '' '' . ENDFORM. FORM FRM_FIELDCAT_INIT TABLES T_FIELDCAT TYPE LVC_T_FCAT USING FIELDNAME TYPE C " 字段名 SCRTEXT_M TYPE C " 标题 COL_POS TYPE I " 所在列 OUTPUTLEN TYPE I " 输出长度 EMPHASIZE TYPE C " 高亮显示 KEY TYPE C " 主键 CHECKBOX TYPE C EDIT TYPE C FIX_COLUMN TYPE C " 固定列 NO_ZERO TYPE C. DATA: LS_FIELDCAT TYPE LVC_S_FCAT. LS_FIELDCAT-FIELDNAME = FIELDNAME. LS_FIELDCAT-SCRTEXT_M = SCRTEXT_M. LS_FIELDCAT-COL_POS = COL_POS. LS_FIELDCAT-OUTPUTLEN = OUTPUTLEN. LS_FIELDCAT-EMPHASIZE = EMPHASIZE. LS_FIELDCAT-KEY = KEY. LS_FIELDCAT-CHECKBOX = CHECKBOX. LS_FIELDCAT-EDIT = EDIT. LS_FIELDCAT-FIX_COLUMN = FIX_COLUMN. LS_FIELDCAT-NO_ZERO = NO_ZERO. APPEND LS_FIELDCAT TO T_FIELDCAT. CLEAR LS_FIELDCAT. ENDFORM. FORM ALV_SHOW. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' EXPORTING I_CALLBACK_PROGRAM = SY-CPROG " /SY-REPID " 程式名称 I_CALLBACK_PF_STATUS_SET = 'SET_STATUS' "GUI状态 I_CALLBACK_USER_COMMAND = 'USER_COMMAND' " 自定义工具栏的事件 IT_FIELDCAT_LVC = IT_FIELDCAT[] " 必须要设置的参数 , 设定输出目录 IS_LAYOUT_LVC = GS_LAYOUT " 对输出样式的设定 TABLES T_OUTTAB = ITAB "ALV 输出的内表 EXCEPTIONS PROGRAM_ERROR = 1 OTHERS. ENDFORM.