ABAP PDF

CLEAR F_FORMNAME .

F_FORMNAME = P_F_NAME.

CLEAR F_FUNCNAME .

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

FORMNAME = F_FORMNAME

IMPORTING

FM_NAME = F_FUNCNAME.

CLEAR:OUTPUT,CONTROL_PARAMETERS.

  • CONTROL_PARAMETERS-NO_OPEN = 'X'.
  • CONTROL_PARAMETERS-NO_CLOSE = 'X'.
    CONTROL_PARAMETERS-GETOTF = 'X'.
    CONTROL_PARAMETERS-preview = ' '. "不打印预览
    CONTROL_PARAMETERS-no_open = 'X'. "没有新的假脱机请求
    CONTROL_PARAMETERS-no_close = 'X'. "不关闭假脱机请求
    CONTROL_PARAMETERS-no_dialog = 'X'. "没有对话窗口打开

EXPORT GT_HEAD GT_ITEM TO MEMORY ID 'ZSM002_2'.

CALL FUNCTION 'SSF_OPEN'

EXPORTING

CONTROL_PARAMETERS = CONTROL_PARAMETERS

OUTPUT_OPTIONS = OUTPUT

EXCEPTIONS

FORMATTING_ERROR = 1

INTERNAL_ERROR = 2

SEND_ERROR = 3

USER_CANCELED = 4

OTHERS = 5.

CALL FUNCTION F_FUNCNAME

EXPORTING

CONTROL_PARAMETERS = CONTROL_PARAMETERS

OUTPUT_OPTIONS = OUTPUT

复制代码
   GS_HEAD            = WA_HEAD
复制代码
   I_NUM              = 5

TABLES

T_HEAD = GT_HEAD

T_ITEM = GT_ITEM

EXCEPTIONS

FORMATTING_ERROR = 1

INTERNAL_ERROR = 2

SEND_ERROR = 3

USER_CANCELED = 4.

DATA: w_ctrlop TYPE ssfctrlop, "Smart Forms: 控制结构 "W_CONTROL

w_compop TYPE ssfcompop, "SAP Smart Forms: 智能写作器 (传输) 选项"W_OUTPUT.

w_return TYPE ssfcrescl. "Smart Forms: 表格打印结束时返回值

DATA: len TYPE i,

w_filesize TYPE i,

lv_xstring type xstring,

l_data type string,

g_pdf_xstring TYPE xstring,

l_lines TYPE TABLE OF tline WITH HEADER LINE.

DATA doctab TYPE TABLE OF docs WITH HEADER LINE.

DATA itab LIKE tline OCCURS 0 WITH HEADER LINE .

DATA: binary_tab TYPE STANDARD TABLE OF x255.

REFRESH L_BINARY_TAB.

CALL FUNCTION 'SSF_CLOSE'

IMPORTING

JOB_OUTPUT_INFO = w_return "LW_SSFCRESCL

EXCEPTIONS

FORMATTING_ERROR = 1

INTERNAL_ERROR = 2

SEND_ERROR = 3

OTHERS = 4.

  • CALL FUNCTION 'SSF_READ_ERRORS'

  • IMPORTING

复制代码
   ERRORTAB = ERRTAB.
  • CALL FUNCTION 'CONVERT_OTF_2_PDF' "转换otf数据为二进制PDF文件

    ** EXPORTING

    ** use_otf_mc_cmd = 'X'

    ** archive_index = archive_index

  • IMPORTING

复制代码
   bin_filesize           = len
  • TABLES

复制代码
   otf                    = w_return-otfdata[]
复制代码
   doctab_archive         = doctab
复制代码
   lines                  = l_lines[]
  • EXCEPTIONS

复制代码
   err_conv_not_possible  = 1
复制代码
   err_otf_mc_noendmarker = 2.
  • PERFORM SMARTFORM_END.

    CALL FUNCTION 'CONVERT_OTF' "转换otf数据为二进制PDF文件

    EXPORTING

    format = 'PDF'

    IMPORTING

    bin_file = lv_xstring

    bin_filesize = len

    TABLES

    otf = w_return-otfdata\[\]

复制代码
   doctab_archive         = doctab
  lines                  = l_lines[]

EXCEPTIONS

err_conv_not_possible = 1

err_otf_mc_noendmarker = 2.

  • data:lv_encoding type ABAP_ENCOD.

  • lv_encoding = '8450'.

  • CALL FUNCTION 'HR_KR_XSTRING_TO_STRING'

  • EXPORTING

复制代码
   from_codepage = lv_encoding   "lv_codepage_numc "lv_encoding
复制代码
   in_xstring    = lv_xstring
  • IMPORTING

复制代码
   out_string    = l_data.

"方案二 直接推送PDF

CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'

EXPORTING

buffer = lv_xstring

IMPORTING

OUTPUT_LENGTH = L_OUTPUT_LENGTH

TABLES

binary_tab = L_BINARY_TAB."binary_tab. "

P_FSIZE = L_OUTPUT_LENGTH.

*

CALL FUNCTION 'SCMS_BINARY_TO_STRING'

EXPORTING

INPUT_LENGTH = L_OUTPUT_LENGTH

复制代码
   ENCODING     = lv_encoding

IMPORTING

TEXT_BUFFER = l_data
*

复制代码
   OUTPUT_LENGTH = len

TABLES

BINARY_TAB = L_BINARY_TAB. "binary_tab.
*

  • CALL FUNCTION 'MD5_CALCULATE_HASH_FOR_CHAR'

  • EXPORTING

复制代码
   data       = l_data
  • IMPORTING

复制代码
   hash       = P_FMD5
  • EXCEPTIONS

复制代码
  internal_error = 1
复制代码
  OTHERS         = 2.

CALL FUNCTION 'MD5_CALCULATE_HASH_FOR_RAW'

EXPORTING

length = L_OUTPUT_LENGTH

IMPORTING

hash = P_FMD5

TABLES

data_tab = L_BINARY_TAB "binary_tab

EXCEPTIONS

internal_error = 1

OTHERS = 2 .

TRANSLATE P_FMD5 to LOWER CASE .

相关推荐
汤姆宝库7 小时前
法考历年真题及答案解析合集pdf版(2002-2025年)
pdf·法考
优化控制仿真模型8 小时前
2026【英一】考研英语一历年真题及答案解析PDF电子版(1980-2025年)
考研·pdf
云月呀1 天前
《死亡回忆录》藏汉双语版电子版 PDF,穆迪博士 150 例濒死体验访谈,一部关于生死的温柔读本
pdf·死亡回忆录
xiaolinudao1232 天前
给pdf文件盖骑缝章的软件有哪些
pdf
hu55667982 天前
如何使用Adobe Acrobat Pro DC将1页PDF切割为2页,A3变A4打印。
pdf
ComPDFKit2 天前
PDF转Word后,每行都成一段?先分清断段、文本框和扫描页
pdf·word
Nymph_Zhu2 天前
pdf转换markdown预览及内容互相点击定位
前端·pdf·vue3·markdown·element-plus
web打印社区2 天前
Lodop在Edge和双核浏览器-先分清内核
前端·javascript·edge·pdf·ecmascript·html5
是店小二呀2 天前
敏感PDF不想上传陌生网站?我把Stirling-PDF装进NAS自己处理
pdf
liuchangng2 天前
React 19 + Vite 6 实战:从教材 PDF 到 866 词间隔重复单词 App
前端·react.js·pdf·vite·开源项目