안녕하세요.
구현 하려고 하는 것은 타 시스템(Web)에서 조회 입력값을 RFC로 전송후 function 내에서 프린트를 하는 것입니다.
구현 프로그램은 전표 조회입니다.
1. 구현목표
Web에서 입력값 전송 ----> RFC Function 에서 입력 값을 받아 해당 전표 리스트 Print
사용자는 웹시스템에서 조회값 입력 후 전송하면 바로 프린트를 볼수 있으므로 마치 Web에서 바로 출력되는
느낌을 줄 수 있다.
2. 제약사항
- ECC버젼이 아님.
-. 스마트 폼이 아닌 Write문으로 구현
3. RFC 부분 구현 사항
FUNCTION Z_PRINT_TEST.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(I_BUKRS) LIKE BKPF-BUKRS DEFAULT 'D604'
*" VALUE(I_GJAHR) LIKE BKPF-GJAHR DEFAULT SY-DATUM(4)
*" VALUE(I_BLART_L) LIKE BKPF-BLART OPTIONAL
*" VALUE(I_BLART_H) LIKE BKPF-BLART OPTIONAL
*" VALUE(I_BUDAT) LIKE BKPF-BUDAT OPTIONAL
*" VALUE(I_CPUDT) LIKE BKPF-CPUDT OPTIONAL
*" VALUE(I_GSBER_L) LIKE BSEG-GSBER OPTIONAL
*" VALUE(I_GSBER_H) LIKE BSEG-GSBER OPTIONAL
*" VALUE(I_USNAM_L) LIKE BKPF-USNAM OPTIONAL
*" VALUE(I_USNAM_H) LIKE BKPF-USNAM OPTIONAL
*" VALUE(I_BELNR) LIKE BKPF-BELNR OPTIONAL
*" TABLES
*" IN_TAB STRUCTURE ZST_VEND_CRE
*" OUT_MSG STRUCTURE ZST_VEND_CRE_MSG
*"----------------------------------------------------------------------
*----> test 용 조회 조건
* 입력 값 받아 오는 부분
(생략)
* PRINT 관련
*----> 출력 Setting
NEW-PAGE PRINT ON
DESTINATION 'LOCL'
IMMEDIATELY 'X'
KEEP IN SPOOL 'X'
LINE-COUNT 65
LINE-SIZE 170
LAYOUT 'X_65_132'
NO DIALOG
NO-HEADING.
*<----
LOOP AT VEND_TAB.
WRITE : 90 'Welcome to China'.
ENDLOOP.
ENDFUNCTION.
펑션 테스트 결과 출력 잘 됩니다.
4. 프로그램에서 해당 Function 호출하여 실행 구현
---> 이것도 프린트 실행 잘 됩니다.
REPORT Z_PRINT_TEST NO STANDARD PAGE HEADING MESSAGE-ID ZZ
LINE-SIZE 255 LINE-COUNT 100 .
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_PRTID LIKE TSP03-PADEST . "Printer ID
SELECTION-SCREEN END OF BLOCK B1.
START-OF-SELECTION.
임의의 Data
LT_IN_TAB-BUDAT = '20020228'.
LT_IN_TAB-MATNR = 'AF'.
LT_IN_TAB-WERKS = 'D606'.
LT_IN_TAB-LGORT = '2002'.
LT_IN_TAB-LIFNR = 'S0'.
LT_IN_TAB-H_TEXT = 'S6'.
APPEND LT_IN_TAB .
CALL FUNCTION 'Z_PRINT_TEST'
TABLES
IN_TAB = LT_IN_TAB
OUT_MSG = LT_OUT_MSG.
IF LT_OUT_MSG-MSGTYP = 'F'.
ENDIF.
5 타시스템에서 출력을 위해 ProC에서 호출을 해 봅니다.
근데 데이타 전송도 잘 되는데.... 프린트가 안 되네요...
(혹시 되고 있다면 프린트는 어디 있는 거야?? ㅡㅡ;)
왜 안 될까요??
프로그램에서 Function 호출시 GUI가 로컬프린트가 어딨는지 알아서 서버에 전송해 주는 기능이 있었던걸까요?
Spool이 뜨는 걸 봐서는 그런듯도 하고.....
그렇다면... 타 시스템에서 RFC를 통한 프린트 할 수 있는 방법은 있는지요?
고수님들의 의견을 듣고자 합니다.
첨부)
아마두 컴퓨터에 연결되어 있는 프린트 ip나 프린트 정보들을 서버에 넘겨 줘야 할거 같네요...
Spool이 넘겨주는 정보들을 수동으로 할 수 있는 방법을 알아야 할거 같네요.... ㅡㅜ
옵션중에서 바로 출력옵션을 줘 보시죠...