Está en la página 1de 28

*& --------------------------------------------------------------------*& PROGRAMA

: ZMMP0087
*& --------------------------------------------------------------------*& OBJETIVO
: BAJA Y ALTA A MATERIALES SEGUN TABLA MARD
*& AUTOR
: JHONATAN MEJIA GARCIA
*& FECHA CREACIN
: 11.02.2013
*& TRANSACCIN
: ZMM087
*&---------------------------------------------------------------------*
*& LOG DE MODIFICACIONES
*&---------------------------------------------------------------------*
*& ID AUTHOR
DATE
DESCRIPTION
*& --- -------------- -------- -------------------------------------*
*& @01 FSEMINARIO
06.10.2015 CAMBIOS EN LA ESTRUCTURA
*&---------------------------------------------------------------------*
REPORT ZMMP0087.
TABLES MARD.
TABLES BKPF.
TABLES ZFI_BAJA_MATNR.
*&---------------------------------------------------------------------*
*&
ESTRUCTURAS
*&---------------------------------------------------------------------*
* ESTRUCTURA PARA VISUALIZAR LOS MATERIALES A PROCESAR
DATA: BEGIN OF E_CURSOR2,
CHECK(01),
NRCOR(06),
"01 CORRELATIVO
BLDAT(10),
" FEC.EMISION
BUDAT(10),
" FEC.CONTABI
WERKS(04),
" CENTRO
LGORT(04),
"05 ALMACEN
BWART(03),
" CLASE MOV
MATNR(18),
" MATERIAL
MAKTX(40),
" DESCRIPCION MATERIAL
LABST(13),
" CANTIDAD (ERFMG)
VALOR(13),
" VALOR DE LA CANTIDAD
MEINS(03),
"10 UND MEDIDA (ERFME)
KOSTL(10),
" CENTRO DE COSTO - DOC MATERIAL DADO DE BAJA
BKTXT(20),
" TEXTO CABECERA
MBLNR(10),
" DOCUMENTO DE MATERIAL (CUANDO FUE DADO DE BAJA)
KONTH(10),
TXT50(50),

"
"

CUENTA MAYOR ENTRADA


DESCRIPCION DE CUENTA DE MAYOR

KONT2(10),
TXT52(50),
BELNR(10),

"
"
"

CUENTA MAYOR SALIDA


DESCRIPCION DE CUENTA DE MAYOR
DOCUMENTO CONTABLE GENERADO AL DAR DE BAJA @FR

ANK
MONAT LIKE BKPF-MONAT,
ESTADO(1),
USNAM(12),
END OF E_CURSOR2.
* PARA ALMACENAR LOS CENTROS DE UNA SOCIEDAD
DATA: BEGIN OF E_WERKS,
WERKS LIKE T001W-WERKS,
END OF E_WERKS.
* Filtro cat valoracion PAO%
DATA: PAO(4) TYPE C.

PAO = 'PAO%'.
*&---------------------------------------------------------------------*
*&
VARIABLES GLOBALES
*&---------------------------------------------------------------------*
DATA: GT_SHWLOG LIKE STANDARD TABLE OF E_CURSOR2 WITH HEADER LINE,
**SHWLOG ALTA, TABLA DE MATERIALES DADO DE ALTA.
GT_SHWLOGALTA LIKE STANDARD TABLE OF E_CURSOR2 WITH HEADER LINE,
GT_WERKS LIKE STANDARD TABLE OF E_WERKS,
GT_EXCLUDE TYPE UI_FUNCTIONS,
" BOTONES A EXCLUIR DEL TO
OLBAR
G_FILE
LIKE RLGRAP-FILENAME,
" RUTA DEL TXT
G_VALIDA TYPE C VALUE 'S',
" VALIDA SI SE INGRESARON
TODOS LOS PARAMETROS
BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
" PROCESO BI
T_MBEW LIKE STANDARD TABLE OF MBEW WITH HEADER LINE,
W_CORRE(6) TYPE N,
" CORRELATIVO
P_ESTADO TYPE CHAR1.
"BAJA O ALTA DE ACTIVO
DATA: I_MENSAJE TYPE CHAR50.
*&---------------------------------------------------------------------*
*&
PARAMETROS
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK B00 WITH FRAME TITLE TEXT-001.
PARAMETERS:
R_BAJA RADIOBUTTON GROUP 000 USER-COMMAND U01 DEFAULT 'X',
R_ALTA RADIOBUTTON GROUP 000,
R_BAJAH RADIOBUTTON GROUP 000,
R_ALTAH RADIOBUTTON GROUP 000.
SELECTION-SCREEN END OF BLOCK B00.
SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-000.
SELECT-OPTIONS: S_WERKS FOR MARD-WERKS,
" CENTRO
S_MATNR FOR MARD-MATNR,
S_ANO FOR BKPF-GJAHR MODIF ID RPT,
S_MES FOR BKPF-MONAT MODIF ID RPT.
SELECTION-SCREEN END OF BLOCK B01.
SELECTION-SCREEN BEGIN OF BLOCK B02 WITH FRAME TITLE TEXT-002.
PARAMETERS:
P_KOSTL LIKE BSEG-KOSTL OBLIGATORY DEFAULT '0033040605' MODIF ID
RPP,
"CECO COMPRAS"
*
P_BUDAT LIKE BSID-BUDAT OBLIGATORY DEFAULT SY-DATUM.
" FECHA CONTAB.
P_BUDAT LIKE BSID-BUDAT MODIF ID RPP.
" FECH
A CONTAB.
SELECTION-SCREEN END OF BLOCK B02.
PARAMETERS:
MODO BI

P_BI

TYPE BMODE_BTCI DEFAULT 'N',

P_PAO

AS CHECKBOX DEFAULT 'X' MODIF ID RPP.

*&---------------------------------------------------------------------*
*&
DYNPRO
*&---------------------------------------------------------------------*
CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED.
DATA: OK_CODE

LIKE SY-UCOMM,

"

"VARIABLES PARA EL ALV


GS_LAYOUT
TYPE LVC_S_LAYO,
GT_FIELDCAT
TYPE LVC_T_FCAT,
CUSTOM_CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
CUSTOM_CONTAINER2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
EVENT_RECEIVER

TYPE REF TO LCL_EVENT_RECEIVER,

GRID1
GRID2

TYPE REF TO CL_GUI_ALV_GRID,


TYPE REF TO CL_GUI_ALV_GRID.

* LOCAL CLASSES: DEFINITION


**********************************************************************
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS: HANDLE_TOOLBAR
FOR EVENT TOOLBAR
OF CL_GUI_ALV_GRID
IMPORTING E_OBJECT
E_INTERACTIVE.
METHODS: HANDLE_USER_COMMAND
FOR EVENT USER_COMMAND
OF CL_GUI_ALV_GRID
IMPORTING E_UCOMM.
PRIVATE SECTION.
ENDCLASS.

"LCL_EVENT_RECEIVER DEFINITION

* LOCAL CLASSES: IMPLEMENTATION


****************************************************************
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_TOOLBAR.
DATA: LS_TOOLBAR TYPE STB_BUTTON.
CLEAR LS_TOOLBAR.
MOVE 3 TO LS_TOOLBAR-BUTN_TYPE.
APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
*CHECK R_BAJAH IS INITIAL AND R_ALTAH IS INITIAL.
IF R_BAJAH NE 'X' AND R_ALTAH NE 'X'.
CLEAR LS_TOOLBAR.
MOVE 'PROCESAR' TO LS_TOOLBAR-FUNCTION.
MOVE ICON_EXECUTE_OBJECT TO LS_TOOLBAR-ICON.
MOVE 'PROCESAR' TO LS_TOOLBAR-QUICKINFO.
MOVE 'PROCESAR' TO LS_TOOLBAR-TEXT.
MOVE ' ' TO LS_TOOLBAR-DISABLED.
APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
ENDIF.
CLEAR LS_TOOLBAR.
MOVE 'MARCAR'
MOVE ICON_SELECT_ALL
MOVE 'MARCAR'
APPEND LS_TOOLBAR
CLEAR LS_TOOLBAR.

TO
TO
TO
TO

LS_TOOLBAR-FUNCTION.
LS_TOOLBAR-ICON.
LS_TOOLBAR-QUICKINFO.
E_OBJECT->MT_TOOLBAR.

MOVE 'DESMARCAR'
MOVE ICON_DESELECT_ALL
MOVE 'DESMARCAR'
APPEND LS_TOOLBAR
ENDMETHOD.

TO
TO
TO
TO

LS_TOOLBAR-FUNCTION.
LS_TOOLBAR-ICON.
LS_TOOLBAR-QUICKINFO.
E_OBJECT->MT_TOOLBAR.
"HANDLE_TOOLBAR

METHOD HANDLE_USER_COMMAND.
DATA: LT_ROWS TYPE LVC_T_ROW.
DATA: LF_ANSWR TYPE C.
CASE E_UCOMM.
WHEN 'PROCESAR'.
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
*
DEFAULTOPTION = 'N'
DEFAULTOPTION = 'Y'
TEXTLINE1
= ' SE PROCESARAN LOS MATERIALES MARCADOS, DESEA CONTI
NUAR ?'
TITEL
= 'BAJA - ALTA DE MATERIALES'
CANCEL_DISPLAY = 'X'
IMPORTING
ANSWER
= LF_ANSWR.
IF LF_ANSWR EQ 'J'.
PERFORM GENERAR_ASIENTO.
ENDIF.
WHEN 'MARCAR'.
PERFORM MARCAR_CHBOX USING 'X'.
WHEN 'DESMARCAR'.
PERFORM MARCAR_CHBOX USING ' '.
ENDCASE.
ENDMETHOD.
ENDCLASS.

"HANDLE_USER_COMMAND
"LCL_EVENT_RECEIVER IMPLEMENTATION

**&--------------------------------------------------------------------&*
**
SCREEN OUTPUT.
**&--------------------------------------------------------------------&*
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF R_BAJAH EQ 'X' OR R_ALTAH EQ 'X'.
IF SCREEN-GROUP1 EQ 'RPT'.
SCREEN-ACTIVE = 1.
MODIFY SCREEN.
ELSEIF SCREEN-GROUP1 EQ 'RPP'.
SCREEN-ACTIVE = 0.
MODIFY SCREEN.
ENDIF.
ELSEIF R_BAJA EQ 'X' OR R_ALTA EQ 'X'.
IF SCREEN-GROUP1 EQ 'RPT'.
SCREEN-ACTIVE = 0.
MODIFY SCREEN.
ENDIF.
ENDIF.

ENDLOOP.
**&--------------------------------------------------------------------&*
**
INITIALIZATION.
**&--------------------------------------------------------------------&*
INITIALIZATION.
S_WERKS-LOW = 'AP01'.
S_WERKS-HIGH = 'AP13'.
S_WERKS-SIGN = 'I'.
S_WERKS-OPTION = 'BT'.
APPEND S_WERKS.
* CONCATENATE SY-DATUM+0(4) SY-DATUM+4(2) INTO P_SPMON.
*&=====================================================================*
*&
PROCESO PRINCIPAL
*&=====================================================================*
START-OF-SELECTION.
IF R_BAJA IS NOT INITIAL AND P_BUDAT IS INITIAL.
MESSAGE 'Ingrese Fecha de contabilizacion' TYPE 'E' DISPLAY LIKE 'I'.
SET SCREEN 0.
ELSEIF R_ALTA IS NOT INITIAL AND P_BUDAT IS INITIAL.
MESSAGE 'Ingrese Fecha de contabilizacion' TYPE 'E' DISPLAY LIKE 'I'.
SET SCREEN 0.
ELSE.
CALL SCREEN 100.
ENDIF.
*&---------------------------------------------------------------------*
*&
FORM F2_OBTENER_DATA
*&---------------------------------------------------------------------*
FORM F2_OBTENER_DATA.
DATA:
W_BKTXT(20) TYPE C,
" TEXTO ALMACEN / CENTRO
W_BUDAT(8) TYPE C.
" FECHA DDMMYYYY
IF P_PAO EQ 'X'.
SELECT * FROM MBEW
INTO CORRESPONDING FIELDS OF TABLE T_MBEW
WHERE MATNR IN S_MATNR
AND BWKEY IN S_WERKS
AND LBKUM NE 0
AND SALK3 NE 0
AND BKLAS NOT LIKE PAO
AND BKLAS NE 'ZPAO'
AND BKLAS NE 0
AND LFGJA EQ P_BUDAT+0(4)
AND LFMON EQ P_BUDAT+4(2)
*
AND MBRUE EQ 'X'
*
AND MBRUE EQ ''
AND LVORM NE 'X'.
ELSE.
SELECT * FROM MBEW
INTO CORRESPONDING FIELDS OF TABLE T_MBEW
WHERE MATNR IN S_MATNR
AND BWKEY IN S_WERKS
AND LBKUM NE 0

AND SALK3 NE 0
AND BKLAS LIKE PAO.
*
AND BKLAS NE 0.
ENDIF.
SORT T_MBEW BY BWKEY.
LOOP AT T_MBEW.
GT_SHWLOG-CHECK = 'X'.
GT_SHWLOG-MATNR = T_MBEW-MATNR.
GT_SHWLOG-WERKS = T_MBEW-BWKEY.
*

OBTENIENDO LA DESCRIPCION DEL MATERIAL


PERFORM F_OBT_NAME_MATNR
USING
GT_SHWLOG-MATNR
CHANGING GT_SHWLOG-MAKTX.

OBTENEMOS LA CUENTA MAYOR ENTRADA SEGUN CAT VALORIZACION DEL MATNR


PERFORM F_OBT_KONTH_MATNR USING
T_MBEW-BKLAS 'BSX' ''
CHANGING GT_SHWLOG-KONTH
GT_SHWLOG-TXT50.

OBTENEMOS LA CUENTA MAYOR SALIDA SEGUN CAT VALORIZACION DEL MATNR


PERFORM F_OBT_KONTH_MATNR USING
T_MBEW-BKLAS 'GBB' 'VBR'
CHANGING GT_SHWLOG-KONT2
GT_SHWLOG-TXT52.
CONCATENATE P_BUDAT+6(2) P_BUDAT+4(2) P_BUDAT+0(4)
INTO GT_SHWLOG-BUDAT SEPARATED BY '.'.

GT_SHWLOG-LABST = T_MBEW-LBKUM.
CK ACTUAL
GT_SHWLOG-VALOR = T_MBEW-SALK3.

"<FS_MARD>-LABST.
"STOCK VALORADO

CLEAR GT_SHWLOG-MEINS.
SELECT SINGLE MEINS INTO GT_SHWLOG-MEINS
FROM MARA
WHERE MATNR EQ GT_SHWLOG-MATNR.
APPEND GT_SHWLOG.
ENDLOOP.
**BORRAR LOS MATERIALES QUE NO TIENEN CUENTA DE ENTRADA Y SALIDA.
DELETE GT_SHWLOG
WHERE KONTH EQ 0.
***CIERRE 09-2015
* DELETE GT_SHWLOG
* WHERE KONTH NE 0025240001
* AND KONTH NE 0025300004.
DELETE GT_SHWLOG
WHERE KONT2+2(1) NE '6'.
*ACTUALIZAMOS EL DOCUMENTO FI, PERIODO Y ESTADO.
CLEAR GT_SHWLOG-BELNR.
CLEAR GT_SHWLOG-MONAT.
CLEAR GT_SHWLOG-ESTADO.
LOOP AT GT_SHWLOG.

"STO

*
*
*

*
*

SELECT SINGLE
BELNR
MONAT
ESTADO
FROM ZFI_BAJA_MATNR
INTO (GT_SHWLOG-BELNR, GT_SHWLOG-MONAT, GT_SHWLOG-ESTADO)
WHERE BUKRS EQ '330'
AND
MATNR EQ GT_SHWLOG-MATNR AND
MONAT EQ P_BUDAT+4(2) AND
WERKS EQ GT_SHWLOG-WERKS AND
GJAHR EQ P_BUDAT+0(4)
AND
DMBTR EQ GT_SHWLOG-VALOR AND
MENGE EQ GT_SHWLOG-LABST AND
MEINS EQ GT_SHWLOG-MEINS AND
ESTADO EQ 'B'.
IF SY-SUBRC EQ 0.
MODIFY GT_SHWLOG.
ELSE.
EXIT.
ENDIF.
ENDLOOP.

**BORRAR LOS MATERIALES DADOS DE BAJA EN EL PERIODO.


DELETE GT_SHWLOG
WHERE ESTADO EQ 'B' AND
BUDAT+6(4) EQ P_BUDAT+0(4) AND "AO
MONAT EQ P_BUDAT+4(2).
"MES
**ORDENAR Y CORRER CONTADOR.
SORT GT_SHWLOG BY WERKS ASCENDING LABST DESCENDING.
**LIMPIAR CONTADOR
CLEAR W_CORRE.
LOOP AT GT_SHWLOG.
W_CORRE = W_CORRE + 1.
GT_SHWLOG-NRCOR = W_CORRE.
MODIFY GT_SHWLOG.
ENDLOOP.
ENDFORM.

"F2_OBTENER_DATA

*&---------------------------------------------------------------------*
*&
FORM F3_GENERAR_TXT
*----------------------------------------------------------------------*
FORM F3_GENERAR_TXT.
* PARA GENERAR TXT
DATA: BEGIN OF E_CURSOR,
NRCOR(06),
BLDAT(08),
BUDAT(08),
WERKS(04),
LGORT(04),
BWART(03),
MATNR(18),
LABST(13),
MEINS(03),
KOSTL(10),
BKTXT(20),
END OF E_CURSOR.

"01
"
"
"

CORRELATIVO
FEC.EMISION
FEC.CONTABI
CENTRO

"
"
"
"

CLASE MOV
MATERIAL
CANTIDAD (ERFMG)
UND MEDIDA (ERFME)

"

CABECERA

"05 ALMACEN

"10 CECO

DATA: W_FILE(4)
W_CONT(6)
W_TOTAL
W_TOTBAJ
W_TOTALT
GT_CURSOR

TYPE
TYPE
LIKE
TYPE
TYPE
LIKE

C,
N,
S031-MZUBB,
I,
I,
STANDARD TABLE OF E_CURSOR WITH HEADER LINE.

* CONVIRTIENDO STOCK NEGATIVO A POSITIVO


LOOP AT GT_SHWLOG
WHERE LABST LE 0.
" SI EL STOCK ES NEGATIVO
CLEAR W_TOTAL.
W_TOTAL = GT_SHWLOG-LABST.
W_TOTAL = W_TOTAL * -1.
GT_SHWLOG-LABST = W_TOTAL.
MODIFY GT_SHWLOG.
ENDLOOP.
* SE GENERARAN 2 ARCHIVOS POR CADA CLASE DE MOVIMIENTO ( 2 ALTAS Y 1 BAJAS )
*************************************************************************
* GENERANDO TXT ( MATERIALES A DAR DE BAJA )
*************************************************************************
LOOP AT GT_SHWLOG
WHERE CHECK EQ 'X' AND VALOR GT 0.
" MOVIMIENTOS MAYORES A 0
W_CONT = W_CONT + 1.
MOVE-CORRESPONDING GT_SHWLOG TO GT_CURSOR.
*

SOLO PARA QAS (COMA DECIMAL)


REPLACE ALL OCCURRENCES OF '.' IN GT_CURSOR-LABST WITH ','.
GT_CURSOR-NRCOR = W_CONT.
APPEND GT_CURSOR.
W_TOTBAJ = W_TOTBAJ + 1.

" TOTAL DE MATERIALES A DAR DE BAJA

ENDLOOP.
* SI EXISTEN MATERIALES A DAR DE BAJA
IF W_TOTBAJ GT 0.
CLEAR: G_FILE.
CONCATENATE 'D:\ZMM087\1\BAJA_' SY-DATUM+0(4) SY-DATUM+4(2) SY-DATUM+6(2) '_
' S_WERKS-LOW '_1.TXT'
INTO G_FILE.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = G_FILE
TABLES
DATA_TAB = GT_CURSOR
EXCEPTIONS
OTHERS.
**
*

GENERANDO EL ASIENTO
IF R_BAJA EQ 'X'.

" PRIMERA PARTE

**
**
**
*
*
*
*
*
*
*
*
*

BAJA
==========================================
INVOCAMOS AL PROGRAMA ZMMP0192.
SUBMIT ZMMP0192
WITH P_BUKRS EQ P_BUKRS
"SOCIEDAD
WITH NAME_FIL EQ G_FILE
"PATH FILE
WITH P_TPFIL EQ 'ASC'
"TIPO DE FILE
WITH MODO_BI EQ P_BI
AND RETURN.
ENDIF.
GENERANDO ARCHIVO PARA EL SEGUNDO PASO
CAMBIANDO LA CLASE DE MOVIMIENTO Y CAB.
LOOP AT GT_CURSOR.
IF GT_CURSOR-BWART EQ '201'.
" SI ES SALIDA
GT_CURSOR-BWART = '561'.
REPLACE ALL OCCURRENCES OF '@BAJA' IN GT_CURSOR-BKTXT WITH '@ALTA'.
MODIFY GT_CURSOR.
ENDIF.
ENDLOOP.
CLEAR: G_FILE.

CONCATENATE 'D:\ZMM087\2\ALTA_' SY-DATUM+0(4) SY-DATUM+4(2) SY-DATUM+6(2) '_


' S_WERKS-LOW '_2.TXT'
INTO G_FILE.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = G_FILE
TABLES
DATA_TAB = GT_CURSOR
EXCEPTIONS
OTHERS.
ENDIF.

*************************************************************************
* GENERANDO TXT ( MATERIALES A DAR DE ALTA )
*************************************************************************
CLEAR GT_CURSOR. REFRESH GT_CURSOR.
LOOP AT GT_SHWLOG
WHERE CHECK EQ 'X' AND VALOR LT 0.

" MOVIMIENTO MENORES A

0
W_CONT = W_CONT + 1.
MOVE-CORRESPONDING GT_SHWLOG TO GT_CURSOR.
*

SOLO PARA QAS (COMA DECIMAL)


REPLACE ALL OCCURRENCES OF '.' IN GT_CURSOR-LABST WITH ','.
GT_CURSOR-NRCOR = W_CONT.
APPEND GT_CURSOR.

W_TOTALT = W_TOTALT + 1.
ENDLOOP.
* SI EXISTEN MATERIALES A DAR DE ALTA
IF W_TOTALT GT 0.
CLEAR: G_FILE.
CONCATENATE 'D:\ZMM087\1\ALTA_' SY-DATUM+0(4) SY-DATUM+4(2) SY-DATUM+6(2) '_
' S_WERKS-LOW '_1.TXT'
INTO G_FILE.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = G_FILE
TABLES
DATA_TAB = GT_CURSOR
EXCEPTIONS
OTHERS.
**
**
**
*
*
*
*
*
*

*
*

ALTA
===========================================
INVOCAMOS AL PROGRAMA ZMMP0190.
SUBMIT ZMMP0190
WITH P_BUKRS EQ P_BUKRS
"SOCIEDAD
WITH NAME_FIL EQ G_FILE
"PATH FILE
WITH P_TPFIL EQ 'ASC'
"TIPO DE FILE
WITH MODO_BI EQ P_BI
AND RETURN.

GENERANDO ARCHIVO PARA EL SEGUNDO PASO


CAMBIANDO LA CLASE DE MOVIMIENTO Y CAB.
LOOP AT GT_CURSOR.
IF GT_CURSOR-BWART EQ '561'.
" SI ES ENTRADA
GT_CURSOR-BWART = '201'.
REPLACE ALL OCCURRENCES OF '@ALTA' IN GT_CURSOR-BKTXT WITH '@BAJA'.
MODIFY GT_CURSOR.
ENDIF.
ENDLOOP.
CLEAR: G_FILE.

CONCATENATE 'D:\ZMM087\2\BAJA_' SY-DATUM+0(4) SY-DATUM+4(2) SY-DATUM+6(2) '_


' S_WERKS-LOW '_2.TXT'
INTO G_FILE.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = G_FILE
TABLES
DATA_TAB = GT_CURSOR
EXCEPTIONS
OTHERS.

ENDIF.
ENDFORM.

"F3_GENERAR_TXT

*&---------------------------------------------------------------------*
*&
FORM MARCAR_CHBOX
*&---------------------------------------------------------------------*
FORM MARCAR_CHBOX USING CHECK TYPE C.
DATA L_LOCKED TYPE C.
FIELD-SYMBOLS: <FS_REFER> LIKE LINE OF GT_SHWLOG.
UNASSIGN <FS_REFER>.
LOOP AT GT_SHWLOG ASSIGNING <FS_REFER>.
<FS_REFER>-CHECK = CHECK.
ENDLOOP.
CALL METHOD GRID1->REFRESH_TABLE_DISPLAY.
ENDFORM.
" MARCAR_CHBOX
*&---------------------------------------------------------------------*
*&
MODULE PBO_100 OUTPUT
*&---------------------------------------------------------------------*
*
TEXT
*----------------------------------------------------------------------*
MODULE PBO_100 OUTPUT.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'MAIN100'.
IF CUSTOM_CONTAINER1 IS INITIAL.
PERFORM C01_INICIALIZAR_CATALOGO.
PERFORM C02_OBTENER_DATA.
IF R_BAJA EQ 'X'.
GS_LAYOUT-GRID_TITLE = 'Materiales a Procesar (Dar de Baja)'.
**GRILLA MATERIALES DE BAJA A REVERTIR
ELSEIF R_ALTA EQ 'X'.
GS_LAYOUT-GRID_TITLE = 'Materiales a Procesar (Revertir Baja)'.
ELSEIF R_BAJAH EQ 'X'.
GS_LAYOUT-GRID_TITLE = 'Historico Materiales Baja'.
ELSEIF R_ALTAH EQ 'X'.
GS_LAYOUT-GRID_TITLE = 'Historico Materiales Alta'.
ENDIF.
*

CREANDO EL ALV
CREATE OBJECT CUSTOM_CONTAINER1
EXPORTING
CONTAINER_NAME
EXCEPTIONS
CNTL_ERROR
CNTL_SYSTEM_ERROR
CREATE_ERROR
LIFETIME_ERROR
LIFETIME_DYNPRO_DYNPRO_LINK

= 'CC_CONTENEDOR'
=
=
=
=
=

IF SY-SUBRC NE 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING

1
2
3
4
5.

TITEL = SY-REPID
TXT2 = SY-SUBRC
TXT1 = 'ERROR'(510).
ENDIF.
*

SI TODO ESTA OK
CREATE OBJECT GRID1
EXPORTING
I_PARENT = CUSTOM_CONTAINER1.

* "CUANDO ASIGNAMOS UNA


*
GS_LAYOUT-SEL_MODE
STROS
*
GS_LAYOUT-BOX_FNAME
*
GS_LAYOUT-COL_OPT

COLUMNA CHECK, ESTAS 2 OPCIONES SE ACTIVAN X DEFAULT


= 'A'.
"OPCION DE SELECCIONAR TODOS LOS REGI
= 'CHECK'.
= 'X'.

"NOMBRE DE LA COLUMNA CHECKBOX

PERFORM QUITAR_BOTONES.
CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
IS_LAYOUT
= GS_LAYOUT
I_SAVE
= 'A'
CHANGING
IT_OUTTAB
= GT_SHWLOG[]
IT_FIELDCATALOG
= GT_FIELDCAT.
*

CREANDO LOS EVENTOS PARA LA GRILLA


CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_USER_COMMAND FOR GRID1.
SET HANDLER EVENT_RECEIVER->HANDLE_TOOLBAR
FOR GRID1.
CALL METHOD GRID1->SET_TOOLBAR_INTERACTIVE.
ENDIF.
CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
EXPORTING
CONTROL = GRID1.

ENDMODULE.

" PBO_100 OUTPUT

*&---------------------------------------------------------------------*
*&
FORM QUITAR_BOTONES
*&---------------------------------------------------------------------*
FORM QUITAR_BOTONES.
DATA LS_EXCLUDE TYPE UI_FUNC.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW.
APPEND LS_EXCLUDE TO GT_EXCLUDE.

*
*
*
*

*
*

LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_CHECK.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_REFRESH.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_PRINT.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_GRAPH.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_HELP.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOAD_VARIANT.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_MAINTAIN_VARIANT.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_SAVE_VARIANT.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_SUBTOT.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_SUM.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_VIEWS.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_VIEW_GRID.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_MB_SUM.
APPEND LS_EXCLUDE TO GT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_MB_VARIANT.
APPEND LS_EXCLUDE TO GT_EXCLUDE.

ENDFORM.

"QUITAR_BOTONES

*&---------------------------------------------------------------------*
*&
C01_INICIALIZAR_CATALOGO
*&---------------------------------------------------------------------*
FORM C01_INICIALIZAR_CATALOGO.
DATA: WA_FIELDCAT LIKE LINE OF GT_FIELDCAT.
DATA: V_POS TYPE I.
IF R_BAJAH NE 'X' AND R_ALTAH NE 'X'.
ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME = 'CHECK'.
WA_FIELDCAT-TABNAME = 'GT_SHWLOG'.
WA_FIELDCAT-SELTEXT = ' '.
WA_FIELDCAT-SCRTEXT_L = ' '.
WA_FIELDCAT-SCRTEXT_M = ' '.
WA_FIELDCAT-SCRTEXT_S = ' '.
WA_FIELDCAT-COL_POS = V_POS.
WA_FIELDCAT-OUTPUTLEN = 1.

WA_FIELDCAT-COL_OPT
WA_FIELDCAT-CHECKBOX
WA_FIELDCAT-EDIT
APPEND WA_FIELDCAT TO
ENDIF.
ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME
WA_FIELDCAT-TABNAME
WA_FIELDCAT-SELTEXT
WA_FIELDCAT-SCRTEXT_L
WA_FIELDCAT-SCRTEXT_M
WA_FIELDCAT-SCRTEXT_S
WA_FIELDCAT-OUTPUTLEN
WA_FIELDCAT-COL_POS
APPEND WA_FIELDCAT TO

= 'X'.
= 'X'.
= 'X'.
GT_FIELDCAT. CLEAR WA_FIELDCAT.

= 'NRCOR'.
= 'GT_SHWLOG'.
= ' ID '.
= ' ID '.
= ' ID '.
= ' ID '.
= 7.
= V_POS.
GT_FIELDCAT. CLEAR WA_FIELDCAT.

*
*
*
*
*
*
*
*
*
*
*

ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME
WA_FIELDCAT-TABNAME
WA_FIELDCAT-SELTEXT
WA_FIELDCAT-SCRTEXT_L
WA_FIELDCAT-SCRTEXT_M
WA_FIELDCAT-SCRTEXT_S
WA_FIELDCAT-OUTPUTLEN
WA_FIELDCAT-COL_POS
WA_FIELDCAT-NO_OUT
APPEND WA_FIELDCAT TO

= 'BLDAT'.
= 'GT_SHWLOG'.
= 'FECH.DOCUM.'.
= 'FECH.DOCUM.'.
= 'FECH.DOCUM.'.
= 'FECH.DOCUM.'.
= 8.
= V_POS.
= 'X'.
GT_FIELDCAT. CLEAR WA_FIELDCAT.

*
*
*
*
*
*
*
*
*
*

ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME
WA_FIELDCAT-TABNAME
WA_FIELDCAT-SELTEXT
WA_FIELDCAT-SCRTEXT_L
WA_FIELDCAT-SCRTEXT_M
WA_FIELDCAT-SCRTEXT_S
WA_FIELDCAT-OUTPUTLEN
WA_FIELDCAT-COL_POS
APPEND WA_FIELDCAT TO

= 'BUDAT'.
= 'GT_SHWLOG'.
= 'FECH.CONTAB.'.
= 'FECH.CONTAB.'.
= 'FECH.CONTAB.'.
= 'FECH.CONTAB.'.
= 8.
= V_POS.
GT_FIELDCAT. CLEAR WA_FIELDCAT.

ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME
WA_FIELDCAT-TABNAME
WA_FIELDCAT-SELTEXT
WA_FIELDCAT-SCRTEXT_L
WA_FIELDCAT-SCRTEXT_M
WA_FIELDCAT-SCRTEXT_S
WA_FIELDCAT-OUTPUTLEN
WA_FIELDCAT-COL_POS
APPEND WA_FIELDCAT TO
*
*
*
*
*
*
*
*
*

ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME
WA_FIELDCAT-TABNAME
WA_FIELDCAT-SELTEXT
WA_FIELDCAT-SCRTEXT_L
WA_FIELDCAT-SCRTEXT_M
WA_FIELDCAT-SCRTEXT_S
WA_FIELDCAT-OUTPUTLEN
WA_FIELDCAT-COL_POS

= 'WERKS'.
= 'GT_SHWLOG'.
= 'CENTRO'.
= 'CENTRO'.
= 'CENTRO'.
= 'CENTRO'.
= 6.
= V_POS.
GT_FIELDCAT. CLEAR WA_FIELDCAT.
=
=
=
=
=
=
=
=

'LGORT'.
'GT_SHWLOG'.
'ALMACEN'.
'ALMACEN'.
'ALMACEN'.
'ALMACEN'.
4.
V_POS.

* APPEND WA_FIELDCAT TO GT_FIELDCAT. CLEAR WA_FIELDCAT.


*
*
*
*
*
*
*
*
*
*

ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME
WA_FIELDCAT-TABNAME
WA_FIELDCAT-SELTEXT
WA_FIELDCAT-SCRTEXT_L
WA_FIELDCAT-SCRTEXT_M
WA_FIELDCAT-SCRTEXT_S
WA_FIELDCAT-OUTPUTLEN
WA_FIELDCAT-COL_POS
APPEND WA_FIELDCAT TO

= 'BWART'.
= 'GT_SHWLOG'.
= 'C.M.'.
= 'C.M.'.
= 'C.M.'.
= 'C.M.'.
= 3.
= V_POS.
GT_FIELDCAT. CLEAR WA_FIELDCAT.

IF R_BAJAH EQ 'X' OR R_ALTAH EQ 'X'.


ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME = 'BELNR'.
WA_FIELDCAT-TABNAME = 'GT_SHWLOG'.
WA_FIELDCAT-SELTEXT = 'NDOCUMENTO'.
WA_FIELDCAT-SCRTEXT_L = 'NDOCUMENTO'.
WA_FIELDCAT-SCRTEXT_M = 'NDOCUMENTO'.
WA_FIELDCAT-SCRTEXT_S = 'NDOCUMENTO'.
WA_FIELDCAT-OUTPUTLEN = 12.
WA_FIELDCAT-COL_POS = V_POS.
APPEND WA_FIELDCAT TO GT_FIELDCAT. CLEAR WA_FIELDCAT.
ENDIF.
**FECHA CONTABILIZACION
ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME = 'BUDAT'.
WA_FIELDCAT-TABNAME = 'GT_SHWLOG'.
WA_FIELDCAT-SELTEXT = 'FECHA CONTABLIZACION'.
WA_FIELDCAT-SCRTEXT_L = 'FECHA CONTABLIZACION'.
WA_FIELDCAT-SCRTEXT_M = 'FECHA CONTABLIZACION'.
WA_FIELDCAT-SCRTEXT_S = 'FECHA CONTABLIZACION'.
WA_FIELDCAT-OUTPUTLEN = 12.
WA_FIELDCAT-COL_POS = V_POS.
APPEND WA_FIELDCAT TO GT_FIELDCAT. CLEAR WA_FIELDCAT.
ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME
WA_FIELDCAT-TABNAME
WA_FIELDCAT-SELTEXT
WA_FIELDCAT-SCRTEXT_L
WA_FIELDCAT-SCRTEXT_M
WA_FIELDCAT-SCRTEXT_S
WA_FIELDCAT-OUTPUTLEN
WA_FIELDCAT-COL_POS
APPEND WA_FIELDCAT TO

= 'MATNR'.
= 'GT_SHWLOG'.
= 'MATERIAL'.
= 'MATERIAL'.
= 'MATERIAL'.
= 'MATERIAL'.
= 18.
= V_POS.
GT_FIELDCAT. CLEAR WA_FIELDCAT.

IF R_BAJAH EQ 'X' OR R_ALTAH EQ 'X'.


**EJERCICIO
ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME = 'BUDAT+6(4)'.
WA_FIELDCAT-TABNAME = 'GT_SHWLOG'.
WA_FIELDCAT-SELTEXT = 'EJERCICIO'.
WA_FIELDCAT-SCRTEXT_L = 'EJERCICIO'.
WA_FIELDCAT-SCRTEXT_M = 'EJERCICIO'.
WA_FIELDCAT-SCRTEXT_S = 'EJERCICIO'.
WA_FIELDCAT-OUTPUTLEN = 10.
WA_FIELDCAT-COL_POS = V_POS.
APPEND WA_FIELDCAT TO GT_FIELDCAT. CLEAR WA_FIELDCAT.

**PERIODO
ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME
WA_FIELDCAT-TABNAME
WA_FIELDCAT-SELTEXT
WA_FIELDCAT-SCRTEXT_L
WA_FIELDCAT-SCRTEXT_M
WA_FIELDCAT-SCRTEXT_S
WA_FIELDCAT-OUTPUTLEN
WA_FIELDCAT-COL_POS
APPEND WA_FIELDCAT TO

= 'MONAT'.
= 'GT_SHWLOG'.
= 'PERIODO'.
= 'PERIODO'.
= 'PERIODO'.
= 'PERIODO'.
= 3.
= V_POS.
GT_FIELDCAT. CLEAR WA_FIELDCAT.

ENDIF.
ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME
WA_FIELDCAT-TABNAME
WA_FIELDCAT-SELTEXT
WA_FIELDCAT-SCRTEXT_L
WA_FIELDCAT-SCRTEXT_M
WA_FIELDCAT-SCRTEXT_S
WA_FIELDCAT-OUTPUTLEN
WA_FIELDCAT-COL_POS
APPEND WA_FIELDCAT TO

= 'MAKTX'.
= 'GT_SHWLOG'.
= 'DESCRIPCION'.
= 'DESCRIPCION'.
= 'DESCRIPCION'.
= 'DESCRIPCION'.
= 30.
= V_POS.
GT_FIELDCAT. CLEAR WA_FIELDCAT.

ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME
WA_FIELDCAT-TABNAME
WA_FIELDCAT-SELTEXT
WA_FIELDCAT-SCRTEXT_L
WA_FIELDCAT-SCRTEXT_M
WA_FIELDCAT-SCRTEXT_S
WA_FIELDCAT-OUTPUTLEN
WA_FIELDCAT-DATATYPE
WA_FIELDCAT-DO_SUM
WA_FIELDCAT-COL_POS
APPEND WA_FIELDCAT TO

= 'LABST'.
= 'GT_SHWLOG'.
= 'UNIDADES'.
= 'UNIDADES'.
= 'UNIDADES'.
= 'UNIDADES'.
= 13.
= 'CURR'.
= 'X'.
= V_POS.
GT_FIELDCAT. CLEAR WA_FIELDCAT.

ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME
WA_FIELDCAT-TABNAME
WA_FIELDCAT-SELTEXT
WA_FIELDCAT-SCRTEXT_L
WA_FIELDCAT-SCRTEXT_M
WA_FIELDCAT-SCRTEXT_S
WA_FIELDCAT-OUTPUTLEN
WA_FIELDCAT-DATATYPE
WA_FIELDCAT-DO_SUM
WA_FIELDCAT-COL_POS
APPEND WA_FIELDCAT TO

= 'VALOR'.
= 'GT_SHWLOG'.
= 'VALORADO PEN'.
= 'VALORADO PEN'.
= 'VALORADO PEN'.
= 'VALORADO PEN'.
= 13.
= 'CURR'.
= 'X'.
= V_POS.
GT_FIELDCAT. CLEAR WA_FIELDCAT.

ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME
WA_FIELDCAT-TABNAME
WA_FIELDCAT-SELTEXT
WA_FIELDCAT-SCRTEXT_L
WA_FIELDCAT-SCRTEXT_M
WA_FIELDCAT-SCRTEXT_S
WA_FIELDCAT-OUTPUTLEN
WA_FIELDCAT-COL_POS

=
=
=
=
=
=
=
=

'MEINS'.
'GT_SHWLOG'.
'U.M.'.
'U.M.'.
'U.M.'.
'U.M.'.
3.
V_POS.

APPEND WA_FIELDCAT TO GT_FIELDCAT. CLEAR WA_FIELDCAT.


*
*
*
*
*
*
*
*
*
*

ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME
WA_FIELDCAT-TABNAME
WA_FIELDCAT-SELTEXT
WA_FIELDCAT-SCRTEXT_L
WA_FIELDCAT-SCRTEXT_M
WA_FIELDCAT-SCRTEXT_S
WA_FIELDCAT-OUTPUTLEN
WA_FIELDCAT-COL_POS
APPEND WA_FIELDCAT TO

= 'BKTXT'.
= 'GT_SHWLOG'.
= 'CABECERA'.
= 'CABECERA'.
= 'CABECERA'.
= 'CABECERA'.
= 20.
= V_POS.
GT_FIELDCAT. CLEAR WA_FIELDCAT.

* IF R_ALTA EQ 'X'.
*
ADD 1 TO V_POS.
*
WA_FIELDCAT-FIELDNAME
*
WA_FIELDCAT-TABNAME
*
WA_FIELDCAT-SELTEXT
*
WA_FIELDCAT-SCRTEXT_L
*
WA_FIELDCAT-SCRTEXT_M
*
WA_FIELDCAT-SCRTEXT_S
*
WA_FIELDCAT-OUTPUTLEN
*
WA_FIELDCAT-COL_POS
*
APPEND WA_FIELDCAT TO
*
*
*
*
*
*
*
*
*
*
*
*

ELSE.
ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME
WA_FIELDCAT-TABNAME
WA_FIELDCAT-SELTEXT
WA_FIELDCAT-SCRTEXT_L
WA_FIELDCAT-SCRTEXT_M
WA_FIELDCAT-SCRTEXT_S
WA_FIELDCAT-OUTPUTLEN
WA_FIELDCAT-NO_OUT
WA_FIELDCAT-COL_POS
APPEND WA_FIELDCAT TO

= 'MBLNR'.
= 'GT_SHWLOG'.
= 'DOC.MATERIAL'.
= 'DOC.MATERIAL'.
= 'DOC.MATERIAL'.
= 'DOC.MATERIAL'.
= 10.
= V_POS.
GT_FIELDCAT. CLEAR WA_FIELDCAT.

= 'KOSTL'.
= 'GT_SHWLOG'.
= 'CECO'.
= 'CECO'.
= 'CECO'.
= 'CECO'.
= 10.
= 'X'.
= V_POS.
GT_FIELDCAT. CLEAR WA_FIELDCAT.

* ENDIF.
ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME
WA_FIELDCAT-TABNAME
WA_FIELDCAT-SELTEXT
WA_FIELDCAT-SCRTEXT_L
WA_FIELDCAT-SCRTEXT_M
WA_FIELDCAT-SCRTEXT_S
WA_FIELDCAT-OUTPUTLEN
WA_FIELDCAT-COL_POS
APPEND WA_FIELDCAT TO

= 'KONTH'.
= 'GT_SHWLOG'.
= 'MAYOR D'.
= 'MAYOR D'.
= 'MAYOR D'.
= 'MAYOR D'.
= 10.
= V_POS.
GT_FIELDCAT. CLEAR WA_FIELDCAT.

ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME
WA_FIELDCAT-TABNAME
WA_FIELDCAT-SELTEXT
WA_FIELDCAT-SCRTEXT_L
WA_FIELDCAT-SCRTEXT_M
WA_FIELDCAT-SCRTEXT_S
WA_FIELDCAT-OUTPUTLEN
WA_FIELDCAT-COL_POS

=
=
=
=
=
=
=
=

'TXT50'.
'GT_SHWLOG'.
'DESC.CTA.MAYOR
'DESC.CTA.MAYOR
'DESC.CTA.MAYOR
'DESC.CTA.MAYOR
20.
V_POS.

D'.
D'.
D'.
D'.

APPEND WA_FIELDCAT TO GT_FIELDCAT. CLEAR WA_FIELDCAT.


ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME
WA_FIELDCAT-TABNAME
WA_FIELDCAT-SELTEXT
WA_FIELDCAT-SCRTEXT_L
WA_FIELDCAT-SCRTEXT_M
WA_FIELDCAT-SCRTEXT_S
WA_FIELDCAT-OUTPUTLEN
WA_FIELDCAT-COL_POS
APPEND WA_FIELDCAT TO

= 'KONT2'.
= 'GT_SHWLOG'.
= 'MAYOR H'.
= 'MAYOR H'.
= 'MAYOR H'.
= 'MAYOR H'.
= 10.
= V_POS.
GT_FIELDCAT. CLEAR WA_FIELDCAT.

ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME = 'TXT52'.
WA_FIELDCAT-TABNAME = 'GT_SHWLOG'.
WA_FIELDCAT-SELTEXT = 'DESC.CTA.MAYOR H'.
WA_FIELDCAT-SCRTEXT_L = 'DESC.CTA.MAYOR H'.
WA_FIELDCAT-SCRTEXT_M = 'DESC.CTA.MAYOR H'.
WA_FIELDCAT-SCRTEXT_S = 'DESC.CTA.MAYOR H'.
WA_FIELDCAT-OUTPUTLEN = 25.
WA_FIELDCAT-COL_POS = V_POS.
APPEND WA_FIELDCAT TO GT_FIELDCAT. CLEAR WA_FIELDCAT.
IF R_ALTAH EQ 'X' OR R_BAJAH EQ 'X'.
**Obtener fecha de creacion
ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME = 'BLDAT'.
WA_FIELDCAT-TABNAME = 'GT_SHWLOG'.
WA_FIELDCAT-SELTEXT = 'FECHA CREACION'.
WA_FIELDCAT-SCRTEXT_L = 'FECHA CREACION'.
WA_FIELDCAT-SCRTEXT_M = 'FECHA CREACION'.
WA_FIELDCAT-SCRTEXT_S = 'FECHA CREACION'.
WA_FIELDCAT-OUTPUTLEN = 12.
WA_FIELDCAT-COL_POS = V_POS.
APPEND WA_FIELDCAT TO GT_FIELDCAT. CLEAR WA_FIELDCAT.
**Obtener usuario
ADD 1 TO V_POS.
WA_FIELDCAT-FIELDNAME = 'USNAM'.
WA_FIELDCAT-TABNAME = 'GT_SHWLOG'.
WA_FIELDCAT-SELTEXT = 'USUARIO'.
WA_FIELDCAT-SCRTEXT_L = 'USUARIO'.
WA_FIELDCAT-SCRTEXT_M = 'USUARIO'.
WA_FIELDCAT-SCRTEXT_S = 'USUARIO'.
WA_FIELDCAT-OUTPUTLEN = 8.
WA_FIELDCAT-COL_POS = V_POS.
APPEND WA_FIELDCAT TO GT_FIELDCAT. CLEAR WA_FIELDCAT.
ENDIF.
ENDFORM.
" C01_INICIALIZAR_CATALOGO
*&---------------------------------------------------------------------*
*&
FORM C02_OBTENER_DATA
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM C02_OBTENER_DATA .
CLEAR GT_SHWLOG.

REFRESH GT_SHWLOG.

IF ( R_BAJA EQ 'X' ).

PERFORM F2_OBTENER_DATA.
ELSEIF ( R_ALTA EQ 'X' ).
PERFORM F2_OBT_ALTA_MATNR.
ELSEIF ( R_BAJAH EQ 'X').
PERFORM C03_HISTORICO_BAJA_MES.
ELSEIF R_ALTAH EQ 'X'.
PERFORM C04_HISTORICO_ALTA_MES.
ENDIF.
ENDFORM.

" C02_OBTENER_DATA

*&---------------------------------------------------------------------*
*&
MODULE PAI_100 INPUT
*&---------------------------------------------------------------------*
*
TEXT
*----------------------------------------------------------------------*
MODULE PAI_100 INPUT.
CASE OK_CODE.
WHEN 'EXIT'.
*
PERFORM EXIT_PROGRAM.
LEAVE TO SCREEN 0.
LEAVE PROGRAM.
ENDCASE.
CLEAR OK_CODE.
ENDMODULE.
" PAI_100 INPUT
*&---------------------------------------------------------------------*
**&
FORM F2_OBT_ALTA_MATNR
**&---------------------------------------------------------------------*
**
TEXT
**----------------------------------------------------------------------*
FORM F2_OBT_ALTA_MATNR.
DATA:
W_BKTXT(20) TYPE C,
" TEXTO ALMACEN / CENTRO
W_BUDAT(8) TYPE C,
" FECHA DDMMYYYY
W_CORRE(6) TYPE N,
" CORRELATIVO
KONTH LIKE BSEG-HKONT,
KONT2 LIKE BSEG-HKONT,
TXT50(50) TYPE C,
TXT52(52) TYPE C,
MAKTXT LIKE MAKT-MAKTX.
**OBTENER MATERIALES PAO DADOS DE BAJA PARA DAR DE ALTA
DATA:BEGIN OF EZFI_BAJA.
INCLUDE STRUCTURE ZFI_BAJA_MATNR.
DATA: BKLAS LIKE MBEW-BKLAS,
LBKUM LIKE MBEW-LBKUM,
SALK3 LIKE MBEW-SALK3,
END OF EZFI_BAJA.
DATA:ZFI_BAJA LIKE STANDARD TABLE OF EZFI_BAJA WITH HEADER LINE.
**OBTENER TODOS MATERIALES DADOS DE BAJA PARA DAR DE ALTA
**CUANDO SE DA DE BAJA APARECEN LOS MATERIALES DADOS DE BAJA EN EL MES PARA DAR
DE BAJA.
**AJUSTA CUANDO NO HAY NADA DE BAJA CON MENSAJE
IF P_PAO EQ 'X'.

DATA: MESANT LIKE BKPF-MONAT,


ANOACT LIKE BSEG-GJAHR.
CLEAR: MESANT, ANOACT.
*PERIODO Y AOS PARA DAR DE ALTA
IF P_BUDAT+4(2) EQ 1.
ANOACT = P_BUDAT+0(4) - 1.
MESANT = 12.
ELSE.
MESANT = P_BUDAT+4(2) - 1.
ANOACT = P_BUDAT+0(4).
ENDIF.

"ENERO
"AO ANTERIOR
"DICIEMBRE
"MES ANTEIOR
"AO ACTUAL

SELECT *
INTO CORRESPONDING FIELDS OF TABLE ZFI_BAJA
FROM ZFI_BAJA_MATNR AS B INNER JOIN MBEW AS A
ON B~MATNR EQ A~MATNR
WHERE B~ESTADO EQ 'B' AND
B~GJAHR EQ ANOACT AND
B~MONAT EQ MESANT AND
B~MATNR IN S_MATNR AND
B~WERKS IN S_WERKS AND
A~LBKUM NE 0 AND
A~SALK3 NE 0 AND
A~BKLAS NOT LIKE PAO AND
A~BKLAS NE 'ZPAO' AND
A~BKLAS NE 0.
ELSE.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE ZFI_BAJA
FROM ZFI_BAJA_MATNR AS B INNER JOIN MBEW AS A
ON B~MATNR EQ A~MATNR
WHERE B~ESTADO EQ 'B' AND
*
B~MONAT EQ P_BUDAT+4(2) AND
*
B~GJAHR EQ P_BUDAT+0(4) AND
B~GJAHR EQ ANOACT AND
B~MONAT EQ MESANT AND
B~MATNR IN S_MATNR AND
B~WERKS IN S_WERKS AND
A~BKLAS LIKE PAO AND
A~LBKUM NE 0 AND
A~SALK3 NE 0.
*
A~BKLAS NE 0.
ENDIF.
IF ZFI_BAJA[] IS NOT INITIAL.
LOOP AT ZFI_BAJA.
GT_SHWLOG-CHECK = 'X'.
GT_SHWLOG-NRCOR = ''.
GT_SHWLOG-BLDAT = ZFI_BAJA-ERDAT.
*
GT_SHWLOG-BUDAT = ZFI_BAJA-BUDAT.
*
GT_SHWLOG-BLDAT = SY-DATUM.
**FECHA CONTAB DE LA BAJA
CONCATENATE P_BUDAT+6(2) P_BUDAT+4(2) P_BUDAT+0(4)
INTO GT_SHWLOG-BUDAT SEPARATED BY '.'.
GT_SHWLOG-WERKS = ZFI_BAJA-WERKS.
GT_SHWLOG-LGORT = ''.
GT_SHWLOG-BWART = ''.
GT_SHWLOG-MATNR = ZFI_BAJA-MATNR.
*
OBTENIENDO LA DESCRIPCION DEL MATERIAL
PERFORM F_OBT_NAME_MATNR
USING
GT_SHWLOG-MATNR

CHANGING MAKTXT.
GT_SHWLOG-MAKTX = MAKTXT.
GT_SHWLOG-LABST = ZFI_BAJA-MENGE.
GT_SHWLOG-VALOR = ZFI_BAJA-DMBTR * -1.
GT_SHWLOG-MEINS = ZFI_BAJA-MEINS.
GT_SHWLOG-KOSTL = P_KOSTL.
GT_SHWLOG-BKTXT = ''.
GT_SHWLOG-MBLNR = ''.
* OBTENEMOS LA CUENTA MAYOR ENTRADA SEGUN CAT VALORIZACION DEL MATNR
PERFORM F_OBT_KONTH_MATNR USING
ZFI_BAJA-BKLAS 'BSX' ' '
CHANGING KONTH
TXT50.
GT_SHWLOG-KONTH = KONTH.
GT_SHWLOG-TXT50 = TXT50.
* OBTENEMOS LA CUENTA MAYOR SALIDA SEGUN CAT VALORIZACION DEL MATNR
PERFORM F_OBT_KONTH_MATNR USING
ZFI_BAJA-BKLAS 'GBB' 'VBR'
CHANGING KONT2
TXT52.
GT_SHWLOG-KONT2 = KONT2.
GT_SHWLOG-TXT52 = TXT52.
GT_SHWLOG-BELNR = ZFI_BAJA-BELNR.
GT_SHWLOG-MONAT = ZFI_BAJA-MONAT.
GT_SHWLOG-ESTADO = 'B'.
APPEND GT_SHWLOG.
ENDLOOP.
ENDIF.
DELETE ADJACENT DUPLICATES FROM GT_SHWLOG.
**BORRAR LOS MATERIALES QUE NO TIENEN CUENTA DE ENTRADA Y SALIDA.
DELETE GT_SHWLOG
WHERE KONTH EQ 0.
DELETE GT_SHWLOG
WHERE KONT2+2(1) NE '6'.
LOOP AT GT_SHWLOG.
SELECT SINGLE
ESTADO
FROM ZFI_BAJA_MATNR
INTO GT_SHWLOG-ESTADO
WHERE BUKRS EQ '330'
AND
MATNR EQ GT_SHWLOG-MATNR AND
MONAT EQ P_BUDAT+4(2) AND
WERKS EQ GT_SHWLOG-WERKS AND
GJAHR EQ P_BUDAT+0(4)
AND
ESTADO EQ 'A'.
IF SY-SUBRC EQ 0.
MODIFY GT_SHWLOG.
ENDIF.
ENDLOOP.
**BORRAR LOS MATERIALES DADOS DE ALTA ESTE MES.
DELETE GT_SHWLOG
WHERE ESTADO EQ 'A' AND
BUDAT+6(4) EQ P_BUDAT+0(4) AND
BUDAT+3(2) EQ P_BUDAT+4(2). "AND
"MONAT EQ MESANT.
**ORDENAR Y CORRER CONTADOR.

"AO
"MES

SORT GT_SHWLOG BY WERKS ASCENDING LABST DESCENDING.


CLEAR W_CORRE.
LOOP AT GT_SHWLOG.
W_CORRE = W_CORRE + 1.
GT_SHWLOG-NRCOR = W_CORRE.
MODIFY GT_SHWLOG.
ENDLOOP.
ENDFORM.

"F2_OBT_ALTA_MATNR

*&---------------------------------------------------------------------*
*&
FORM F_OBT_NAME_MATNR
*&---------------------------------------------------------------------*
FORM F_OBT_NAME_MATNR USING MATNR CHANGING MAKTXT.
CLEAR: MAKTXT.
SELECT SINGLE MAKTX
INTO MAKTXT
FROM MAKT
WHERE MATNR EQ MATNR.
ENDFORM.

"F_OBT_NAME_MATNR

*&---------------------------------------------------------------------*
*&
FORM LLENAR_BDCDATA
*&---------------------------------------------------------------------*
*
TEXT
*----------------------------------------------------------------------*
*
-->PROGRAM
TEXT
*
-->DYNPRO
TEXT
*
-->DYNBEGIN TEXT
*
-->FNAM
TEXT
*
-->FVAL
TEXT
*----------------------------------------------------------------------*
FORM LLENAR_BDCDATA USING PROGRAM DYNPRO DYNBEGIN FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = DYNBEGIN.
BDCDATA-FNAM
= FNAM.
BDCDATA-FVAL
= FVAL.
APPEND BDCDATA.
ENDFORM.
"LLENAR_BDCDATA
*&---------------------------------------------------------------------*
*&
FORM F_OBT_KONTH_MATNR
*&---------------------------------------------------------------------*
*
--> U_MATNR MATERIAL
*
<-- U_KONTH CUENTA MAYOR
*----------------------------------------------------------------------*
FORM F_OBT_KONTH_MATNR USING
U_BKLAS U_TOSL U_KOMOK
CHANGING U_KONTH
U_TXT50.
CLEAR: U_KONTH, U_TXT50.
IF NOT U_BKLAS IS INITIAL.
SELECT SINGLE KONTH

INTO U_KONTH
FROM T030 WHERE
KTOPL EQ 'PCSA' AND
KTOSL EQ U_TOSL AND
KOMOK EQ U_KOMOK AND
BKLAS EQ U_BKLAS.
IF NOT U_KONTH IS INITIAL.
SELECT SINGLE TXT50
INTO U_TXT50
FROM SKAT WHERE
SPRAS EQ 'S' AND
KTOPL EQ 'PCSA' AND
SAKNR EQ U_KONTH.
ENDIF.
ENDIF.
ENDFORM.
" F_OBT_KONTH_MATNR
*&---------------------------------------------------------------------*
*&
FORM GENERAR_ASIENTO
*&---------------------------------------------------------------------*
*
TEXT
*----------------------------------------------------------------------*
* --> P1
TEXT
* <-- P2
TEXT
*----------------------------------------------------------------------*
FORM GENERAR_ASIENTO .
DATA: T_BSEG LIKE STANDARD TABLE OF BSEG WITH HEADER LINE.
DATA: I_CONTABLE LIKE BSEG-BELNR.
DATA: I_EJERCICIO LIKE BSEG-GJAHR.
LOOP AT GT_SHWLOG
WHERE CHECK EQ 'X'.
**POR CADA POSICION DE LA TABLA SE GENERARA 2 POSICIONES EN LA BSEG.
CLEAR T_BSEG-KOSTL.
CLEAR P_ESTADO.
IF R_BAJA EQ 'X'.
T_BSEG-SHKZG = 'H'.
P_ESTADO = 'B'.
"BAJA
T_BSEG-DMBTR = GT_SHWLOG-VALOR * -1.
T_BSEG-SGTXT = '@ASIENTO BAJA FIN DE MES'.
ELSEIF R_ALTA EQ 'X'.
T_BSEG-SHKZG = 'S'.
P_ESTADO = 'A'.
"ALTA
T_BSEG-DMBTR = GT_SHWLOG-VALOR.
T_BSEG-SGTXT ='@ASIENTO ALTA FIN DE MES'.
ENDIF.
T_BSEG-BUZEI = T_BSEG-BUZEI + 1.
T_BSEG-HKONT = GT_SHWLOG-KONTH.
*
T_BSEG-DMBTR = GT_SHWLOG-VALOR.
T_BSEG-MWSKZ = 'C0'.
T_BSEG-MATNR = GT_SHWLOG-MATNR.
T_BSEG-MENGE = GT_SHWLOG-LABST.
T_BSEG-MEINS = GT_SHWLOG-MEINS.
T_BSEG-WERKS = GT_SHWLOG-WERKS.
IF T_BSEG-WERKS+0(2) EQ 'AP'.

T_BSEG-BUKRS = '330'.
ELSE.
EXIT.
ENDIF.
APPEND T_BSEG.
CLEAR T_BSEG-KOSTL.
CLEAR P_ESTADO.
IF R_BAJA EQ 'X'.
T_BSEG-SHKZG = 'S'.
P_ESTADO = 'B'.
T_BSEG-DMBTR = GT_SHWLOG-VALOR.
T_BSEG-KOSTL = P_KOSTL. ""SEA DEBE O HABER LA 63 SIEMPRE DEBE TENER EL CE
CO

T_BSEG-SGTXT = '@ASIENTO BAJA FIN DE MES'.


ELSEIF R_ALTA EQ 'X'.
T_BSEG-SHKZG = 'H'.
P_ESTADO = 'A'.
T_BSEG-DMBTR = GT_SHWLOG-VALOR * -1.
T_BSEG-KOSTL = P_KOSTL.
T_BSEG-SGTXT = '@ASIENTO ALTA FIN DE MES'.
ENDIF.
T_BSEG-BUZEI = T_BSEG-BUZEI + 1.
T_BSEG-HKONT = GT_SHWLOG-KONT2.
T_BSEG-DMBTR = GT_SHWLOG-VALOR.
T_BSEG-MWSKZ = 'C0'.
T_BSEG-MATNR = GT_SHWLOG-MATNR.
T_BSEG-MENGE = GT_SHWLOG-LABST.
T_BSEG-MEINS = GT_SHWLOG-MEINS.
T_BSEG-WERKS = GT_SHWLOG-WERKS.
IF T_BSEG-WERKS+0(2) EQ 'AP'.
T_BSEG-BUKRS = '330'.
ELSE.
EXIT.
ENDIF.
APPEND T_BSEG.
ENDLOOP.
CHECK NOT T_BSEG[] IS INITIAL.
CALL FUNCTION 'ZFI_ASTO_PAO_SALMM'
EXPORTING
I_BUDAT
= P_BUDAT
I_ESTADO
= P_ESTADO
IMPORTING
D_CONTABLE = I_CONTABLE
D_EJERCICIO = I_EJERCICIO
D_MENSAJE = I_MENSAJE
TABLES
T_BSEG
= T_BSEG.

*GENERAR MENSAJE DE CONTABILIZACION


IF I_MENSAJE IS NOT INITIAL.
MESSAGE ID 'Z0' TYPE 'I' NUMBER '009' WITH I_MENSAJE.
** BORRAR REGISTROS PROCESADOS
DELETE GT_SHWLOG
WHERE CHECK EQ 'X'.
** CORRER CONTADOR
CLEAR W_CORRE.

LOOP AT GT_SHWLOG.
W_CORRE = W_CORRE + 1.
GT_SHWLOG-NRCOR = W_CORRE.
MODIFY GT_SHWLOG.
ENDLOOP.
** ACTUALIZAR GRILLA
CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
IS_LAYOUT
= GS_LAYOUT
I_SAVE
= 'A'
CHANGING
IT_OUTTAB
= GT_SHWLOG[]
IT_FIELDCATALOG
= GT_FIELDCAT.
ELSE.
MESSAGE ID 'Z0' TYPE 'I' NUMBER '009' WITH 'EL DOCUMENTO NO SE HA CONTABILIZ
ADO'.
*
G_VALIDA = 'N'.
*
EXIT.
ENDIF.
ENDFORM.
" GENERAR_ASIENTO
*&---------------------------------------------------------------------*
*&
FORM C03_HISTORICO_BAJA_MES
*&---------------------------------------------------------------------*
*
TEXT
*----------------------------------------------------------------------*
* --> P1
TEXT
* <-- P2
TEXT
*----------------------------------------------------------------------*
FORM C03_HISTORICO_BAJA_MES .
DATA:
HIST_BAJA LIKE STANDARD TABLE OF ZFI_BAJA_MATNR WITH HEADER LINE,
KONTH LIKE BSEG-HKONT,
KONT2 LIKE BSEG-HKONT,
TXT50(50) TYPE C,
TXT52(52) TYPE C.
SELECT * FROM ZFI_BAJA_MATNR
INTO CORRESPONDING FIELDS OF TABLE HIST_BAJA
WHERE BUKRS EQ '330'
AND
GJAHR IN S_ANO
AND
MONAT IN S_MES
AND
ESTADO EQ 'B'.
REFRESH GT_SHWLOG.
LOOP AT HIST_BAJA.
GT_SHWLOG-CHECK = ''.
GT_SHWLOG-NRCOR = ''.
"01 CORRELATIVO
CONCATENATE HIST_BAJA-ERDAT+6(2) HIST_BAJA-ERDAT+4(2) HIST_BAJA-ERDAT+0(4)
INTO GT_SHWLOG-BLDAT SEPARATED BY '.'.
CONCATENATE HIST_BAJA-BUDAT+6(2) HIST_BAJA-BUDAT+4(2) HIST_BAJA-BUDAT+0(4)
INTO GT_SHWLOG-BUDAT SEPARATED BY '.'.
GT_SHWLOG-WERKS = HIST_BAJA-WERKS.
" CENTRO
GT_SHWLOG-LGORT = ''.
"05 ALMACEN
GT_SHWLOG-BWART = ''.
" CLASE MOV
GT_SHWLOG-MATNR = HIST_BAJA-MATNR.
" MATERIAL

OBTENIENDO LA DESCRIPCION DEL MATERIAL


PERFORM F_OBT_NAME_MATNR
USING
GT_SHWLOG-MATNR
CHANGING GT_SHWLOG-MAKTX.
GT_SHWLOG-MAKTX = GT_SHWLOG-MAKTX.
" DESCRIPCION MATERIAL
GT_SHWLOG-LABST = HIST_BAJA-MENGE.
" CANTIDAD (ERFMG)
GT_SHWLOG-VALOR = HIST_BAJA-DMBTR * -1 .
" VALOR DE LA CANTIDAD
GT_SHWLOG-MEINS = HIST_BAJA-MEINS.
"10 UND MEDIDA (ERFME)
GT_SHWLOG-KOSTL = ''.
" CENTRO DE COSTO - DO
C MATERIAL DADO DE BAJA
GT_SHWLOG-BKTXT = ''.
" TEXTO CABECERA
GT_SHWLOG-MBLNR = ''.
" DOCUMENTO DE MATERIAL (C
UANDO FUE DADO DE BAJA)
*OBTENEMOS CATEGORIA VALORACION - MATERIAL
SELECT * FROM MBEW
INTO CORRESPONDING FIELDS OF TABLE T_MBEW
WHERE MATNR EQ GT_SHWLOG-MATNR
AND BWKEY EQ GT_SHWLOG-WERKS
AND LBKUM NE 0
AND SALK3 NE 0
AND BKLAS NE 0.
LOOP AT T_MBEW.
* OBTENEMOS LA CUENTA MAYOR ENTRADA SEGUN CAT VALORIZACION DEL MATNR
PERFORM F_OBT_KONTH_MATNR USING
T_MBEW-BKLAS 'BSX' ''
CHANGING KONTH
TXT50.
* OBTENEMOS LA CUENTA MAYOR SALIDA SEGUN CAT VALORIZACION DEL MATNR
PERFORM F_OBT_KONTH_MATNR USING
T_MBEW-BKLAS 'GBB' 'VBR'
CHANGING KONT2
TXT52.
ENDLOOP.
GT_SHWLOG-KONTH = KONTH.
" CUENTA MAYOR ENTRADA
GT_SHWLOG-TXT50 = TXT50.
" DESCRIPCION DE CUENTA
DE MAYOR
GT_SHWLOG-KONT2 = KONT2.
" CUENTA MAYOR SALIDA
GT_SHWLOG-TXT52 = TXT52.
" DESCRIPCION DE CUENTA
DE MAYOR
GT_SHWLOG-BELNR = HIST_BAJA-BELNR.
" DOCUMENTO CONTABLE GE
NERADO AL DAR DE BAJA @FRANK
GT_SHWLOG-MONAT = HIST_BAJA-MONAT.
GT_SHWLOG-ESTADO = 'B'.
GT_SHWLOG-USNAM = HIST_BAJA-USNAM.
APPEND GT_SHWLOG.
ENDLOOP.
CLEAR W_CORRE.
LOOP AT GT_SHWLOG.
W_CORRE = W_CORRE + 1.
GT_SHWLOG-NRCOR = W_CORRE.
MODIFY GT_SHWLOG.
ENDLOOP.
ENDFORM.
" C03_HISTORICO_BAJA_MES
*&---------------------------------------------------------------------*
*&
FORM C04_HISTORICO_ALTA_MES
*&---------------------------------------------------------------------*
*
TEXT
*----------------------------------------------------------------------*

* --> P1
TEXT
* <-- P2
TEXT
*----------------------------------------------------------------------*
FORM C04_HISTORICO_ALTA_MES .
DATA:
HIST_ALTA LIKE STANDARD TABLE OF ZFI_BAJA_MATNR WITH HEADER LINE,
KONTH LIKE BSEG-HKONT,
KONT2 LIKE BSEG-HKONT,
TXT50(50) TYPE C,
TXT52(52) TYPE C.
SELECT * FROM ZFI_BAJA_MATNR
INTO CORRESPONDING FIELDS OF TABLE HIST_ALTA
WHERE BUKRS EQ '330'
AND
GJAHR IN S_ANO AND
MONAT IN S_MES
AND
ESTADO EQ 'A'.
REFRESH GT_SHWLOG.
LOOP AT HIST_ALTA.
GT_SHWLOG-CHECK = ''.
GT_SHWLOG-NRCOR = ''.
"01 CORRELATIVO
CONCATENATE HIST_ALTA-ERDAT+6(2) HIST_ALTA-ERDAT+4(2) HIST_ALTA-ERDAT+0(4)
INTO GT_SHWLOG-BLDAT SEPARATED BY '.'.
CONCATENATE HIST_ALTA-BUDAT+6(2) HIST_ALTA-BUDAT+4(2) HIST_ALTA-BUDAT+0(4)
INTO GT_SHWLOG-BUDAT SEPARATED BY '.'.
GT_SHWLOG-WERKS = HIST_ALTA-WERKS.
" CENTRO
GT_SHWLOG-LGORT = ''.
"05 ALMACEN
GT_SHWLOG-BWART = ''.
" CLASE MOV
GT_SHWLOG-MATNR = HIST_ALTA-MATNR.
" MATERIAL
*
OBTENIENDO LA DESCRIPCION DEL MATERIAL
PERFORM F_OBT_NAME_MATNR
USING
GT_SHWLOG-MATNR
CHANGING GT_SHWLOG-MAKTX.
GT_SHWLOG-MAKTX = GT_SHWLOG-MAKTX.
" DESCRIPCION MATERIAL
GT_SHWLOG-LABST = HIST_ALTA-MENGE.
" CANTIDAD (ERFMG)
GT_SHWLOG-VALOR = HIST_ALTA-DMBTR .
" VALOR DE LA CANTIDAD
GT_SHWLOG-MEINS = HIST_ALTA-MEINS.
"10 UND MEDIDA (ERFME)
GT_SHWLOG-KOSTL = ''.
" CENTRO DE COSTO - DO
C MATERIAL DADO DE BAJA
GT_SHWLOG-BKTXT = ''.
" TEXTO CABECERA
GT_SHWLOG-MBLNR = ''.
" DOCUMENTO DE MATERIAL (C
UANDO FUE DADO DE BAJA)
*OBTENEMOS CATEGORIA VALORACION - MATERIAL
SELECT * FROM MBEW
INTO CORRESPONDING FIELDS OF TABLE T_MBEW
WHERE MATNR EQ GT_SHWLOG-MATNR
AND BWKEY EQ GT_SHWLOG-WERKS
AND LBKUM NE 0
AND SALK3 NE 0
AND BKLAS NE 0.
LOOP AT T_MBEW.
* OBTENEMOS LA CUENTA MAYOR ENTRADA SEGUN CAT VALORIZACION DEL MATNR
PERFORM F_OBT_KONTH_MATNR USING
T_MBEW-BKLAS 'BSX' ''
CHANGING KONTH
TXT50.
* OBTENEMOS LA CUENTA MAYOR SALIDA SEGUN CAT VALORIZACION DEL MATNR
PERFORM F_OBT_KONTH_MATNR USING
T_MBEW-BKLAS 'GBB' 'VBR'

CHANGING KONT2
TXT52.
ENDLOOP.
GT_SHWLOG-KONTH = KONTH.
GT_SHWLOG-TXT50 = TXT50.
DE MAYOR
GT_SHWLOG-KONT2 = KONT2.
GT_SHWLOG-TXT52 = TXT52.
DE MAYOR
GT_SHWLOG-BELNR = HIST_ALTA-BELNR.
ADO AL DAR DE BAJA @FRANK
GT_SHWLOG-MONAT = HIST_ALTA-MONAT.
GT_SHWLOG-ESTADO = 'A'.
GT_SHWLOG-USNAM = HIST_ALTA-USNAM.
APPEND GT_SHWLOG.

"

ENDLOOP.
CLEAR W_CORRE.
LOOP AT GT_SHWLOG.
W_CORRE = W_CORRE + 1.
GT_SHWLOG-NRCOR = W_CORRE.
MODIFY GT_SHWLOG.
ENDLOOP.
ENDFORM.

" C04_HISTORICO_ALTA_MES

"
"

CUENTA MAYOR ENTRADA


DESCRIPCION DE CUENTA

"
"

CUENTA MAYOR SALIDA


DESCRIPCION DE CUENTA
DOCUMENTO CONTABLE GENER

También podría gustarte