martes, 8 de noviembre de 2011

Microsoft Bootvis

Nos sirve para optimizar el boteo de windows cuando tarda mucho en cargar el logo de windows o al entrar al sistema, correrlo seleccionar trace boot + drivers, se reinicia
luego de esto damos optimizar, se reinicia y listo.

viernes, 4 de noviembre de 2011

ZSDNETPRO

REPORT SDNETPR0.
*======================================================================*
* Tabellen *
*======================================================================*
TABLES : VBCO7.
TABLES : VBRP.
TABLES : MVKE.
TABLES : TVKO.
tables : TVTW.
TABLES : T001W.
TABLES : TSPA.
TABLES : TVFK.
TABLES : TVAK.
TABLES : TVAP.
TABLES : KNVV.
TABLES : KNA1.
TABLES : VBAK.
TABLES : TVTA.
*======================================================================*
* Includes *
*======================================================================*
INCLUDE ZRVREUSE_GLOBAL_DATA.
*INCLUDE RVREUSE_GLOBAL_DATA.
INCLUDE ZRVREUSE_LOCAL_DATA.
*INCLUDE RVREUSE_LOCAL_DATA.
INCLUDE ZRVREUSE_FORMS.
*INCLUDE RVREUSE_FORMS.
*======================================================================*
* Interne Strukturen *
*======================================================================*
DATA : BEGIN OF LT_MVKE OCCURS 1000.
DATA : MATNR LIKE MVKE-MATNR.
DATA : END OF LT_MVKE.
DATA: LT_KOMFKGN LIKE KOMFKGN OCCURS 1000 WITH HEADER LINE.
DATA : LT_KOMFKKO LIKE KOMV OCCURS 1000 WITH HEADER LINE.
DATA : LT_T683S LIKE T683S OCCURS 1000 WITH HEADER LINE.
DATA : LD_VBSK LIKE VBSK.
DATA : LT_KOMFK LIKE KOMFK OCCURS 1.
DATA : LT_KOMV LIKE KOMV OCCURS 1000 WITH HEADER LINE.
DATA : LT_THEAD LIKE THEADVB OCCURS 1000.
DATA : LT_VBFS LIKE VBFS OCCURS 1000 WITH HEADER LINE.
DATA : LT_VBPA LIKE VBPAVB OCCURS 1000.
DATA : LT_VBRK LIKE VBRKVB OCCURS 10 WITH HEADER LINE.
DATA : LT_VBRP LIKE VBRPVB OCCURS 1000 WITH HEADER LINE.
DATA : LT_VBSS LIKE VBSS OCCURS 10.
DATA : ADDRESS LIKE KNA1.
DATA : BEGIN OF LT_NETPR OCCURS 10.
INCLUDE STRUCTURE VBRPVB.
DATA : WAERK LIKE VBRK-WAERK,
END OF LT_NETPR.
DATA : TRVOG TYPE C,
LF_KVORG LIKE KOMK-KVORG.
DATA : LD_VTWEG LIKE VBCO7-VTWEG.
data : ld_use_control like rvsel-xfeld value 'X'.
*======================================================================*
* Selektionsdynpro 1000 *
*======================================================================*
*Block : Organisationsdaten--------------------------------------------*
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK ORGAN WITH FRAME TITLE TEXT-A01.
PARAMETERS: P_VKORG LIKE VBCO7-VKORG OBLIGATORY.
PARAMETERS: P_VTWEG LIKE VBCO7-VTWEG OBLIGATORY.
PARAMETERS: P_SPART LIKE VBCO7-SPART OBLIGATORY.
SELECTION-SCREEN END OF BLOCK ORGAN.
*Block : Kundendaten---------------------------------------------------*
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK KUNDE WITH FRAME TITLE TEXT-A02.
PARAMETERS: P_KUNNR LIKE VBCO7-KUNNR OBLIGATORY.
SELECTION-SCREEN END OF BLOCK KUNDE.
*Block : Kundendaten---------------------------------------------------*
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK MATER WITH FRAME TITLE TEXT-A03.
PARAMETERS: P_WERKS LIKE VBRP-WERKS OBLIGATORY.
*SELECT-OPTIONS:
PARAMETERS S_MATNR LIKE VBRP-MATNR.
SELECTION-SCREEN END OF BLOCK MATER.
*Block : Vorgabedaten--------------------------------------------------*
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK DATUM WITH FRAME TITLE TEXT-A04.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) TEXT-S05 FOR FIELD P_FKDAT.
SELECTION-SCREEN POSITION POS_LOW.
PARAMETERS: P_FKDAT LIKE VBRp-prsdt OBLIGATORY DEFAULT SY-DATUM.
SELECTION-SCREEN POSITION 50.
PARAMETERS: P_PSIMU TYPE PSIMU DEFAULT ' '.
SELECTION-SCREEN COMMENT 53(20) TEXT-S06 FOR FIELD P_PSIMU.
SELECTION-SCREEN END OF LINE.
PARAMETERS: P_FKARA LIKE VBAK-FKARA OBLIGATORY DEFAULT 'FX' .
PARAMETERS: P_AUART LIKE VBAK-AUART OBLIGATORY DEFAULT 'TA' .
PARAMETERS: P_PSTYV LIKE VBAP-PSTYV OBLIGATORY DEFAULT 'TAN' .
SELECTION-SCREEN END OF BLOCK DATUM.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN OUTPUT (PBO-Zeitpunkt) *
*======================================================================*
*AT SELECTION-SCREEN OUTPUT.
*======================================================================*
AT SELECTION-SCREEN OUTPUT.
DATA EXCLUDE LIKE RSEXFCODE OCCURS 0 WITH HEADER LINE.
IF SY-DYNNR = 1000.
CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
P_STATUS = 'SELK'
TABLES
P_EXCLUDE = EXCLUDE
EXCEPTIONS
OTHERS = 1.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_VKORG *
*======================================================================*
AT SELECTION-SCREEN ON P_VKORG.
IF SY-DYNNR = 1000.
IF NOT P_VKORG IS INITIAL.
SELECT SINGLE * FROM TVKO WHERE VKORG = P_VKORG.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_VKORG SPACE SPACE 'TVKO'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_VTWEG *
*======================================================================*
AT SELECTION-SCREEN ON P_VTWEG.
IF SY-DYNNR = 1000.
IF NOT P_VTWEG IS INITIAL.
SELECT SINGLE * FROM TVTW WHERE VTWEG = P_VTWEG.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_VTWEG SPACE SPACE 'TVTW'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_SPART *
*======================================================================*
AT SELECTION-SCREEN ON P_SPART.
IF SY-DYNNR = 1000.
IF NOT P_SPART IS INITIAL.
SELECT SINGLE * FROM TSPA WHERE SPART = P_SPART.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_SPART SPACE SPACE 'TSPA'.
ENDIF.
ENDIF.
ENDIF.

*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_KUNNR *
*======================================================================*
AT SELECTION-SCREEN ON P_KUNNR.
IF SY-DYNNR = 1000.
IF NOT P_KUNNR IS INITIAL.
CALL FUNCTION 'VIEW_KNA1'
EXPORTING
KUNDE = P_KUNNR
IMPORTING
ANSCHRIFT = ADDRESS
EXCEPTIONS
NO_KNA1 = 1
OTHERS = 2.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_KUNNR SPACE SPACE 'KNA1'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_WERKS *
*======================================================================*
AT SELECTION-SCREEN ON P_WERKS.
IF SY-DYNNR = 1000.
IF NOT P_WERKS IS INITIAL.
SELECT SINGLE * FROM T001W WHERE WERKS = P_WERKS.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_WERKS SPACE SPACE 'T001W'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_FKARA *
*======================================================================*
AT SELECTION-SCREEN ON P_FKARA.
IF SY-DYNNR = 1000.
IF NOT P_FKARA IS INITIAL.
SELECT SINGLE * FROM TVFK WHERE FKART = P_FKARA.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_FKARA SPACE SPACE 'TVFK'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_AUART *
*======================================================================*
AT SELECTION-SCREEN ON P_AUART.
IF SY-DYNNR = 1000.
IF NOT P_AUART IS INITIAL.
SELECT SINGLE * FROM TVAK WHERE AUArt = P_AUART.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_AUART SPACE SPACE 'TVAK'.
ENDIF.
ENDIF.
ENDIF.
*======================================================================*
* Ereignis : AT SELECTION-SCREEN ON (PAI-Zeitpunkt) *
* für das Feld P_PSTYV *
*======================================================================*
AT SELECTION-SCREEN ON P_PSTYV.
IF SY-DYNNR = 1000.
IF NOT P_PSTYV IS INITIAL.
SELECT SINGLE * FROM TVAP WHERE PSTYV = P_PSTYV.
IF NOT SY-SUBRC IS INITIAL.
MESSAGE e058(00) WITH P_PSTYV SPACE SPACE 'TVAP'.
ENDIF.
ENDIF.
ENDIF.

*======================================================================*
* Ereignis : AT SELECTION-SCREEN (PAI-Zeitpunkt) *
* letztes PAI-Ereignis *
*======================================================================*
AT SELECTION-SCREEN.
* daten selektieren
IF SY-UCOMM = 'SPAL'.
IF GS_SD_ALV-VARIANT IS INITIAL.
PERFORM REUSE_ALV_VARIANT_FILL USING SY-REPID
TRVOG
SPACE
SY-UNAME
GS_SD_ALV-VARIANT.
ENDIF.
* PERFORM ALV_VARIANT_DISPLAY USING 'X'.
DATA: LV_VIEWNAME LIKE DD02L-TABNAME.
LV_VIEWNAME = 'LT_NETPR'.
GS_SD_ALV-VARIANT-REPORT = 'SDNETPR0'.
PERFORM REUSE_ALV_FIELDCATALOG_MERGE USING GS_SD_ALV-FIELDCAT[]
LV_VIEWNAME
SPACE
SPACE.
CALL FUNCTION 'REUSE_ALV_VARIANT_SELECT'
EXPORTING
I_DIALOG = 'X'
I_USER_SPECIFIC = 'A'
I_DEFAULT = SPACE
IT_DEFAULT_FIELDCAT = GS_SD_ALV-FIELDCAT[]
I_LAYOUT = GS_SD_ALV-LAYOUT
IMPORTING
ET_FIELDCAT = GS_SD_ALV-FIELDCAT[]
ET_SORT = GS_SD_ALV-SORT[]
ET_FILTER = GS_SD_ALV-FILTER[]
CHANGING
CS_VARIANT = GS_SD_ALV-VARIANT
EXCEPTIONS
WRONG_INPUT = 1
FC_NOT_COMPLETE = 2
NOT_FOUND = 3
PROGRAM_ERROR = 4
OTHERS = 5.
SET SCREEN SY-DYNNR.
LEAVE SCREEN.
ENDIF.
*======================================================================*
* Ereignis : START-OF-SELECTION (PAI-Zeitpunkt) *
* *
*======================================================================*
START-OF-SELECTION.
* daten selektieren
IF GS_SD_ALV-VARIANT IS INITIAL.
GS_SD_ALV-VARIANT-REPORT = 'SDNETPR0'.
PERFORM REUSE_ALV_VARIANT_DEFAULT
USING GS_SD_ALV.
ENDIF.
SELECT SINGLE * FROM TVTA WHERE VKORG = P_VKORG
AND VTWEG = P_VTWEG
AND SPART = P_SPART.
LD_VTWEG = TVTA-VTWKU.

SELECT MATNR
INTO CORRESPONDING FIELDS OF TABLE LT_MVKE
FROM MVKE
WHERE MATNR EQ S_MATNR AND
VKORG EQ P_VKORG AND
VTWEG EQ LD_VTWEG.
CLEAR LT_KOMFKGN.
LT_KOMFKGN-MANDT = SY-MANDT.
LT_KOMFKGN-AUART = P_AUART.
LT_KOMFKGN-VKORG = P_VKORG.
LT_KOMFKGN-VTWEG = P_VTWEG.
LT_KOMFKGN-SPART = P_SPART.
LT_KOMFKGN-FKDAT = P_FKDAT.
LT_KOMFKGN-KUNAG = P_KUNNR.
LT_KOMFKGN-PSTYV = P_PSTYV.
LT_KOMFKGN-KWMENG = 1.
LT_KOMFKGN-WERKS = P_WERKS.
LT_KOMFKGN-VGBEL = SY-UZEIT.
LT_KOMFKGN-VGBEL+6(4) = '9999'.
LT_KOMFKGN-FKARA = P_FKARA.
LT_KOMFKGN-TAXM1 = '1'.
LT_KOMFKGN-TAXK1 = '1'.


SELECT SINGLE * FROM TVFK WHERE FKART = 'FX'.

LOOP AT LT_MVKE.
LT_KOMFKGN-MATNR = LT_MVKE-MATNR.

* prepare material number
if not lt_komfkgn-matnr is initial.
call function 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = lt_komfkgn-matnr
IMPORTING
output = lt_komfkgn-matnr.
endif.

LT_KOMFKGN-VGPOS = LT_KOMFKGN-VGPOS + 1.
APPEND LT_KOMFKGN.
ENDLOOP.

IF NOT P_PSIMU IS INITIAL.
LF_KVORG = '08'.
ENDIF.

CALL FUNCTION 'GN_INVOICE_CREATE'
EXPORTING
VBSK_I = LD_VBSK
ID_KVORG = LF_KVORG
id_no_dialog = 'X'
invoice_date = p_fkdat
pricing_date = p_fkdat
IMPORTING
VBSK_E = LD_VBSK
TABLES
XKOMFK = LT_KOMFK
XKOMFKGN = LT_KOMFKGN
XKOMFKKO = LT_KOMFKKO
XKOMV = LT_KOMV
XTHEAD = LT_THEAD
XVBFS = LT_VBFS
XVBPA = LT_VBPA
XVBRK = LT_VBRK
XVBRP = LT_VBRP
XVBSS = LT_VBSS
EXCEPTIONS
OTHERS = 1.

*======================================================================*
* Ereignis : END-OF-SELECTION (PAI-Zeitpunkt) *
* *
*======================================================================*
END-OF-SELECTION.
DATA : PT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA : PS_LAYOUT TYPE SLIS_LAYOUT_ALV.

LT_NETPR[] = LT_VBRP[].
LT_NETPR-WAERK = LT_VBRK-WAERK.
MODIFY LT_NETPR TRANSPORTING WAERK WHERE WAERK EQ SPACE.
*FJCH MANDAMOS LA INFORMACION A MEMORIA
DATA LINEAS LIKE SY-TABIX.
DATA PN LIKE LT_NETPR-NETPR.
DATA PB LIKE LT_NETPR-NETPR.
* BREAK-POINT.
DESCRIBE TABLE LT_NETPR LINES LINEAS.
IF LINEAS > 0.
READ TABLE LT_NETPR INDEX 1.
EXPORT PB FROM LT_NETPR-NETPR TO MEMORY ID 'PB'.
* LOOP AT LT_KOMV WHERE KWERT_K < 0.
* LT_NETPR-NETPR = LT_NETPR-NETPR + LT_KOMV-KWERT_K.
* ENDLOOP.
DATA SUMA LIKE LT_KOMV-KBETR.
LOOP AT LT_KOMV WHERE WAERS = '' and KAWRT <> '0' AND KBETR < 0 .
SUMA = SUMA + ( LT_KOMV-KBETR * -1 ).
ENDLOOP.
SUMA = SUMA / 1000.
SUMA = 1 - SUMA.

LT_NETPR-NETPR = LT_NETPR-NETPR * SUMA.
EXPORT PN FROM LT_NETPR-NETPR TO MEMORY ID 'PN'.
ELSE.
LT_NETPR-NETPR = 0.
EXPORT PB FROM LT_NETPR-NETPR TO MEMORY ID 'PB'.
EXPORT PN FROM LT_NETPR-NETPR TO MEMORY ID 'PN'.
ENDIF.


* CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
* EXPORTING
* I_PROGRAM_NAME = 'SDNETPR0'
* I_INTERNAL_TABNAME = 'LT_NETPR'
* I_INCLNAME = 'SDNETPR0'
* CHANGING
* CT_FIELDCAT = PT_FIELDCAT
* EXCEPTIONS
* INCONSISTENT_INTERFACE = 1
* PROGRAM_ERROR = 2
* OTHERS = 3.
*
* PS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
* PS_LAYOUT-DETAIL_POPUP = 'X'.
* PS_LAYOUT-NO_KEYFIX = 'X'.
* PS_LAYOUT-KEY_HOTSPOT = 'X'.
*
* data : ld_function(30).
* if ld_use_control is initial.
* ld_function = 'REUSE_ALV_LIST_DISPLAY'.
* else.
* ld_function = 'REUSE_ALV_GRID_DISPLAY'.
* endif.
* CALL FUNCTION ld_function
* EXPORTING
* I_CALLBACK_PROGRAM = 'SDNETPR0'
* I_CALLBACK_PF_STATUS_SET = 'NETPR_PF_STATUS_SET'
* I_CALLBACK_USER_COMMAND = 'NETPR_USER_COMMAND'
* IS_LAYOUT = PS_LAYOUT
* IT_FIELDCAT = PT_FIELDCAT
* I_DEFAULT = 'X'
* I_SAVE = 'A'
* IS_VARIANT = GS_SD_ALV-VARIANT
* TABLES
* T_OUTTAB = LT_NETPR
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2.
*
**---------------------------------------------------------------------*
** FORM NETPR_PF_STATUS_SET *
**---------------------------------------------------------------------*
** ........ *
**---------------------------------------------------------------------*
** --> RT_EXTAB *
**---------------------------------------------------------------------*
*FORM NETPR_PF_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
* DATA: LT_EXTAB TYPE SLIS_T_EXTAB.
* DATA: BEGIN OF EXCTAB OCCURS 1,
* OKCOD(4) TYPE C,
* END OF EXCTAB.
*
* REFRESH EXCTAB.
*
* APPEND LINES OF EXCTAB TO LT_EXTAB.
* APPEND LINES OF RT_EXTAB TO LT_EXTAB.
*
* SET PF-STATUS 'NETPR_ALV' EXCLUDING LT_EXTAB.
*
*ENDFORM.
*
**---------------------------------------------------------------------*
** FORM NETPR_USER_COMMAND *
**---------------------------------------------------------------------*
** ........ *
**---------------------------------------------------------------------*
** --> R_UCOMM *
** --> RS_SELFIELD *
**---------------------------------------------------------------------*
*FORM NETPR_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
* RS_SELFIELD TYPE SLIS_SELFIELD.
*
* IF R_UCOMM = 'EPRO'.
* READ TABLE LT_VBFS INDEX 1.
* IF SY-SUBRC IS INITIAL.
* CALL FUNCTION 'VBFS_TREE_LIST_DISPLAY'
** EXPORTING
** I_VBFS_CALLBACK_PROGRAM =
** I_VBFS_CALLBACK_USER_COMMAND =
** I_VBFS_CALLBACK_GUI_STATUS =
* TABLES
* I_VBFS = LT_VBFS
* EXCEPTIONS
* OTHERS = 1.
* ELSE.
* MESSAGE E008(VR).
* ENDIF.
* ENDIF.
*
*
*
*
*
*
*
*ENDFORM.

Calcular precio neto con descuentos

************************************************************************
*DESCRIPCION
************************************************************************
*Reporte que genera un listado con el precio neto de cada material
*considerando los descuentos.
*Los parametros del programa son cliente y material y un check para
*bajar o no el archivo de texto y ruta del servidor donde se guardara
*el archivo txt
*FJCH OCT.2011
************************************************************************
REPORT ZPREFIN .
TABLES: KNA1,LIPS,MAKT,MARA,KNVV,MARC.
INCLUDE ZALV.

************************************************************************
*VARIABLES
************************************************************************
DATA g_repid like sy-repid.
data A(10).
data porc type p.
DATA LINEAS LIKE SY-TABIX.
DATA LINEAS2 LIKE SY-TABIX.

************************************************************************
*TABLAS INTERNAS
************************************************************************
*TABLA DE SALIDA DEL AVL
DATA: BEGIN OF IOUT OCCURS 0,
WERKS like KNVV-VWERK,
VKORG LIKE KNVV-VKORG,
VTWEG LIKE KNVV-VTWEG,
SPART LIKE KNVV-SPART,
BZIRK LIKE KNVV-BZIRK,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
MATNR LIKE LIPS-MATNR,
MAKTX LIKE MAKT-MAKTX,
NETPR2 LIKE LIPS-NETPR,
NETPR LIKE LIPS-NETPR
.
DATA END OF IOUT.
*TABLA CON LA INFORMACION DE LOS MATERIALES.
DATA IMAKT LIKE MAKT OCCURS 0 WITH HEADER LINE.
DATA BEGIN OF IMARA OCCURS 0.
INCLUDE STRUCTURE MARA.
DATA WERKS LIKE MARC-WERKS.
DATA END OF IMARA.
*TABLA CON LA INFORMACION DE LOS CLIENTES
DATA BEGIN OF IKNA1 OCCURS 0.
INCLUDE STRUCTURE KNA1.
DATA: BZIRK LIKE KNVV-BZIRK,
VWERK LIKE KNVV-VWERK,
VKORG LIKE KNVV-VKORG,
VTWEG LIKE KNVV-VTWEG,
SPART LIKE KNVV-SPART,
NETPR LIKE LIPS-NETPR,
NETPR2 LIKE LIPS-NETPR.
DATA END OF IKNA1.

************************************************************************
*PARAMETROS
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK LIST WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
P_CLI FOR KNA1-KUNNR OBLIGATORY,
P_MATKL FOR MARA-MATKL,
P_MAT FOR LIPS-MATNR,
P_ZONA FOR KNVV-BZIRK,
P_WERKS FOR MARC-WERKS.
SELECTION-SCREEN END OF BLOCK LIST.

SELECTION-SCREEN BEGIN OF BLOCK LIST2 WITH FRAME TITLE TEXT-002.
PARAMETERS:
P_CHECK AS CHECKBOX,
P_PATH(128) DEFAULT
'C:\Inetpub\ftproot\comercial\PRNETO.TXT',
P_SEPARA(1) DEFAULT '|'.
SELECTION-SCREEN END OF BLOCK LIST2.

************************************************************************
*START-OF-SELECTION
************************************************************************
START-OF-SELECTION.
g_repid = sy-repid.
PERFORM TRAEINFO.
DESCRIBE TABLE IOUT LINES LINEAS.
DELETE IOUT WHERE NETPR = 0.
IF P_CHECK = 'X'.
PERFORM DOWNLOADA.
MESSAGE I368(00) WITH 'Se ha descargado archivo ' P_PATH.
ELSE.
PERFORM DESPLIEGAALV.
ENDIF.


*&---------------------------------------------------------------------*
*& Form TRAEINFO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM TRAEINFO.
DATA FECHA2 LIKE SY-DATUM.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = 1
TEXT = 'Recolectando datos'.

FECHA2 = SY-DATUM - 30.
*SI SELECCIONA TODOS LOS CLIENTES SOLO
*TRAEMOS LOS CLIENTES QUE HAN CREADO UN PEDIDO EN EL ULTIMO MES
IF P_CLI-LOW = '*'.
SELECT KNA1~KUNNR NAME1 KNVV~VKORG KNVV~VTWEG KNVV~SPART BZIRK FROM
KNA1
JOIN KNVV ON KNVV~KUNNR = KNA1~KUNNR
JOIN VBAK ON VBAK~KUNNR = KNA1~KUNNR INTO
CORRESPONDING FIELDS OF TABLE IKNA1
WHERE KNA1~KUNNR IN P_CLI AND
BZIRK IN P_ZONA
AND ( VBAK~ERDAT >= FECHA2 AND VBAK~ERDAT <= SY-DATUM ).
ELSE.
SELECT KNA1~KUNNR NAME1 KNVV~VKORG KNVV~VTWEG KNVV~SPART BZIRK FROM
KNA1
JOIN KNVV ON KNVV~KUNNR = KNA1~KUNNR INTO
CORRESPONDING FIELDS OF TABLE IKNA1
WHERE KNA1~KUNNR IN P_CLI AND
BZIRK IN P_ZONA
.
ENDIF.
SORT IKNA1 BY KUNNR BZIRK VWERK VKORG VTWEG SPART.
DELETE ADJACENT DUPLICATES FROM IKNA1 COMPARING ALL FIELDS.

*SI SELECCIONA TODOS LOS MATERIALES TOMAMOS TODOS LOS QUE SE HAYA ECHO
*UN PEDIDO EN EL ULTIMO MES DE LO CONTRARIO LOS QUE INDIQUE EL PARAMETRO
DATA BEGIN OF MATERIALES OCCURS 0.
DATA MATNR LIKE VBAP-MATNR.
DATA END OF MATERIALES.

IF P_MAT-LOW IS INITIAL OR P_MAT-LOW = '*'.
CLEAR P_MAT. REFRESH P_MAT.
SELECT MATNR FROM VBAP INTO TABLE MATERIALES
WHERE ERDAT >= FECHA2 AND ERDAT <= SY-DATUM.
SORT MATERIALES BY MATNR.
DELETE ADJACENT DUPLICATES FROM MATERIALES COMPARING MATNR.
LOOP AT MATERIALES.
P_MAT-SIGN = 'I'.
P_MAT-OPTION = 'EQ'.
P_MAT-LOW = MATERIALES-MATNR.
APPEND P_MAT.
ENDLOOP.
ENDIF.

SELECT MARA~MATNR WERKS FROM MARA
JOIN MARC ON MARA~MATNR = MARC~MATNR
INTO CORRESPONDING FIELDS OF TABLE IMARA
WHERE MARA~MATNR IN P_MAT
AND WERKS IN P_WERKS
AND MTART = 'FERT'
AND MATKL IN P_MATKL.
IF SY-SUBRC = 0.
DELETE ADJACENT DUPLICATES FROM IMARA COMPARING MATNR.
ENDIF.
IF SY-SUBRC = 0.
SELECT MATNR MAKTX FROM MAKT INTO CORRESPONDING FIELDS OF TABLE
IMAKT
FOR ALL ENTRIES IN IMARA
WHERE MATNR = IMARA-MATNR.
ENDIF.
*CALCULAMOS EL PRECIO NETO Y BRUTO PARA CADA CLIENTE CON CADA PRODUCTO
*DE LOS QUE SACAMOS ANTERIORMENTE
DESCRIBE TABLE IKNA1 LINES LINEAS.
DESCRIBE TABLE IKNA1 LINES LINEAS2.
DATA CLINEAS2(20).
DATA CLINEAS22(20).
MOVE LINEAS2 TO CLINEAS22.
LOOP AT IKNA1.
MOVE SY-TABIX TO CLINEAS2.
CONDENSE: CLINEAS2, CLINEAS22.
CONCATENATE CLINEAS2 '/' CLINEAS22 INTO A.
porc = sy-tabix * ( 100 / lineas ).
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = porc
TEXT = A.
LOOP AT IMARA.
PERFORM F_PRECIOF.
MOVE-CORRESPONDING IKNA1 TO IOUT.
IOUT-MATNR = IMARA-MATNR.
IOUT-WERKS = IMARA-WERKS.

READ TABLE IMAKT WITH KEY MATNR = IMARA-MATNR.
IF SY-SUBRC = 0.
IOUT-MAKTX = IMAKT-MAKTX.
ENDIF.
APPEND IOUT.
ENDLOOP.
ENDLOOP.
ENDFORM. " TRAEINFO
*&---------------------------------------------------------------------*
*& Form DESPLIEGAALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DESPLIEGAALV.
PERFORM obt_descrip_campos_tabla USING g_repid 'IOUT'.
PERFORM camb_descrip_campos_tabla USING 'NETPR' 'Pr.Bruto'.
PERFORM camb_descrip_campos_tabla USING 'NETPR2' 'Pr.Neto'.
PERFORM carac_gen_listado.
PERFORM visualizar_lista TABLES IOUT USING 'IOUT' g_repid .
ENDFORM. " DESPLIEGAALV
*&---------------------------------------------------------------------*
*& Form DESPLIEGAALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form set_status using rt_extab type slis_t_extab.

set pf-status 'ZSTANDARD'. "Status nuevo
set titlebar 'T001'. "Titulo

ENDFORM.
*&---------------------------------------------------------------------*
*& Form DOWNLOADA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DOWNLOADA.
DATA: LINEA(10000),
CNETWR(20),CNETWR2(20).
OPEN DATASET P_PATH FOR OUTPUT IN TEXT MODE.
LOOP AT IOUT.
CLEAR: LINEA,CNETWR,CNETWR2.
MOVE IOUT-NETPR TO CNETWR.
MOVE IOUT-NETPR2 TO CNETWR2.
CONDENSE: CNETWR, CNETWR2.
CONCATENATE
IOUT-WERKS P_SEPARA
IOUT-VKORG P_SEPARA
IOUT-VTWEG P_SEPARA
IOUT-SPART P_SEPARA
IOUT-BZIRK P_SEPARA
IOUT-KUNNR P_SEPARA
IOUT-NAME1 P_SEPARA
IOUT-MATNR P_SEPARA
IOUT-MAKTX P_SEPARA
CNETWR2 P_SEPARA
CNETWR P_SEPARA
INTO LINEA.
TRANSFER LINEA TO P_PATH.
ENDLOOP.
CLOSE DATASET P_PATH.
ENDFORM. " DOWNLOADA
*&---------------------------------------------------------------------*
*& Form F_PRECIOF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IOUT_MATNR text
* -->P_IOUT_KUNNR text
*----------------------------------------------------------------------*
FORM F_PRECIOF.
SUBMIT ZSDNETPR0
WITH P_VKORG = IKNA1-VKORG
WITH P_VTWEG = IKNA1-VTWEG
WITH P_SPART = IKNA1-SPART
WITH P_KUNNR = IKNA1-KUNNR
WITH P_WERKS = IMARA-WERKS
WITH S_MATNR = IMARA-MATNR
WITH P_FKDAT = SY-DATUM AND RETURN.
IMPORT PB TO IKNA1-NETPR FROM MEMORY ID 'PB'.
IMPORT PN TO IKNA1-NETPR2 FROM MEMORY ID 'PN'.
ENDFORM. " F_PRECIOF

Smartform

*Programa ejemplo que recolecta datos y luego los manda a un smartform por medio de *itab1

REPORT ZTESTSMART .

* Calling SMARTFORMS from your ABAP program.
* Collecting all the table data in your program, and pass once to
* SMARTFORMS
* Declare your table type in :-
* Global Settings -> Form Interface
* Global Definintions -> Global Data
* Main Window -> Table -> DATA
*
* Written by : SAP Hints and Tips on Configuration and ABAP/4
*Programming
* http://sapr3.tripod.com
*

TABLES: MKPF.

DATA: FM_NAME TYPE RS38L_FNAM.

DATA: BEGIN OF INT_MKPF OCCURS 0.
INCLUDE STRUCTURE MKPF.
DATA: END OF INT_MKPF.

data itab1 like int_mkpf occurs 0 with header line.

SELECT-OPTIONS S_MBLNR FOR MKPF-MBLNR MEMORY ID 001.

select * from mkpf into corresponding fields of table int_mkpf up to 10
rows.

* At the end of your program.
* Passing data to SMARTFORMS

*call function 'SSF_FUNCTION_MODULE_NAME'
* exporting
* formname = 'ZCON_BANCARIA'
* VARIANT = ' '
* DIRECT_CALL = ' '
* IMPORTING
* FM_NAME = FM_NAME
* EXCEPTIONS
* NO_FORM = 1
* NO_FUNCTION_MODULE = 2
* OTHERS = 3.
*
*if sy-subrc <> 0.
* WRITE: / 'ERROR 1'.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*endif.
itab1[] = int_mkpf[].
call function '/1BCDWB/SF00000011'
*call function FM_NAME
* EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
* CONTROL_PARAMETERS =
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
* OUTPUT_OPTIONS =
* USER_SETTINGS = 'X'
* IMPORTING
* DOCUMENT_OUTPUT_INFO =
* JOB_OUTPUT_INFO =
* JOB_OUTPUT_OPTIONS =
TABLES
itab1 = itab1
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.

if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.

miércoles, 2 de noviembre de 2011

Cargar archivo UNIX

*Los archivos de unix tienen diferente separador de lineas, si cargas un archivo por *medio de GUI_UPLOAD o alguna funcion parecida al cargarla te pondra todo el texto en *una sola linea, para evitar esto podemos pasar el archivo cargado al servidor y luego *leerlo desde ahi.

REPORT ZEX_READFILE_FROMDIR LINE-SIZE 1000
.


Data: d_filename like IBIPPARMS-PATH,
d_file type string.

data : begin of itab occurs 0,
values(10000),
end of itab.

* The following function module calls the File/Path Selector Dialog Box

CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = d_filename.

d_file = d_filename.

* The following function module uploads the file into the internal table

CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = d_file
FILETYPE = 'BIN'
HAS_FIELD_SEPARATOR = ' '
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
* IMPORTING
* FILELENGTH =
* HEADER =
TABLES
DATA_TAB = itab
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17.


IF SY-SUBRC = 0.

ENDIF.

* Output the internal Table


DATA P_PATH(128) value
'C:\'.

DATA: LINEA(1000),
CNETWR(20).
OPEN DATASET P_PATH FOR OUTPUT IN TEXT MODE.
loop at itab.
TRANSFER itab-values TO P_PATH.
ENDLOOP.
CLOSE DATASET P_PATH.

OPEN DATASET P_PATH FOR INPUT IN TEXT MODE.
loop at itab.
TRANSFER itab-values TO P_PATH.
ENDLOOP.
CLOSE DATASET P_PATH.

clear itab.
refresh itab.

open dataset P_PATH for input in text mode.
if sy-subrc is initial.
do.
read dataset P_PATH into itab.
if not sy-subrc is initial.
exit.
endif.
append itab.
enddo.
endif.
close dataset P_PATH.



loop at itab.
Write:/ ITAB.
endloop.
data text(100).
text =
'Este archivo se crea cada que se ejecuta el Programa'.
append itab.


OPEN DATASET P_PATH FOR OUTPUT IN TEXT MODE.
TRANSFER text TO P_PATH.
CLOSE DATASET P_PATH.