Documentos de Académico
Documentos de Profesional
Documentos de Cultura
: 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),
"
"
KONT2(10),
TXT52(50),
BELNR(10),
"
"
"
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
P_PAO
*&---------------------------------------------------------------------*
*&
DYNPRO
*&---------------------------------------------------------------------*
CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED.
DATA: OK_CODE
LIKE SY-UCOMM,
"
GRID1
GRID2
"LCL_EVENT_RECEIVER DEFINITION
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.
*
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.
"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.
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'.
**
**
**
*
*
*
*
*
*
*
*
*
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.
*************************************************************************
* 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.
0
W_CONT = W_CONT + 1.
MOVE-CORRESPONDING GT_SHWLOG TO 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.
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.
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.
*
ENDMODULE.
*&---------------------------------------------------------------------*
*&
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.
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.
= 'MATNR'.
= 'GT_SHWLOG'.
= 'MATERIAL'.
= 'MATERIAL'.
= 'MATERIAL'.
= 'MATERIAL'.
= 18.
= V_POS.
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.
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'.
= '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'.
"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
"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
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
* --> 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
"
"
"
"