15
Displaying a Smart form as PDF in Enterprise portal using WebDynpro for Java By Nagaraju Donikena I have seen many questions on how a smart form should be displayed in portal. To answer this question a person should have both Portal and ABAP knowledge. By giving this basic information I want to make sure that displaying a smart form as PDF is a simple task. Let me start from R/3 side Create a smart form. Here I have created a simple smart form which displays “Welcome to SAP Smart forms”. Now create a function module with the following export parameter:

Displaying a Smart Form as PDF in Enterprise Portal Using WebDynpro for Java

Embed Size (px)

Citation preview

Page 1: Displaying a Smart Form as PDF in Enterprise Portal Using WebDynpro for Java

Displaying a Smart form as PDF in Enterprise portal using WebDynpro for Java

By Nagaraju Donikena

I have seen many questions on how a smart form should be displayed in portal. To answer this question a person should have both Portal and ABAP knowledge. By giving this basic information I want to make sure that displaying a smart form as PDF is a simple task. 

Let me start from R/3 side 

Create a smart form. Here I have created a simple smart form which displays “Welcome to SAP Smart forms”. 

 

Now create a function module with the following export parameter:

Page 2: Displaying a Smart Form as PDF in Enterprise Portal Using WebDynpro for Java

 

Place the following code in the function module 

data :

lv_fnam type RS38L_FNAM,

gs_control TYPE ssfctrlop,

gs_output_options TYPE ssfcompop,

gs_otfdata TYPE itcoo,

gs_job_output_info TYPE ssfcrescl,

gt_otfdata TYPE STANDARD TABLE OF itcoo INITIAL SIZE 0. 

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

formname = 'YNAG_TEST_PDF'

IMPORTING

FM_NAME = lv_fnam

Page 3: Displaying a Smart Form as PDF in Enterprise Portal Using WebDynpro for Java

EXCEPTIONS

NO_FORM = 1

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

CLEAR gs_job_output_info.

CLEAR gs_job_output_info-otfdata.

MOVE :

'X' TO gs_control-no_dialog,

'X' TO gs_control-getotf,

'LOCL'(047) TO GS_OUTPUT_OPTIONS-TDDEST. 

CALL FUNCTION lv_fnam

EXPORTING

CONTROL_PARAMETERS = gs_control

OUTPUT_OPTIONS = gs_output_options

USER_SETTINGS = space

Page 4: Displaying a Smart Form as PDF in Enterprise Portal Using WebDynpro for Java

IMPORTING

JOB_OUTPUT_INFO = gs_job_output_info

EXCEPTIONS

FORMATTING_ERROR = 1

INTERNAL_ERROR = 2

SEND_ERROR = 3

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

*Populate OTF data table

LOOP AT gs_job_output_info-otfdata INTO gs_otfdata.

APPEND gs_otfdata TO gt_otfdata.

CLEAR gs_otfdata.

ENDLOOP. " LOOP AT t_outtab-otfdata

DATA: lv_bytes TYPE p,

lv_bin_file type xstring,

Page 5: Displaying a Smart Form as PDF in Enterprise Portal Using WebDynpro for Java

gt_pdfdata TYPE STANDARD TABLE

OF tline

INITIAL SIZE 0. 

* Convert OTF into PDF

CALL FUNCTION 'CONVERT_OTF'

EXPORTING

format = 'PDF'

max_linewidth = 255

IMPORTING

bin_filesize = lv_bytes

BIN_FILE = bin_file

TABLES

otf = gt_otfdata

lines = gt_pdfdata

EXCEPTIONS

err_max_linewidth = 1

err_format = 2

err_conv_not_possible = 3

OTHERS = 4. 

Page 6: Displaying a Smart Form as PDF in Enterprise Portal Using WebDynpro for Java

Make sure that the function module is marked remote enabled. 

 

With this we are done on the R/3 side.

In NWDS (Net Weaver Developer Studio) create an Adaptive RFC model which points to the FM created in R/3. 

Page 7: Displaying a Smart Form as PDF in Enterprise Portal Using WebDynpro for Java

 

Give model name 

Page 8: Displaying a Smart Form as PDF in Enterprise Portal Using WebDynpro for Java

 

Page 9: Displaying a Smart Form as PDF in Enterprise Portal Using WebDynpro for Java

 

Page 10: Displaying a Smart Form as PDF in Enterprise Portal Using WebDynpro for Java

 

Now create an application to display the PDF

 

Page 11: Displaying a Smart Form as PDF in Enterprise Portal Using WebDynpro for Java

Insert a frame inside the view 

 

Internal is a value node and url is value attribute of type string. 

Place the following code in Init method 

public void wdDoInit()

{

Page 12: Displaying a Smart Form as PDF in Enterprise Portal Using WebDynpro for Java

//@@begin wdDoInit()

Ynag_Test_Pdf_1_Input input = new Ynag_Test_Pdf_Input();

wdContext.nodeYnag_Test_Pdf_Input().bind(input);

try {

wdContext.currentYnag_Test_Pdf_InputElement().modelObject().execute();

} catch (WDDynamicRFCExecuteException e) {

e.printStackTrace();

wdContext.currentContextElement().setSdfgdsfsd(e.getMessage());

} wdContext.currentInternalElement().setUrl(convertXStringToUrl(wdContext.currentOutputElement().getBin_File())); 

//@@end

//@@begin others

public String convertXStringToUrl(byte[] doc_content){

String url = "";

WDWebResourceType webResType = WDWebResourceType.PDF;

IWDWebResource webResource = WDWebResource.getWebResource(doc_content, webResType);

try {

url = webResource.getURL();

Page 13: Displaying a Smart Form as PDF in Enterprise Portal Using WebDynpro for Java

} catch (WDURLException e) {

e.printStackTrace();

return url;

}

//@@end 

 

If you are using single sign on make sure to enable User authentication in the application parameters.

User details are required for this as it is using Single sign on to connect to R/3. 

In this case we have hard coded the Smart form to be used.

If you want it in dynamic way FM interfaces need to be changed accordingly.