Application Development 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: 

ECC6.0 - PDF issue - Junk Character output after Upgrade from 4.7c

Former Member
0 Kudos

Hi All,

I am working in Uprgade project(from 4.7c Non-unicode system to ECC6.0 unicode system).

We are facing PDF output issue in ECC6.0 that means we are getting junk character output(screenshot is attached for your reference).

In 4.7c , we have stroed the OTF data in table after generated from smartform as we should not get different output in future. Whenever we need output of the same then we are getting the OTF data from that table and we will generate pdf through "Convert_otf" function module.This logic is working fine in 4.7c.

In ECC6.0 ,the same logic is not working as system is unicode sytem and we are getting junk character output.

As per my old upgrade project experience , i have used the below piece of code for solve this junk character issue but still I am facing the same issue.

Kindly note that in my old upgrade project i have regenerated the OTF data in ECC6.0 and used the below piece of code then I got correct output but here I have to use the old OTF data (from table) which was generated in 4.7c.

Please any one can give solution for this issue.

Regards

Anandakumar.K

+91 9486963561.

-


REPORT z_display_notification_tst.

  • Local Vairable Declaration

TYPES: lt_pdf_table(1000) TYPE x.

*

  • Local Vairable Declaration

DATA :

lv_otf_data TYPE STRING, " OTD data in string format

lv_length TYPE i, " OTF Length

lv_lines TYPE i, " No of lines

lv_no_of_recs TYPE int4, " No of OTF Lines

lv_offset TYPE int4, " Offset

pdf_fsize TYPE i,

lv_binfile TYPE xstring,

gv_reportsize TYPE i,

l_url(80) TYPE c,

l_pdf_data TYPE STANDARD TABLE OF lt_pdf_table ,

l_pdf_line TYPE lt_pdf_table,

l_offset TYPE i,

l_len TYPE i,

lt_pdf_table TYPE rcl_bag_tline,

lt_otfdata TYPE tsfotf,

ls_otfdata TYPE itcoo. " Line type of OTF data

*

DATA:

g_html_container TYPE REF TO cl_gui_custom_container,

g_html_control TYPE REF TO cl_gui_html_viewer.

******************GET OTF data from Table ******************************

  • Primary Keys used for selection : BUSKEY,

  • NTFTYP,

  • TRNTYP,

SELECT SINGLE otf_data FROM znotif_otf

INTO lv_otf_data

WHERE buskey EQ 'LS_000000000010001470'

AND ntftyp EQ '0037'

AND trntyp EQ 'ACT'.

                  • Get the length of the OTF data stored as stream of string************

l_len = STRLEN( lv_otf_data ).

  • Compute the OTF lines

lv_lines = l_len / 72.

*

lv_no_of_recs = lv_lines + 1.

  • Set the offset to initial

lv_offset = 0.

*

*Reconstruct the OTF data from the string

DO lv_no_of_recs TIMES.

IF sy-index NE lv_no_of_recs .

  • Get OFT format: command ID

ls_otfdata-tdprintcom = lv_otf_data+lv_offset(2).

lv_offset = lv_offset + 2.

  • Get OTF format: command parameters

ls_otfdata-tdprintpar = lv_otf_data+lv_offset(70).

lv_offset = lv_offset + 70.

ELSE.

  • Last line contains only the OFT format: command ID "//" (End of file)

ls_otfdata-tdprintcom = lv_otf_data+lv_offset(2).

lv_offset = lv_offset + 2.

ENDIF.

  • Append the OTF data to Export OTF table

APPEND ls_otfdata TO lt_otfdata.

*

CLEAR ls_otfdata.

ENDDO.

*************************Convert OTF to PDF**************************

IF lt_otfdata IS NOT INITIAL.

clear: lv_binfile,

pdf_fsize.

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

format = 'PDF'

IMPORTING

bin_filesize = pdf_fsize

bin_file = lv_binfile

TABLES

OTF = lt_otfdata

lines = lt_pdf_table

EXCEPTIONS

err_max_linewidth = 1

err_format = 2

err_conv_not_possible = 3

OTHERS = 4.

IF sy-subrc NE 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDIF.

                                                    • Call screen***********************************

Call screen

CALL SCREEN 100.

RETURN.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE status_0100 OUTPUT.

  • SET PF-STATUS '100'.

  • SET TITLEBAR '100'.

        • Convert bin file

clear :l_len,

l_offset.

free l_pdf_data[].

l_len = XSTRLEN( lv_binfile ).

WHILE l_len >= 1000.

l_pdf_line = lv_binfile+l_offset(1000).

APPEND l_pdf_line TO l_pdf_data.

ADD 1000 TO l_offset.

SUBTRACT 1000 FROM l_len.

ENDWHILE.

*

IF l_len > 0.

l_pdf_line = lv_binfile+l_offset(l_len).

APPEND l_pdf_line TO l_pdf_data.

ENDIF.

  • Initialise and create the HTML container

IF NOT g_html_container IS INITIAL.

CALL METHOD g_html_container->free

EXCEPTIONS

OTHERS = 0.

CLEAR g_html_container.

ENDIF.

CREATE OBJECT g_html_container

EXPORTING

container_name = 'HTML_CONTAINER'.

  • Initialise and create the HTML control that will display the

  • PDF output as URL

IF NOT g_html_control IS INITIAL.

CALL METHOD g_html_control->free

EXCEPTIONS

OTHERS = 0.

CLEAR g_html_control.

ENDIF.

CREATE OBJECT g_html_control

EXPORTING

parent = g_html_container

saphtmlp = 'X'.

  • Load the pdf data and obtain the URL

CALL METHOD g_html_control->load_data

EXPORTING

size = pdf_fsize

type = 'application'

subtype = 'pdf'

IMPORTING

assigned_url = l_url

CHANGING

data_table = l_pdf_data

EXCEPTIONS

OTHERS = 1.

IF sy-subrc NE 0.

  • raise cntl_error.

ENDIF.

CALL METHOD cl_gui_cfw=>flush.

  • Show the URL

CALL METHOD g_html_control->show_url

EXPORTING

url = l_url.

ENDMODULE. " STATUS_0100 OUTPUT

*****************************************************************************

Edited by: Anandakumar.K on Oct 25, 2011 12:47 PM

Edited by: Anandakumar.K on Oct 25, 2011 12:54 PM

3 REPLIES 3

nils_buerckel
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi,

do you store the data in a customer specific or in a standard table ?

Best regards,

Nils Buerckel

0 Kudos

Hi,

We are storing the data in customer specific table.

Best Regards

Anandakumar.K

nils_buerckel
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi,

as you can see in SAP notes 842767 and 1349413, spool data cannot be converted properly for all types in a Unicode conversion.

This might be possible if you have English (US7ASCII) characters only, but with Chinese characters I do not think that a small piece of code can do it ...

Hence I think you need to recreate the data on the Unicode system ...

Best regards,

Nils Buerckel

Edited by: Nils Buerckel on Nov 3, 2011 1:51 PM