Wednesday, September 22, 2010

Create pdf from abap

Description: This program will generate the PDF form from ABAP List Output. I have used the format X_90_120 for generating PDF form from List Output. You can do this setting by changing the properties of printer after clicking the PDF generation button in the List output.
&---------------------------------------------------------------------
*& Report Z_CREATE_PDF_ABAPLIST
&---------------------------------------------------------------------
*& Description: Simple Program to generate PDF from ABAP List Output
&---------------------------------------------------------------------
REPORT Z_CREATE_PDF_ABAPLIST NO STANDARD PAGE HEADING.
* PF-status containing a PDF button in the report Output to generate
* PDF form

SET PF-STATUS 'Z_PDF'.
----------------------------------------------------------------------
*Table Declarations
----------------------------------------------------------------------
TABLES: MARA, MARC, MAKT.
---------------------------------------------------------------------
* Internal Table Declarations
----------------------------------------------------------------------
DATA: BEGIN OF TS_MARA OCCURS 0,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
MATKL LIKE MARA-MATKL,
LVORM LIKE MARA-LVORM,
WERKS LIKE MARC-WERKS,
MAKTX LIKE MAKT-MAKTX,
END OF TS_MARA.

----------------------------------------------------------------------
* Selection Screen Parameters
----------------------------------------------------------------------

SELECTION-SCREEN BEGIN OF BLOCK B1.
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR OBLIGATORY,
S_WERKS FOR MARC-WERKS OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.

----------------------------------------------------------------------

TOP-OF-PAGE.

----------------------------------------------------------------------

write: 40 'Generating PDF from List Output' color 1 intensified on.

skip 1.

write: /1 'Date :', SY-DATUM,

/1 'User ID :', SY-UNAME,

/1(112) SY-ULINE.

----------------------------------------------------------------------

START-OF-SELECTION.

----------------------------------------------------------------------

* Perform for Basic Selection

PERFORM GET_MARA.

* Perform to Display Data

PERFORM DISPLAY_MARA.

----------------------------------------------------------------------------------

AT USER-COMMAND.

----------------------------------------------------------------------------------

* User Command to generate PDF Form

AT USER-COMMAND.

CASE SY-UCOMM.

WHEN 'PDF'.

DATA: L_PARAMS TYPE PRI_PARAMS,

L_VALID TYPE STRING,

W_SPOOL_NR LIKE TSP01-RQIDENT.

* TO GET PRINT PARAMETERS

CALL FUNCTION 'GET_PRINT_PARAMETERS'

IMPORTING

OUT_PARAMETERS = L_PARAMS

VALID = L_VALID.

IF SY-SUBRC <> 0.

ENDIF.

* Internal table for Selection Screen

DATA: BEGIN OF I_RSPARAMS OCCURS 0.

INCLUDE STRUCTURE RSPARAMS.

DATA: END OF I_RSPARAMS.

* Store the current selection screen details

CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'

EXPORTING

CURR_REPORT = SY-REPID

* IMPORTING

* SP =

TABLES

SELECTION_TABLE = I_RSPARAMS

* EXCEPTIONS

* NOT_FOUND = 1

* NO_REPORT = 2

* OTHERS = 3

.

IF SY-SUBRC <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

* SUBMIT TO GET THE SPOOL NUMBER

SUBMIT Z_CREATE_PDF_ABAPLIST WITH SELECTION-TABLE I_RSPARAMS

TO SAP-SPOOL

SPOOL PARAMETERS L_PARAMS

WITHOUT SPOOL DYNPRO

AND RETURN.

* SELECT THE RECENTLY CREATED SPOOL

SELECT MAX( RQIDENT ) INTO W_SPOOL_NR FROM TSP01

WHERE RQCLIENT = SY-MANDT

AND RQOWNER = SY-UNAME.

*REPORT TO GENERATE SPOOL NUMBER FOR PDF CONVERT

SUBMIT RSTXPDF5 WITH SPOOLNO = W_SPOOL_NR

WITH DSTDEVIC = 'LOCL' AND RETURN .

IF SY-SUBRC EQ 0.

CLEAR W_SPOOL_NR.

* SELECT THE RECENTLY CREATED SPOOL FOR PDF

SELECT MAX( RQIDENT ) INTO W_SPOOL_NR FROM TSP01

WHERE RQCLIENT = SY-MANDT

AND RQOWNER = SY-UNAME.

*REPORT TO DOWNLOAD PDF SPOOL TO GUI

SUBMIT RSTXPDFT5 WITH SPOOLID = W_SPOOL_NR

AND RETURN.

ENDIF.

ENDCASE.
&---------------------------------------------------------------------

*& Form GET_MARA

&---------------------------------------------------------------------

* text

----------------------------------------------------------------------

* --> p1 text

* <-- p2 text

----------------------------------------------------------------------

FORM GET_MARA .

CLEAR : TS_MARA.

REFRESH: TS_MARA.

* To select Materials based on Selection Criteria

SELECT A~MATNR A~MTART A~MATKL A~LVORM B~WERKS INTO CORRESPONDING

FIELDS OF TABLE TS_MARA FROM MARA AS A

INNER JOIN MARC AS B ON A~MATNR EQ B~MATNR

WHERE A~MATNR IN S_MATNR

AND B~WERKS IN S_WERKS.

LOOP AT TS_MARA.

SELECT SINGLE * FROM MAKT WHERE MATNR EQ TS_MARA-MATNR

AND SPRAS EQ SY-LANGU.

MOVE MAKT-MAKTX TO TS_MARA-MAKTX.

MODIFY TS_MARA INDEX SY-TABIX.

ENDLOOP.

ENDFORM. " GET_MARA

&---------------------------------------------------------------------

*& Form DISPLAY_MARA

&---------------------------------------------------------------------

* text

----------------------------------------------------------------------

* --> p1 text

* <-- p2 text

----------------------------------------------------------------------

FORM DISPLAY_MARA .

CLEAR : TS_MARA.

WRITE: /1 '|', 2(18) 'Material Number' COLOR 7,

21 '|', 22(5) 'Plant ' COLOR 7,

28 '|', 29(13) 'Material Type ' COLOR 7,

42 '|', 43(14) 'Material Group ' COLOR 7,

57 '|', 58(13) 'Deletion Flag ' COLOR 7,

71 '|', 72(40) 'Description ' COLOR 7,

112 '|'.

WRITE: /1(112) SY-ULINE.

LOOP AT TS_MARA.

WRITE: /1 '|', 2(18) TS_MARA-MATNR,

21 '|', 22(5) TS_MARA-WERKS,

28 '|', 29(13) TS_MARA-MTART,

42 '|', 43(14) TS_MARA-MATKL,

57 '|', 58(13) TS_MARA-LVORM,

71 '|', 72(40) TS_MARA-MAKTX,

112 '|'.

WRITE: /1(112) SY-ULINE.

ENDLOOP.

ENDFORM. " DISPLAY_MARA

No comments:

Post a Comment