Technology Blog Posts by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member
101,446


The following five steps show how to place an SE78 graphic on an Adobe Form.

 

In this example, we will add an existing color logo named Z_LOGO to an existing Adobe form,
ZRUOTC_SERVSTAR_PDF. First, make sure the logo exists in SE78 as a bitmap image and that
the Adobe form and interface exist as well.
(1) Go to transaction SE78 and ascertain Z_LOGO exists by following this path:
Form Graphics->Stored on Document Server->GRAPHICS General Graphics->BMAP Bitmap Images.
Do a print preview to see the graphic.


(2) Go to transaction SFP. Select the Interface radio button and click the Change icon.

Under the Global Definitions folder double click into Global Data and add these fields.

Variable name     Type Assignment     Type Name                         Default Value
V_FIELD                 TYPE                       XSTRING
V_BTYPE               TYPE                       TDBTYPE                              'BCOL'
V_ID                       TYPE                       TDIDGR                                 'BMAP'
V_OBJECT            TYPE                       TDOBJECTGR                      'GRAPHICS'
V_NAME                TYPE                       STXBITMAPS-TDNAME       'Z_LOGO'
G_LOGO               TYPE                        XSTRING



Do a syntax check.

 

(3) Under the Initialization folder, double click into the Code Initialization area.

Create the following logic.

* Call method get_bds_graphic_as_bmp to retrieve z_logo. Note that v_field and g_logo
* MUST be typed as XSTRING NOT string or the conversion of the form from SE78 will
* not work and the logo will NOT display on the Adobe form. On the layout tab of the
* Adobe form, bind z_logo to the graphics node created here in the Interface, NOT
* directly to g_logo. Adobe sees g_logo as a text field.
CALL METHOD cl_ssf_xsf_utilities=>get_bds_graphic_as_bmp
EXPORTING
p_object           = v_object      " 'GRAPHICS'
p_name            = v_name      " Name of the SE78 logo inside Quotes
p_id                  = v_id            " 'BMAP'
p_btype            = v_btype      " 'BCOL' for color, 'BMON' for Black & White
RECEIVING
p_bmp             = v_field        " v_field and g_logo must be typed xstring
EXCEPTIONS
not_found        = 1
internal_error   = 2
OTHERS         = 3.
g_logo = v_field.                       " g_logo and v_field must be typed xstring



Do a syntax check, save, and back out of the Interface.

 

(4) Select the Adobe Form radio button and click the Change Icon.

Go to the Context tab.
Expand the Global Data folder. You should see the 6 fields created in the Interface.

Under the Context bar on the upper right window, right click on the top folder.


Choose Create, Graphic and give it a name.

Under the Global Data folder on the upper left window locate the G_LOGO field.
Drag and drop G_LOGO on top of your new Graphics Node.

Under Properties at the bottom right window, change the Graphic Type Value.
It defaults to 'Graphic Reference'. Change it to 'Graphic Content'.


Enter G_LOGO as the Graphic Content field.
Enter 'IMAGE/BMP' with the quotes as the MIME Type.

(5) Go to the Layout Tab of the Adobe form.
Expand the standard palette object library and choose an Image Field.


Drag and drop the Image field to the location on the form where you want the logo displayed.

Under the Field tab make sure the URL field is blank because this is not a static logo.


Check the Embed Image Data box. However, it seems to work checked or unchecked.
Choose Scale Image Proportionately.
Under the Binding Tab, bind the image field to the Graphic Node, not to the G_LOGO field.



Do a syntax check on the interface and form. Save and activate.

13 Comments
bruno_esperanca
Contributor
0 Kudos

Thanks for this Brad, I was having trouble with the MIME type thing.

By the way, this might come as a surprise to you, but I didn't put any code in the interface. I hate having code in multiple places and I think this is really bad in terms of readability.

So, I added only an XSTRING type field in the interface, and I get the content in the printing program.

Cheers,

Bruno

SiegfriedW
Participant
0 Kudos

Hello Brad,

thank you very much for this How-To-solution.

It helped me to solve my problems

Cheers

Sigi

Former Member
0 Kudos

Sigi, I'm glad this helped you and thanks for letting me know. Cheers!

Former Member
0 Kudos

Brad…

Thank you for this excellent post !
Detailed and clear…


Hope it works in our system.

Dave T.

Former Member
Dave, glad you liked it and hope it helps. If you have any issues please let me know.

 
Former Member
0 Kudos
Hi Brad,

I have followed the steps provide by you. But the image is not appearing. May I know what am I missing please.

Below are the screen shots of the interface, adobe form and its output.









Former Member

Dear Any one else this is quite urgent for me…please review my steps and code to advice/suggest me with the solution for my issue.

loather
Explorer
0 Kudos
I know this is very old but I found it useful and thought I would add a couple of comments

1] I agree that Bruno's approach to pass the xstring in the form parameters instead of creating code within the interface is cleaner

2] MIME type 'IMAGE/BMP' is actually incorrect, it works more by luck than judgement, probably the render engine defaults to bitmap. The correct value is 'image/bmp' - lower case is important:


3] Don't add the xstring data to the context. The graphic object in the context can still read the xstring data 'on the interface side'. By adding the xstring to the context side, you are adding a 2nd copy of the data in a different format which is still rendered into XML and then sent to the form processor.

 

The way I think of the context, is a kind of ABAP layer which SAP created to make Adobe forms a little more familiar for SAP developers.
Adobe forms use a single XML as input data, it has no knowledge of SAP dictionary concepts. At runtime, the context is used to dynamically generate this input XML data, which is then sent to the actual Adobe form rendering engine.
I am also facing the same issue. Let me know if you find the solution. Thank you!
former_member55862
Participant
0 Kudos
Hi!

Thanks for step-by-step details. I have tried and it is working fine. Even with MIME type in small or caps both works fine.

Thanks

AQIB
ivoferreira
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi all,

The same problem still today.

 

ivoferreira
Product and Topic Expert
Product and Topic Expert
0 Kudos
Hi,

I found the solution for my case. I was using STRING data type for G_LOGO variable.

Now it is properly defined as XSTRING and it's working.

 

Thanks.
Terry_Needham
Newcomer
0 Kudos
Thanks for the pointer Brad, used the method cl_ssf_xsf_utilities=>get_bds_graphic_as_bmp to get a logo into an Excel spreadsheet.

Thanks

Terry
Labels in this area