ZFIPEP_LIB07

Embed Size (px)

DESCRIPTION

archivo

Citation preview

*--------------------------------------------------------------------** Autor : Crystalis Consulting Peru ** Funcional : Jaime Melgar Zuiga ** Fecha : 10.05.2011 ** Objetivo : Reporte legal de movimientos de materiales en almacn,** en la forma y formato definidos por el organismo ** gubernamental regulador (SUNAT) ** Modificacion : 29082014 Modificacion sociedad 4000 ** Modificado : 11.12.2014 Lizarzaburu Li Harold Vladimir* Etiqueta : @11122014ADD* Se agreg campo Cl. Mov. y Doc Referencia al archivo Excel* Modificado : 22.12.2014 - Lizarzaburu Li Harold Vladimir* Etiqueta @HVLL22122014LI* Se agrego el N de Serie*--------------------------------------------------------------------*REPORT ZFIPEP_LIB07 NO STANDARD PAGE HEADING LINE-SIZE 217 LINE-COUNT 57(3).SET MARGIN 6 6.*&--------------------------------------------------------------------&**& I N F O T I P O S &**&--------------------------------------------------------------------&** INFOTYPES: .*&--------------------------------------------------------------------&**& T A B L A S T R A N S P A R E N T E S &**&--------------------------------------------------------------------&*TABLES: bkpf, mbew, mseg, t001k,* sscrfields, zfipet_lib06, zfipet_lib09.*&--------------------------------------------------------------------&**& T Y P E - P O O L S &**&--------------------------------------------------------------------&*TYPE-POOLS: slis.*&--------------------------------------------------------------------&**& T I P O S G L O B A L E S &**&--------------------------------------------------------------------&*TYPES: BEGIN OF gty_mkpf, mblnr TYPE mblnr, mjahr TYPE mjahr, budat TYPE budat.TYPES: END OF gty_mkpf.TYPES: BEGIN OF gty_mbew, matnr TYPE matnr, bwkey TYPE werks_d, bklas TYPE bklas.TYPES: END OF gty_mbew.TYPES: BEGIN OF gty_mseg, mblnr TYPE mblnr, mjahr TYPE mjahr, zeile TYPE mblpo, matnr TYPE matnr, werks TYPE werks_d, gjahr TYPE gjahr, bukrs TYPE bukrs, belnr TYPE belnr_d, shkzg TYPE shkzg, dmbtr TYPE dmbtr, bwart TYPE bwart, menge TYPE menge_d, umwrk TYPE umwrk, bustw TYPE bustw, sakto TYPE sakto, charg TYPE umcha, umcha TYPE umcha, awkey TYPE awkey. " Este campo siempre debe estar al final de la tabla* budat type budat.TYPES: END OF gty_mseg."add +@ERQ251013TYPES: BEGIN OF gty_rkseg, belnr TYPE rbkp-belnr, gjahr TYPE rbkp-gjahr, xblnr TYPE rbkp-xblnr, lfbnr TYPE rseg-lfbnr, lfgja TYPE rseg-lfgja, lfpos TYPE rseg-lfpos, matbf TYPE rseg-matbf, END OF gty_rkseg, BEGIN OF gty_vbfa, vbelv TYPE vbfa-vbelv, posnv TYPE vbfa-posnv, vbeln TYPE vbfa-vbeln, posnn TYPE vbfa-posnn, matnr TYPE vbfa-matnr, vbtyp_v TYPE vbfa-vbtyp_v, mjahr TYPE vbfa-mjahr, xblnr TYPE vbrk-xblnr, END OF gty_vbfa, BEGIN OF gty_mseg_aux, mblnr TYPE vbfa-vbeln, mjahr TYPE mjahr, zeile TYPE vbfa-posnn, matnr TYPE matnr, END OF gty_mseg_aux, BEGIN OF gty_mseg_aux1, mblnr TYPE mblnr, mjahr TYPE mjahr, zeile TYPE mblpo, matnr TYPE matnr, werks TYPE werks_d, gjahr TYPE gjahr, bukrs TYPE bukrs, belnr TYPE belnr_d, shkzg TYPE shkzg, dmbtr TYPE dmbtr, bwart TYPE bwart, menge TYPE menge_d, umwrk TYPE umwrk, bustw TYPE bustw, sakto TYPE sakto, charg TYPE umcha, umcha TYPE umcha, xblnr TYPE xblnr, awkey TYPE awkey, " Este campo siempre debe estar al final de la tabla END OF gty_mseg_aux1."add +@ERQ251013TYPES: BEGIN OF gty_bsim, matnr TYPE matnr, bwkey TYPE bwkey, bwtar TYPE bwtar_d, belnr TYPE belnr_d, gjahr TYPE gjahr, buzei TYPE buzei, dmbtr TYPE dmbtr, shkzg TYPE shkzg, budat TYPE budat.TYPES: END OF gty_bsim.TYPES: BEGIN OF gty_karsalaux, dmbtrd TYPE dmbtr, menged TYPE menge_d. INCLUDE STRUCTURE zfipet_lib06.TYPES: END OF gty_karsalaux.TYPES: BEGIN OF gty_detaux. INCLUDE STRUCTURE zfipee_lib08.TYPES: cpudt TYPE cpudt, cputm TYPE cputm.TYPES: END OF gty_detaux.TYPES: BEGIN OF gty_mara, matnr TYPE matnr, meins TYPE meins.* maktx type maktx.TYPES: END OF gty_mara.TYPES: BEGIN OF gty_makt, matnr TYPE matnr, maktx TYPE maktx.TYPES: END OF gty_makt.TYPES: BEGIN OF gty_bkpf, bukrs TYPE bukrs, belnr TYPE belnr_d, gjahr TYPE gjahr, awkey TYPE awkey, budat TYPE budat, xblnr TYPE xblnr, cpudt TYPE cpudt, cputm TYPE cputm.TYPES: END OF gty_bkpf.TYPES: BEGIN OF gty_gest, zundmed TYPE zfipee_lib014-zundmed, maktx TYPE zfipee_lib014-maktx, tipo_mat TYPE zfipee_lib014-tipo_mat, met_val TYPE zfipee_lib014-met_val, estab TYPE zfipee_lib014-estab. INCLUDE STRUCTURE zfipee_lib08.TYPES: END OF gty_gest.TYPES: BEGIN OF gty_excel, titulo(150) TYPE c, matnr(30) TYPE c, tipo_mat(16) TYPE c, maktx(30) TYPE c, zundmed(30) TYPE c, met_val(30) TYPE c, estab(30) TYPE c, fecha(10) TYPE c,* ztipo_comp(15) type c, serie(16) TYPE c, mblnr TYPE mblnr, mblnrori(10) TYPE c, ztipo_ope(10) TYPE c, cant_in(16) TYPE c, cosu_in(16) TYPE c, cost_in(16) TYPE c, cant_out(16) TYPE c, cosu_out(16) TYPE c, cost_out(16) TYPE c, cant_fin(16) TYPE c, cosu_fin(16) TYPE c, cost_fin(16) TYPE c, BWART(10) TYPE c, " 11.12.2014 - @11122014ADD docref(16) TYPE c. " 11.12.2014 - @11122014ADDTYPES: END OF gty_excel.TYPES: BEGIN OF gty_t001k, bwkey TYPE werks_d, bukrs TYPE bukrs, name1 TYPE name1.TYPES: END OF gty_t001k.TYPES: BEGIN OF gty_t001k_ssfo, perio(10) TYPE c, ruc TYPE paval, razon TYPE paval, estab TYPE char40, dmini TYPE dmbtr, dment TYPE dmbtr, dmsal TYPE dmbtr, dmfin TYPE dmbtr, dmini_soc TYPE dmbtr, dment_soc TYPE dmbtr, dmsal_soc TYPE dmbtr, dmfin_soc TYPE dmbtr, fecha TYPE budat, meini TYPE menge_d, meent TYPE menge_d, mesal TYPE menge_d, mefin TYPE menge_d, meini_soc TYPE menge_d, meent_soc TYPE menge_d, mesal_soc TYPE menge_d, mefin_soc TYPE menge_d.TYPES: END OF gty_t001k_ssfo.TYPES: BEGIN OF gty_cabec_ssfo, werks TYPE werks_d, matnr TYPE matnr, maktx TYPE maktx, tpmat TYPE char40, unmed TYPE char40, meval TYPE char40, meins TYPE meins, meent TYPE menge_d, dment TYPE dmbtr, mesal TYPE menge_d, dmsal TYPE dmbtr, mefin TYPE menge_d, dmfin TYPE dmbtr.TYPES: END OF gty_cabec_ssfo.TYPES: BEGIN OF gty_detalle_ssfo, werks TYPE werks_d, matnr TYPE matnr, budat TYPE budat, blart TYPE blart, xblnr TYPE xblnr, mblnr TYPE mblnr, belnr TYPE belnr_d, bwart TYPE bwart, meent TYPE menge_d, cuent TYPE dmbtr, dment TYPE dmbtr, mesal TYPE menge_d, cusal TYPE dmbtr, dmsal TYPE dmbtr, mefin TYPE menge_d, cufin TYPE dmbtr, dmfin TYPE dmbtr.TYPES: END OF gty_detalle_ssfo.TYPES: BEGIN OF gty_kardex_ppp, kalnr TYPE ckmlhd-kalnr, matnr TYPE matnr, bwkey TYPE ckmlhd-bwkey, bdatj TYPE ckmlcr-bdatj, poper TYPE ckmlcr-poper, lbkum TYPE ckmlpp-lbkum, pvprs TYPE ckmlcr-pvprs, salkv TYPE ckmlcr-salkv, umkumo TYPE ckmlpp-umkumo, abkumo TYPE ckmlpp-abkumo, zukumo TYPE ckmlpp-zukumo, END OF gty_kardex_ppp.*&--------------------------------------------------------------------&**& T I P O S T A B L A S G L O B A L E S &**&--------------------------------------------------------------------&**TYPES: gtyd_xxxxx TYPE STANDARD TABLE OF gty_xxxx. "Standard*TYPES: gtys_xxxxx TYPE SORTED TABLE OF gty_xxxx. "Sorted*TYPES: gtyh_xxxxx TYPE HASHED TABLE OF gty_xxxx. "Hashed*&--------------------------------------------------------------------&**& D E C L A R A C I O N Y D E F I N I C I O N C L A S E S &**&--------------------------------------------------------------------&** CLASS gcl_xxxx DEFINITION.* PUBLIC SECTION.** METHODS:** PRIVATE SECTION.** ENDCLASS. "gcl_xxxxx DEFINITION*&--------------------------------------------------------------------&**& C O N T R O L E S D Y N P R O &**&--------------------------------------------------------------------&**CONTROLS TC_XXXXX TYPE TABLEVIEW USING SCREEN 100.*CONTROLS SC_XXXXX TYPE TABSTRIP.*&--------------------------------------------------------------------&**& C O N S T A N T E S &**&--------------------------------------------------------------------&** CONSTANTS: gc_xx TYPE X VALUE 'XXXX',*&--------------------------------------------------------------------&**& T A B L A S I N T E R N A S G L O B A L E S &**&--------------------------------------------------------------------&*DATA: gtd_mkpf TYPE STANDARD TABLE OF gty_mkpf, gtd_mkpf_aux TYPE STANDARD TABLE OF gty_mkpf, gtd_mseg TYPE STANDARD TABLE OF gty_mseg, gtd_mseg1 TYPE STANDARD TABLE OF gty_mseg, gtd_mseg1_aux TYPE SORTED TABLE OF gty_mseg WITH NON-UNIQUE KEY awkey, gtd_mseg1_aux1 TYPE STANDARD TABLE OF gty_mseg_aux1, gtd_mseg2 TYPE STANDARD TABLE OF gty_mseg, gtd_mseg3 TYPE STANDARD TABLE OF gty_mseg, gtd_msegaux TYPE STANDARD TABLE OF gty_mseg, gtd_bsim TYPE STANDARD TABLE OF gty_bsim, gtd_bsim_aux TYPE SORTED TABLE OF gty_bsim WITH NON-UNIQUE KEY bwkey matnr, gtd_karsalaux TYPE STANDARD TABLE OF gty_karsalaux, gtd_mbew TYPE STANDARD TABLE OF gty_mbew, gtd_mbew_aux TYPE STANDARD TABLE OF gty_mbew, gtd_mara TYPE STANDARD TABLE OF gty_mara, gtd_bkpf1 TYPE STANDARD TABLE OF gty_bkpf, gtd_bkpf2 TYPE STANDARD TABLE OF gty_bkpf, gtd_bkpf2_aux TYPE SORTED TABLE OF gty_bkpf WITH NON-UNIQUE KEY bukrs belnr gjahr, gtd_makt TYPE STANDARD TABLE OF gty_makt, gtd_gest TYPE STANDARD TABLE OF gty_gest, gtd_excel TYPE STANDARD TABLE OF gty_excel, gtd_t001k TYPE STANDARD TABLE OF gty_t001k, gtd_detalle TYPE STANDARD TABLE OF gty_detaux, gtd_det_aux TYPE STANDARD TABLE OF gty_detaux, gtd_cabec_ssfo TYPE STANDARD TABLE OF gty_cabec_ssfo, gtd_detalle_ssfo TYPE STANDARD TABLE OF gty_detalle_ssfo.DATA: gtd_karsal LIKE STANDARD TABLE OF zfipet_lib06, gtd_tipmat LIKE STANDARD TABLE OF zfipet_lib08, gtd_um LIKE STANDARD TABLE OF zfipet_lib07, gtd_tipope LIKE STANDARD TABLE OF zfipet_lib09, gtd_cabec LIKE STANDARD TABLE OF zfipee_lib014, gtd_cabaux LIKE STANDARD TABLE OF zfipee_lib014, gtd_ajuste LIKE STANDARD TABLE OF zfipet_lib10, gtd_ajustecab LIKE STANDARD TABLE OF zfipet_lib10, gt_rkseg_mseg TYPE STANDARD TABLE OF gty_rkseg, "add +@ERQ251013 gt_rkseg TYPE SORTED TABLE OF gty_rkseg WITH NON-UNIQUE KEY lfbnr lfgja lfpos matbf, "add +@ERQ251013 gt_rkseg_aux1 TYPE STANDARD TABLE OF gty_rkseg, "add +@ERQ251013 gt_rkseg_aux TYPE STANDARD TABLE OF gty_rkseg, "add +@ERQ251013 gt_mseg_aux TYPE STANDARD TABLE OF gty_mseg_aux, "add +@ERQ251013 gt_flujo TYPE tdt_docflow, "add +@ERQ251013 gt_facturas1 TYPE SORTED TABLE OF gty_vbfa WITH NON-UNIQUE KEY vbeln, "add +@ERQ251013 gt_facturas TYPE SORTED TABLE OF gty_vbfa WITH NON-UNIQUE KEY vbelv posnv, "add +@ERQ251013 gt_facturas_aux TYPE STANDARD TABLE OF gty_vbfa, "add +@ERQ251013 gt_vbfa TYPE STANDARD TABLE OF gty_vbfa, "add +@ERQ251013 gt_vbfa_aux TYPE STANDARD TABLE OF gty_vbfa. "add +@ERQ251013DATA: gts_karsal LIKE SORTED TABLE OF zfipet_lib06 WITH NON-UNIQUE KEY werks matnr.DATA: gtd_list_top_of_page TYPE slis_t_listheader, gtd_fieldcat TYPE slis_t_fieldcat_alv, gtd_events TYPE slis_t_event, gtd_layout TYPE slis_layout_alv, gtd_grid_settings TYPE lvc_s_glay, gtd_event_exit TYPE slis_t_event_exit, gtd_variante TYPE disvariant.DATA: gtd_kardex_ppp TYPE SORTED TABLE OF gty_kardex_ppp WITH NON-UNIQUE KEY matnr bwkey.*&--------------------------------------------------------------------&**& F I E L D - S Y M B O L S &**&--------------------------------------------------------------------&*FIELD-SYMBOLS: TYPE gty_mkpf, TYPE gty_mseg, TYPE gty_mseg, TYPE gty_bsim, TYPE gty_mbew, TYPE gty_bkpf, LIKE zfipet_lib06, TYPE gty_t001k, TYPE gty_rkseg, LIKE gtd_detalle, LIKE LINE OF gtd_mseg1, TYPE gty_vbfa.*&--------------------------------------------------------------------&**& R A N G O S G L O B A L E S &**&--------------------------------------------------------------------&*DATA: gr_budat TYPE RANGE OF budat.*&--------------------------------------------------------------------&**& V A R I A B L E S G L O B A L E S &**&--------------------------------------------------------------------&*DATA: gs_karsalaux TYPE gty_karsalaux, gs_karsal LIKE zfipet_lib06, gs_fcat LIKE LINE OF gtd_fieldcat, gs_tipmat LIKE zfipet_lib08, gs_mara TYPE gty_mara, gs_um LIKE zfipet_lib07, gs_tipope LIKE zfipet_lib09, gs_makt TYPE gty_makt, gs_cabec LIKE zfipee_lib014, gs_detalle TYPE gty_detaux, gs_detaux TYPE gty_detaux, gs_gest TYPE gty_gest, gs_budat LIKE LINE OF gr_budat, gs_excel LIKE LINE OF gtd_excel, gs_t001k TYPE gty_t001k, gs_ajuste LIKE LINE OF gtd_ajuste, gs_ajuste1 LIKE LINE OF gtd_ajuste, gs_t001k_ssfo TYPE gty_t001k_ssfo, gs_cabec_ssfo TYPE gty_cabec_ssfo, gs_detalle_ssfo TYPE gty_detalle_ssfo, gs_rkseg TYPE gty_rkseg, "add +@ERQ251013 gs_mseg TYPE gty_mseg, "add +@ERQ251013 gs_mseg_aux TYPE gty_mseg_aux, "add +@ERQ251013 gs_mseg_aux1 TYPE gty_mseg_aux1, "add +@ERQ251013 gs_facturas TYPE gty_vbfa, "add +@ERQ251013 gs_vbfa TYPE gty_vbfa, "add +@ERQ251013 gs_vbfa_aux TYPE gty_vbfa, "add +@ERQ251013 gs_flujo LIKE LINE OF gt_flujo. "add +@ERQ251013DATA: gv_fi TYPE budat, gv_ff TYPE budat, gv_bwkey TYPE bwkey, gv_bukrs TYPE bukrs, gv_name TYPE name1, gv_ind TYPE i, N_POS TYPE SY-INDEX, gv_indaux TYPE i, gv_cant TYPE i, gv_matnr TYPE matnr, gv_pagno(7) TYPE c, gv_txtun(40) TYPE c, gv_pagno_ssfo TYPE tdsfjpage, gv_vbelv TYPE char10.. "add +@ERQ251013DATA: gv_repid LIKE sy-repid, gv_ruc LIKE t001z-paval, gv_razon TYPE butxt.*/ ADD SERIE - @HVLL22122014LIDATA: W_XBLPF LIKE BKPF-XBLNR, W_REFE LIKE VBRK-XBLNR, W_VBELN LIKE VBFA-VBELN, w_pos LIKE sy-tabix, W_XBLNR LIKE MKPF-XBLNR.DATA: gv_cantin_mat TYPE menge_d, "Suma Cantidad Entrada x Material gv_costin_mat TYPE dmbtr, "Suma Costo Entrada x Material gv_cantout_mat TYPE menge_d, "Suma Cantidad Salida x Material gv_costout_mat TYPE dmbtr, "Suma Costo Salida x Material gv_cantfin_mat TYPE menge_d, "Suma Cantidad Final x Material gv_costfin_mat TYPE dmbtr, "Suma Saldo Final x Material gv_costsalini_cen TYPE dmbtr, "Suma Saldo Inicial x Centro gv_costin_cen TYPE dmbtr, "Suma Costo Entrada x Centro gv_costout_cen TYPE dmbtr, "Suma Costo Salida x Centro gv_costfin_cen TYPE dmbtr, "Suma Saldo Final x Centro gv_cantsalini_cen TYPE dmbtr, "Suma Saldo Inicial Cantidad x Centro gv_cantin_cen TYPE dmbtr, "Suma Cantidad Entrada x Centro gv_cantout_cen TYPE dmbtr, "Suma Cantidad Salida x Centro gv_cantfin_cen TYPE dmbtr, "Suma Saldo Final Cantidad x Centro gv_acum_cantfin_mat TYPE menge_d, "Acumulador Cantidad Final x Material gv_acum_cosufin_mat TYPE dmbtr, "Costo Unitario Final x Material "Acumulado" gv_acum_costfin_mat TYPE dmbtr, "Acumulador Costo Final x Material gv_costsalini_soc TYPE dmbtr, "Suma Saldo Inicial x Sociedad gv_costin_soc TYPE dmbtr, "Suma Costo Entrada x Sociedad gv_costout_soc TYPE dmbtr, "Suma Costo Salida x Sociedad gv_costfin_soc TYPE dmbtr, "Suma Saldo Final x Sociedad gv_cantsalini_soc TYPE dmbtr, "Suma Saldo Inicial Cantidad x Sociedad gv_cantin_soc TYPE dmbtr, "Suma Cantidad Entrada x Sociedad gv_cantout_soc TYPE dmbtr, "Suma Cantidad Salida x Sociedad gv_cantfin_soc TYPE dmbtr, "Suma Saldo Final Cantidad x Sociedad gv_monto(16) TYPE c, gv_umwrk TYPE MSEG-umwrk, gv_check.DATA: gv_formname TYPE tdsfname, gv_fm_name TYPE rs38l_fnam.*&--------------------------------------------------------------------&**& O B J E T O S G L O B A L E S &**&--------------------------------------------------------------------&**DATA: go_XXX TYPE REF TO ....*&--------------------------------------------------------------------&**& M A C R O S &**&--------------------------------------------------------------------&**DEFINE macro1.*END-OF-DEFINITION.*---------------------------------------------------------------------* SELECTION-SCREEN*---------------------------------------------------------------------SELECTION-SCREEN: BEGIN OF BLOCK 1 WITH FRAME TITLE text-000.PARAMETERS: p_bukrs LIKE mseg-bukrs OBLIGATORY.SELECT-OPTIONS: p_werks FOR mseg-werks OBLIGATORY.PARAMETERS: p_gjahr LIKE mbew-lfgja OBLIGATORY, p_monat LIKE mbew-lfmon OBLIGATORY.SELECT-OPTIONS: p_matnr FOR mbew-matnr, p_bklas FOR mbew-bklas.PARAMETERS: p_fecha LIKE mkpf-bldat DEFAULT sy-datum.SELECTION-SCREEN: END OF BLOCK 1.SELECTION-SCREEN: BEGIN OF BLOCK 2 WITH FRAME TITLE text-001.SELECT-OPTIONS: p_blart FOR bkpf-blart OBLIGATORY DEFAULT 'W1' TO 'WZ'.SELECTION-SCREEN: END OF BLOCK 2.SELECTION-SCREEN: BEGIN OF BLOCK 3 WITH FRAME TITLE text-002.PARAMETERS: p_salin RADIOBUTTON GROUP 1 USER-COMMAND uc1, p_karva RADIOBUTTON GROUP 1 DEFAULT 'X', "p_karmo p_karppp RADIOBUTTON GROUP 1 , p_karun RADIOBUTTON GROUP 1. "p_valor as checkbox default 'X' modif id kdx.SELECTION-SCREEN: END OF BLOCK 3.SELECTION-SCREEN: BEGIN OF BLOCK 6 WITH FRAME TITLE text-005.SELECTION-SCREEN: BEGIN OF LINE.PARAMETERS: p_bsim RADIOBUTTON GROUP 3 MODIF ID sal DEFAULT 'X'.SELECTION-SCREEN COMMENT 3(30) text-031 MODIF ID sal.SELECTION-SCREEN: END OF LINE.SELECTION-SCREEN: BEGIN OF LINE.PARAMETERS: p_mseg RADIOBUTTON GROUP 3 MODIF ID sal.SELECTION-SCREEN COMMENT 3(30) text-032 MODIF ID sal.SELECTION-SCREEN: END OF LINE.SELECTION-SCREEN: END OF BLOCK 6.SELECTION-SCREEN: BEGIN OF BLOCK 4 WITH FRAME TITLE text-003.SELECTION-SCREEN: BEGIN OF LINE.PARAMETERS: p_repor RADIOBUTTON GROUP 2 MODIF ID kdx. "ReporteSELECTION-SCREEN COMMENT 3(20) text-025 MODIF ID kdx.SELECTION-SCREEN: END OF LINE.SELECTION-SCREEN: BEGIN OF LINE.PARAMETERS: p_gesti RADIOBUTTON GROUP 2 MODIF ID kdx. "Gestion ALVSELECTION-SCREEN COMMENT 3(20) text-026 MODIF ID kdx.SELECTION-SCREEN: END OF LINE.* parameters: p_repor radiobutton group 2 default 'X' modif id kdx, "Reporte* p_gesti radiobutton group 2 modif id kdx. "Gestion ALVSELECTION-SCREEN: BEGIN OF LINE.PARAMETERS: p_impre RADIOBUTTON GROUP 2 MODIF ID kdx. "Impresora SmartformSELECTION-SCREEN: COMMENT 3(20) text-020 MODIF ID kdx.SELECTION-SCREEN: COMMENT 30(17) text-021 MODIF ID kdx.PARAMETERS: p_print LIKE ssfpp-tddest MODIF ID kdx DEFAULT 'LOCL'.SELECTION-SCREEN: END OF LINE.SELECTION-SCREEN: BEGIN OF LINE.PARAMETERS: p_excel RADIOBUTTON GROUP 2 MODIF ID kdx. "ExcelSELECTION-SCREEN COMMENT 3(20) text-022 MODIF ID kdx.SELECTION-SCREEN COMMENT 30(17) text-023 MODIF ID kdx.PARAMETERS: p_file LIKE rlgrap-filename MODIF ID kdx OBLIGATORY DEFAULT 'C:\'.SELECTION-SCREEN: END OF LINE.SELECTION-SCREEN END OF BLOCK 4.SELECTION-SCREEN: BEGIN OF BLOCK 5 WITH FRAME TITLE text-004.SELECTION-SCREEN: SKIP.SELECTION-SCREEN: BEGIN OF LINE.SELECTION-SCREEN: PUSHBUTTON 15(20) b_unmed USER-COMMAND uc2.SELECTION-SCREEN: PUSHBUTTON 36(20) b_timat USER-COMMAND uc3.SELECTION-SCREEN: PUSHBUTTON 57(20) b_tiope USER-COMMAND uc4.SELECTION-SCREEN: PUSHBUTTON 78(20) b_ajust USER-COMMAND uc5.SELECTION-SCREEN: END OF LINE.SELECTION-SCREEN END OF BLOCK 5.*---------------------------------------------------------------------** AT SELECTION-SCREEN*---------------------------------------------------------------------*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. PERFORM buscar_archivo USING p_file.AT SELECTION-SCREEN OUTPUT. IF p_karva = 'X' OR p_karppp EQ 'X'. LOOP AT SCREEN. CASE screen-group1. WHEN 'KDX'. screen-active = '1'. MODIFY SCREEN. WHEN 'SAL'. screen-active = '0'. MODIFY SCREEN. ENDCASE. ENDLOOP. ELSEIF p_karun = 'X'. LOOP AT SCREEN. CASE screen-group1. WHEN 'KDX'. screen-active = '1'. MODIFY SCREEN. WHEN 'SAL'. screen-active = '0'. MODIFY SCREEN. ENDCASE. ENDLOOP. ELSEIF p_salin = 'X'. LOOP AT SCREEN. CASE screen-group1. WHEN 'KDX'. screen-active = '0'. MODIFY SCREEN. WHEN 'SAL'. screen-active = '1'. MODIFY SCREEN. ENDCASE. ENDLOOP. ENDIF.AT SELECTION-SCREEN.* AUTHORITY-CHECK OBJECT 'S_TCODE'* ID 'TCD'* FIELD sy-tcode. IF sy-subrc NE 0. MESSAGE ID 'ZPEFI' TYPE 'E' NUMBER '001' DISPLAY LIKE 'I'. ENDIF. AUTHORITY-CHECK OBJECT 'F_BKPF_BUK' ID 'BUKRS' FIELD p_bukrs ID 'ACTVT' FIELD '03'. IF sy-subrc NE 0. MESSAGE ID 'ZPEFI' TYPE 'E' NUMBER '001' DISPLAY LIKE 'I'. ENDIF. CASE sy-ucomm. WHEN 'UC2'. CALL TRANSACTION 'ZFIPE_LIB07A' AND SKIP FIRST SCREEN. WHEN 'UC3'. CALL TRANSACTION 'ZFIPE_LIB07B' AND SKIP FIRST SCREEN. WHEN 'UC4'. CALL TRANSACTION 'ZFIPE_LIB07C' AND SKIP FIRST SCREEN. WHEN 'UC5'. CALL TRANSACTION 'ZFIPE_LIB07D' AND SKIP FIRST SCREEN. WHEN OTHERS. ENDCASE.*** GONCACR1 - 24/11/2011 - Begin IF NOT p_excel IS INITIAL. DATA: lv_filename TYPE pcfile-path, lv_path TYPE pcfile-path, lv_name TYPE string, lv_ext TYPE string. CLEAR: lv_filename, lv_path, lv_name, lv_ext. lv_filename = p_file. CALL FUNCTION 'PC_SPLIT_COMPLETE_FILENAME' EXPORTING complete_filename = lv_filename* CHECK_DOS_FORMAT = IMPORTING* DRIVE = extension = lv_ext name = lv_name* NAME_WITH_EXT = path = lv_path EXCEPTIONS invalid_drive = 1 invalid_extension = 2 invalid_name = 3 invalid_path = 4 OTHERS = 5.*** verify Path IF lv_path IS INITIAL. MESSAGE ID 'ZPEFI' TYPE 'E' NUMBER '006' DISPLAY LIKE 'I'. ENDIF.*** Verify File name IF lv_name IS INITIAL. MESSAGE ID 'ZPEFI' TYPE 'E' NUMBER '011' DISPLAY LIKE 'I'. ENDIF.*** Verify File extension IF lv_ext IS INITIAL. MESSAGE ID 'ZPEFI' TYPE 'E' NUMBER '012' DISPLAY LIKE 'I'. ELSE. TRANSLATE lv_ext TO UPPER CASE. IF lv_ext(3) 'XLS'. MESSAGE ID 'ZPEFI' TYPE 'E' NUMBER '012' DISPLAY LIKE 'I'. ENDIF. ENDIF. ENDIF.*** GONCACR1 - 24/11/2011 - End*----------------------------------------------------------------------** INITIALIZATION*----------------------------------------------------------------------*INITIALIZATION. gv_repid = sy-repid. b_unmed = 'Unidad de Medida'. b_timat = 'Tipo de Material'. b_tiope = 'Tipo de Operacin'. b_ajust = 'Ajustes'.*----------------------------------------------------------------------** START-OF-SELECTION.*----------------------------------------------------------------------*START-OF-SELECTION. DATA: ls_error TYPE c. PERFORM validar_campos CHANGING ls_error. CHECK ls_error IS INITIAL. PERFORM verifica_sociedad_centro. IF sy-subrc = 0. MESSAGE ID 'ZPEFI' TYPE 'I' NUMBER '002'. ELSE. IF p_bukrs = '3000' OR p_bukrs = '4000'. "29082014* IF p_bukrs = '3000'. gv_check = 'X'. ELSE. CLEAR gv_check. ENDIF. PERFORM verifica_tipo_operacion. IF sy-subrc = 0. MESSAGE ID 'ZPEFI' TYPE 'I' NUMBER '013' . ELSE. PERFORM intervalo_fechas. IF p_salin = 'X'. PERFORM cargar_saldos. PERFORM actualizar_tabla. PERFORM salida_alv. ELSEIF p_karva = 'X' OR p_karun = 'X' OR p_karppp EQ 'X'. PERFORM cargar_datos. IF p_repor EQ 'X'. PERFORM salida_det. PERFORM total_paginas. ELSEIF p_gesti EQ 'X'. PERFORM preparar_alv. PERFORM salida_alv. ELSEIF p_impre EQ 'X'. PERFORM salida_impresa. ELSEIF p_excel EQ 'X'. PERFORM salida_excel. ENDIF. ENDIF. ENDIF. ENDIF.*&---------------------------------------------------------------------**& FORM BUSCAR_ARCHIVO*&---------------------------------------------------------------------*FORM buscar_archivo USING val_file. CALL FUNCTION 'KD_GET_FILENAME_ON_F4' EXPORTING static = 'X' CHANGING file_name = val_file EXCEPTIONS mask_too_long = 1 OTHERS = 2.ENDFORM. " BUSCAR_ARCHIVO*&---------------------------------------------------------------------**& FORM VERIFICA_SOCIEDAD_CENTRO*&---------------------------------------------------------------------*FORM verifica_sociedad_centro .* Verifica consistencia entre sociedad y centro SELECT SINGLE * FROM t001k WHERE bukrs NE p_bukrs AND bwkey IN p_werks.ENDFORM. " VERIFICA_SOCIEDAD_CENTRO*&---------------------------------------------------------------------**& FORM INTERVALO_FECHAS*&---------------------------------------------------------------------*FORM intervalo_fechas. CLEAR: gv_fi, gv_ff. CONCATENATE p_gjahr p_monat '01' INTO gv_fi. CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' EXPORTING day_in = gv_fi IMPORTING last_day_of_month = gv_ff. CLEAR gs_budat. REFRESH gr_budat. gs_budat-sign = 'I'. gs_budat-option = 'BT'. gs_budat-low = gv_fi. gs_budat-high = gv_ff. APPEND gs_budat TO gr_budat.ENDFORM. " INTERVALO_FECHAS*&---------------------------------------------------------------------**& FORM CARGAR_SALDOS*&---------------------------------------------------------------------*FORM cargar_saldos . DATA: lt_detalle TYPE STANDARD TABLE OF gty_detaux, ls_detalle TYPE gty_detaux.* Se obtienen los Materiales de acuerdo a la Categoria de valoracion SELECT matnr bwkey bklas FROM mbew INTO TABLE gtd_mbew WHERE matnr IN p_matnr AND bklas IN p_bklas AND bwkey IN p_werks ORDER BY bwkey matnr ASCENDING.* Se eliminan los duplicados respecto al Centro y al Material DELETE ADJACENT DUPLICATES FROM gtd_mbew COMPARING bwkey matnr.* Se seleccionan los documentos de material para el periodo indicado. SELECT mblnr mjahr budat FROM mkpf INTO TABLE gtd_mkpf WHERE budat IN gr_budat. IF NOT gtd_mkpf IS INITIAL.* Se obtienen los documentos de los movimientos de almacen para el periodo indicado SELECT mblnr mjahr zeile matnr werks gjahr bukrs belnr shkzg dmbtr bwart menge umwrk bustw sakto charg umcha FROM mseg INTO TABLE gtd_mseg1 FOR ALL ENTRIES IN gtd_mkpf WHERE mblnr = gtd_mkpf-mblnr AND mjahr = gtd_mkpf-mjahr AND werks IN p_werks AND bukrs = p_bukrs AND bustw NE 'WE06'. " Excluye las imputaciones a CO con referencia a Material umwrk ne 'WE06' SORT gtd_mseg1 BY werks matnr ASCENDING. CLEAR gv_ind. LOOP AT gtd_mseg1 ASSIGNING . gv_ind = sy-tabix. IF ( -werks EQ -umwrk ) AND ( -sakto EQ '' ). " No se eliminan los reqistros que tengan movimientos entre lotes y contabilizan IF ( -charg NE '' ) OR ( -umcha NE '' ). IF ( -bustw = '' ). DELETE gtd_mseg1 INDEX gv_ind. ENDIF. ELSE. DELETE gtd_mseg1 INDEX gv_ind. ENDIF. " Se eliminan los documentos cuyo centro receptor sea vacio y no tenga string de contabilizacin. ELSEIF -umwrk = '' AND -bustw = ''. DELETE gtd_mseg1 INDEX gv_ind. ENDIF. ENDLOOP.* delete gtd_mseg1 where umwrk is initial.* Se eliminan los documentos que no pertenecen al rango de materiales de la pantalla de seleccion CLEAR gv_ind. LOOP AT gtd_mseg1 ASSIGNING . gv_ind = sy-tabix. READ TABLE gtd_mbew ASSIGNING WITH KEY bwkey = -werks matnr = -matnr. IF sy-subrc NE 0. DELETE gtd_mseg1 INDEX gv_ind. ENDIF. ENDLOOP. ENDIF.** Se seleccionan los centros* select bwkey bukrs* from t001k* into table gtd_t001k "gv_bwkey* where bwkey in p_werks* and bukrs = p_bukrs* order by bwkey ascending. IF NOT gtd_mbew IS INITIAL. IF p_bsim EQ 'X'. SELECT matnr bwkey bwtar belnr gjahr buzei dmbtr shkzg budat FROM bsim INTO TABLE gtd_bsim FOR ALL ENTRIES IN gtd_mbew WHERE matnr = gtd_mbew-matnr AND bwkey = gtd_mbew-bwkey AND budat IN gr_budat. SORT gtd_bsim BY bwkey matnr ASCENDING. ELSEIF p_mseg EQ 'X'. "Se usaran los registros de la tabla interna gtd_mseg1 para llenar los importes ENDIF. ENDIF.* Se obtienen los registros de ajuste SELECT * FROM zfipet_lib10 INTO CORRESPONDING FIELDS OF TABLE gtd_ajuste WHERE werks IN p_werks AND monat = p_monat AND gjahr = p_gjahr AND matnr IN p_matnr. REFRESH: gtd_karsal, gtd_karsalaux. LOOP AT gtd_mbew ASSIGNING . CLEAR: gs_karsal, gs_karsalaux, gs_ajuste. gs_karsal-werks = -bwkey. gs_karsal-monat = p_monat. gs_karsal-gjahr = p_gjahr. gs_karsal-matnr = -matnr. IF gtd_mseg1 IS NOT INITIAL. LOOP AT gtd_mseg1 ASSIGNING WHERE werks = -bwkey AND matnr = -matnr. IF -shkzg = 'S'. gs_karsal-menges = gs_karsal-menges + -menge. ELSE. gs_karsal-mengeh = gs_karsal-mengeh + -menge. ENDIF. "Se usaran los registros de la tabla interna gtd_mseg1 para llenar los importes IF p_mseg = 'X'. IF -shkzg = 'S'. gs_karsal-dmbtrs = gs_karsal-dmbtrs + -dmbtr. " JMZ 08.08.11 -> Modificacin a dmbtr antes era menge ELSE. gs_karsal-dmbtrh = gs_karsal-dmbtrh + -dmbtr. ENDIF. ENDIF. ENDLOOP. ENDIF. IF gtd_bsim IS NOT INITIAL. LOOP AT gtd_bsim ASSIGNING WHERE bwkey = -bwkey AND matnr = -matnr. IF -shkzg = 'S'. gs_karsal-dmbtrs = gs_karsal-dmbtrs + -dmbtr. ELSE. gs_karsal-dmbtrh = gs_karsal-dmbtrh + -dmbtr. ENDIF. ENDLOOP. ENDIF.* Se realiza el ajuste correspondiente LOOP AT gtd_ajuste INTO gs_ajuste WHERE werks = -bwkey AND matnr = -matnr. gs_karsal-dmbtrs = gs_karsal-dmbtrs + gs_ajuste-dmbtrs. gs_karsal-dmbtrh = gs_karsal-dmbtrh + gs_ajuste-dmbtrh. ENDLOOP. MOVE-CORRESPONDING gs_karsal TO gs_karsalaux. gs_karsalaux-menged = gs_karsalaux-menges - gs_karsalaux-mengeh. gs_karsalaux-dmbtrd = gs_karsalaux-dmbtrs - gs_karsalaux-dmbtrh. IF NOT ( gs_karsal-menges = 0 AND gs_karsal-mengeh = 0 AND gs_karsal-dmbtrs = 0 AND gs_karsal-dmbtrh = 0 ). APPEND gs_karsal TO gtd_karsal. APPEND gs_karsalaux TO gtd_karsalaux. ENDIF. ENDLOOP.ENDFORM. " CARGAR_SALDOS*&---------------------------------------------------------------------**& FORM ACTUALIZAR_TABLA*&---------------------------------------------------------------------*FORM actualizar_tabla . LOOP AT gtd_karsal INTO gs_karsal. SELECT SINGLE * FROM zfipet_lib06 WHERE gjahr = gs_karsal-gjahr AND monat = gs_karsal-monat AND matnr = gs_karsal-matnr AND werks = gs_karsal-werks. IF sy-subrc = 0. UPDATE zfipet_lib06 FROM gs_karsal. ELSE. INSERT INTO zfipet_lib06 VALUES gs_karsal. ENDIF. ENDLOOP. COMMIT WORK.ENDFORM. " ACTUALIZAR_TABLA*&---------------------------------------------------------------------**& Form SALIDA_ALV*&---------------------------------------------------------------------*FORM salida_alv . PERFORM alv_columnas. PERFORM alv_fill_layout. PERFORM alv_carga_evento USING gtd_events[]. PERFORM alv_desplegar.ENDFORM. " SALIDA_ALV*&---------------------------------------------------------------------**& Form ALV_COLUMNAS*&---------------------------------------------------------------------*FORM alv_columnas . DEFINE m_fcat. perform zz_layout_cb using &1 &2 &3 &4. END-OF-DEFINITION. CLEAR gv_ind. IF p_salin = 'X'. gv_ind = gv_ind + 1. m_fcat 'WERKS' 'MSEG' gv_ind 'Centro'. gv_ind = gv_ind + 1. m_fcat 'MONAT' 'BKPF' gv_ind 'Periodo'. gv_ind = gv_ind + 1. m_fcat 'GJAHR' 'BKPF' gv_ind 'Ejercicio'. gv_ind = gv_ind + 1. m_fcat 'MATNR' 'MARA' gv_ind 'Material'. gv_ind = gv_ind + 1. m_fcat 'DMBTRS' ' ' gv_ind 'Importe Entrada'. gv_ind = gv_ind + 1. m_fcat 'DMBTRH' ' ' gv_ind 'Importe Salida'. gv_ind = gv_ind + 1. m_fcat 'DMBTRD' ' ' gv_ind 'Dif. Importes'. gv_ind = gv_ind + 1. m_fcat 'MENGES' ' ' gv_ind 'Cantidad Entrada'. gv_ind = gv_ind + 1. m_fcat 'MENGEH' ' ' gv_ind 'Cantidad Salida'. gv_ind = gv_ind + 1. m_fcat 'MENGED' ' ' gv_ind 'Dif. Cantidades'. ELSEIF p_karva = 'X' OR p_karun = 'X' OR p_karppp EQ 'X'. gv_ind = gv_ind + 1. m_fcat 'MATNR' 'MARA' gv_ind 'Material'. gv_ind = gv_ind + 1. m_fcat 'TIPO_MAT' ' ' gv_ind 'Tipo Material'. gv_ind = gv_ind + 1. m_fcat 'MAKTX' ' ' gv_ind 'Descripcin'. gv_ind = gv_ind + 1. m_fcat 'ZUNDMED' ' ' gv_ind 'Unid.Med.'. gv_ind = gv_ind + 1. m_fcat 'MET_VAL' ' ' gv_ind 'Mtd.Val.'. gv_ind = gv_ind + 1. m_fcat 'ESTAB' ' ' gv_ind 'Centro'. gv_ind = gv_ind + 1. m_fcat 'FECHA' ' ' gv_ind 'Fecha'.* gv_ind = gv_ind + 1.* m_fcat 'ZTIPO_COMP' ' ' gv_ind 'Tipo(Tabla 10)'. gv_ind = gv_ind + 1. m_fcat 'SERIE' ' ' gv_ind 'NSUNAT'. gv_ind = gv_ind + 1. m_fcat 'MBLNR' ' ' gv_ind 'NLogstica'. gv_ind = gv_ind + 1. m_fcat 'MBLNRORI' ' ' gv_ind 'NContab'. gv_ind = gv_ind + 1. m_fcat 'ZTIPO_OPE' ' ' gv_ind 'Tipo Oper.'. gv_ind = gv_ind + 1. m_fcat 'CANT_IN' ' ' gv_ind 'Cant.Entrada'. IF p_karva = 'X' OR p_karppp EQ 'X'. gv_ind = gv_ind + 1. m_fcat 'COSU_IN' ' ' gv_ind 'Cost.Unit.Entrada'. gv_ind = gv_ind + 1. m_fcat 'COST_IN' ' ' gv_ind 'Cost.Tot.Entrada'. gv_ind = gv_ind + 1. ENDIF. m_fcat 'CANT_OUT' ' ' gv_ind 'Cant.Salida'. gv_ind = gv_ind + 1. IF p_karva = 'X' OR p_karppp EQ 'X'. m_fcat 'COSU_OUT' ' ' gv_ind 'Cost.Unit.Salida'. gv_ind = gv_ind + 1. m_fcat 'COST_OUT' ' ' gv_ind 'Cost.Tot.Salida'. gv_ind = gv_ind + 1. ENDIF. m_fcat 'CANT_TOT' ' ' gv_ind 'Cant.Final'. gv_ind = gv_ind + 1. IF p_karva = 'X' OR p_karppp EQ 'X'. m_fcat 'COSU_FIN' ' ' gv_ind 'Cost.Unit.Final'. gv_ind = gv_ind + 1. m_fcat 'COST_FIN' ' ' gv_ind 'Cost.Tot.Final'. ENDIF. ENDIF.ENDFORM. " ALV_COLUMNAS*&---------------------------------------------------------------------**& FORM ZZ_LAYOUT_CB*&---------------------------------------------------------------------*FORM zz_layout_cb USING pw_fn TYPE lvc_fname pw_rt TYPE lvc_rtname pw_cp TYPE lvc_colpos pw_ct TYPE lvc_txtcol. CLEAR gs_fcat. gs_fcat-fieldname = pw_fn. gs_fcat-ref_tabname = pw_rt. gs_fcat-col_pos = pw_cp. IF NOT ( pw_ct IS INITIAL ). gs_fcat-seltext_m = pw_ct. ENDIF. IF p_salin = 'X'. IF pw_fn = 'DMBTRS' OR pw_fn = 'DMBTRH'. gs_fcat-currency = 'PEN'. gs_fcat-datatype = 'CURR'. ENDIF. ELSEIF p_karva = 'X' OR p_karppp EQ 'X'. IF pw_fn = 'CANT_IN' OR pw_fn = 'CANT_OUT' OR pw_fn = 'CANT_TOT'. gs_fcat-emphasize = 'C100'. ENDIF. ENDIF. APPEND gs_fcat TO gtd_fieldcat.ENDFORM. " ZZ_LAYOUT_CB*&---------------------------------------------------------------------**& FORM ALV_FILL_LAYOUT*&---------------------------------------------------------------------*FORM alv_fill_layout . CLEAR gtd_layout. gtd_layout-zebra = 'X'. gtd_layout-colwidth_optimize = 'X'. gtd_layout-f2code = 'VER'. gtd_grid_settings-edt_cll_cb = 'X'.ENDFORM. " ALV_FILL_LAYOUT*--------------------------------------------------------------------** FORM ALV_CARGA_EVENTO*--------------------------------------------------------------------*FORM alv_carga_evento USING lt_events TYPE slis_t_event. DATA: ls_event TYPE slis_alv_event. MOVE 'DATA_CHANGE' TO ls_event-name. MOVE 'DATA_CHANGE' TO ls_event-form. APPEND ls_event TO lt_events. CLEAR ls_event. MOVE 'REFRESH' TO ls_event-name. MOVE 'REFRESH' TO ls_event-form. APPEND ls_event TO lt_events. CLEAR ls_event. REFRESH gtd_event_exit.ENDFORM. "ALV_CARGA_EVENTO*---------------------------------------------------------------------** FORM ALV_DESPLEGAR*---------------------------------------------------------------------*FORM alv_desplegar. gtd_variante-report = sy-repid. gv_repid = sy-repid. IF p_salin = 'X'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING* i_interface_check = 'X' i_callback_program = gv_repid i_callback_pf_status_set = 'PF_STATUS' i_save = 'A' is_variant = gtd_variante is_layout = gtd_layout it_fieldcat = gtd_fieldcat[]* i_grid_settings = gtd_grid_settings i_callback_user_command = 'USER_COMMAND' i_default = 'X' it_events = gtd_events[] it_event_exit = gtd_event_exit TABLES t_outtab = gtd_karsalaux EXCEPTIONS program_error = 1 OTHERS = 2. ELSEIF ( p_karva = 'X' AND p_gesti = 'X' ) OR ( p_karun = 'X' AND p_gesti = 'X' ) OR ( p_karppp = 'X' AND p_gesti = 'X' ). CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING* i_interface_check = 'X' i_callback_program = gv_repid i_callback_pf_status_set = 'PF_STATUS' i_save = 'A' is_variant = gtd_variante is_layout = gtd_layout it_fieldcat = gtd_fieldcat[]* i_grid_settings = gtd_grid_settings i_callback_user_command = 'USER_COMMAND' i_default = 'X' it_events = gtd_events[] it_event_exit = gtd_event_exit TABLES t_outtab = gtd_gest EXCEPTIONS program_error = 1 OTHERS = 2. ENDIF.ENDFORM. "DESPLEGAR_ALV*---------------------------------------------------------------------** FORM PF_STATUS*---------------------------------------------------------------------*FORM pf_status USING ce_func_exclude TYPE slis_t_extab. DATA fcode_attrib_tab LIKE smp_dyntxt OCCURS 0 WITH HEADER LINE. CLEAR: fcode_attrib_tab, fcode_attrib_tab[]. PERFORM dynamic_report_fcodes(rhteiln0) TABLES fcode_attrib_tab USING ce_func_exclude ' ' ' '. SET PF-STATUS 'ALVLIST' EXCLUDING ce_func_exclude OF PROGRAM 'RHTEILN0'.ENDFORM. "PF_STATUS*---------------------------------------------------------------------** FORM USER_COMMAND*---------------------------------------------------------------------*FORM user_command USING ucomm LIKE sy-ucomm selfield TYPE slis_selfield. CASE selfield-fieldname. WHEN 'MBLNRORI'. SET PARAMETER ID 'BUK' FIELD p_bukrs. SET PARAMETER ID 'BLN' FIELD selfield-value. SET PARAMETER ID 'GJR' FIELD p_gjahr. CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN. WHEN 'MBLNR'. SET PARAMETER ID 'MBN' FIELD selfield-value. SET PARAMETER ID 'MJA' FIELD p_gjahr. CALL TRANSACTION 'MB03' AND SKIP FIRST SCREEN. ENDCASE.ENDFORM. "user_command*&---------------------------------------------------------------------**& FORM CARGAR_DATOS*&---------------------------------------------------------------------*FORM cargar_datos . FIELD-SYMBOLS: LIKE LINE OF gtd_detalle, LIKE LINE OF gtd_kardex_ppp. DATA: gv_cant_ant TYPE ckmlpp-lbkum, gv_cost_ant TYPE ckmlcr-salkv, lt_facturas TYPE STANDARD TABLE OF gty_vbfa, lt_rkseg TYPE STANDARD TABLE OF gty_rkseg. REFRESH: gt_rkseg.* Se obtienen Sociedad y Centro SELECT bwkey bukrs FROM t001k INTO TABLE gtd_t001k WHERE bwkey IN p_werks AND bukrs = p_bukrs.* Se obtiene Nombre del centro CLEAR: gv_ind. LOOP AT gtd_t001k INTO gs_t001k. gv_ind = sy-tabix. SELECT SINGLE name1 FROM t001w INTO gs_t001k-name1 WHERE bwkey = gs_t001k-bwkey. IF sy-subrc = 0. MODIFY gtd_t001k FROM gs_t001k INDEX gv_ind. ENDIF. ENDLOOP.*{/@MCT110811** RUC* select single paval* from t001z* into gv_ruc* where party = 'ZRUC'* and bukrs = p_bukrs.*** Razon Social* select single paval* from t001z* into gv_razon* where party = 'ZRSOCI'* and bukrs = p_bukrs. SELECT SINGLE paval INTO gv_ruc FROM t001z WHERE bukrs = p_bukrs AND party = 'ZRUC'. " @PCL18012012 SELECT SINGLE butxt INTO gv_razon FROM t001 WHERE bukrs = p_bukrs.*}* Se obtienen los Tipos de material de acuerdo a la Categoria de valoracion de MBEW SELECT * INTO CORRESPONDING FIELDS OF TABLE gtd_tipmat FROM zfipet_lib08.* Se obtiene la Unidad de Medida SUNAT a partir de la Unidad de Medida SAP SELECT * INTO CORRESPONDING FIELDS OF TABLE gtd_um FROM zfipet_lib07.* Se obtienen las Clases de movimiento SELECT * INTO CORRESPONDING FIELDS OF TABLE gtd_tipope FROM zfipet_lib09.* Se obtienen los documentos de material (movimientos) en el periodo indicado SELECT mblnr mjahr budat FROM mkpf INTO TABLE gtd_mkpf WHERE budat IN gr_budat ORDER BY mblnr mjahr.* Se obtienen los Materiales de acuerdo a la Categoria de valoracion SELECT matnr bwkey bklas FROM mbew INTO TABLE gtd_mbew WHERE matnr IN p_matnr AND bklas IN p_bklas AND bwkey IN p_werks ORDER BY bwkey matnr ASCENDING.* Se borran los materiales repetidos DELETE ADJACENT DUPLICATES FROM gtd_mbew COMPARING bwkey matnr. IF NOT gtd_mbew IS INITIAL. REFRESH: gtd_mbew_aux. gtd_mbew_aux[] = gtd_mbew[]. SORT gtd_mbew_aux BY matnr. DELETE ADJACENT DUPLICATES FROM gtd_mbew_aux COMPARING matnr.* Se obtiene el Centro para cada Material SELECT matnr meins INTO TABLE gtd_mara FROM mara FOR ALL ENTRIES IN gtd_mbew_aux WHERE matnr = gtd_mbew_aux-matnr. IF NOT gtd_mara IS INITIAL.* Se obtiene la Descripcion de cada material SELECT matnr maktx INTO TABLE gtd_makt FROM makt FOR ALL ENTRIES IN gtd_mara WHERE matnr = gtd_mara-matnr AND spras = 'S'. ENDIF. IF NOT gtd_mkpf IS INITIAL. REFRESH: gtd_mkpf_aux. gtd_mkpf_aux[] = gtd_mkpf[]. SORT gtd_mkpf_aux BY mblnr mjahr. DELETE ADJACENT DUPLICATES FROM gtd_mkpf_aux COMPARING mblnr mjahr.* Se obtienen los documentos de los movimientos de almacen para el periodo indicado SELECT mblnr mjahr zeile matnr werks gjahr bukrs belnr shkzg dmbtr bwart menge umwrk bustw sakto charg umcha INTO TABLE gtd_mseg1 FROM mseg FOR ALL ENTRIES IN gtd_mkpf_aux WHERE mblnr = gtd_mkpf_aux-mblnr AND mjahr = gtd_mkpf_aux-mjahr AND matnr IN p_matnr AND werks IN p_werks* and umwrk ne mseg-werks "Centro receptor/emisor* and umwrk ne '' AND bukrs = p_bukrs AND bustw NE 'WE06'. " Excluye las imputaciones a CO con referencia a Material umwrk ne 'WE06' SORT gtd_mseg1 BY werks matnr ASCENDING. CLEAR gv_ind. LOOP AT gtd_mseg1 ASSIGNING . gv_ind = sy-tabix. CLEAR gv_umwrk. IF -BWART = '309' OR -BWART = '310'. gv_umwrk = -umwrk. -umwrk = ' '. ENDIF. IF ( -werks = -umwrk ) AND ( -sakto EQ '' ). " No se eliminan los reqistros que tengan movimientos entre lotes y contabilizan IF ( -charg NE '' ) OR ( -umcha NE '' ). IF ( -bustw = '' ). DELETE gtd_mseg1 INDEX gv_ind. ENDIF. ELSE. DELETE gtd_mseg1 INDEX gv_ind. ENDIF. " Se eliminan los documentos cuyo centro receptor sea vacio y no tenga string de contabilizacin. ELSEIF -umwrk = '' AND -bustw = ''. DELETE gtd_mseg1 INDEX gv_ind. ENDIF.* -umwrk = gv_umwrk.* MODIFY gtd_mseg1 INDEX gv_ind FROM . ENDLOOP.* Se eliminan los documentos que no pertenecen a los materiales ingresados por la pantalla de seleccion CLEAR gv_ind. LOOP AT gtd_mseg1 ASSIGNING . gv_ind = sy-tabix. READ TABLE gtd_mbew ASSIGNING WITH KEY bwkey = -werks matnr = -matnr. IF sy-subrc NE 0. DELETE gtd_mseg1 INDEX gv_ind. ENDIF. ENDLOOP.* Se obtienen los documentos con indicador de stock especial para el periodo indicado REFRESH:gtd_mkpf_aux. gtd_mkpf_aux[] = gtd_mkpf[]. SORT gtd_mkpf_aux BY mblnr mjahr. DELETE ADJACENT DUPLICATES FROM gtd_mkpf_aux COMPARING mblnr mjahr. SELECT mblnr mjahr zeile matnr werks gjahr bukrs belnr shkzg dmbtr bwart menge umwrk bustw INTO TABLE gtd_mseg2 FROM mseg FOR ALL ENTRIES IN gtd_mkpf_aux WHERE mblnr = gtd_mkpf_aux-mblnr AND mjahr = gtd_mkpf_aux-mjahr AND werks IN p_werks AND matnr IN p_matnr* and umwrk = werks AND bukrs = p_bukrs* and umwrk ne '' AND sobkz space AND bustw 'WE06'. " Excluye las imputaciones a CO con referencia a Material umwrk ne 'WE06' SORT gtd_mseg2 BY werks matnr ASCENDING. CLEAR gv_ind. LOOP AT gtd_mseg2 ASSIGNING . gv_ind = sy-tabix. IF -werks NE -umwrk. DELETE gtd_mseg2 INDEX gv_ind. " Se eliminan los documentos cuyo sting de contabilizacin sea vacio. ELSEIF -bustw = ''. DELETE gtd_mseg2 INDEX gv_ind. ENDIF. ENDLOOP.* Se eliminan los documentos que no pertenecen a los materiales ingresados por la pantalla de seleccion* CLEAR gv_ind. LOOP AT gtd_mseg2 ASSIGNING .* gv_ind = sy-tabix.* READ TABLE gtd_mbew ASSIGNING WITH KEY bwkey = -werks READ TABLE gtd_mbew WITH KEY bwkey = -werks matnr = -matnr BINARY SEARCH TRANSPORTING NO FIELDS. IF sy-subrc 0.* DELETE gtd_mseg2 INDEX gv_ind. DELETE gtd_mseg2 WHERE werks = -werks AND matnr = -matnr. ENDIF. ENDLOOP. SORT gtd_mseg2 BY bukrs belnr gjahr ASCENDING.* Se borran los documentos de contabilidad repetidos DELETE ADJACENT DUPLICATES FROM gtd_mseg2 COMPARING bukrs belnr gjahr. ENDIF.* Se obtienen los documentos de los movimientos de almacn stock especial IF NOT gtd_mseg2 IS INITIAL. SELECT mblnr mjahr zeile matnr werks gjahr bukrs belnr shkzg dmbtr bwart menge umwrk INTO TABLE gtd_mseg3 FROM mseg FOR ALL ENTRIES IN gtd_mseg2 WHERE mblnr = gtd_mseg2-mblnr AND mjahr = gtd_mseg2-mjahr AND matnr = gtd_mseg2-matnr AND werks = gtd_mseg2-werks AND umwrk = gtd_mseg2-umwrk AND bukrs = gtd_mseg2-bukrs AND sobkz EQ space. ENDIF.* Se crea una tabla unica con los documentos de los movimientos de almacn APPEND LINES OF gtd_mseg2 TO gtd_mseg1. APPEND LINES OF gtd_mseg3 TO gtd_mseg1. REFRESH: gtd_mseg2, gtd_mseg3.* Se concatenan Doc de material y Ejercicio de doc de material para obtener Clave de referencia LOOP AT gtd_mseg1 ASSIGNING . CONCATENATE -mblnr -mjahr INTO -awkey. ENDLOOP.* Se obtienen los N de doc de los movimientos de la MSEG* SELECT bukrs belnr gjahr awkey budat xblnr SELECT bukrs belnr gjahr awkey budat xblnr cpudt cputm FROM bkpf INTO TABLE gtd_bkpf1 WHERE bukrs = p_bukrs AND gjahr = p_gjahr AND blart IN p_blart AND budat GE gv_fi AND budat LE gv_ff AND monat = p_monat.* and awkey = gtd_mseg-awkey. "add +@ERQ251013 IF gv_check IS NOT INITIAL. IF gtd_mseg1[] IS NOT INITIAL. REFRESH: gt_rkseg_aux, gt_rkseg, gt_rkseg_mseg. LOOP AT gtd_mseg1 INTO gs_mseg. gs_rkseg-lfbnr = gs_mseg-mblnr. gs_rkseg-lfgja = gs_mseg-mjahr. gs_rkseg-lfpos = gs_mseg-zeile. gs_rkseg-matbf = gs_mseg-matnr. APPEND gs_rkseg TO gt_rkseg_mseg. CLEAR: gs_rkseg,gs_mseg. ENDLOOP. SORT gt_rkseg_mseg BY lfbnr lfgja lfpos matbf. DELETE ADJACENT DUPLICATES FROM gt_rkseg_mseg COMPARING lfbnr lfgja lfpos matbf. SELECT belnr gjahr lfbnr lfgja lfpos matbf INTO CORRESPONDING FIELDS OF TABLE gt_rkseg_aux1 FROM rseg FOR ALL ENTRIES IN gt_rkseg_mseg WHERE lfbnr = gt_rkseg_mseg-lfbnr AND lfgja = gt_rkseg_mseg-lfgja AND lfpos = gt_rkseg_mseg-lfpos AND matbf = gt_rkseg_mseg-matbf. IF gt_rkseg_aux1[] IS NOT INITIAL. REFRESH: lt_rkseg. lt_rkseg[] = gt_rkseg_aux1[]. SORT lt_rkseg BY belnr gjahr. DELETE ADJACENT DUPLICATES FROM lt_rkseg COMPARING belnr gjahr. SELECT belnr gjahr xblnr INTO CORRESPONDING FIELDS OF TABLE gt_rkseg_aux FROM rbkp FOR ALL ENTRIES IN lt_rkseg WHERE bukrs = p_bukrs AND belnr = lt_rkseg-belnr AND gjahr = lt_rkseg-gjahr. LOOP AT gt_rkseg_aux1 ASSIGNING . READ TABLE gt_rkseg_aux INTO gs_rkseg WITH KEY belnr = -belnr gjahr = -gjahr. IF sy-subrc = 0. -xblnr = gs_rkseg-xblnr. ENDIF. ENDLOOP. ENDIF.*** REFRESH: gt_facturas, gt_vbfa,gt_mseg_aux. LOOP AT gtd_mseg1 INTO gs_mseg WHERE belnr = space. READ TABLE gt_rkseg_aux1 WITH KEY lfbnr = gs_mseg-mblnr lfgja = gs_mseg-mjahr lfpos = gs_mseg-zeile matbf = gs_mseg-matnr BINARY SEARCH TRANSPORTING NO FIELDS. IF sy-subrc 0. MOVE-CORRESPONDING gs_mseg TO gs_mseg_aux. APPEND gs_mseg_aux TO gt_mseg_aux. ENDIF. CLEAR: gs_mseg, gs_mseg_aux. ENDLOOP. SORT gt_mseg_aux BY mblnr zeile matnr mjahr. DELETE ADJACENT DUPLICATES FROM gt_mseg_aux COMPARING mblnr zeile matnr mjahr. IF gt_mseg_aux[] IS NOT INITIAL. SORT gt_mseg_aux BY mblnr zeile matnr mjahr. SELECT vbelv posnv vbeln posnn matnr vbtyp_v mjahr INTO CORRESPONDING FIELDS OF TABLE gt_vbfa FROM vbfa FOR ALL ENTRIES IN gt_mseg_aux WHERE vbeln = gt_mseg_aux-mblnr AND posnn = gt_mseg_aux-zeile AND vbtyp_n = 'R' AND matnr = gt_mseg_aux-matnr AND vbtyp_v IN ('C', 'J', 'T') AND mjahr = gt_mseg_aux-mjahr. REFRESH: gt_vbfa_aux. gt_vbfa_aux[] = gt_vbfa[]. DELETE gt_vbfa WHERE vbtyp_v 'C'. DELETE gt_vbfa_aux WHERE vbtyp_v = 'C'. IF gt_vbfa[] IS NOT INITIAL. SORT gt_vbfa BY vbelv posnv. SELECT vbelv posnv vbeln posnn INTO CORRESPONDING FIELDS OF TABLE gt_facturas FROM vbfa FOR ALL ENTRIES IN gt_vbfa WHERE vbelv = gt_vbfa-vbelv AND posnv = gt_vbfa-posnv AND vbtyp_n = 'M' AND vbtyp_v = 'C'. IF gt_facturas[] IS NOT INITIAL. REFRESH: lt_facturas. lt_facturas[] = gt_facturas[]. SORT lt_facturas BY vbeln. DELETE ADJACENT DUPLICATES FROM lt_facturas COMPARING vbeln. SELECT vbeln xblnr INTO CORRESPONDING FIELDS OF TABLE gt_facturas_aux FROM vbrk AS b FOR ALL ENTRIES IN lt_facturas WHERE vbeln = lt_facturas-vbeln. REFRESH: gt_rkseg_aux, gt_facturas1. gt_facturas1[] = gt_facturas[]. LOOP AT gt_facturas_aux INTO gs_facturas. LOOP AT gt_facturas1 ASSIGNING WHERE vbeln = gs_facturas-vbeln. -xblnr = gs_facturas-xblnr. ENDLOOP. ENDLOOP. REFRESH: gt_facturas. gt_facturas[] = gt_facturas1[]. DELETE gt_facturas WHERE xblnr = space. SORT gt_vbfa BY vbelv posnv.* SORT gt_facturas BY vbelv posnv. LOOP AT gt_vbfa INTO gs_vbfa. gs_rkseg-lfbnr = gs_vbfa-vbeln. gs_rkseg-lfpos = gs_vbfa-posnn. gs_rkseg-lfgja = gs_vbfa-mjahr. gs_rkseg-gjahr = gs_vbfa-mjahr. gs_rkseg-matbf = gs_vbfa-matnr. READ TABLE gt_facturas INTO gs_facturas WITH TABLE KEY vbelv = gs_vbfa-vbelv posnv = gs_vbfa-posnv. IF sy-subrc = 0. gs_rkseg-belnr = gs_facturas-vbeln. gs_rkseg-xblnr = gs_facturas-xblnr. APPEND gs_rkseg TO gt_rkseg_aux1. ENDIF. CLEAR: gs_facturas, gs_rkseg, gs_vbfa. ENDLOOP. ENDIF. ENDIF. ENDIF. ENDIF. SORT gt_rkseg_aux1. DELETE ADJACENT DUPLICATES FROM gt_rkseg_aux1 COMPARING ALL FIELDS. gt_rkseg[] = gt_rkseg_aux1[]. ENDIF. "add +@ERQ251013 SORT gtd_mseg1 BY werks matnr ASCENDING. REFRESH: gtd_mseg1_aux. gtd_mseg1_aux[] = gtd_mseg1[]. SORT gtd_bkpf1 BY awkey.* Se eliminan los documentos que no tengan la misma Clave de referencia de acuerdo a la MSEG CLEAR gv_ind. LOOP AT gtd_bkpf1 ASSIGNING . CLEAR: gv_ind. gv_ind = sy-tabix. READ TABLE gtd_mseg1_aux WITH TABLE KEY awkey = -awkey TRANSPORTING NO FIELDS. IF sy-subrc 0.* DELETE gtd_bkpf1 INDEX gv_ind. DELETE gtd_bkpf1 WHERE awkey = -awkey. ENDIF. ENDLOOP.* Se obtienen los documentos de los movimientos de ajuste, que tienen Importe pero no Cantidad SELECT matnr bwkey bwtar belnr gjahr buzei dmbtr shkzg budat INTO TABLE gtd_bsim FROM bsim WHERE matnr IN p_matnr AND bwkey IN p_werks AND budat GE gv_fi AND budat LE gv_ff. SORT gtd_bsim BY bwkey matnr ASCENDING.* Se borran los documentos de material que tengan un N de doc en la BKPF CLEAR gv_ind. SORT: gtd_bsim by belnr, gtd_bkpf1 by belnr. LOOP AT gtd_bsim ASSIGNING . gv_ind = sy-tabix.* READ TABLE gtd_bkpf1 ASSIGNING WITH KEY belnr = -belnr.* READ TABLE gtd_bkpf1 WITH KEY belnr = -belnr READ TABLE gtd_bkpf1 ASSIGNING WITH KEY belnr = -belnr.* BINARY SEARCH TRANSPORTING NO FIELDS. IF sy-subrc = 0.* DELETE gtd_bsim INDEX gv_ind. DELETE gtd_bsim WHERE belnr = -belnr. ENDIF. ENDLOOP. IF NOT gtd_bsim IS INITIAL.* Se obtiene el N de referencia de los documentos de movimientos de ajuste* SELECT bukrs belnr gjahr awkey budat xblnr SELECT bukrs belnr gjahr awkey budat xblnr cpudt cputm INTO TABLE gtd_bkpf2 FROM bkpf FOR ALL ENTRIES IN gtd_bsim WHERE bukrs = p_bukrs AND belnr = gtd_bsim-belnr AND gjahr = gtd_bsim-gjahr. ENDIF.* Se obtienen los movimientos en periodos anteriores SELECT matnr werks monat gjahr matnr dmbtrs dmbtrh menges mengeh INTO TABLE gtd_karsal FROM zfipet_lib06 WHERE matnr IN p_matnr AND werks IN p_werks AND gjahr = p_gjahr AND monat LT p_monat.* and budat le gv_fi. SELECT matnr werks monat gjahr matnr dmbtrs dmbtrh menges mengeh APPENDING TABLE gtd_karsal FROM zfipet_lib06 WHERE matnr IN p_matnr AND werks IN p_werks AND gjahr LT p_gjahr. SORT gtd_karsal BY werks matnr ASCENDING. gts_karsal = gtd_karsal. REFRESH gtd_karsal. ENDIF.* Se obtienen los movimientos de ajuste SELECT * INTO CORRESPONDING FIELDS OF TABLE gtd_ajuste FROM zfipet_lib10 WHERE werks IN p_werks AND monat = p_monat AND gjahr = p_gjahr AND matnr IN p_matnr. REFRESH: gtd_bsim_aux, gtd_bkpf2_aux. gtd_bsim_aux[] = gtd_bsim[]. gtd_bkpf2_aux[] = gtd_bkpf2[]. REFRESH: gtd_mseg1_aux1. LOOP AT gtd_mseg1 INTO gs_mseg. MOVE-CORRESPONDING gs_mseg TO gs_mseg_aux1. READ TABLE gt_rkseg INTO gs_rkseg WITH KEY lfbnr = gs_mseg_aux1-mblnr lfgja = gs_mseg_aux1-mjahr lfpos = gs_mseg_aux1-zeile matbf = gs_mseg_aux1-matnr. IF sy-subrc = 0. gs_mseg_aux1-xblnr = gs_rkseg-xblnr. "N SUNAT = Serie ENDIF. APPEND gs_mseg_aux1 TO gtd_mseg1_aux1. CLEAR: gs_mseg_aux1, gs_rkseg. ENDLOOP. LOOP AT gtd_mbew ASSIGNING .* Cabecera del Kardex CLEAR: gs_cabec. MOVE-CORRESPONDING TO gs_cabec. "Material y Categoria de Valoracion gs_cabec-werks = -bwkey. "Centro gs_cabec-lfmon = p_monat. "Periodo gs_cabec-lfgja = p_gjahr. "Ejercicio gs_cabec-ruc = gv_ruc. "RUC gs_cabec-butxt = gv_razon. "Razon Social READ TABLE gtd_t001k INTO gs_t001k WITH KEY bwkey = -bwkey. IF sy-subrc = 0. CONCATENATE gs_t001k-bwkey '-' gs_t001k-name1 INTO gs_cabec-estab SEPARATED BY space. "Centro + Establecimiento ELSE. gs_cabec-estab = -bwkey. ENDIF. READ TABLE gtd_tipmat INTO gs_tipmat WITH KEY bklas = -bklas. IF sy-subrc = 0. CONCATENATE gs_tipmat-tm '-' gs_tipmat-texttm INTO gs_cabec-tipo_mat "Tipo Mat. + Texto Tipo Mat. SEPARATED BY space. ENDIF. READ TABLE gtd_makt INTO gs_makt WITH KEY matnr = -matnr. IF sy-subrc = 0. gs_cabec-maktx = gs_makt-maktx. "Descripcion Mat. ENDIF. READ TABLE gtd_mara INTO gs_mara WITH KEY matnr = -matnr. IF sy-subrc = 0. gs_cabec-meins = gs_mara-meins. "Unidad de Medida SAP READ TABLE gtd_um INTO gs_um WITH KEY meins = gs_mara-meins. IF sy-subrc = 0. gs_cabec-zundmed = gs_um-um. "Unidad de Medida SUNAT gs_cabec-textum = gs_um-textum. "Texto Und. de Medida ENDIF. ENDIF. IF p_karppp EQ 'X'. gs_cabec-met_val = 'PRECIO PROMEDIO PONDERADO'. "Metodo de Valuacion ELSE.* gs_cabec-met_val = 'PRECIO ESTANDAR'. "Metodo de Valuacion gs_cabec-met_val = 'PRECIO PROMEDIO PONDERADO'. "Metodo de Valuacion ENDIF. APPEND gs_cabec TO gtd_cabec.* Detalle del Kardex* Saldo Inicial CLEAR: gs_detalle. gs_detalle-werks = -bwkey. "Centro gs_detalle-matnr = -matnr. "Material gs_detalle-ztipo_ope = '16'. "Tipo de Operacion SUNAT "Entradas y Salidas LOOP AT gts_karsal ASSIGNING WHERE werks = -bwkey AND matnr = -matnr. gs_detalle-cant_in = gs_detalle-cant_in + -menges - -mengeh. gs_detalle-cost_in = gs_detalle-cost_in + -dmbtrs - -dmbtrh. ENDLOOP. CATCH SYSTEM-EXCEPTIONS arithmetic_errors = 5. gs_detalle-cosu_in = gs_detalle-cost_in / gs_detalle-cant_in. ENDCATCH. IF sy-subrc = 5. gs_detalle-cosu_in = '0.00'. ENDIF. "Saldo Final gs_detalle-cant_tot = gs_detalle-cant_in. gs_detalle-cost_fin = gs_detalle-cost_in. gs_detalle-cosu_fin = gs_detalle-cosu_in. APPEND gs_detalle TO gtd_detalle.* Movimientos LOOP AT gtd_mseg1_aux1 INTO gs_mseg_aux1 WHERE werks = -bwkey AND matnr = -matnr. CLEAR: gs_detalle. gs_detalle-werks = gs_mseg_aux1-werks. "Centro gs_detalle-matnr = gs_mseg_aux1-matnr. "Material "add +@ERQ251013 IF gv_check IS NOT INITIAL. gs_detalle-serie = gs_mseg_aux1-xblnr. "N SUNAT = Serie ELSE. gs_detalle-serie = space. "N SUNAT = Serie ENDIF. "add +@ERQ251013 READ TABLE gtd_mkpf ASSIGNING WITH KEY mblnr = gs_mseg_aux1-mblnr mjahr = gs_mseg_aux1-mjahr. IF sy-subrc = 0. gs_detalle-fecha = -budat. "Fecha gs_detalle-mblnr = -mblnr. "N Logistica = N de documento de material ENDIF. READ TABLE gtd_bkpf1 ASSIGNING WITH KEY bukrs = gs_mseg_aux1-bukrs gjahr = gs_mseg_aux1-gjahr awkey = gs_mseg_aux1-awkey. IF sy-subrc = 0. gs_detalle-mblnrori = -belnr. "N Contab = N de documento contable gs_detalle-cpudt = -cpudt. gs_detalle-cputm = -cputm. ENDIF. gs_detalle-ztipo_comp = space. "Tipo* gs_detalle-serie = space. "N SUNAT = Serie READ TABLE gtd_tipope INTO gs_tipope WITH KEY bwart = gs_mseg_aux1-bwart. IF sy-subrc = 0. gs_detalle-ztipo_ope = gs_tipope-tope. "Tipo de Operacion SUNAT ENDIF. "add +@ERQ251013 IF gv_check IS NOT INITIAL AND gs_detalle-ztipo_ope = '11'. READ TABLE gt_vbfa_aux INTO gs_vbfa WITH KEY vbeln = gs_mseg_aux1-mblnr posnn = gs_mseg_aux1-zeile matnr = gs_mseg_aux1-matnr mjahr = gs_mseg_aux1-mjahr vbtyp_v = 'C'. IF sy-subrc = 0. WRITE gs_vbfa-vbelv TO gv_vbelv. CONCATENATE '00-' gv_vbelv INTO gs_detalle-serie. "N SUNAT = Serie CLEAR gs_vbfa. ELSE. CLEAR gs_vbfa. SELECT SINGLE vbelv INTO gs_vbfa-vbelv FROM vbfa WHERE vbeln = gs_mseg_aux1-mblnr AND vbtyp_n = 'R' AND vbtyp_v = 'J' AND mjahr = gs_mseg_aux1-mjahr. IF sy-subrc = 0. WRITE gs_vbfa-vbelv TO gv_vbelv. CONCATENATE '00-' gv_vbelv INTO gs_detalle-serie. "N SUNAT = Serie CLEAR gs_vbfa. ENDIF. ENDIF. ELSEIF gv_check IS NOT INITIAL AND gs_detalle-ztipo_ope = '05'. READ TABLE gt_vbfa_aux INTO gs_vbfa WITH KEY vbeln = gs_mseg_aux1-mblnr posnn = gs_mseg_aux1-zeile matnr = gs_mseg_aux1-matnr mjahr = gs_mseg_aux1-mjahr vbtyp_v = 'T'. IF sy-subrc = 0. CLEAR gs_vbfa_aux. SELECT SINGLE vbeln INTO gs_vbfa_aux-vbeln FROM vbfa WHERE vbelv = gs_vbfa-vbelv AND posnv = gs_vbfa-posnv AND vbtyp_n = 'O' AND vbtyp_v = 'T'. IF sy-subrc = 0. CLEAR: gs_facturas. SELECT SINGLE xblnr INTO gs_facturas-xblnr FROM vbrk WHERE vbeln = gs_vbfa_aux-vbeln. IF sy-subrc = 0. gs_detalle-serie = gs_facturas-xblnr. ELSE. CLEAR gs_detalle-serie. ENDIF. ELSE. CLEAR gs_detalle-serie. ENDIF. ELSE. CLEAR gs_detalle-serie. ENDIF. ENDIF. "add +@ERQ251013 "Entradas y Salidas IF gs_mseg_aux1-shkzg = 'S'. gs_detalle-cant_in = gs_mseg_aux1-menge. CATCH SYSTEM-EXCEPTIONS arithmetic_errors = 5. gs_detalle-cosu_in = gs_mseg_aux1-dmbtr / gs_mseg_aux1-menge . ENDCATCH. IF sy-subrc = 5. gs_detalle-cosu_in = '0.00'. ENDIF. gs_detalle-cost_in = gs_mseg_aux1-dmbtr. ELSEIF gs_mseg_aux1-shkzg = 'H'. gs_detalle-cant_out = gs_mseg_aux1-menge. CATCH SYSTEM-EXCEPTIONS arithmetic_errors = 5. gs_detalle-cosu_out = gs_mseg_aux1-dmbtr / gs_mseg_aux1-menge. ENDCATCH. IF sy-subrc = 5. gs_detalle-cosu_out = '0.00'. ENDIF. gs_detalle-cost_out = gs_mseg_aux1-dmbtr. ENDIF. "Saldo Final gs_detalle-cant_tot = gs_detalle-cant_tot + gs_detalle-cant_in - gs_detalle-cant_out. gs_detalle-cost_fin = gs_detalle-cost_fin + gs_detalle-cost_in - gs_detalle-cost_out. CATCH SYSTEM-EXCEPTIONS arithmetic_errors = 5. gs_detalle-cosu_fin = gs_detalle-cost_fin / gs_detalle-cant_tot. ENDCATCH. IF sy-subrc = 5. gs_detalle-cosu_fin = '0.00'. ENDIF. APPEND gs_detalle TO gtd_detalle. ENDLOOP. LOOP AT gtd_bsim_aux ASSIGNING WHERE bwkey = -bwkey AND matnr = -matnr. CLEAR: gs_detalle. gs_detalle-werks = -bwkey. "Centro gs_detalle-matnr = -matnr. "Material gs_detalle-fecha = -budat. "Fecha gs_detalle-mblnr = space. "N Logistica = N de documento de material gs_detalle-mblnrori = -belnr. "N Contab = N de documento contable gs_detalle-ztipo_comp = space. "Tipo READ TABLE gtd_bkpf2_aux ASSIGNING WITH KEY bukrs = p_bukrs belnr = -belnr gjahr = -gjahr. IF sy-subrc = 0. gs_detalle-serie = -xblnr. "N SUNAT = Serie gs_detalle-cpudt = -cpudt. gs_detalle-cputm = -cputm. ENDIF. gs_detalle-ztipo_ope = '99'. "Tipo de operacion "Entradas y Salidas IF -shkzg = 'S'. gs_detalle-cost_in = -dmbtr. ELSEIF -shkzg = 'H'. gs_detalle-cost_out = -dmbtr. ENDIF. gs_detalle-cost_fin = gs_detalle-cost_in - gs_detalle-cost_out. APPEND gs_detalle TO gtd_detalle. ENDLOOP. LOOP AT gtd_ajuste INTO gs_ajuste WHERE werks = -bwkey AND matnr = -matnr. gs_detalle-werks = gs_ajuste-werks. "Centro gs_detalle-matnr = gs_ajuste-matnr. "Material gs_detalle-fecha = gv_ff. "Fecha gs_detalle-mblnr = space. "N Logistica = N de documento de material gs_detalle-mblnrori = gs_ajuste-belnr. "N Contab = N de documento contable gs_detalle-ztipo_comp = space. "Tipo gs_detalle-serie = space. gs_detalle-ztipo_ope = '99'. "Tipo de Operacion SUNAT "Entradas, Salidas y Saldo Final gs_detalle-cost_in = gs_ajuste-dmbtrs. gs_detalle-cost_out = gs_ajuste-dmbtrh. gs_detalle-cost_fin = gs_detalle-cost_in - gs_detalle-cost_out. APPEND gs_detalle TO gtd_detalle. ENDLOOP. ENDLOOP.* Se eliminan los materiales que no tengan saldo inicial y movimiento SORT gtd_cabec ASCENDING BY werks matnr.* SORT gtd_detalle ASCENDING BY werks matnr mblnrori. "/@MCT100811 Ordenamiento antiguo: werks matnr fecha mblnr* SORT gtd_detalle ASCENDING BY werks ASCENDING matnr ASCENDING fecha ASCENDING mblnrori DESCENDING. "/@MCT020113 Ordenamiento antiguo: werks matnr mblnrori******** REFRESH: gtd_det_aux.* gtd_det_aux[] = gtd_detalle[].* DELETE gtd_det_aux WHERE serie IS INITIAL* AND mblnrori IS NOT INITIAL.******* SORT gtd_detalle ASCENDING BY werks matnr fecha cpudt cputm. CLEAR: gs_cabec, gs_detalle, gv_ind, gv_cant. DESCRIBE TABLE gtd_detalle LINES gv_cant. LOOP AT gtd_detalle INTO gs_detalle. CLEAR: gv_indaux. gv_ind = sy-tabix. IF gv_ind = gv_cant. "Cuando solo hay un registro o cuando sea el ultimo registro IF gs_detalle-ztipo_ope = '16' AND gs_detalle-cant_in = 0 AND gs_detalle-cosu_in = 0 AND gs_detalle-cost_in = 0 AND gs_detalle-cant_out = 0 AND gs_detalle-cosu_out = 0 AND gs_detalle-cost_out = 0. "Sin saldo inicial DELETE gtd_detalle INDEX gv_ind. "Se borra del detalle READ TABLE gtd_cabec INTO gs_cabec WITH KEY werks = gs_detalle-werks matnr = gs_detalle-matnr. IF sy-subrc = 0. DELETE gtd_cabec INDEX sy-tabix. " Se borra de la cabecera ENDIF. ENDIF. ELSEIF gs_detalle-ztipo_ope = '16' AND gs_detalle-cant_in = 0 AND gs_detalle-cosu_in = 0 AND gs_detalle-cost_in = 0 AND gs_detalle-cant_out = 0 AND gs_detalle-cosu_out = 0 AND gs_detalle-cost_out = 0. "Sin saldo inicial gv_indaux = gv_ind + 1. READ TABLE gtd_detalle INTO gs_detaux INDEX gv_indaux. "En el siguiente registro IF sy-subrc = 0. IF gs_detaux-ztipo_ope = '16'. "Si es saldo inicial (de otro material) DELETE gtd_detalle INDEX gv_ind. "Se borra del detalle READ TABLE gtd_cabec INTO gs_cabec WITH KEY werks = gs_detalle-werks matnr = gs_detalle-matnr. IF sy-subrc = 0. DELETE gtd_cabec INDEX sy-tabix. "Se borra de la cabecera ENDIF. ENDIF. ENDIF. ENDIF.*/.. 13.02.2015* MODIFY gtd_detalle INDEX gv_ind FROM gs_detalle. ENDLOOP.*LOOP AT gtd_detalle ASSIGNING .* w_pos = sy-tabix.**/.. ADD SERIE - @HVLL22122014KARDEX* IF -serie = '' OR -serie IS INITIAL.* IF NOT gtd_detalle-mblnr IS INITIAL.* CLEAR W_XBLNR.* SELECT SINGLE XBLNR INTO W_XBLNR* FROM MKPF* WHERE MBLNR = -mblnr* AND MJAHR = -FECHA(4).* IF SY-SUBRC = 0.* CLEAR W_VBELN.* SELECT SINGLE VBELN INTO W_VBELN* FROM VBFA* WHERE VBELV = W_XBLNR* AND VBTYP_N = 'M'.* IF SY-SUBRC = 0.* CLEAR W_REFE.* SELECT SINGLE XBLNR INTO W_REFE* FROM VBRK* WHERE VBELN = W_VBELN.* IF SY-SUBRC = 0.* -serie = W_REFE.* ELSE.* ENDIF.* ELSE.* -serie = W_XBLNR.* ENDIF.* ELSE.* ENDIF.* ELSEIF NOT -mblnrori IS INITIAL AND -mblnr IS INITIAL.* CLEAR W_XBLPF.* SELECT SINGLE XBLNR INTO W_XBLPF* FROM BKPF* WHERE BUKRS = P_BUKRS* AND BELNR = -mblnrori* AND GJAHR = -FECHA(4).* IF SY-SUBRC = 0.* -serie = W_XBLPF.* ELSE.* ENDIF.* ENDIF.* ELSE.* ENDIF.* MODIFY gtd_detalle INDEX w_pos FROM .* ENDLOOP.* Se eliminan los centros que no tienen materiales gtd_cabaux = gtd_cabec. DELETE ADJACENT DUPLICATES FROM gtd_cabaux COMPARING werks. CLEAR: gv_ind, gs_t001k. LOOP AT gtd_t001k INTO gs_t001k. gv_ind = sy-tabix. READ TABLE gtd_cabaux INTO gs_cabec WITH KEY werks = gs_t001k-bwkey. IF sy-subrc NE 0. DELETE gtd_t001k INDEX gv_ind. ENDIF. ENDLOOP. REFRESH: gtd_cabaux.* Kardex Precio del promedio ponderado IF p_karppp EQ 'X'. SELECT ckmlhd~kalnr ckmlhd~matnr ckmlhd~bwkey ckmlcr~bdatj ckmlcr~poper ckmlpp~lbkum ckmlcr~pvprs ckmlcr~salkv ckmlpp~umkumo ckmlpp~abkumo ckmlpp~zukumo* ckmlcr~poper ckmlcr~pvprs ckmlcr~salkv INTO TABLE gtd_kardex_ppp FROM ckmlhd INNER JOIN ckmlcr ON ckmlcr~kalnr EQ ckmlhd~kalnr INNER JOIN ckmlpp ON ckmlpp~kalnr EQ ckmlcr~kalnr AND ckmlpp~bdatj EQ ckmlcr~bdatj AND ckmlpp~poper EQ ckmlcr~poper WHERE ckmlhd~matnr IN p_matnr AND ckmlhd~bwkey IN p_werks AND ckmlcr~bdatj EQ p_gjahr AND ckmlcr~poper EQ p_monat AND ckmlcr~curtp EQ '10'. LOOP AT gtd_detalle ASSIGNING . READ TABLE gtd_kardex_ppp ASSIGNING WITH TABLE KEY matnr = -matnr bwkey = -werks. IF sy-subrc EQ 0. IF -salkv EQ space. -cosu_in = -pvprs. -cost_in = -cant_in * -pvprs. -cosu_out = -pvprs. -cost_out = -cant_in * -pvprs. ELSE.* -cosu_in = -salkv / -lbkum.* -cost_in = -cant_in * ( -salkv / -lbkum ).* -cosu_out = -salkv / -lbkum.* -cost_out = -cant_out * ( -salkv / -lbkum ). IF -ztipo_ope NE '16'. -cosu_in = -salkv / -zukumo. -cost_in = -cant_in * ( -salkv / -zukumo ). -cosu_out = -salkv / -lbkum. -cost_out = -cant_out * ( -salkv / -lbkum ). ENDIF. ENDIF. ENDIF. IF -cant_in EQ 0. -cosu_in = 0. ENDIF. IF -cant_out EQ 0. -cosu_out = 0. ENDIF. AT NEW matnr.* -cant_tot = -cant_in - -cant_out. -cost_fin = -cost_in - -cost_out. IF -cant_tot NE 0. -cosu_fin = -cost_fin / -cant_tot. ELSE. -cosu_fin = 0. ENDIF.* gv_cant_ant = -cant_tot. gv_cost_ant = -cost_fin. CONTINUE. ENDAT.* -cant_tot = gv_cant_ant + -cant_in - -cant_out. -cost_fin = gv_cost_ant + -cost_in - -cost_out. IF -cant_tot NE 0. -cosu_fin = -cost_fin / -cant_tot. ELSE. -cosu_fin = 0. ENDIF.* gv_cant_ant = -cant_tot. gv_cost_ant = -cost_fin.* AT END OF matnr. CLEAR: gv_cant_ant, gv_cost_ant. ENDAT. ENDLOOP. ENDIF.*/..* LOOP AT gtd_detalle ASSIGNING .* N_POS = SY-TABIX.**/.. ADD SERIE - @HVLL22122014KARDEX* IF -serie = '' OR -serie IS INITIAL.* IF NOT -mblnr IS INITIAL.* CLEAR W_XBLNR.* SELECT SINGLE XBLNR INTO W_XBLNR* FROM MKPF* WHERE MBLNR = -mblnr* AND MJAHR = -FECHA(4).* IF SY-SUBRC = 0.* CLEAR W_VBELN.* SELECT SINGLE VBELN INTO W_VBELN* FROM VBFA* WHERE VBELV = W_XBLNR* AND VBTYP_N = 'M'.* IF SY-SUBRC = 0.* CLEAR W_REFE.* SELECT SINGLE XBLNR INTO W_REFE* FROM VBRK* WHERE VBELN = W_VBELN.* IF SY-SUBRC = 0.* -serie = W_REFE.* ELSE.* ENDIF.* ELSE.* -serie = W_XBLNR.* ENDIF.* ELSE.* ENDIF.* ELSEIF NOT -mblnrori IS INITIAL AND -mblnr IS INITIAL.* CLEAR W_XBLPF.* SELECT SINGLE XBLNR INTO W_XBLPF* FROM BKPF* WHERE BUKRS = P_BUKRS* AND BELNR = -mblnrori* AND GJAHR = -FECHA(4).* IF SY-SUBRC = 0.* -serie = W_XBLPF.* ELSE.* ENDIF.* ENDIF.* ELSE.* ENDIF.* MODIFY gtd_detalle INDEX N_POS FROM .* ENDLOOP.ENDFORM. " CARGAR_DATOS*&---------------------------------------------------------------------**& FORM SALIDA_DET*&---------------------------------------------------------------------*FORM salida_det . CLEAR: gv_matnr, gs_t001k, gs_cabec, gs_detalle. CLEAR: gv_costsalini_soc, "Suma Saldo Inicial x Sociedad gv_costin_soc, "Suma Costo Entrada x Sociedad gv_costout_soc, "Suma Costo Salida x Sociedad gv_costfin_soc. "Suma Saldo Final x Sociedad CLEAR: gv_cantsalini_soc, "Suma Saldo Inicial Cantidad x Sociedad gv_cantin_soc, "Suma Cantidad Entrada x Sociedad gv_cantout_soc, "Suma Cantidad Salida x Sociedad gv_cantfin_soc. "Suma Saldo Final Cantidad x Sociedad LOOP AT gtd_t001k INTO gs_t001k. CLEAR: gv_costsalini_cen, "Suma Saldo Inicial x Centro gv_costin_cen, "Suma Costo Entrada x Centro gv_costout_cen, "Suma Costo Salida x Centro gv_costfin_cen. "Suma Saldo Final x Centro CLEAR: gv_cantsalini_cen, "Suma Saldo Inicial Cantidad x Centro gv_cantin_cen, "Suma Cantidad Entrada x Centro gv_cantout_cen, "Suma Cantidad Salida x Centro gv_cantfin_cen. "Suma Saldo Final Cantidad x Centro LOOP AT gtd_cabec INTO gs_cabec WHERE werks = gs_t001k-bwkey. CLEAR: gv_cantin_mat, "Suma Cantidad Entrada x Material gv_costin_mat, "Suma Costo Entrada x Material gv_cantout_mat, "Suma Cantidad Salida x Material gv_costout_mat, "Suma Costo Salida x Material gv_cantfin_mat, "Suma Cantidad Final x Material gv_costfin_mat, "Suma Saldo Final x Material gv_acum_cantfin_mat, "Acumulador Cantidad Final x Material gv_acum_cosufin_mat, "Costo Unitario Final x Material "Acumulado" gv_acum_costfin_mat. "Acumulador Costo Final x Material PERFORM cabecera_material. IF p_karva = 'X' OR p_karppp EQ 'X'. LOOP AT gtd_detalle INTO gs_detalle WHERE werks = gs_cabec-werks AND matnr = gs_cabec-matnr. WRITE : /1 sy-vline. IF gs_detalle-fecha NE '00000000'. WRITE : 2 gs_detalle-fecha. ENDIF. IF p_karppp EQ 'X'. gv_acum_cantfin_mat = gv_acum_cantfin_mat + gs_detalle-cant_tot. gv_acum_costfin_mat = gs_detalle-cost_fin. ELSE. gv_acum_cantfin_mat = gv_acum_cantfin_mat + gs_detalle-cant_tot. gv_acum_costfin_mat = gv_acum_costfin_mat + gs_detalle-cost_fin. ENDIF. CATCH SYSTEM-EXCEPTIONS arithmetic_errors = 5. gv_acum_cosufin_mat = gv_acum_costfin_mat / gv_acum_cantfin_mat. ENDCATCH. IF sy-subrc = 5. gv_acum_cosufin_mat = '0.00'. ENDIF. WRITE : 12 sy-vline, 13 gs_detalle-serie, 29 sy-vline, 30 gs_detalle-mblnr, 41 sy-vline, 42 gs_detalle-mblnrori, 53 sy-vline,* 13 gs_detalle-ztipo_comp, 25 sy-vline,* 26 gs_detalle-serie, 42 sy-vline,* 43 gs_detalle-mblnr, 53 sy-vline, 54 gs_detalle-ztipo_ope, 64 sy-vline, 65 gs_detalle-cant_in, 81 sy-vline, 82 gs_detalle-cosu_in, 98 sy-vline, 99 gs_detalle-cost_in, 115 sy-vline, 116 gs_detalle-cant_out, 132 sy-vline, 133 gs_detalle-cosu_out, 149 sy-vline, 150 gs_detalle-cost_out, 166 sy-vline, 167 gv_acum_cantfin_mat, 183 sy-vline, 184 gv_acum_cosufin_mat, 200 sy-vline, 201 gv_acum_costfin_mat, 217 sy-vline. gv_cantin_mat = gv_cantin_mat + gs_detalle-cant_in. "Suma Cantidad Entrada x Material gv_costin_mat = gv_costin_mat + gs_detalle-cost_in. "Suma Costo Entrada x Material gv_cantout_mat = gv_cantout_mat + gs_detalle-cant_out. "Suma Cantidad Salida x Material gv_costout_mat = gv_costout_mat + gs_detalle-cost_out. "Suma Costo Salida x Material gv_cantfin_mat = gv_cantfin_mat + gs_detalle-cant_tot. "Suma Cantidad Final x Material gv_costfin_mat = gv_costfin_mat + gs_detalle-cost_fin. "Suma Saldo Final x Material IF gs_detalle-ztipo_ope = '16'. gv_costsalini_cen = gv_costsalini_cen + gs_detalle-cost_in. "Suma Saldo Inicial x Centro ELSE. gv_costin_cen = gv_costin_cen + gs_detalle-cost_in. "Suma Costo Entrada x Centro ENDIF. ENDLOOP. ELSEIF p_karun = 'X'. LOOP AT gtd_detalle INTO gs_detalle WHERE werks = gs_cabec-werks AND matnr = gs_cabec-matnr. gv_acum_cantfin_mat = gv_acum_cantfin_mat + gs_detalle-cant_tot. WRITE : /1 sy-vline, 2 gs_detalle-fecha, 12 sy-vline, 13 gs_detalle-serie, 29 sy-vline, 30 gs_detalle-mblnr, 41 sy-vline, 42 gs_detalle-mblnrori, 53 sy-vline,* 13 gs_detalle-ztipo_comp, 25 sy-vline,* 26 gs_detalle-serie, 42 sy-vline,* 43 gs_detalle-mblnr, 53 sy-vline, 54 gs_detalle-ztipo_ope, 64 sy-vline, 65 gs_detalle-cant_in, 81 sy-vline, 82 gs_detalle-cant_out, 98 sy-vline, 99 gv_acum_cantfin_mat, 115 sy-vline. gv_cantin_mat = gv_cantin_mat + gs_detalle-cant_in. "Suma Cantidad Entrada x Material gv_cantout_mat = gv_cantout_mat + gs_detalle-cant_out. "Suma Cantidad Salida x Material gv_cantfin_mat = gv_cantfin_mat + gs_detalle-cant_tot. "Suma Cantidad Final x Material IF gs_detalle-ztipo_ope = '16'. gv_cantsalini_cen = gv_cantsalini_cen + gs_detalle-cant_in. "Suma Saldo Inicial Cantidad x Centro ELSE. gv_cantin_cen = gv_cantin_cen + gs_detalle-cant_in. "Suma Cantidad Entrada x Centro ENDIF. ENDLOOP. ENDIF. IF p_karva EQ 'X' OR p_karppp EQ 'X'. WRITE : /1 sy-vline, 217 sy-vline. ULINE AT 2(215). ELSEIF p_karun EQ 'X'. WRITE : /1 sy-vline, 115 sy-vline. ULINE AT 2(113). ENDIF. IF p_karva EQ 'X' OR p_karppp EQ 'X'. WRITE: /64 sy-vline, 217 sy-vline. ULINE AT 64(153). IF p_karppp EQ 'X'. gv_costfin_mat = gv_costin_mat - gv_costout_mat. ENDIF. WRITE: /49 'TOTAL MATERIAL', 64 sy-vline, 65 gv_cantin_mat, 81 sy-vline, 82 ' ' COLOR COL_KEY, 98 sy-vline, 99 gv_costin_mat, 115 sy-vline, 116 gv_cantout_mat, 132 sy-vline, 133 ' ' COLOR COL_KEY, 149 sy-vline, 150 gv_costout_mat, 166 sy-vline, 167 gv_cantfin_mat, 183 sy-vline, 184 ' ' COLOR COL_KEY, 200 sy-vline, 201 gv_costfin_mat, 217 sy-vline. WRITE: /64 sy-vline, 217 sy-vline. ULINE AT 64(153). gv_costout_cen = gv_costout_cen + gv_costout_mat. "Suma Costo Salida x Centro gv_costfin_cen = gv_costfin_cen + gv_costfin_mat. "Suma Saldo Final x Material ELSEIF p_karun EQ 'X'. WRITE: /64 sy-vline, 115 sy-vline. ULINE AT 64(51). WRITE: /49 'TOTAL MATERIAL', 64 sy-vline, 65 gv_cantin_mat, 81 sy-vline, 82 gv_cantout_mat, 98 sy-vline, 99 gv_cantfin_mat, 115 sy-vline. WRITE: /64 sy-vline, 115 sy-vline. ULINE AT 64(51). gv_cantout_cen = gv_cantout_cen + gv_cantout_mat. "Suma Cantidad Salida x Centro gv_cantfin_cen = gv_cantfin_cen + gv_cantfin_mat. "Suma Saldo Final Cantidad x Material ENDIF. IF sy-linno > 43. NEW-PAGE. ELSE. SKIP 1. ENDIF. ENDLOOP. IF p_karva = 'X' OR p_karppp EQ 'X'. WRITE: /64 sy-vline, 132 sy-vline. ULINE AT 65(68). WRITE: /49 'TOTAL CENTRO', 64 sy-vline, 65 'SALDO INICIAL', 81 sy-vline, 82 'ENTRADAS', 98 sy-vline, 99 'SALIDAS' , 115 sy-vline, 116 'SALDO FINAL', 132 sy-vline. WRITE: /64 sy-vline, 132 sy-vline. ULINE AT 65(68). WRITE: /64 sy-vline, 65 gv_costsalini_cen, 81 sy-vline, 82 gv_costin_cen, 98 sy-vline, 99 gv_costout_cen, 115 sy-vline, 116 gv_costfin_cen, 132 sy-vline. WRITE: /64 sy-vline, 132 sy-vline. ULINE AT 65(68). gv_costsalini_soc = gv_costsalini_soc + gv_costsalini_cen. "Suma Saldo Inicial x Sociedad gv_costin_soc = gv_costin_soc + gv_costin_cen. "Suma Costo Entrada x Sociedad gv_costout_soc = gv_costout_soc + gv_costout_cen. "Suma Costo Salida x Sociedad gv_costfin_soc = gv_costfin_soc + gv_costfin_cen. "Suma Saldo Final x Sociedad ELSE. WRITE: /64 sy-vline, 132 sy-vline. ULINE AT 65(68). WRITE: /49 'TOTAL CENTRO', 64 sy-vline, 65 'SALDO INICIAL', 81 sy-vline, 82 'ENTRADAS', 98 sy-vline, 99 'SALIDAS' , 115 sy-vline, 116 'SALDO FINAL', 132 sy-vline. WRITE: /64 sy-vline, 132 sy-vline. ULINE AT 65(68). WRITE: /64 sy-vline, 65 gv_cantsalini_cen, 81 sy-vline, 82 gv_cantin_cen, 98 sy-vline, 99 gv_cantout_cen, 115 sy-vline, 116 gv_cantfin_cen, 132 sy-vline. WRITE: /64 sy-vline, 132 sy-vline. ULINE AT 65(68). gv_cantsalini_soc = gv_cantsalini_soc + gv_cantsalini_cen. "Suma Saldo Inicial Cantidad x Sociedad gv_cantin_soc = gv_cantin_soc + gv_cantin_cen. "Suma Cantidad Entrada x Sociedad gv_cantout_soc = gv_cantout_soc + gv_cantout_cen. "Suma Cantidad Salida x Sociedad gv_cantfin_soc = gv_cantfin_soc + gv_cantfin_cen. "Suma Saldo Final Cantidad x Sociedad ENDIF. NEW-PAGE. ENDLOOP. IF p_karva = 'X' OR p_karppp EQ 'X'. CLEAR: gs_cabec-estab. NEW-PAGE. SKIP 2. WRITE: /64 sy-vline, 132 sy-vline. ULINE AT 65(68). WRITE: /49 'TOTAL FINAL', 64 sy-vline, 65 'SALDO INICIAL', 81 sy-vline, 82 'ENTRADAS', 98 sy-vline, 99 'SALIDAS' , 115 sy-vline, 116 'SALDO FINAL', 132 sy-vline. WRITE: /64 sy-vline, 132 sy-vline. ULINE AT 65(68). WRITE: /64 sy-vline, 65 gv_costsalini_soc, 81 sy-vline, 82 gv_costin_soc, 98 sy-vline, 99 gv_costout_soc, 115 sy-vline, 116 gv_costfin_soc, 132 sy-vline. WRITE: /64 sy-vline, 132 sy-vline. ULINE AT 65(68). ELSE. CLEAR: gs_cabec-estab. NEW-PAGE. SKIP 2. WRITE: /64 sy-vline, 132 sy-vline. ULINE AT 65(68). WRITE: /49 'TOTAL FINAL', 64 sy-vline, 65 'SALDO INICIAL', 81 sy-vline, 82 'ENTRADAS', 98 sy-vline, 99 'SALIDAS' , 115 sy-vline, 116 'SALDO FINAL', 132 sy-vline. WRITE: /64 sy-vline, 132 sy-vline. ULINE AT 65(68). WRITE: /64 sy-vline, 65 gv_cantsalini_soc, 81 sy-vline, 82 gv_cantin_soc, 98 sy-vline, 99 gv_cantout_soc, 115 sy-vline, 116 gv_cantfin_soc, 132 sy-vline. WRITE: /64 sy-vline, 132 sy-vline. ULINE AT 65(68). ENDIF.ENDFORM. " SALIDA_DET*&---------------------------------------------------------------------**& FORM CABECERA_MATERIAL*&---------------------------------------------------------------------*FORM cabecera_material . CLEAR: gv_txtun. CONCATENATE gs_cabec-zundmed '-' gs_cabec-textum INTO gv_txtun SEPARATED BY space. "Und. de Medida SUNAT + Texto Und. de Medida* Lnea del Material WRITE: /2 'NMAT.:', gs_cabec-matnr, AT 25 'DESCRIP.:', gs_cabec-maktx, AT 82 'TIPO:', gs_cabec-tipo_mat, AT 122 'UND.MED.:', gv_txtun, AT 162 'MET.VAL:', gs_cabec-met_val.* Ttulo de columnas IF p_karva = 'X' OR p_karppp EQ 'X'. WRITE : /1 sy-vline, 217 sy-vline. ULINE AT 2(215). WRITE : /1 sy-vline, 2 ' DOCUMENTO INTERNO