‎2005 Sep 12 11:52 PM
Hi everyone!
I hope you all fine!
Please I need a lot of help 'cause I designed a SAPscript form and I also tried to program a printing program for the SAPscript I designed previously, but I'm having problems to print out all my information 'cause it only prints out 1 register, and it supposed to bring many registers, so I don't know what's wrong, If anyone could help me to solve this problem I'll really appreciate it, next I attach my code of the printing program.
Thanks for your time.
CODE OF PRINTING PROGRAM:
REPORT ZMM_PURCHORD01 .
*Tablas transparentes
TABLES: EKPO,
MEAN,
EKKO,
J_3ACOLRT,
ITCPO,
MARA.
KONV,
*Tabla Interna donde recibe toda la informacion
DATA: BEGIN OF IT_INFO OCCURS 0,
EBELN LIKE EKPO-EBELN, "Numero de Pedido
AEDAT LIKE EKPO-AEDAT, "Fecha compra
TXZ01 LIKE EKPO-TXZ01, "Descripcion
MATNR LIKE EKPO-MATNR, "Numero de
BUKRS LIKE EKPO-BUKRS, "Numero de
MENGE LIKE EKPO-MENGE, "Cantidad de
NETPR LIKE EKPO-NETPR, "Precio Neto por
PEINH LIKE EKPO-PEINH, "Cantidad Base
MATNRA LIKE MARA-MATNR, "Numero de
J_3APGNR LIKE MARA-J_3APGNR, "Numero
J_3ACOL LIKE MARA-J_3ACOL, "Color numero
TEXT LIKE J_3ACOLRT-TEXT, "Texto de color
MATNRB LIKE MEAN-MATNR, "Numero de
J_3AKORDX LIKE MEAN-J_3AKORDX, "Tallas
WAERS LIKE EKKO-WAERS, "Tipo de Moneda
END OF IT_INFO.
*Tabla interna de Mara
DATA: BEGIN OF IT_MARA OCCURS 0,
MATNR LIKE MARA-MATNR, "Numero de
J_3APGNR LIKE MARA-J_3APGNR, "Numero
J_3ACOL LIKE MARA-J_3ACOL, "Numero de
END OF IT_MARA.
*Tabla Interna de J_3Acolrt Colores
DATA: BEGIN OF IT_COLOR OCCURS 0,
J_3ACOL LIKE J_3ACOLRT-J_3ACOL, "Numero de
TEXT LIKE J_3ACOLRT-TEXT, "Color texo
END OF IT_COLOR.
*Tabla interna de MEAN Tallas
DATA: BEGIN OF IT_MEAN OCCURS 0,
MATNR LIKE MEAN-MATNR, "Numero de
J_3AKORDX LIKE MEAN-J_3AKORDX, "Tallas
END OF IT_MEAN.
DATA: BEGIN OF IT_EKKO OCCURS 0,
EBELN LIKE EKKO-EBELN, "Numero de Pedido
WAERS LIKE EKKO-WAERS, "Tipo de Moneda
END OF IT_EKKO.
*Tabla interna de EKPO, Posición del documento de compras
DATA: BEGIN OF IT_EKPO OCCURS 0,
EBELN LIKE EKPO-EBELN, "Numero de Pedido
AEDAT LIKE EKPO-AEDAT, "Fecha compra
TXZ01 LIKE EKPO-TXZ01, "Descripcion Material
MATNR LIKE EKPO-MATNR, "Numero de Material
BUKRS LIKE EKPO-BUKRS, "Numero de Sociedad
MENGE LIKE EKPO-MENGE, "Cantidad de pares
NETPR LIKE EKPO-NETPR, "Precio Neto por Par
PEINH LIKE EKPO-PEINH, "Cantidad Base
END OF IT_EKPO.
DATA: V_EBELN TYPE EKPO-EBELN.
Seleccionado campos de EKPO
SELECT EBELN AEDAT TXZ01 MATNR BUKRS MENGE NETPR PEINH
FROM EKPO INTO TABLE IT_EKPO
WHERE EBELN EQ 'V_EBELN'.
*Validacion entre it_ekpo y it_mara y seleccion de campos de Mara
IF SY-SUBRC EQ 0.
SELECT MATNR J_3APGNR J_3ACOL
FROM MARA INTO TABLE IT_MARA FOR ALL ENTRIES IN
IT_EKPO
WHERE MATNR EQ IT_EKPO-MATNR.
*Validacion entre it_J_3acolrt y it_mara y seleccion de campos J-3ACOLRT
IF SY-SUBRC EQ 0.
SELECT J_3ACOL TEXT
FROM J_3ACOLRT INTO TABLE IT_COLOR FOR ALL ENTRIES IN
IT_MARA
WHERE J_3ACOL EQ IT_MARA-J_3ACOL.
*Validacion entre it_talla y it_ekpo y seleccion de campos MEAN
IF SY-SUBRC EQ 0.
SELECT MATNR J_3AKORDX
FROM MEAN INTO TABLE IT_MEAN FOR ALL ENTRIES IN
IT_EKPO
WHERE MATNR EQ IT_EKPO-MATNR. "AND
J_3AKORDX NE ''.
WHERE MATNR EQ IT_MARA-MATNR.
IF SY-SUBRC EQ 0.
SELECT EBELN WAERS
FROM EKKO INTO TABLE IT_EKKO FOR ALL ENTRIES IN IT_EKPO
WHERE EBELN EQ IT_EKPO-EBELN.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
Llenado de la Tabla donde recibe toda Informacion
LOOP AT IT_EKPO.
MOVE-CORRESPONDING IT_EKPO TO IT_INFO.
LOOP AT IT_COLOR.
MOVE-CORRESPONDING IT_COLOR TO IT_INFO.
LOOP AT IT_MARA.
MOVE-CORRESPONDING IT_MARA TO IT_INFO.
LOOP AT IT_MEAN.
MOVE-CORRESPONDING IT_MEAN TO IT_INFO.
LOOP AT IT_EKKO.
MOVE-CORRESPONDING IT_EKKO TO IT_INFO.
APPEND IT_INFO.
ENDLOOP.
ENDLOOP.
ENDLOOP.
ENDLOOP.
ENDLOOP.
*Lectura de tablas_it
LOOP AT IT_INFO.
READ TABLE IT_MARA WITH KEY MATNR = IT_INFO-MATNR.
IF SY-SUBRC EQ 0.
IT_INFO-J_3ACOL = IT_MARA-J_3ACOL.
READ TABLE IT_COLOR WITH KEY J_3ACOL = IT_INFO-J_3ACOL.
IF SY-SUBRC EQ 0.
IT_INFO-TEXT = IT_COLOR-TEXT.
READ TABLE IT_MEAN WITH KEY MATNR = IT_INFO-MATNR.
IT_INFO-J_3AKORDX = IT_MEAN-J_3AKORDX.
ENDIF.
ENDIF.
ENDLOOP.
*
LOOP AT IT_INFO.
WRITE:/ IT_INFO-EBELN,
IT_INFO-AEDAT,
IT_INFO-TXZ01,
IT_INFO-MATNR,
IT_INFO-MENGE,
IT_INFO-NETPR,
IT_INFO-WAERS,
IT_INFO-PEINH,
IT_INFO-J_3APGNR,
IT_INFO-TEXT,
IT_INFO-J_3AKORDX.
ENDLOOP.
*&----
*
*& Define Parametros de Impresion
*&----
*
*&Configuracion de la Impresora
ITCPO-TDDEST = 'MEGA'.
ITCPO-TDCOPIES = '1'.
ITCPO-TDIMMED = 'X'.
ITCPO-TDNEWID = 'X'.
ITCPO-TDDELETE = 'X'.
ITCPO-TDLIFETIME = 7.
ITCPO-TDCOVER = SPACE.
*&----
*
*& OPENS FORM ZPR_PURCHOR1 WINDOW MAIN
*&----
*
**&Abre el formulario
CALL FUNCTION 'OPEN_FORM'
EXPORTING
DEVICE = 'PRINTER'
DIALOG = 'X'
FORM = 'ZPR_PURCHOR1'
LANGUAGE = 'E'
OPTIONS = ITCPO
IMPORTING
RESULT = ITCPP
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
WRITE:/ 'Error al abrir el formulario', SY-SUBRC.
STOP.
ENDIF.
V_SUBRC = SY-SUBRC.
*&----
*
*& Escribe información al formulario ZPR_PURCHOR1 VENTANA MAIN
*&----
*
*& Llama la funcion que abre el formulario
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'LLENAR_CUADRO_INFO'
TYPE = 'BODY'
WINDOW = 'MAIN'
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
BAD_PAGEFORMAT_FOR_PRINT = 7
OTHERS = 8.
IF SY-SUBRC <> 0.
WRITE:/ 'Error al escribir el formulario', SY-SUBRC.
STOP.
ENDIF.
*&----
*
*& Cierra el formulario Activo ZPR_PURCHOR1 VENTANA MAIN
*&----
*
*&Cierra Formulario activo
CALL FUNCTION 'CLOSE_FORM'
EXCEPTIONS
UNOPENED = 1
BAD_PAGEFORMAT_FOR_PRINT = 2
SEND_ERROR = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
WRITE:/ 'Problemas con el cierre de Formulario', SY-SUBRC.
STOP.
ENDIF.
‎2005 Sep 13 12:10 AM
Hi Guillermo,
You need to put your WRITE_FORMS within a loop.
Let's say I have a number of PO's that I want to print, the general structure of the program would go something like this:
*get data into TBL_EKKO and TBL_EKPO
....
Open the SAPscript you want to use
CALL FUNCTION OPEN_FORM...
loop at tbl_ekko.
Start a new spool
CALL FUNCTION START_FORM
Write the headings, addresses, etc
CALL FUNCTION WRITE_FORM (headers, etc)
....
loop at tbl_ekpo where ebeln = tbl_ekko-ebeln.
write the main window contents
CALL FUNCTION WRITE_FORM (main window)
....
endloop.
End of the spool request
CALL FUNCTION END_FORM
endloop.
CALL FUCTION CLOSE_FORM.
If you structure your programlike this and loop through the appropriate tables it should work.
Hope this helps.
Cheers,
Pat.
PS. Kindly assign Reward Points to the posts you find helpful.