‎2013 Jun 14 9:40 AM
Hi experts!
I'm calling a standar report RPC190E0 from a FM with a submit instruction, like this one:
...
SUBMIT RPC190E0 with selection-table seltab EXPORTING LIST TO MEMORY AND RETURN.
...
The report shows a sapscript output after the printer prompt window.
I don't know how execute the submit because I don't want the prompt window, it should pass it.
I need to get the sapscript output in OTF format after executing the submit of RPC190E0.
Someone knows how to do it?
Kind regards,
Julian.
‎2013 Jun 14 10:18 AM
Try this code..
CALL FUNCTION 'WRITE_FORM' " Write form
EXPORTING
ELEMENT = MAIN_ELEM "ELEM_MAIN'
TYPE = 'BODY'
WINDOW = 'MAIN'.
ENDLOOP.
CALL FUNCTION 'CLOSE_FORM' " Close Form
IMPORTING
RESULT = W_RES
TABLES
OTFDATA = I_OTF.
REFRESH ITAB_DETL.
CLEAR LFIMG.
CLEAR STR_DETL.
CALL FUNCTION 'CONVERT_OTF_2_PDF' " Convert to OTF
IMPORTING
BIN_FILESIZE = L_FILESIZE
TABLES
OTF = I_OTF
DOCTAB_ARCHIVE = L_TAB_DOCS
LINES = IT_PDF_OUTPUT
EXCEPTIONS
ERR_CONV_NOT_POSSIBLE = 1
ERR_OTF_MC_NOENDMARKER = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Transfer the 132-long strings to 255-long strings
LOOP AT IT_PDF_OUTPUT.
TRANSLATE IT_PDF_OUTPUT USING ' ~'.
CONCATENATE GD_BUFFER IT_PDF_OUTPUT INTO GD_BUFFER.
ENDLOOP.
TRANSLATE GD_BUFFER USING '~ '.
DO.
IT_MESS_ATT = GD_BUFFER.
APPEND IT_MESS_ATT.
SHIFT GD_BUFFER LEFT BY 255 PLACES.
IF GD_BUFFER IS INITIAL.
EXIT.
ENDIF.
ENDDO.
L_OBJBIN[] = IT_MESS_ATT[].
* Create Message Attachment
DESCRIBE TABLE L_OBJBIN LINES L_TAB_LINES.
READ TABLE L_OBJBIN INDEX L_TAB_LINES.
L_OBJPACK-DOC_SIZE = ( L_TAB_LINES - 1 ) * 255 + STRLEN( L_OBJBIN ).
L_OBJPACK-TRANSF_BIN = 'X'.
L_OBJPACK-HEAD_START = 1.
L_OBJPACK-HEAD_NUM = 0.
L_OBJPACK-BODY_START = 1.
L_OBJPACK-BODY_NUM = L_TAB_LINES.
L_OBJPACK-DOC_TYPE = 'PDF'.
L_OBJPACK-OBJ_NAME = 'objectname'.
*Send the e-mail
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOCDATA
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X'
TABLES
PACKING_LIST = L_OBJPACK
CONTENTS_BIN = L_OBJBIN
CONTENTS_TXT = L_OBJTXT
RECEIVERS = RECLIST
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
DOCUMENT_TYPE_NOT_EXIST = 3
OPERATION_NO_AUTHORIZATION = 4
PARAMETER_ERROR = 5
X_ERROR = 6
ENQUEUE_ERROR = 7
OTHERS = 8.
COMMIT WORK.
‎2013 Jun 14 9:56 AM
Hi,
The control parameters for the sapscript should have the NO_DIALOG set as 'X'.
Cheers,
Arindam
‎2013 Jun 14 10:10 AM
Hello Julian,
you can set your default printer device by going into system->user profile->own data.
then just input your device like LP01 into output device and check output immediately.
‎2013 Jun 14 10:18 AM
Try this code..
CALL FUNCTION 'WRITE_FORM' " Write form
EXPORTING
ELEMENT = MAIN_ELEM "ELEM_MAIN'
TYPE = 'BODY'
WINDOW = 'MAIN'.
ENDLOOP.
CALL FUNCTION 'CLOSE_FORM' " Close Form
IMPORTING
RESULT = W_RES
TABLES
OTFDATA = I_OTF.
REFRESH ITAB_DETL.
CLEAR LFIMG.
CLEAR STR_DETL.
CALL FUNCTION 'CONVERT_OTF_2_PDF' " Convert to OTF
IMPORTING
BIN_FILESIZE = L_FILESIZE
TABLES
OTF = I_OTF
DOCTAB_ARCHIVE = L_TAB_DOCS
LINES = IT_PDF_OUTPUT
EXCEPTIONS
ERR_CONV_NOT_POSSIBLE = 1
ERR_OTF_MC_NOENDMARKER = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Transfer the 132-long strings to 255-long strings
LOOP AT IT_PDF_OUTPUT.
TRANSLATE IT_PDF_OUTPUT USING ' ~'.
CONCATENATE GD_BUFFER IT_PDF_OUTPUT INTO GD_BUFFER.
ENDLOOP.
TRANSLATE GD_BUFFER USING '~ '.
DO.
IT_MESS_ATT = GD_BUFFER.
APPEND IT_MESS_ATT.
SHIFT GD_BUFFER LEFT BY 255 PLACES.
IF GD_BUFFER IS INITIAL.
EXIT.
ENDIF.
ENDDO.
L_OBJBIN[] = IT_MESS_ATT[].
* Create Message Attachment
DESCRIBE TABLE L_OBJBIN LINES L_TAB_LINES.
READ TABLE L_OBJBIN INDEX L_TAB_LINES.
L_OBJPACK-DOC_SIZE = ( L_TAB_LINES - 1 ) * 255 + STRLEN( L_OBJBIN ).
L_OBJPACK-TRANSF_BIN = 'X'.
L_OBJPACK-HEAD_START = 1.
L_OBJPACK-HEAD_NUM = 0.
L_OBJPACK-BODY_START = 1.
L_OBJPACK-BODY_NUM = L_TAB_LINES.
L_OBJPACK-DOC_TYPE = 'PDF'.
L_OBJPACK-OBJ_NAME = 'objectname'.
*Send the e-mail
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOCDATA
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X'
TABLES
PACKING_LIST = L_OBJPACK
CONTENTS_BIN = L_OBJBIN
CONTENTS_TXT = L_OBJTXT
RECEIVERS = RECLIST
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
DOCUMENT_TYPE_NOT_EXIST = 3
OPERATION_NO_AUTHORIZATION = 4
PARAMETER_ERROR = 5
X_ERROR = 6
ENQUEUE_ERROR = 7
OTHERS = 8.
COMMIT WORK.