采购订单打印并预览PDF
*&---------------------------------------------------------------------* *& Report Z01MMF019 *& Author's name: CAIXIANG *& Program title: 采购订单打印 *& Date: 20161031 *&---------------------------------------------------------------------* *& Description: *&1.根据以上选择条件,查询出所有符合条件的采购订单,在清单中选择并点击打印。 *&---------------------------------------------------------------------*REPORT z01mmf019 MESSAGE-ID zmm02.*&---------------------------------------------------------------------* *& 数据声明 *&---------------------------------------------------------------------* INCLUDE Z01MMF019_TOP. *INCLUDE z01mmf102_top. *&---------------------------------------------------------------------* *& 包含 Z01MMF068_TOP *&---------------------------------------------------------------------*TABLES: z01mm_s_068,ekko,ekpo,lfa1.*&---------------------------------------------------------------------* * *计划交货日期, *单价 = 净价/价格单位,(6位小数) NETPR/PEINH *币别 *&---------------------------------------------------------------------* TYPES:BEGIN OF ty_alv,sel TYPE c, "标识:是否已选择 'X' 选中lin TYPE sy-tabix, *&抬头ebeln TYPE ekpo-ebeln, "POebelp TYPE ekpo-ebelp, "PO行lifnr TYPE ekko-lifnr, "供应商namel TYPE char100, "供应商名称ekorg TYPE ekko-ekorg, "采购组织ekgrp TYPE ekko-ekgrp, "采购组address TYPE char100, "供应商地址(ADRC-STREET+ADRC-STR_SUPPL1)zzrloc TYPE ekko-zzrloc, "贸易方式:即收货地点 EKKO-ZZRLOC的描述zzrloc_t TYPE char100,zterm TYPE ekko-zterm, "付款方式:根据付款条件EKKO-ZTERM取其描述zterm_t TYPE char100,zzpovr TYPE ekko-zzpovr, "订单版本号:EKKO-ZZPOVRbedat TYPE ekko-bedat, "采购订单日期:EKKO-BEDATzzpotp TYPE ekko-zzpotp, "订单发放类型:即PO发放类型EKKO-ZZPOTP的描述zzpotp_t TYPE char100,waers TYPE ekko-waers, "货币单位:EKKO-WAERSverkf TYPE lfm1-verkf, "供应商联系人 LFM1-VERKFtelf1 TYPE lfa1-telf1, "供应商联系电话 LFA1-TELF1name_cg TYPE t024-eknam,zzisasso TYPE ekko-zzisasso,bsart TYPE ekko-bsart,eknam TYPE t024-eknam, "采购员:取EKKO-EKGRP的名称T024-EKNAMlands TYPE ekko-lands, *&项目matnr TYPE ekpo-matnr, "物料maktx TYPE makt-maktx, "物料长文本menge TYPE ekpo-menge, "数量meins TYPE ekpo-meins, "单位plifz TYPE ekpo-plifz, "按天的计划交货时间netpr TYPE ekpo-netpr, "净价peinh TYPE ekpo-peinh, "价格单位netpr_d TYPE p DECIMALS 6, "单价 kbetr TYPE konp-kbetr, "含税:根据税码EKPO- MWSKZ取税率,如:17%mseh3 TYPE t006a-mseh3, "单位:(度量单位)根据EKPO-MEINS取其商业名称T006-MSEH3eindt TYPE eket-eindt, "交货期:EKET-EINDTnetwr TYPE ekpo-netwr, "金额:EKPO-NETWRnetwr_s TYPE ekpo-netwr, "总额:汇总所有行的金额text_po TYPE char100, "备注:PO抬头的表头文本mwskz TYPE ekpo-mwskz,flag TYPE c, * include TYPE z01mm_s_069.END OF ty_alv.TYPES:tt_alv TYPE STANDARD TABLE OF ty_alvWITH DEFAULT KEY INITIAL SIZE 0. TYPES:tyt_alv TYPE ty_alv OCCURS 0. DATA:gt_alv TYPE STANDARD TABLE OF ty_alv,wa_alv TYPE ty_alv.TYPES:BEGIN OF ty_gncg,index TYPE sy-tabix, *抬头:namel LIKE lfa1-name1, "供应商名称(LFA1-NAME1+NAME2)lifnr LIKE ekko-lifnr, "供应商编码address TYPE char100, "供应商地址(ADRC-STREET+ADRC-STR_SUPPL1)zzrloc TYPE ekko-zzrloc, "贸易方式:即收货地点 EKKO-ZZRLOC的描述zzrloc_t TYPE char100,zterm TYPE ekko-zterm, "付款方式:根据付款条件EKKO-ZTERM取其描述zterm_t TYPE char100,zzpovr TYPE ekko-zzpovr, "订单版本号:EKKO-ZZPOVRbedat TYPE ekko-bedat, "采购订单日期:EKKO-BEDATzzpotp TYPE ekko-zzpotp, "订单发放类型:即PO发放类型EKKO-ZZPOTP的描述zzpotp_t TYPE char100,waers TYPE ekko-waers, "货币单位:EKKO-WAERSverkf TYPE lfm1-verkf, "供应商联系人 LFM1-VERKFtelf1 TYPE lfa1-telf1, "供应商联系电话 LFA1-TELF1text_po TYPE string, "备注:PO抬头的表头文本zztmcp TYPE ekko-zztmcp, "TMK 采购单编号inco TYPE string,*行项目ebeln TYPE ekpo-ebeln,ebelp TYPE ekpo-ebelp, "项目matnr TYPE ekpo-matnr, "物品编码maktx TYPE makt-maktx, "物料描述:根据物料取其长文本kbetr TYPE konp-kbetr, "含税:根据税码EKPO- MWSKZ取税率,如:17%mseh3 TYPE t006a-mseh3, "单位:(度量单位)根据EKPO-MEINS取其商业名称T006-MSEH3netpr_d TYPE p DECIMALS 6, "单价:EKPO-NETPR除以价格单位EKPO-PEINH,保留6位小数eindt TYPE eket-eindt, "交货期:EKET-EINDTmenge TYPE ekpo-menge, "数量:EKPO-MENGEmeins TYPE ekpo-meins, "单位netwr TYPE ekpo-netwr, "金额:EKPO-NETWRnetwr_s TYPE ekpo-netwr, "总额:汇总所有行的金额 *脚注:eknam TYPE t024-eknam, "采购员:取EKKO-EKGRP的名称T024-EKNAM *背面条款:page TYPE sy-tabix, "页码text TYPE string,END OF ty_gncg.DATA:gt_gncg TYPE STANDARD TABLE OF ty_gncg,wa_gncg TYPE ty_gncg. *---------------------------------------------------------------------- * Data parameters for alv report use *---------------------------------------------------------------------- DATA: g_program TYPE sy-repid,gw_layout TYPE slis_layout_alv,gt_fieldcat TYPE slis_t_fieldcat_alv,wa_fieldcat TYPE slis_fieldcat_alv,gt_event TYPE slis_t_event,wa_event TYPE slis_alv_event. DATA: g_grid TYPE REF TO cl_gui_alv_grid. DATA: g_tabix TYPE i. DATA: g_len TYPE i.*---------------------------------------------------------------------- * Other use *---------------------------------------------------------------------- DATA:lt_list TYPE vrm_values,ls_value LIKE LINE OF lt_list.*&---------------------------------------------------------------------* *& 选择屏幕 *&---------------------------------------------------------------------* INCLUDE Z01MMF019_SCR. *INCLUDE z01mmf102_scr. *&---------------------------------------------------------------------* *& 包含 Z01MMF068_SCR *&---------------------------------------------------------------------*SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001. PARAMETERS:p_ekorg LIKE ekko-ekorg OBLIGATORY DEFAULT 'M011',p_ekgrp LIKE ekko-ekgrp OBLIGATORY DEFAULT 'A06'.SELECT-OPTIONS:s_lifnr FOR lfa1-lifnr,s_bedat FOR ekko-bedat,s_ebeln FOR ekko-ebeln.*PARAMETERS:p_type AS LISTBOX TYPE CHAR10 VISIBLE LENGTH 20 DEFAULT '国内采购订单', * P_FLAG TYPE CHAR5 NO-DISPLAY. SELECTION-SCREEN END OF BLOCK b1.SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002. *1. 国内采购订单: 采购组织M011,订单收货地点EKKO-ZZRLOC=Z01或Z05 *2. 联动采购订单TMC: 采购组织M011,订单联动标识EKKO-ZZISASSO=X *3. 联动采购订单TMK: 采购组织S061,订单联动标识EKKO-ZZISASSO=X *4. 联动采购订单TMK(English):采购组织S061,订单联动标识EKKO-ZZISASSO=X *5. 模具采购订单TMC:采购组织M011,订单类型EKKO-BSART=Z007 *6. 模具采购订单TMK:采购组织S061,订单类型EKKO-BSART=Z007 PARAMETERS:rb_01 RADIOBUTTON GROUP g1 DEFAULT 'X' USER-COMMAND rb,rb_02 RADIOBUTTON GROUP g1,rb_03 RADIOBUTTON GROUP g1,rb_04 RADIOBUTTON GROUP g1,rb_05 RADIOBUTTON GROUP g1,rb_06 RADIOBUTTON GROUP g1. SELECTION-SCREEN END OF BLOCK b2.*&---------------------------------------------------------------------* *& 子程序 *&---------------------------------------------------------------------* *INCLUDE z01mmf169_frm.INITIALIZATION.AT SELECTION-SCREEN.PERFORM frm_check_auth.AT SELECTION-SCREEN OUTPUT.PERFORM frm_init_ptype.*&---------------------------------------------------------------------* *& 程序主事件 *&---------------------------------------------------------------------* START-OF-SELECTION.PERFORM frm_get_data.PERFORM frm_alv_out.*&---------------------------------------------------------------------* *& Form FRM_INIT_PTYPE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM frm_init_ptype .REFRESH lt_list .CASE 'X'.WHEN rb_01 OR rb_02 OR rb_05.p_ekorg = 'M011'.WHEN rb_03 OR rb_04 OR rb_06.p_ekorg = 'S061'.WHEN OTHERS .ENDCASE.IF p_ekorg NE 'M011' AND p_ekorg NE 'S061'.MESSAGE s001(00) WITH '限定采购组织要为M011或S061!' DISPLAY LIKE 'E'.STOP.ENDIF.ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_GET_DATA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM frm_get_data . *& 订单打印类型 P_TYPEDATA:l_tabix TYPE sy-tabix.DATA:adrc TYPE adrc.DATA:lt_alv TYPE STANDARD TABLE OF ty_alv.DATA:lt_lfa1 TYPE STANDARD TABLE OF lfa1,ls_lfa1 TYPE lfa1.DATA:lt_makt TYPE STANDARD TABLE OF makt,ls_makt TYPE makt.DATA:lt_z01mmtrloc TYPE STANDARD TABLE OF z01mmtrloc,ls_z01mmtrloc TYPE z01mmtrloc.DATA:lt_z01mmtpotp TYPE STANDARD TABLE OF z01mmtpotp,ls_z01mmtpotp TYPE z01mmtpotp.DATA:lt_t024 TYPE STANDARD TABLE OF t024,ls_t024 TYPE t024.DATA:lt_t052u TYPE STANDARD TABLE OF t052u,ls_t052u TYPE t052u.DATA:lt_ftaxp LIKE ftaxp OCCURS 0 WITH HEADER LINE,l_aland LIKE rf82t-land1,l_datab LIKE rf82t-datab,l_mwskz LIKE rf82t-mwskz,l_txjcd LIKE rf82t-txjcd.SELECT a~lifnra~ekorga~ekgrpa~ebelna~waersa~zzrloca~zterma~zzpovra~bedata~zzpotpa~zzisassoa~bsarta~landsb~ebelpb~matnrb~mengeb~meinsb~netprb~peinhb~netwrb~plifz "按天的计划交货时间 b~mwskzINTO CORRESPONDING FIELDS OF TABLE gt_alvFROM ekko AS aJOIN ekpo AS bON a~ebeln EQ b~ebelnWHERE a~ekorg EQ p_ekorgAND a~ekgrp EQ p_ekgrpAND a~lifnr IN s_lifnrAND a~bedat IN s_bedatAND a~loekz EQ space * AND a~frgke EQ 'R'AND a~ebeln IN s_ebelnAND b~loekz EQ space.IF sy-subrc NE 0.MESSAGE s001(00) WITH '未查询到满足条件的记录,请重试!' DISPLAY LIKE 'E'.STOP.ENDIF.* RANGES:r_zzrloc FOR ekko-zzrloc. * CASE 'X'. * WHEN rb_01. * r_zzrloc(3) = 'IEQ'. * r_zzrloc-low = 'Z01'. * APPEND r_zzrloc. * CLEAR r_zzrloc. * r_zzrloc(3) = 'IEQ'. * r_zzrloc-low = 'Z05'. * APPEND r_zzrloc. * CLEAR r_zzrloc. * DELETE gt_alv WHERE zzrloc NOT IN r_zzrloc. * WHEN rb_02 OR rb_03 OR rb_04. * DELETE gt_alv WHERE zzisasso NE 'X'. * WHEN rb_05 OR rb_06. * DELETE gt_alv WHERE bsart NE 'Z007'."采购凭证类型 * * WHEN OTHERS. * ENDCASE.* lt_alv = gt_alv. * SORT lt_alv by zzpotp. * delete ADJACENT DUPLICATES FROM lt_alv COMPARING zzpotp.SELECT *INTO CORRESPONDING FIELDS OF TABLE lt_lfa1FROM lfa1FOR ALL ENTRIES IN gt_alvWHERE lifnr EQ gt_alv-lifnr.SORT lt_lfa1 BY lifnr.*& 物料描述SELECT *INTO CORRESPONDING FIELDS OF TABLE lt_maktFROM maktFOR ALL ENTRIES IN gt_alvWHERE matnr = gt_alv-matnrAND spras = sy-langu.SORT lt_makt BY matnr.*& 收货地点EKKO-ZZRLOC的描述SELECT *INTO CORRESPONDING FIELDS OF TABLE lt_z01mmtrlocFROM z01mmtrloc.SORT lt_z01mmtrloc BY zzrloc.*& PO发放类型SELECT *FROM z01mmtpotpINTO TABLE lt_z01mmtpotpFOR ALL ENTRIES IN gt_alvWHERE zzpotp = gt_alv-zzpotp .SORT lt_z01mmtpotp BY zzpotp.*& 取采购员描述SELECT *FROM t024INTO TABLE lt_t024FOR ALL ENTRIES IN gt_alvWHERE ekgrp = gt_alv-ekgrp.SORT lt_t024 BY ekgrp.*& 取付款条件描述SELECT *FROM t052uINTO TABLE lt_t052uFOR ALL ENTRIES IN gt_alvWHERE spras = 'ZH'AND zterm = gt_alv-zterm .LOOP AT gt_alv INTO wa_alv.l_tabix = sy-tabix.READ TABLE lt_lfa1 INTO ls_lfa1 WITH KEY lifnr = wa_alv-lifnr BINARY SEARCH.IF sy-subrc EQ 0.CONCATENATE ls_lfa1-name1 ls_lfa1-name2 INTO wa_alv-namel. *&供应商地址CLEAR:adrc.SELECT SINGLE *INTO adrcFROM adrcWHERE addrnumber EQ ls_lfa1-adrnr.IF sy-subrc EQ 0.CONCATENATE adrc-street adrc-str_suppl1 INTO wa_alv-address.ENDIF.ENDIF.READ TABLE lt_makt INTO ls_makt WITH KEY matnr = wa_alv-matnr BINARY SEARCH.IF sy-subrc EQ 0.wa_alv-maktx = ls_makt-maktx.ENDIF.*& 贸易方式READ TABLE lt_z01mmtrloc INTO ls_z01mmtrloc WITH KEY zzrloc = wa_alv-zzrloc BINARY SEARCH.IF sy-subrc EQ 0.wa_alv-zzrloc_t = ls_z01mmtrloc-zzrloct.ENDIF.*& 付款条件READ TABLE lt_t052u INTO ls_t052u WITH KEY zterm = wa_alv-zterm BINARY SEARCH.IF sy-subrc EQ 0.wa_alv-zterm_t = ls_t052u-zterm.ENDIF.*& PO订单发放类型READ TABLE lt_z01mmtpotp INTO ls_z01mmtpotp WITH KEY zzpotp = wa_alv-zzpotp BINARY SEARCH.IF sy-subrc EQ 0.wa_alv-zzpotp_t = ls_z01mmtpotp-zzpotpt.ENDIF.*& 采购员READ TABLE lt_t024 INTO ls_t024 WITH KEY ekgrp = wa_alv-ekgrp BINARY SEARCH.IF sy-subrc EQ 0.wa_alv-eknam = ls_t024-eknam.ENDIF.*& 含税->税率CLEAR:l_aland,l_datab ,l_mwskz,l_txjcd,lt_ftaxp,lt_ftaxp[].l_aland = wa_alv-lands."报告国家l_datab = wa_alv-bedat.l_mwskz = wa_alv-mwskz.l_txjcd = wa_alv-mwskz.CALL FUNCTION 'GET_TAX_PERCENTAGE'EXPORTINGaland = l_alanddatab = l_databmwskz = l_mwskztxjcd = l_txjcdTABLESt_ftaxp = lt_ftaxp.LOOP AT lt_ftaxp WHERE kschl = 'MWVS'. *& 计算出税率IF lt_ftaxp-kbetr IS NOT INITIAL.wa_alv-kbetr = lt_ftaxp-kbetr / 10. "/ 1000.ENDIF .ENDLOOP.*&单位SELECT SINGLE mseh3INTO wa_alv-mseh3FROM t006aWHERE msehi EQ wa_alv-meinsAND spras EQ sy-langu.*&单价 = 净价/价格单位,(6位小数) NETPR/PEINHIF wa_alv-peinh IS NOT INITIAL.wa_alv-netpr_d = wa_alv-netpr / wa_alv-peinh.ELSE.wa_alv-netpr_d = wa_alv-netpr.ENDIF.*&交货日期SELECT SINGLE eindtINTO wa_alv-eindtFROM eketWHERE ebeln EQ wa_alv-ebelnAND ebelp EQ wa_alv-ebelp.SHIFT wa_alv-ebeln LEFT DELETING LEADING '0'.SHIFT wa_alv-ebelp LEFT DELETING LEADING '0'.MODIFY gt_alv FROM wa_alv INDEX l_tabix.CLEAR:wa_alv.ENDLOOP.SORT gt_alv BY ebeln ebelp.g_len = lines( gt_alv ).IF g_len EQ 0.MESSAGE s001(00) WITH '未查询到满足条件的记录,请重试!' DISPLAY LIKE 'E'.STOP.ELSE.MESSAGE s001(00) WITH '找到数据条目:' g_len.ENDIF.ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_ALV_OUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM frm_alv_out .DATA: l_nn TYPE i.DEFINE add_fieldcat.CLEAR WA_FIELDCAT.WA_FIELDCAT-FIELDNAME = &1.WA_FIELDCAT-SELTEXT_L = &2.WA_FIELDCAT-KEY = &3.WA_FIELDCAT-COL_POS = L_NN + 1.WA_FIELDCAT-JUST = &4.WA_FIELDCAT-OUTPUTLEN = &5.WA_FIELDCAT-FIX_COLUMN = &6.WA_FIELDCAT-NO_ZERO = &7.WA_FIELDCAT-EDIT = &8.APPEND WA_FIELDCAT TO GT_FIELDCAT.END-OF-DEFINITION.CLEAR gt_fieldcat.REFRESH gt_fieldcat.add_fieldcat 'LIFNR ' '供应商' '' '' '' '' '' ''.add_fieldcat 'NAMEL ' '供应商名称' '' '' '' '' '' ''.add_fieldcat 'EKORG ' '采购组织' '' '' '' '' '' ''.add_fieldcat 'EKGRP ' '采购组' '' '' '' '' '' ''.add_fieldcat 'EBELN ' 'PO' '' '' '' '' '' ''.add_fieldcat 'EBELP ' 'PO行' '' '' '' '' '' ''.add_fieldcat 'MATNR ' '物料' '' '' '' '' '' ''.add_fieldcat 'MAKTX ' '物料长文本' '' '' '' '' '' ''.add_fieldcat 'MENGE ' '数量' '' '' '' '' '' ''.add_fieldcat 'MEINS ' '单位' '' '' '' '' '' ''.add_fieldcat 'EINDT ' '计划交货日期' '' '' '' '' '' ''.add_fieldcat 'NETPR_D' '单价' '' '' '' '' '' ''.add_fieldcat 'WAERS ' '币别' '' '' '' '' '' ''.gw_layout-colwidth_optimize = 'X'.gw_layout-zebra = 'X'.gw_layout-box_fieldname = 'SEL'.g_program = sy-repid. *& 调用函数显示ALV列表CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTINGi_callback_program = g_programi_default = 'X'i_save = 'U'is_layout = gw_layoutit_fieldcat = gt_fieldcati_callback_pf_status_set = 'FRM_SET_STATUS'i_callback_user_command = 'FRM_USER_COMMAND'TABLESt_outtab = gt_alvEXCEPTIONSprogram_error = 1OTHERS = 2.ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_CHECK_AUTH *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM frm_check_auth . *权限要求: 按采购组织、采购组检查权限ENDFORM. FORM frm_set_status USING extab TYPE slis_t_extab. **功能: 设置ALV菜单栏DATA:l_rec_excfunc LIKE LINE OF extab. "工作区: 不用显示的菜单项 **STEP 1. 设置菜单 **STEP 1.1 隐藏掉不需要的标准按钮CLEAR l_rec_excfunc.l_rec_excfunc-fcode = '&RNT'.APPEND l_rec_excfunc TO extab.CLEAR l_rec_excfunc.l_rec_excfunc-fcode = '&REFRESH'.APPEND l_rec_excfunc TO extab.CLEAR l_rec_excfunc.l_rec_excfunc-fcode = '&DATA_SAVE'.APPEND l_rec_excfunc TO extab.CLEAR l_rec_excfunc.l_rec_excfunc-fcode = '&SAL'.APPEND l_rec_excfunc TO extab.CLEAR l_rec_excfunc.l_rec_excfunc-fcode = '&ALL'.APPEND l_rec_excfunc TO extab.CLEAR l_rec_excfunc.l_rec_excfunc-fcode = '&UMC'.APPEND l_rec_excfunc TO extab.CLEAR l_rec_excfunc.l_rec_excfunc-fcode = '%SL'.APPEND l_rec_excfunc TO extab.CLEAR l_rec_excfunc.l_rec_excfunc-fcode = '&VEXCEL'.APPEND l_rec_excfunc TO extab.CLEAR l_rec_excfunc.l_rec_excfunc-fcode = '&AQW'.APPEND l_rec_excfunc TO extab.CLEAR l_rec_excfunc.l_rec_excfunc-fcode = '&ABC'.APPEND l_rec_excfunc TO extab.CLEAR l_rec_excfunc.l_rec_excfunc-fcode = '&GRAPH'.APPEND l_rec_excfunc TO extab.CLEAR l_rec_excfunc.l_rec_excfunc-fcode = '&INFO'.APPEND l_rec_excfunc TO extab.**STEP 2. 激活显示自定义菜单SET PF-STATUS 'ZSTATUS2' EXCLUDING extab. ENDFORM. "FRM_SET_PF_STATUSFORM frm_user_commandUSING r_ucomm LIKE sy-ucommrs_selfield TYPE slis_selfield. *********************************************************************** **功能: 响应用户的ALV上的操作 **输入:(屏幕操作命令) **返回: ** (根据不同命令有不同的处理程序) *********************************************************************** **BELOW**数据声明DATA:lv_subrc LIKE sy-subrc, "返回码:0表示成功,1表示失败lc_msgtx TYPE msgtx. "说明信息 **ABOVE**数据声明 **BELOW**初始化DATA: lr_grid TYPE REF TO cl_gui_alv_grid.CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'IMPORTINGe_grid = lr_grid.CALL METHOD lr_grid->check_changed_data.rs_selfield-refresh = 'X'. "要求执行完此子程序后自动刷新ALV清单**STEP 1. 操作CASE r_ucomm.WHEN '&ZSALL'. "选择全部条目PERFORM frm_ucomm_zsall "选择全部条目CHANGING gt_alv[]. "本次处理前后的ALV数据WHEN '&ZDSAL'. "取消全部选择PERFORM frm_ucomm_zdsal "取消全部选择CHANGING gt_alv[]. "本次处理前后的ALV数据 WHEN '&ZPRINT'. "打印PERFORM frm_ucomm_print "修改DBCHANGING gt_alv[]. "本次确认调整前后的ALV数据ENDCASE . *ABOVE**程序主体 ENDFORM. "FRM_USER_COMMAND *&---------------------------------------------------------------------* *& Form FRM_UCOMM_ZSALL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * <--P_GT_ALV[] text *----------------------------------------------------------------------* FORM frm_ucomm_zsall CHANGING p_gt_alv TYPE tyt_alv.LOOP AT gt_alv INTO wa_alv WHERE sel IS INITIAL .wa_alv-sel = 'X'.MODIFY gt_alv FROM wa_alv.CLEAR:wa_alv.ENDLOOP. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_UCOMM_ZDSAL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * <--P_GT_ALV[] text *----------------------------------------------------------------------* FORM frm_ucomm_zdsal CHANGING p_gt_alv TYPE tyt_alv.LOOP AT gt_alv INTO wa_alv WHERE sel IS NOT INITIAL .wa_alv-sel = ''.MODIFY gt_alv FROM wa_alv.CLEAR:wa_alv.ENDLOOP. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_UCOMM_ZPOST *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * <--P_LV_SUBRC text * <--P_LC_MSGTX text * <--P_GT_ALV[] text *----------------------------------------------------------------------* FORM frm_ucomm_print CHANGING p_gt_alv TYPE tyt_alv.DATA:l_msg TYPE string,lt_alv TYPE STANDARD TABLE OF ty_alv, * lt_alv_prt TYPE STANDARD TABLE OF z01mmf024_item, * ls_alv_prt TYPE z01mmf024_item,ls_alv TYPE ty_alv,func_mod_name TYPE rs38l_fnam,output_options TYPE ssfcompop,it_job_output_info TYPE ssfcrescl,control_parameters TYPE ssfctrlop,lc_sfname TYPE tdsfname, "VALUE 'Z01MMF102',lc_index TYPE sy-index, "计数器lc_number TYPE sy-index, "计数器lc_num TYPE sy-index,lc_tot TYPE int4,lc_int TYPE int4,lc_tot_num TYPE string,lc_je TYPE ekpo-netwr,lc_je_sum TYPE string.DATA:ls_otfdata TYPE ssfcrescl,lt_otf TYPE TABLE OF itcoo,l_bin_filesize TYPE i, "soli_tablt_lines TYPE TABLE OF tline,l_filename TYPE string,l_path TYPE string,l_pathfilename TYPE string.CASE 'X'.WHEN rb_01.lc_sfname = 'Z01MMF102_1'.WHEN rb_02.lc_sfname = 'Z01MMF102_2'.WHEN rb_03.lc_sfname = 'Z01MMF102_3'.WHEN rb_04.lc_sfname = 'Z01MMF102_4'.WHEN rb_05.lc_sfname = 'Z01MMF102_5'.WHEN rb_06.lc_sfname = 'Z01MMF102_6'.WHEN OTHERS.ENDCASE.* BREAK XIANGC.APPEND LINES OF p_gt_alv TO lt_alv.DELETE lt_alv WHERE sel IS INITIAL.IF lt_alv IS INITIAL.l_msg = '至少要选中一笔条目才可进行操作!'.MESSAGE i001(00) WITH l_msg.RETURN.ELSE. * 选中凭证的一行,则默认将凭证所有行选中PERFORM frm_change_select_item CHANGING p_gt_alv.*. 初始化打印控制参数CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'EXPORTINGformname = lc_sfnameIMPORTINGfm_name = func_mod_nameEXCEPTIONSno_form = 1no_function_module = 2OTHERS = 3.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.EXIT.ENDIF. * 1 by 1 ,循环打印SORT lt_alv BY ebeln.DELETE ADJACENT DUPLICATES FROM lt_alv COMPARING ebeln.lc_index = lines( lt_alv ).LOOP AT lt_alv INTO ls_alv.lc_number = lc_number + 1.output_options-tdimmed = 'X'.control_parameters-getotf = 'X'.IF lc_number < lc_index.control_parameters-no_close = 'X'.ELSE. *&打印关闭control_parameters-no_close = space.ENDIF.CLEAR:gt_gncg,lc_num.CLEAR:lc_tot_num,lc_tot,lc_je_sum,lc_je.LOOP AT p_gt_alv INTO wa_alv WHERE sel = 'X' AND ebeln = ls_alv-ebeln.MOVE-CORRESPONDING wa_alv TO wa_gncg.lc_num = lc_num + 1.wa_gncg-index = lc_num.lc_tot = lc_tot + wa_gncg-menge.lc_je = lc_je + wa_gncg-netwr.APPEND wa_gncg TO gt_gncg.CLEAR: wa_alv,wa_gncg.ENDLOOP.lc_tot_num = lc_tot.lc_je_sum = lc_je.CALL FUNCTION func_mod_nameEXPORTINGcontrol_parameters = control_parametersoutput_options = output_optionsuser_settings = spacein_tot_num = lc_tot_numln_je_sum = lc_je_sum * TABLESin_item = gt_gncgimporting * DOCUMENT_OUTPUT_INFO =job_output_info = ls_otfdata * JOB_OUTPUT_OPTIONS =EXCEPTIONSformatting_error = 1internal_error = 2send_error = 3user_canceled = 4OTHERS = 5.IF sy-subrc <> 0.DATA errortab TYPE tsferror.CALL FUNCTION 'SSF_READ_ERRORS'IMPORTINGerrortab = errortab.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ELSE. *&调用打印control_parameters-no_open = 'X'.*&+++转换成PDFlt_otf[] = ls_otfdata-otfdata[].CALL FUNCTION 'CONVERT_OTF'EXPORTINGformat = 'PDF'max_linewidth = 132 * ARCHIVE_INDEX = ' ' * COPYNUMBER = 0 * ASCII_BIDI_VIS2LOG = ' ' * PDF_DELETE_OTFTAB = ' ' * PDF_USERNAME = ' ' "don't exist * PDF_PREVIEW = ' ' "don't exist * USE_CASCADING = ' ' "don't existIMPORTINGbin_filesize = l_bin_filesize * BIN_FILE =TABLESotf = lt_otflines = lt_lines "t_pdf_tabEXCEPTIONSerr_max_linewidth = 1err_format = 2err_conv_not_possible = 3err_bad_otf = 4OTHERS = 5.*&PDF 预览CALL FUNCTION 'ZSTXBC_SSFCOMP_PDF_PREVIEW'EXPORTINGi_otf = lt_otf[]EXCEPTIONSconvert_otf_to_pdf_error = 1cntl_error = 2OTHERS = 3.IF sy-subrc EQ 0. *&调用保存 对话框CALL METHOD cl_gui_frontend_services=>file_save_dialogEXPORTING * window_title = * default_extension = * default_file_name = * with_encoding =file_filter = '*.PDF' * initial_directory = * prompt_on_overwrite = 'X'CHANGINGfilename = l_filenamepath = l_pathfullpath = l_pathfilename * user_action = * file_encoding =EXCEPTIONScntl_error = 1error_no_gui = 2not_supported_by_gui = 3OTHERS = 4.IF sy-subrc <> 0.ENDIF.l_bin_filesize = l_bin_filesize * 2.CALL FUNCTION 'GUI_DOWNLOAD'EXPORTINGbin_filesize = l_bin_filesizefilename = l_pathfilenamefiletype = 'BIN' * APPEND = ' 'write_field_separator = ' 'TABLESdata_tab = lt_lines * fieldnames = gt_fieldnamesEXCEPTIONSfile_write_error = 1no_batch = 2gui_refuse_filetransfer = 3invalid_type = 4no_authority = 5unknown_error = 6header_not_allowed = 7separator_not_allowed = 8filesize_not_allowed = 9header_too_long = 10dp_error_create = 11dp_error_send = 12dp_error_write = 13unknown_dp_error = 14access_denied = 15dp_out_of_memory = 16disk_full = 17dp_timeout = 18file_not_found = 19dataprovider_exception = 20control_flush_error = 21OTHERS = 22.ENDIF.ENDIF.ENDLOOP.ENDIF.ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_CHANGE_SELECT_ITEM *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * <--P_P_GT_ALV text *----------------------------------------------------------------------* FORM frm_change_select_item CHANGING gt_alv TYPE tyt_alv.DATA :lt_alv TYPE STANDARD TABLE OF ty_alv,ls_alv TYPE ty_alv.APPEND LINES OF gt_alv TO lt_alv.DELETE lt_alv WHERE sel IS INITIAL.SORT lt_alv BY ebeln.DELETE ADJACENT DUPLICATES FROM lt_alv COMPARING ebeln.LOOP AT lt_alv INTO ls_alv.LOOP AT gt_alv INTO wa_alv WHERE ebeln = ls_alv-ebeln AND sel IS INITIAL.wa_alv-sel = 'X'.MODIFY gt_alv FROM wa_alv.CLEAR:wa_alv.ENDLOOP.CLEAR:ls_alv.ENDLOOP.ENDFORM.
转载于:https://www.cnblogs.com/rainysblog/p/8214337.html
采购订单打印并预览PDF相关推荐
- window.print() 前端页面打印与预览PDF
window.print()打印是浏览器自带的打印,实现原理是将html转换为pdf可以在线预览打印或者导出pdf,在任何网页上可通过Ctil+p快捷键调出浏览器打印程序,它可将整个网页打印出来,在我 ...
- SpringBoot(十五)_springboot实现预览pdf
最近,项目上要做个打印的东西,还要预览.我想就直接生成pdf预览,然后用户选择打印 于是,昨天找了找资料.一般用itext 进行转pdf.于是我就用springboot试了试,代码比较简单,现在只是简 ...
- WEB在线预览PDF
这是我在博客园发表的第一篇文章.以后会陆续把在线预览其他格式文档的解决方案发表出来. 解决思路:把pdf转换成html显示. 在线预览pdf我暂时了解3种解决方案,欢迎大家补充. 方案一: 利用pdf ...
- IOS 预览pdf,word文档的集中方式
在iPhone中可以很方便的预览文档文件,如:pdf.word等等,这篇文章将以PDF为例.介绍三种预览PDF的方式,又分别从本地pdf文档和网络上的pdf文档进行对比. 预览本地PDF文档: 1.使 ...
- Vue-pdf实现在线预览PDF文件
前言 在大多数项目中都会遇到在线预览PDF文件,项目使用的是element ui,使用vue-pdf实现. 安装依赖 npm install --save vue-pdf 相关参数 参数介绍: url ...
- 渲染预览PDF文档,轻松搞定,这方案真香!
渲染预览PDF文档,轻松搞定,这方案真香! 1.前言 2.列举一些文档预览解决方案: 3.列举一些文档解析生成解决方案: 4.案列赏析 5.准备工作: 6.模板讲解: 7.代码实现: 8.效果图: 9 ...
- spring boot2.X word在线预览 pdf.js
最近公司项目需求需要在线预览word文档,并且不能在在线下载和编辑.在此记录我是如何做的. 针对word的在线预览网上大多给的解决方案就是先把word文件转成pdf,然后通过pdf.js在线预览pdf ...
- vue-pdf实现预览pdf文件以及含有电子印章的pdf文件
话不多说,上代码~ 1.页面: <template><el-dialog:title="title":visible.sync="openViewPdf ...
- VUE预览PDF文件并利用pdf.js获取鼠标选中的文字和搜索,在iframe中获取选中文字,监听鼠标事件,右键菜单
一.VUE预览PDF文件并利用pdf.js获取鼠标选中的文字和搜索 需求实现:vue实现预览pdf文件,获取到鼠标选中的文字数据.调用pdf.js自带的搜索方法实现搜索功能(后期可以调用该接口满足其他 ...
最新文章
- 美国国防部黑客大比武 “白帽黑客”受邀请
- hp designiet 500_2020年HP学院壁纸
- Android Studio怎么设置悬浮提示文字框显示函数
- 视差滚动(Parallax Scrolling)插件补充
- 神经网络与推荐系统初步简介
- VS编译器安装Eigen
- Jsoup设置元素的文本内容
- httpclient base64 文件上传_代码级别的上传下载神器
- Linux部署安装JDK
- TCP / IP攻击:ARP缓存中毒的基本原理、TCP序列号预测和TCP重置攻击
- Win-MASM64汇编语言-NEG指令
- Linux Exploit系列之七 绕过 ASLR -- 第二部分
- 【转】XP远程桌面连接2008提示:远程计算机需要网络级别身份验证,而您的计算机不支持该验证 ....
- 导入项目jsp文件报错,但打开相应的文件并没有错误解决办法
- ITOP4412开发板学习前的准备2 -- 安装ADB驱动
- cdr软件百度百科_cdr软件是什么?cdr是什么软件?
- 【 移动硬盘安装Ubuntu18.04】
- Meltdown Spectre原理简要梳理
- linux unlink函数作用,unlink函数的作用
- 百亿级企业级 RPC 框架开源了!