SAP 打印假脱机请求号.docx
- 文档编号:4925046
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:15
- 大小:19.61KB
SAP 打印假脱机请求号.docx
《SAP 打印假脱机请求号.docx》由会员分享,可在线阅读,更多相关《SAP 打印假脱机请求号.docx(15页珍藏版)》请在冰豆网上搜索。
SAP打印假脱机请求号
*&---------------------------------------------------------------------*
*& Report ZTESTLISTPRINT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTESTLISTPRINT LINE-SIZE 1023.
TYPE-POOLS:
SLIS, SP01R, VRM, ABAP.
FIELD-SYMBOLS:
DATA:
KEY, F1100 LIKE SY-UCOMM.
DATA:
MSG_TEXT(80) TYPE C,
LONG_MSG(132) TYPE C,
GPROG(132) TYPE C,
GTAB LIKE DCOBJDEF-NAME,
RET LIKE SY-SUBRC,
TRC LIKE SY-SUBRC,
TI VALUE 'I',
TE VALUE 'E',
GDYN LIKE SY-DYNNR.
DATA:
RQ LIKE TSP01SYS, COPY LIKE TSP01_SP0R.
DATA:
DIS_FROM(10) TYPE N VALUE 1,
DIS_TO(10) TYPE N VALUE 10,
DIS_END(10) TYPE N VALUE 10,
DIS_SCROLL(10) TYPE N VALUE 10,
COUNT(10) TYPE N,
ICOUNT TYPE I.
DATA:
STARTING VALUE 'X', ENDING,
GMODE VALUE 'X', HMODE, RMODE, SMODE, TMODE.
DATA:
PAGE_COUNT TYPE I,
IS_ADOBE_JOB TYPE C VALUE ' ',
COL_INFO(4) TYPE C,
MORE, FOUND, COMP,
LSEL TYPE SLIS_SELFIELD,
LTAB TYPE SP01R_VIEW OCCURS 1 WITH HEADER LINE,
BUF TYPE SP01R_VIEW,
CINDEX LIKE SY-TABIX,
DISPLAY_STRUC_LINES TYPE C,
SKIP.
DATA:
PATTERN(60), GSHORT.
DATA:
SUPPRESS_PAGEINFO.
* RSPO_OUTPUT_JOB
DATA:
LINE_BUFFERX LIKE RSPO_DSX OCCURS 1000,
LINE_BUFFERX2 LIKE RSPO_DSX2 OCCURS 1000,
LINE_BUFFER LIKE RSPO_DS OCCURS 1000,
LINE_BUFFER2 LIKE RSPO_DS2 OCCURS 1000,
PAGE_INDEX LIKE RSPO_INDEX OCCURS 1000 WITH HEADER LINE,
CURPAGE TYPE I, CURLINE TYPE I, CURCOL TYPE I,
GOTF_HEADER LIKE ITCOO,
GCOL_HEADER(6) TYPE C,
IS_OTF,
HEX.
DATA:
LGMODE, LHMODE, LRMODE,
LDIS_FROM(10) TYPE N,
LDIS_TO(10) TYPE N,
LDIS_END(10) TYPE N,
LAST_PAGE(10) TYPE N,
LENDING,
LSTARTING,
TEMP, SESSION, PERM, PROT_SCREEN.
DATA:
BUFFERLINE2 LIKE RSPO_DS2,
BUFFERLINE LIKE RSPO_DS.
DATA:
BEGIN_ALV_TREE TYPE C VALUE ' '.
DATA:
LINECOUNT TYPE I,
SUPPRESSED_LINES_COUNT TYPE I,
BUFLEN TYPE I.
FIELD-SYMBOLS:
DATA:
CHARLEN TYPE I VALUE 2.
DATA:
LANGUAGE LIKE SY-LANGU,
SYSCP LIKE TCP00-CPCODEPAGE.
DATA:
LISTFONTMETRIC TYPE I.
DATA:
LINEINFO(10000),
LINEINFO_USED TYPE I.
DATA:
NEXTL TYPE I.
DATA:
POS LIKE SY-FDPOS.
DATA:
NOPAGE TYPE I.
************************************************************************
* *
************************************************************************
PARAMETERS:
RQIDENT LIKE TSP01-RQIDENT,
FIRSTL TYPE I DEFAULT 0,
LASTL TYPE I DEFAULT 0.
************************************************************************
* *
************************************************************************
START-OF-SELECTION.
SELECT SINGLE * INTO CORRESPONDING FIELDS OF RQ FROM TSP01
WHERE RQIDENT = RQIDENT.
RQ-SYS = SY-SYSID.
* LDIS_FROM = FIRSTL.
* LDIS_TO = LASTL.
DESCRIBE FIELD 'A' LENGTH CHARLEN IN BYTE MODE.
CALL FUNCTION 'RSPO_L_RETURN_RAW_DATA'
EXPORTING
RQ = RQ
LIST_FIRST = LDIS_FROM
LIST_COUNT = LDIS_TO
LIST_END = ENDING
SHORT = GSHORT
DISPLAY_ACC_LINES = DISPLAY_STRUC_LINES
SUPPRESS_PAGEINFO = SUPPRESS_PAGEINFO
IMPORTING
MORE_DATA = MORE
COL_HEADER = GCOL_HEADER
OTF_HEADER = GOTF_HEADER
LAST_PAGE = LAST_PAGE
TABLES
LINE_BUFFER = LINE_BUFFER
PAGE_INDEX = PAGE_INDEX
LINE_BUFFER2 = LINE_BUFFER2
EXCEPTIONS
ERROR_IN_STRUC_DETECTION = 1
OTHERS = 2.
CALL FUNCTION 'SYSTEM_CODEPAGE'
IMPORTING
CURRENT_DYNAMIC_CODEPAGE = SYSCP.
* Message that only part of the spool request is displayed
IF MORE = 'X'.
IF RQ-RQTELENUME+10(3) = 'ACC' AND GMODE = 'X'.
MESSAGE ID 'SP01R' TYPE 'S' NUMBER 150.
ELSE.
* PERFORM ENDMESS USING LAST_PAGE.
ENDIF.
ENDIF.
* Initial new-page
* NEW-PAGE NO-HEADING NO-TITLE LINE-SIZE GCOL LINE-COUNT GLINES.
* Loop over lines
NEXTL = 0.
NOPAGE = 0.
LOOP AT LINE_BUFFER2 INTO BUFFERLINE2.
NOPAGE = NOPAGE - 1.
CHECK NOPAGE <= 0.
CHECK SY-TABIX <> 1 AND SY-TABIX <> 5.
IF BUFFERLINE2-PRECOL = 'P'.
IF BUFFERLINE2-DATA_LINE
(2) <> ' X'.
* NEW-PAGE.
NOPAGE = 6.
NEXTL = 0.
ENDIF.
ELSE.
* Call kernel method to display top of page area
IF BUFFERLINE2-PRECOL = 'X'.
IF BUFFERLINE2-DATA_LINE IS INITIAL.
CALL METHOD CL_ABAP_LIST_UTIL_INTERNAL=>TOP_OF_PAGE_AREA.
ELSEIF BUFFERLINE2-DATA_LINE
(2) = 'TT'.
BEGIN_ALV_TREE = 'X'.
ELSE.
MOVE BUFFERLINE2-DATA_LINE TO SUPPRESSED_LINES_COUNT.
CALL METHOD CL_ABAP_LIST_UTIL_INTERNAL=>SUPPRESSED_LINES
EXPORTING
COUNT = SUPPRESSED_LINES_COUNT.
ENDIF.
ELSE.
ASSIGN BUFFERLINE2-DATA_LINE TO
* Parse ABAP list line
BUFLEN = CHARLEN * ( BUFFERLINE2-DATA_LEN - 1 ). "subtract precolumn
PERFORM LIST_PARSE_LINE USING
BUFLEN
SYSCP
LISTFONTMETRIC
LINEINFO
LINEINFO_USED.
* Write line
PERFORM SPOOLDATA_WRITE USING
LINEINFO
LINEINFO_USED
BEGIN_ALV_TREE.
CLEAR BEGIN_ALV_TREE.
ENDIF.
ENDIF.
ENDLOOP.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form LIST_PARSE_LINE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->BUFFER text
* -->VALUE(BUFLEN) text
* -->CODEPAGE text
* -->LISTFONTMETRIC text
* -->LINEINFO text
* -->LINEINFO_USED text
*----------------------------------------------------------------------*
FORM LIST_PARSE_LINE USING BUFFER TYPE X
VALUE(BUFLEN) TYPE I
CODEPAGE LIKE TCP00-CPCODEPAGE
LISTFONTMETRIC TYPE I
LINEINFO
LINEINFO_USED TYPE I.
DATA:
CP(4).
DATA:
LINEINFOLEN TYPE I.
CP = CODEPAGE.
DESCRIBE FIELD LINEINFO LENGTH LINEINFOLEN IN CHARACTER MODE.
CALL 'RSPO_CACHE_CONTROL' ID 'AREA' FIELD 'PDFUTIL'
ID 'OP' FIELD 'LISTPARSELINE_SP01'
ID 'BUFFER' FIELD BUFFER
ID 'LENGTH' FIELD BUFLEN
ID 'OUTBUFFER' FIELD LINEINFO
ID 'OUTLENGTH' FIELD LINEINFOLEN
ID 'CODEPAGE' FIELD CP
ID 'LISTFONTMETRICS' FIELD LISTFONTMETRIC
ID 'OUTBUFOFS' FIELD LINEINFO_USED.
ENDFORM. "LIST_PARSE_LINE
*&---------------------------------------------------------------------*
*& Form SPOOLDATA_WRITE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->LISTDATA text
* -->LINEINFO text
* -->LINEINFO_USED text
* -->BEGIN_ALV_TREE text
*----------------------------------------------------------------------*
FORM SPOOLDATA_WRITE USING LISTDATA TYPE X
LINEINFO TYPE C
LINEINFO_USED TYPE I
BEGIN_ALV_TREE TYPE C.
STATICS:
OFS TYPE I,
TYPE TYPE C,
LINEINFOOFS(5) TYPE N,
CHARLEN(4) TYPE N,
VISLEN(4) TYPE N,
MAX(4) TYPE N,
PC(5) TYPE C,
FRAME,
SYMBOL
(1),
ICON
(2),
ICON_INT(4),
C TYPE C.
FIELD-SYMBOLS
.
DATA:
NUM_FILLERSPACES TYPE I.
DATA:
COLUMNS TYPE I.
DATA:
LENGTH TYPE I.
DATA:
RESULT TYPE C, IGNORE_QI TYPE I VALUE 0.
NEXTL = NEXTL + 1.
IF NEXTL = 4.
NEXTL = 1.
ENDIF.
IF NEXTL = 1.
POS = 1.
WRITE / ' ' NO-GAP INTENSIFIED OFF INVERSE OFF COLOR OFF.
ENDIF.
OFS = 0.
* POS = 1.
* WRITE / ' ' NO-GAP INTENSIFIED OFF INVERSE OFF COLOR OFF.
** ELSE.
** LINEINFO_USED = LINEINFO_USED + OFS.
** ENDIF.
* Kernel method must be called immediately before writing the line
* to signal begin of alv tree
IF BEGIN_ALV_TREE = 'X'.
CALL METHOD CL_ABAP_LIST_UTIL_INTERNAL=>ALV_TREE_HEADER_LINE.
ENDIF.
WHILE OFS < LINEINFO_USED.
TYPE = LINEINFO+OFS
(1).
** TYPE = LINEINFO+0
(1).
ADD 1 TO OFS.
CASE TYPE.
WHEN 'C'. "CHAR
LINEINFOOFS = LINEINFO+OFS(5). ADD 5 TO OFS.
CHARLEN = LINEINFO+OFS(4). ADD 4 TO OFS.
VISLEN = LINEINFO+OFS(4). ADD 4 TO OFS.
ASSIGN LISTDATA+LINEINFOOFS(*) TO
TYPE 'C'.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SAP 打印假脱机请求号 打印 脱机 请求