Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 9656

Re: Smartform in Abap Webdynpro

$
0
0

To call A smartform in Web dynpro View, Make an Interactive UI element on Layout

Create A node name  PDF with an attribute SOURCE type string in context tab of view.

Bind the Interactive UI element with Source attribute . And write the below code in WDDOINIT method to call Smartform  ZG2_SMARTFORM_TEST.

 

method WDDOINIT.

* Reading Node for display

 

   DATA LO_ND_NODE_FOR_DISPLAY TYPE REF TO IF_WD_CONTEXT_NODE.

   DATA LO_EL_NODE_FOR_DISPLAY TYPE REF TO IF_WD_CONTEXT_ELEMENT.

   DATA LS_NODE_FOR_DISPLAY TYPE WD_THIS->ELEMENT_NODE_FOR_DISPLAY.

 

* navigate from <CONTEXT> to <NODE_FOR_DISPLAY> via lead selection

   LO_ND_NODE_FOR_DISPLAY = WD_CONTEXT->GET_CHILD_NODE( NAME = WD_THIS->WDCTX_NODE_FOR_DISPLAY ).

* get element via lead selection

   LO_EL_NODE_FOR_DISPLAY = LO_ND_NODE_FOR_DISPLAY->GET_ELEMENT( ).

* get all declared attributes

   LO_EL_NODE_FOR_DISPLAY->GET_STATIC_ATTRIBUTES(

     IMPORTING

       STATIC_ATTRIBUTES = LS_NODE_FOR_DISPLAY ).

 

 

* Calling Smartform

   DATA LV_SMARTFORM       TYPE RS38L_FNAM.

   DATA LS_SSFCTRLOP       TYPE SSFCTRLOP.

   DATA LS_OUTPUT_OPTIONS  TYPE SSFCOMPOP.

   DATA LS_JOB_OUTPUT_INFO TYPE SSFCRESCL.

   DATA LT_LINES           TYPE STANDARD TABLE OF TLINE.

   DATA LV_BIN_FILESIZE    TYPE I.

   DATA LV_PDF_XSTRING     TYPE XSTRING.

   data LT_OTFDATA TYPE TABLE OF ITCOO.

 

* -- Get the name of the smartform function module

   CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

     EXPORTING

       FORMNAME           = 'ZG2_SMARTFORM_TEST'

*     VARIANT            = ' '

*     DIRECT_CALL        = ' '

     IMPORTING

       FM_NAME            = LV_SMARTFORM

 

     EXCEPTIONS

       NO_FORM            = 1

       NO_FUNCTION_MODULE = 2

       OTHERS             = 3.

   IF SY-SUBRC <> 0.

     BREAK-POINT.

* Implement suitable error handling here

   ENDIF.

 

* -- Call the smartform

   LS_SSFCTRLOP-NO_DIALOG = SPACE.

   LS_SSFCTRLOP-GETOTF    = ABAP_TRUE.

   LS_SSFCTRLOP-NO_DIALOG = 'X'.

   LS_SSFCTRLOP-PREVIEW = 'X'.

   LS_SSFCTRLOP-GETOTF = 'X'.

   LS_SSFCTRLOP-LANGU = 'EN'.

   LS_SSFCTRLOP-DEVICE 'PRINTER'. "LOCAL_PRINTER2 'LOCAL_PRINTER1'.

 

 

   LS_OUTPUT_OPTIONS-TDPRINTER  = 'PDF'. "'PDF1'.

   LS_OUTPUT_OPTIONS-TDDEST     = 'LP01'.

   LS_OUTPUT_OPTIONS-TDIMMED    = 'X'.

   Ls_OUTPUT_OPTIONS-TDDELETE   = 'X'.

   Ls_OUTPUT_OPTIONS-TDLIFETIME = 'X'.

   Ls_OUTPUT_OPTIONS-TDDEST     = 'LOCL'.

 

   CALL FUNCTION LV_SMARTFORM

     EXPORTING

       CONTROL_PARAMETERS = LS_SSFCTRLOP

       OUTPUT_OPTIONS     = LS_OUTPUT_OPTIONS

       USER_SETTINGS      = 'X'

       GS_NODE_FOR_DISPLAY = LS_NODE_FOR_DISPLAY

*     custom_input       = ls_your_custom_smartform_input

     IMPORTING

       JOB_OUTPUT_INFO    = LS_JOB_OUTPUT_INFO

     EXCEPTIONS

       OTHERS             = 0.

 

REFRESH LT_OTFDATA.

 

LT_OTFDATA[] = LS_JOB_OUTPUT_INFO-OTFDATA[].

 

CALL FUNCTION 'SSFCOMP_PDF_PREVIEW'

EXPORTING

I_OTF                    = LT_OTFDATA

EXCEPTIONS

CONVERT_OTF_TO_PDF_ERROR = 1

CNTL_ERROR               = 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.

 

* -- Convert the OTF data to xstring

   CALL FUNCTION 'CONVERT_OTF'

     EXPORTING

       FORMAT                = 'PDF'

       MAX_LINEWIDTH         = 255

     IMPORTING

       BIN_FILESIZE          = LV_BIN_FILESIZE

       BIN_FILE              = LV_PDF_XSTRING

     TABLES

       OTF                   = LT_OTFDATA[]

       LINES                 = LT_LINES

     EXCEPTIONS

       ERR_MAX_LINEWIDTH     = 1

       ERR_FORMAT            = 2

       ERR_CONV_NOT_POSSIBLE = 3

       ERR_BAD_OTF           = 4

       OTHERS                = 5.

 

IF SY-SUBRC <> 0.

  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

 

   CHECK LV_PDF_XSTRING IS NOT INITIAL.

   DATA LO_ND_PDF TYPE REF TO IF_WD_CONTEXT_NODE.

   DATA LO_EL_PDF TYPE REF TO IF_WD_CONTEXT_ELEMENT.

   DATA LS_PDF TYPE WD_THIS->ELEMENT_PDF.

   DATA LV_SOURCE TYPE WD_THIS->ELEMENT_PDF-SOURCE.

 

* navigate from <CONTEXT> to <PDF> via lead selection

   LO_ND_PDF = WD_CONTEXT->GET_CHILD_NODE( NAME = WD_THIS->WDCTX_PDF ).

 

* get element via lead selection

   LO_EL_PDF = LO_ND_PDF->GET_ELEMENT( ).

 

* @TODO handle not set lead selection

   IF LO_EL_PDF IS INITIAL.

   ENDIF.

 

* set single attribute

   LO_EL_PDF->SET_ATTRIBUTE(

     NAME `SOURCE`

     VALUE = LV_PDF_XSTRING ).

endmethod.


Viewing all articles
Browse latest Browse all 9656

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>