Generate PDF from ABAP report

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.
* Author: Nagaraj Kalbavi
&---------------------------------------------------------------------
*& 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值