MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 31/05/13, 15:14:29
CRISTINO.GARCIA CRISTINO.GARCIA is offline
Senior Member
 
Fecha de Ingreso: ago 2012
Mensajes: 101
Ruptura de Control

Hola a todos

En un reporte que estoy trabajando y necesito realizar una ruptura de control, esta no me esta respetando el corte al momento de enviarla por correo. Cada vez que cambie de codigo de cliente debo enviar los documentos asociados por email y aqui es donde me mezcla los codigos que puedo revisar.

Muchas Gracias de antemano.




*----------------------------------------------------------------------*
* RUTINA DE IMPRESION DEL COMPROBANTE
*----------------------------------------------------------------------*
FORM IMPRIMIR_REPOR.
FORMAT RESET.

SORT DOCUM BY CTNUMBER TITRA XBLNR.
LOOP AT DOCUM.
AT NEW CTNUMBER.
NEW-PAGE.
ON_OFF = 1.
CONT_OP = 0.
SY-PAGNO = 1.
ENDAT.

CONT_OP = CONT_OP + 1.
*------------------ CAMBIA LA INTENSIDAD DE LA LINEA ------------------*

IF ON_OFF = 1.
ON_OFF = 0.
FORMAT COLOR COL_NORMAL INTENSIFIED ON.
ELSE.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
ON_OFF = 1.
ENDIF.
*----------------------------------------------------------------------*
WRITE: /002 CONT_OP NO-ZERO,
008 DOCUM-BLDAT USING EDIT MASK '__/__/____',
019 DOCUM-XBLNR RIGHT-JUSTIFIED,
040 DOCUM-ZUONR RIGHT-JUSTIFIED,
061 DOCUM-NOTAD RIGHT-JUSTIFIED,
082 DOCUM-NOTAC RIGHT-JUSTIFIED,
103 DOCUM-TITRA CENTERED,
115 DOCUM-F_AFE RIGHT-JUSTIFIED,
136 DOCUM-DMBTR,
153 DOCUM-EXENTO,
170 DOCUM-HWBAS,
187(10) DOCUM-KBETR RIGHT-JUSTIFIED,
198 DOCUM-HWSTE,
217 DOCUM-WT_QBSHH.

WRITE: 001 SY-VLINE,
007 SY-VLINE,
018 SY-VLINE,
039 SY-VLINE,
060 SY-VLINE,
081 SY-VLINE,
102 SY-VLINE,
114 SY-VLINE,
135 SY-VLINE,
152 SY-VLINE,
169 SY-VLINE,
186 SY-VLINE,
197 SY-VLINE,
214 SY-VLINE,
216 SY-VLINE,
233 SY-VLINE.

*---------------------- TOTALES DEL COMPROBANTE -----------------------*
T_DMBTR = T_DMBTR + DOCUM-DMBTR.
T_EXENTO = T_EXENTO + DOCUM-EXENTO.
T_HWBAS = T_HWBAS + DOCUM-HWBAS.
T_HWSTE = T_HWSTE + DOCUM-HWSTE.
T_WT_QBSHH = T_WT_QBSHH + DOCUM-WT_QBSHH.



AT END OF CTNUMBER. " Imprime totales del comprobante
WRITE: SY-ULINE(214),
216 SY-ULINE(18).
WRITE: /136 T_DMBTR,
153 T_EXENTO,
170 T_HWBAS,
198 T_HWSTE,
217 T_WT_QBSHH.
WRITE: 135 SY-VLINE,
152 SY-VLINE,
169 SY-VLINE,
186 SY-VLINE,
197 SY-VLINE,
214 SY-VLINE,
216 SY-VLINE,
233 SY-VLINE.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
WRITE: /135 SY-ULINE(52),
197 sy-uline(18),
216 SY-ULINE(18).
CLEAR: T_DMBTR, T_EXENTO, T_HWBAS, T_HWSTE, T_WT_QBSHH.

IF LIST_COR = 'X'.
ADR6-SMTP_ADDR = SPACE.
PERFORM BUSCA_EMAIL.
ENDIF.
ENDAT.

ENDLOOP.


ENDFORM.

*----------------------------------------------------------------------*
* RUTINA DE IMPRESION DE ENCABEZADOS
*----------------------------------------------------------------------*
FORM ENCABEZADOS.
SKIP.
WRITE: /020 SY-TITLE(70) CENTERED,
110 SY-ULINE(20), 131 SY-ULINE(23),
157 SY-ULINE(14).
CONCATENATE TEXT-T01 TEXT-T02 INTO TEXTO.
WRITE: /005 TEXTO(100) CENTERED, 110 SY-VLINE,
112 TEXT-R01, 129 SY-VLINE, 131 SY-VLINE,
135 TEXT-R05, 153 SY-VLINE, 157 SY-VLINE,
161 TEXT-R02, 170 SY-VLINE.
CONCATENATE TEXT-T03 TEXT-T04 INTO TEXTO.
*--------- Imprimir fechas dependiendo del tipo de retención ----------*
IF DOCUM-WT_POSTM = '1'. " Posteo Ret.Fac
PEFIS = DOCUM-BUDAT.
ELSE. " Posteo Ret.Pago
PEFIS = DOCUM-AUGDT.
ENDIF.
*----------------------------------------------------------------------*
WRITE: /005 TEXTO(100) CENTERED, 110 SY-VLINE,
112 PEFIS(4), 116 '-',
117 PEFIS+4(2), 119 '-',
120 DOCUM-CTNUMBER+2(8), 129 SY-VLINE, 131 SY-VLINE,
133 TEXT-R06, PEFIS(4), '/', TEXT-R07, PEFIS+4(2),
153 SY-VLINE, 157 SY-VLINE,
159 PEFIS USING EDIT MASK '__-__-____', 170 SY-VLINE.
CONCATENATE TEXT-T05 TEXT-T06 INTO TEXTO.
CONCATENATE PEFIS(4) '-' PEFIS+4(2) '-' DOCUM-CTNUMBER+2(8) INTO DOCUM2-COMPROBANTE.
DOCUM2-LIFNR = DOCUM-LIFNR.
DOCUM2-NAME1 = DOCUM-NAME1.
DOCUM2-STCD1 = DOCUM-STCD1.
APPEND DOCUM2.
WRITE: /005 TEXTO(100) CENTERED, 110 SY-ULINE(20), 131 SY-ULINE(23),
157 SY-ULINE(14).
SKIP.
WRITE: /006 SY-ULINE(85), 97 SY-ULINE(65).
WRITE: /006 SY-VLINE, 8 TEXT-R03, 90 SY-VLINE,
97 SY-VLINE, 99 TEXT-R04, 161 SY-VLINE.
WRITE: /006 SY-VLINE, 8 NOMSOC, 90 SY-VLINE,
97 SY-VLINE, 99 RIFSOC, 161 SY-VLINE.
WRITE: /006 SY-ULINE(85), 97 SY-ULINE(65).
WRITE: /006 SY-ULINE(156).
WRITE: /006 SY-VLINE, 8 TEXT-R08, 161 SY-VLINE.
WRITE: /006 SY-VLINE, 8 DIRSOC, 161 SY-VLINE.
WRITE: /006 SY-ULINE(156).
WRITE: /006 SY-ULINE(85), 97 SY-ULINE(65).
WRITE: /006 SY-VLINE, 8 TEXT-R09, 90 SY-VLINE,
97 SY-VLINE, 99 TEXT-R10, 161 SY-VLINE.
CONCATENATE DOCUM-NAME1 DOCUM-NAME2 INTO NOMBRE_P SEPARATED BY SPACE.
WRITE: /006 SY-VLINE, 8 NOMBRE_P, 90 SY-VLINE,
97 SY-VLINE, 99 DOCUM-STCD1, 161 SY-VLINE.
WRITE: /006 SY-ULINE(85), 97 SY-ULINE(65).
SKIP.
WRITE 169 SY-ULINE(46).
WRITE: /169 SY-VLINE,
170(44) TEXT-R11 CENTERED, 214 SY-VLINE.
WRITE: /169 SY-VLINE,
170(44) TEXT-R12 CENTERED, 214 SY-VLINE.
WRITE: SY-ULINE(214), 216 SY-ULINE(18).
WRITE: /001 SY-VLINE, 2(4) TEXT-R13,
7 SY-VLINE, 8(10) TEXT-R14 CENTERED,
18 SY-VLINE, 19(20) TEXT-R15 CENTERED,
39 SY-VLINE, 40(20) TEXT-R16 CENTERED,
60 SY-VLINE, 62(20) TEXT-R35 CENTERED,
81 SY-VLINE, 84(20) TEXT-R35 CENTERED,
102 SY-VLINE, 106(8) TEXT-R17 CENTERED,
114 SY-VLINE, 116(20) TEXT-R34 CENTERED,
135 SY-VLINE, 136(16) TEXT-R18 CENTERED,
152 SY-VLINE, 153(16) TEXT-R19 CENTERED,
169 SY-VLINE,
186 SY-VLINE, 187(10) TEXT-R20 CENTERED,
197 SY-VLINE, 214 SY-VLINE,
216 SY-VLINE, 233 SY-VLINE.
WRITE: /001 SY-VLINE, 2(4) TEXT-R21 CENTERED,
7 SY-VLINE, 8(10) TEXT-R22 CENTERED,
18 SY-VLINE, 19(20) TEXT-R22 CENTERED,
39 SY-VLINE, 40(20) TEXT-R23 CENTERED,
60 SY-VLINE, 62(20) TEXT-R24 CENTERED,
81 SY-VLINE, 84(20) TEXT-R25 CENTERED,
102 SY-VLINE, 106(8) TEXT-R26 CENTERED,
114 SY-VLINE, 116(20) TEXT-R27 CENTERED,
135 SY-VLINE, 136(16) TEXT-R28 CENTERED,
152 SY-VLINE, 153(16) TEXT-R29 CENTERED,
169 SY-VLINE, 170(16) TEXT-R30 CENTERED,
186 SY-VLINE, 187(10) TEXT-R31 CENTERED,
197 SY-VLINE, 198(16) TEXT-R32 CENTERED,
214 sy-vline,
216 SY-VLINE, 217(16) TEXT-R33 CENTERED,
233 SY-VLINE.

WRITE: SY-ULINE(214),
216 SY-ULINE(18).
ENDFORM.
*----------------------------------------------------------------------*


* Enviar Aviso Cobro a direccion e-mail del cliente

FORM ENVIAR_CORREO.

CLEAR LISTOBJECT.
REFRESH LISTOBJECT.
CLEAR COMPRESSED_ATTACHMENT.
REFRESH COMPRESSED_ATTACHMENT.
CLEAR RECEIVER_LIST.
REFRESH RECEIVER_LIST.
CLEAR W_OBJECT_HD_CHANGE.
CLEAR MESSAGE_CONTENT.
REFRESH MESSAGE_CONTENT.
CLEAR PACKING_LIST.
REFRESH PACKING_LIST.
CLEAR COMPRESSED_SIZE.

* Receivers
* EMAIL ADDRESS

RECEIVER_LIST-RECEXTNAM = ADR6-SMTP_ADDR.
RECEIVER_LIST-RECESC = 'E'.
RECEIVER_LIST-SNDART = 'INT'.
RECEIVER_LIST-SNDPRI = '1'.
APPEND RECEIVER_LIST.

* General data
W_OBJECT_HD_CHANGE-OBJLA = SY-LANGU.
W_OBJECT_HD_CHANGE-OBJNAM = 'Object name'.
W_OBJECT_HD_CHANGE-OBJSNS = 'P'.

* Mail subject
W_OBJECT_HD_CHANGE-OBJDES = 'Comprobante de Retencion'.

* Mail body
APPEND 'Comprobante' TO MESSAGE_CONTENT.

* Attachment
CALL FUNCTION 'SAVE_LIST'
EXPORTING
LIST_INDEX = '0'
TABLES
LISTOBJECT = LISTOBJECT.

CALL FUNCTION 'TABLE_COMPRESS'
IMPORTING
COMPRESSED_SIZE = COMPRESSED_SIZE
TABLES
IN = LISTOBJECT
OUT = COMPRESSED_ATTACHMENT.

DESCRIBE TABLE COMPRESSED_ATTACHMENT.

CLEAR PACKING_LIST.
PACKING_LIST-TRANSF_BIN = 'X'.
PACKING_LIST-HEAD_START = 0.
PACKING_LIST-HEAD_NUM = 0.
PACKING_LIST-BODY_START = 1.
PACKING_LIST-BODY_NUM = SY-TFILL.
PACKING_LIST-OBJTP = 'ALI'.
PACKING_LIST-OBJNAM = 'Object name'.
PACKING_LIST-OBJDES = 'Comprobante de Retencion de IVA'.
PACKING_LIST-OBJLEN = COMPRESSED_SIZE.
APPEND PACKING_LIST.


* Funcion Envio Correo via RFC

CALL FUNCTION 'SO_OBJECT_SEND'
EXPORTING
OBJECT_HD_CHANGE = W_OBJECT_HD_CHANGE
OBJECT_TYPE = 'RAW'
OWNER = SY-UNAME
TABLES
OBJCONT = MESSAGE_CONTENT
RECEIVERS = RECEIVER_LIST
PACKING_LIST = PACKING_LIST
ATT_CONT = COMPRESSED_ATTACHMENT
EXCEPTIONS
OBJECT_NOT_SENT = 9
OTHERS = 1.


IF SY-SUBRC <> 0.
WRITE: / 'Problema en el envio. No se pudo enviar' , DOCUM2-LIFNR.
ELSE.
CONCATENATE PEFIS(4) '-' PEFIS+4(2) '-' DOCUM-CTNUMBER+2(8) INTO DOCUM2-COMPROBANTE.
DOCUM3-COMPROBANTE = DOCUM2-COMPROBANTE.
DOCUM3-LIFNR = DOCUM2-LIFNR.
DOCUM3-NAME1 = DOCUM2-NAME1.
DOCUM3-STCD1 = DOCUM2-STCD1.
APPEND DOCUM3.
ENDIF.
COMMIT WORK.
ENDFORM.

* Notificar Departamento de Caja que no se envio el Aviso de Cobro
FORM NOTIFICAR.

DATA: T_EMAIL LIKE SOOS1-RECEXTNAM. "EMail distribution list
* Estructuras para correo OUTLOOK
DATA: BEGIN OF EMAIL_TEXT OCCURS 10.
INCLUDE STRUCTURE SOLI.
DATA: END OF EMAIL_TEXT.

CONSTANTS: C_EMAIL_DISTRIBUTION LIKE SOOS1-RECEXTNAM VALUE
'llopez@gmail.com'.

CLEAR LISTOBJECT.
REFRESH LISTOBJECT.
CLEAR COMPRESSED_ATTACHMENT.
REFRESH COMPRESSED_ATTACHMENT.
CLEAR RECEIVER_LIST.
REFRESH RECEIVER_LIST.
CLEAR W_OBJECT_HD_CHANGE.
CLEAR MESSAGE_CONTENT.
REFRESH MESSAGE_CONTENT.
CLEAR PACKING_LIST.
REFRESH PACKING_LIST.
CLEAR COMPRESSED_SIZE.

EMAIL_TEXT-LINE = 'El Acreedor no tiene direccion e-mail'.
APPEND EMAIL_TEXT.
*EMAIL_TEXT-LINE = ADR6-SMTP_ADDR = SPACE.
EMAIL_TEXT-LINE = DOCUM-LIFNR.
APPEND EMAIL_TEXT.

T_EMAIL = C_EMAIL_DISTRIBUTION.

CALL FUNCTION 'Y_LG_SEND_EMAIL_ITAB'
EXPORTING
APPLICATION = 'EMAIL'
EMAILTITLE = 'Comprobante de Retencion de IVA'
RECEXTNAM = T_EMAIL
TABLES
TEXTTAB = EMAIL_TEXT
EXCEPTIONS
OBJECT_NOT_SENT = 9
OTHERS = 1.
IF SY-SUBRC <> 0.
WRITE: / 'Problema en el envio de mensaje Acreedor sin correo' , DOCUM-LIFNR.
ENDIF.
COMMIT WORK.
ENDFORM.



FORM BUSCA_EMAIL.

SELECT SINGLE * FROM LFA1
WHERE LIFNR = DOCUM-LIFNR.

SELECT SINGLE * FROM ADR6
WHERE ADDRNUMBER = LFA1-ADRNR.

IF ADR6-SMTP_ADDR = SPACE.
PERFORM NOTIFICAR.
ELSE.
PERFORM ENVIAR_CORREO.
ENDIF.

ENDFORM.



FORM BAJAR.

CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = 'C:\RESUMEN_COMPROBANTE_IVA_ENVIADOS.txt'
filetype = 'ASC'
trunc_trailing_blanks_eol = ' '
* confirm_overwrite = 'X'
field_separator = '|'
write_field_separator = 'x'
TABLES
data_tab = DOCUM3
EXCEPTIONS
invalid_type = 3
no_batch = 4
unknown_error = 5
gui_refuse_filetransfer = 6
OTHERS = 7.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ENDFORM.
Responder Con Cita
  #2  
Viejo 31/05/13, 15:41:08
Mauricio Hidalgo Mauricio Hidalgo is offline
Senior Member
 
Fecha de Ingreso: may 2006
Localización: Santiago, Chile
Mensajes: 481
Para asegurar que el corte de control se hará. Para at new....su tabla interna debe no tan solo debe estar ordenada por los campos que conforman el control sino que además deben ser los primeros campos de su tabla interna.

Saludos
Responder Con Cita
  #3  
Viejo 31/05/13, 18:50:59
CRISTINO.GARCIA CRISTINO.GARCIA is offline
Senior Member
 
Fecha de Ingreso: ago 2012
Mensajes: 101
La tabla donde almaceno la informacion DOCUm el primer campo es CTNUMBER que es el campo por el cual deseo la ruptura, pero igual no lo hace.

Gracias
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 22:02:35.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web