Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

How to convert xstring to pdf please suggest Function module or Class

Former Member
0 Likes
8,243

Dear All,

I am getting XSTRING       data  that data i want to print these XSTRING  to PDF or WORDPAD in abap

Can any suggest function modules or Class to convert XSTRING TO PDF to print.

thanks

jogu

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
4,998

HI,

Use this function module

SCMS_XSTRING_TO_BINARY.

code reference

data: data_tab type table of x255.

call function 'SCMS_XSTRING_TO_BINARY'

exporting

buffer = XString data

tables

binary_tab = data_tab.

cl_gui_frontend_services=>gui_download(

exporting

filename = filename

filetype = 'BIN'

changing

data_tab = data_tab ).

cl_gui_frontend_services=>execute(

exporting

document = filename ).

Thanks,

Ashok.

Dear All,

I am getting XSTRING       data  that data i want to print these XSTRING  to PDF or WORDPAD in abap

Can any suggest function modules or Class to convert XSTRING TO PDF to print.

thanks

jogu

5 REPLIES 5
Read only

Former Member
0 Likes
4,999

HI,

Use this function module

SCMS_XSTRING_TO_BINARY.

code reference

data: data_tab type table of x255.

call function 'SCMS_XSTRING_TO_BINARY'

exporting

buffer = XString data

tables

binary_tab = data_tab.

cl_gui_frontend_services=>gui_download(

exporting

filename = filename

filetype = 'BIN'

changing

data_tab = data_tab ).

cl_gui_frontend_services=>execute(

exporting

document = filename ).

Thanks,

Ashok.

Read only

0 Likes
4,998

Hi ashok

I tried these but while downloading  if i want to open file it is saying file curpted.

Thanks

Jogu

Read only

0 Likes
4,998

Hi,

Please refer below code.



DATA: LT_PDF TYPE TABLE OF TLINE,
        LS_PDF LIKE LINE OF LT_PDF,
        LV_URL TYPE CHAR255,
        PDF_FSIZE TYPE  I,
        LV_CONTENT  TYPE XSTRING,
        LT_DATA TYPE STANDARD TABLE OF X255.

DATA : L_JOB_OUTPUT_INFO TYPE SSFCRESCL.
  DATA : LS_CONTROL_PARAM  TYPE SSFCTRLOP.
data ls_output type ssfcompop.

DATA : G_HTML_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
         G_HTML_CONTROL   TYPE REF TO CL_GUI_HTML_VIEWER.

*DATA : P_VBELN TYPE  VBELN_VL.
  DATA V1 LIKE EKKO-EBELN.
  SELECT-OPTIONS  S_EBELN FOR V1.
FIELD-SYMBOLS <FS_X> TYPE X.

INITIALIZATION.
  LS_CONTROL_PARAM-GETOTF = 'X'.
  LS_CONTROL_PARAM-NO_DIALOG = 'X'.

ls_output-tdnewid = 'X'.
LS_OUTPUT-TDDEST = 'X'.

START-OF-SELECTION.

  CALL FUNCTION '/1BCDWB/SF00000587'
   EXPORTING
*    ARCHIVE_INDEX              =
*    ARCHIVE_INDEX_TAB          =
*    ARCHIVE_PARAMETERS         =
     CONTROL_PARAMETERS         = LS_CONTROL_PARAM
*    MAIL_APPL_OBJ              =
*    MAIL_RECIPIENT             =
*    MAIL_SENDER                =
     OUTPUT_OPTIONS             = LS_OUTPUT
*    USER_SETTINGS              = 'X'
   IMPORTING
*    DOCUMENT_OUTPUT_INFO       =
     JOB_OUTPUT_INFO            = L_JOB_OUTPUT_INFO
*    JOB_OUTPUT_OPTIONS         =
    TABLES
      S_EBELN                    = S_EBELN
*  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.


    CALL FUNCTION 'CONVERT_OTF'
      EXPORTING
        FORMAT                = 'PDF'
      IMPORTING
        BIN_FILESIZE          = PDF_FSIZE
      TABLES
        OTF                   = L_JOB_OUTPUT_INFO-OTFDATA
        LINES                 = LT_PDF
      EXCEPTIONS
        ERR_MAX_LINEWIDTH     = 1
        ERR_FORMAT            = 2
        ERR_CONV_NOT_POSSIBLE = 3
        OTHERS                = 4.

* convert pdf to xstring string
    LOOP AT LT_PDF INTO LS_PDF.
      ASSIGN LS_PDF TO <FS_X> CASTING.
      CONCATENATE LV_CONTENT <FS_X> INTO LV_CONTENT IN BYTE MODE.
    ENDLOOP.

   CALL SCREEN 100.


*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
   SET PF-STATUS 'ZSTAT'.
*  SET TITLEBAR 'xxx'.
CREATE OBJECT G_HTML_CONTAINER
      EXPORTING
        CONTAINER_NAME = 'PDF'.

   CREATE OBJECT G_HTML_CONTROL
      EXPORTING
        PARENT = G_HTML_CONTAINER.

* Convert xstring to binary table to pass to the LOAD_DATA method
    CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
      EXPORTING
        BUFFER     = LV_CONTENT
      TABLES
        BINARY_TAB = LT_DATA.


cl_gui_frontend_services=>gui_download(

exporting

filename = 'C:\Users\e086\Desktop\PDF.pdf'

filetype = 'BIN'

changing

data_tab = LT_DATA ).
* Load the HTML
    CALL METHOD G_HTML_CONTROL->LOAD_DATA(
       EXPORTING
         TYPE         = 'application'
         SUBTYPE      = 'pdf'
       IMPORTING
         ASSIGNED_URL         = LV_URL
       CHANGING
         DATA_TABLE           = LT_DATA
       EXCEPTIONS
         DP_INVALID_PARAMETER = 1
         DP_ERROR_GENERAL     = 2
         CNTL_ERROR           = 3
         OTHERS               = 4 ).

* Show it
    CALL METHOD G_HTML_CONTROL->SHOW_URL( URL = LV_URL
      IN_PLACE = 'X' ).

ENDMODULE.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
IF SY-UCOMM = 'BACK'.

   LEAVE TO SCREEN 0.

   ENDIF.
ENDMODULE.                 " USER_COMMAND_0100  INPUT




Thanks,

Ashok.

Read only

0 Likes
4,998

Thanks ashok

it is working

Read only

Former Member
0 Likes
4,998

This message was moderated.