Tuesday, November 15, 2011

SAP script

OPEN_FORM - Open SAPscript form printing
- to only preview the form: options-tdpreview='X' (options-tdnoprint forbids print even from preview)
- to get OTF data instead of printing: options-tdgetotf='X'
- to output OTF data to memory buffer instead of printing: device='OTF_MEM'

Code:

REPORT z_sapscript_form.
data: w_options type itcpo,
w_result type itcpp,
w_otf like itcoo occurs 0 with header line,
w_ascii like tline occurs 0 with header line,
w_device(40) type c,
w_num like sy-tabix.

parameters: printer like tsp03-padest lower case default 'locl',
layoutst like rsscf-tdform default 'MEDRUCK'.
selection-screen: begin of line.
parameters p_prn radiobutton group rad0.
selection-screen: comment 4(60) cmt_prn for field p_prn,
end of line.
selection-screen: begin of line.
parameters p_pre radiobutton group rad0.
selection-screen: comment 4(60) cmt_pre for field p_pre,
end of line.
selection-screen: begin of line.
parameters p_mem radiobutton group rad0.
selection-screen: comment 4(60) cmt_mem for field p_mem,
end of line.
selection-screen: begin of line.
parameters p_otf radiobutton group rad0.
selection-screen: comment 4(60) cmt_otf for field p_otf,
end of line.

initialization.
cmt_prn = 'Print to spool'.
cmt_pre = 'Only create form and preview, no print'.
cmt_mem = 'Output OTF to memory buffer and convert to ASCII'.
cmt_otf = 'Only get OTF data'.

start-of-selection.
perform: form_open,
print_item,
form_close.
case 'X'.
when p_prn. write: / 'See Spool#', w_result-tdspoolid,
'(', w_result-tdpages, ' pages )'.
when p_pre.
when p_otf. loop at w_otf.
write / w_otf.
endloop.
when p_mem. perform get_ascii.
endcase.
*---------------------------------------------------------------------*
* FORM FORM_OPEN *
*---------------------------------------------------------------------*
* Start of printing the form *
*---------------------------------------------------------------------*
form form_open.
w_options-tddest = printer.
w_device = 'PRINTER'. "default
case 'X'.
when p_pre. w_options-tdpreview = 'X'.
w_options-tdnoprint = 'X'.
when p_prn.
when p_mem. w_device = 'OTF_MEM'.
when others. w_options-tdgetotf = 'X'.
endcase.
call function 'OPEN_FORM'
exporting
device = w_device
dialog = ' '
form = layoutst
options = w_options
exceptions
canceled = 1
device = 2
form = 3
options = 4
unclosed = 5
mail_options = 6
archive_error = 7
invalid_fax_number = 8
more_params_needed_in_batch = 9
spool_error = 10
others = 11.
write: / 'Form open. Return code =', sy-subrc.
if sy-subrc <> 0.
message id sy-msgid type 'I' number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
endform.
*&---------------------------------------------------------------------*
*& Form PRINT_ITEM
*&---------------------------------------------------------------------*
* Print form item *
*----------------------------------------------------------------------*
form print_item.
call function 'WRITE_FORM'
exceptions
element = 1
function = 2
type = 3
unopened = 4
unstarted = 5
window = 6
bad_pageformat_for_print = 7
spool_error = 8
others = 9.
write: / 'Form print. Return code =', sy-subrc.
if sy-subrc <> 0.
message id sy-msgid type 'I' number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
endform. " PRINT_ITEM
*---------------------------------------------------------------------*
* FORM FORM_CLOSE *
*---------------------------------------------------------------------*
* End of printing the form *
*---------------------------------------------------------------------*
form form_close.
call function 'CLOSE_FORM'
importing
result = w_result
tables
otfdata = w_otf
exceptions
unopened = 1
bad_pageformat_for_print = 2
send_error = 3
spool_error = 4
others = 5.
write: / 'Form close. Return code =', sy-subrc,
'Spool#', w_result-tdspoolid.
if sy-subrc <> 0.
message id sy-msgid type 'I' number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
else.
describe table w_otf lines w_num.
write: / 'OTF has', w_num, 'lines.'.
endif.
endform.
*&---------------------------------------------------------------------*
*& Form get_ascii
*&---------------------------------------------------------------------*
* convert OTF from memory to ASCII text
*----------------------------------------------------------------------*
form get_ascii.
call function 'CONVERT_OTF_MEMORY'
tables
lines = w_ascii
exceptions
memory_empty = 1
err_max_linewidth = 2
err_format = 3
err_conv_not_possible = 4
others = 5.
write: / 'Convert OTF memory. Return code =', sy-subrc.
if sy-subrc <> 0.
message id sy-msgid type 'I' number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
else.
describe table w_ascii lines w_num.
write: / 'OTF has', w_num, 'lines.'.
loop at w_ascii.
write: / w_ascii.
endloop.
endif.
endform. " get_ascii


CLOSE_FORM - End SAPscript layout set printing
- spool #: result-tdspoolid
- OTF data: otfdata (when options-tdgetotf='X' in OPEN_FORM)

WRITE_FORM - Output SAPscript text element in form window

CONTROL_FORM - Control SAPscript form output
- issue command to the form, e.g. exporting command = 'NEW-PAGE'

CONVERT_OTF_MEMORY - Convert SAPscript OTF from memory into text format
output: table of structure TLINE (OTF saved to memory buffer by OPEN_FORM)

SAVE_OTF_TO_MEMORY - Write OTF format to memory
export|import OTF internal table to|from memory id ...

READ_OTF_FROM_MEMORY - Read OTF from memory

PRINT_OTF - print OTF from internal table

DISPLAY_OTF - Display an OTF table on the screen

DISPLAY_POSTSCRIPT - Display a postscript table on the screen tables postscript structure itcps

CONVERT_OTF - Convert OTF format to various formats (TLINE table) ASCII or PDF
Code:
CALL FUNCTION "CONVERT_OTF"
EXPORTING FORMAT = "PDF"
IMPORTING BIN_FILESIZE = FILE_LEN
TABLES OTF = OTFDATA
LINES = PDFDATA
EXCEPTIONS ERR_MAX_LINEWIDTH = 1
ERR_FORMAT = 2
ERR_CONV_NOT_POSSIBLE = 3
OTHERS = 4.


CONVERT_OTF_2_PDF - Convert OTF to PDF (TLINE table).
OTF can be filled used archivelink. Calls CONVERT_OTF.

CONVERT_OTF_2_PDF_ARCHIVELINK - Convert OTF to PDF (TLINE table).
Calls CONVERT_OTF. Looks like the function names for these two functions are mixed up J

CONVERT_OTF_AND_FAX

CONVERT_OTF_AND_MAIL

CONVERT_OTFSPOOLJOB_2_PDF
Input: spool # (SAPscript: tsp01-rqdoctype='OTF'); Output: PDF as internal table (TLINE)

CONVERT_ABAPSPOOLJOB_2_PDF
Input: spool # (ABAP listing: tsp01-rqdoctype='LIST'); Output: PDF as internal table (TLINE)

OTF_CONVERT - wraps several other function modules. Will convert OTF to ASCII or PDF

SX_OBJECT_CONVERT_OTF_PDF - Conversion From OTF to PDF (SAPScript conversion)

SX_OBJECT_CONVERT_OTF_PRT - Conversion From OTF to Printer Format (SAPScript conversion)

SX_OBJECT_CONVERT_OTF_RAW - Conversion From OTF to ASCII (SAPScript conversion)

Monday, November 14, 2011

To assign enter button as execute in selection screen

SELECTION-SCREEN: BEGIN OF LINE,
COMMENT 1(31) TEXT-002 FOR FIELD IN_YEAR MODIF ID A.
PARAMETERS: IN_YEAR(4) MODIF ID A. " a field
SELECTION-SCREEN PUSHBUTTON (20) execut USER-COMMAND execut MODIF ID A. "button!
SELECTION-SCREEN END OF LINE.
===========================================
AT SELECTION-SCREEN OUTPUT.
MOVE 'Execute' TO execut. "giving the button label
..
...
....
===========================================
AT SELECTION-SCREEN.

if sscrfields-ucomm eq 'EXECUT'.
sscrfields-ucomm = 'ONLI'. " this is the execute value passed!
endif.

..
...
....

HR_GET_EMPLOYEES_FROM_USER

"mark---------------------
DATA : ee_tab TYPE PERNR_US_TAB,
wa_ee_tab type line of PERNR_US_TAB.
* get pernr, molga, ename
CALL FUNCTION 'HR_GET_EMPLOYEES_FROM_USER'
EXPORTING
user = sy-uname
TABLES
ee_tab = ee_tab.
LOOP AT ee_tab into wa_ee_tab.
ENDLOOP.

PNPPERNR-SIGN = 'I'.
PNPPERNR-OPTION = 'EQ'.
PNPPERNR-LOW = wa_ee_tab-pernr.
APPEND PNPPERNR.

How to use a table with no header

DATA : ee_tab TYPE PERNR_US_TAB,
wa_ee_tab type line of PERNR_US_TAB.
* get pernr, molga, ename
CALL FUNCTION 'HR_GET_EMPLOYEES_FROM_USER'
EXPORTING
user = sy-uname
TABLES
ee_tab = ee_tab.

LOOP AT ee_tab into wa_ee_tab.

ENDLOOP.

Sunday, November 13, 2011

How to hide certain fields or button in your selection screen

*&---------------------------------------------------------------------*
*& Report Y_MARK
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT Y_MARK.


DATA: D_UCOMM LIKE SY-UCOMM.

PARAMETERS: P_GRPA1(10) MODIF ID A,
P_GRPA2(5) MODIF ID A,
P_GRPB1(2) MODIF ID B.

PARAMETERS: P_ACTA RADIOBUTTON GROUP RAD1 USER-COMMAND ACT DEFAULT 'X',
P_ACTB RADIOBUTTON GROUP RAD1.

AT SELECTION-SCREEN.
D_UCOMM = SY-UCOMM.

AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF P_ACTA = 'X'.
IF SCREEN-GROUP1 = 'B'.
SCREEN-ACTIVE = 0.
ENDIF.
ELSEIF P_ACTB = 'X'.
IF SCREEN-GROUP1 = 'A'.
SCREEN-ACTIVE = 0.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.

START-OF-SELECTION.

Tuesday, November 8, 2011

The maintenance dialog for zXXXXX is incomplete or not defined

This is how you create maintenance dialog for ztable.

Use tcode SE11, enter the table name click change. In the next screen, click Utitlies-->table maintenance generator.

Enter &NC& as the auth group.
Enter the function group to use (ex. Z_TABMAINT)

click One Step, enter '1' as the screen number. Click the create button.

Once generated, you can use it by going to SM30, enter table name and click maintain.

Source
http://forums.sdn.sap.com/thread.jspa?threadID=1087759

IAC - how to create

IAC iview is used when you want to create an iview of an ITS service. In the thrid step of creating IAC iview we should pass the ITS service name for IAC property.
Steps to create IAC iview.
1. Create a system object for R/3 with ITS property category also.
2. create a Service in transaction using SICF. The below thread will help you.

https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/2204
3. create an an iview and give the service name in IAC textbox not R/3 System name.

Also check:
https://www.sdn.sap.com/irj/sdn/thread?threadID=243082

http://help.sap.com/saphelp_nw04/helpdata/en/44/216fe21784648ee10000000a1553f7/frameset.htm

M again mentioning all the steps for IAC iview creation, plz check.

Steps to display the SAP Transaction as Internet Application Component (IAC) in Portal
The following three tasks have to be performed step by step:
1.Creating the IAC
2.Activating the IAC
3.Creating an IAC iview in the portal

Creating an IAC
1)Go to transaction sicf. Click on the "watch"button. Under Virtual Host / Services expand Default_host > SAP > bc > gui > sap > ITS. Now right click over ITS and select New Sub-Element.
2)In the new dialog box give the name of the service.
3)Now write a description in the description box. In the drop box corresponding to GUI Link select the option Yes. Now click the GUI Transaction button and enter the parameters as shown below.
Parameter Name Value
~TRANSACTION sm36
~THEME 99
~generateDynpro 1
~noHeaderOkCode 1
4)Now go to the tab Handler List and maintain the parameter CL_HTTP_EXT_ITS.
Now click on the save button from the top and save it.
You can now see the service under ITS.

Activating the service

After saving the IAC, we need to activate the service. Select the service under ITS, right click over it and select Activate Service. The service will get activated.

Creating an IAC iview in the portal

We need to create an iview which in tern will use a system to connect to the ITS.
In the WAS property of the system maintain the following property
Web As Host Name :
Web As Path /sap/bc/gui/sap/its/
Web As Protocol HTTP/HTTPS
Under Content Administration > Portal Content create an iview of type SAP IAC iview and specify the system alias name and the IAC.

source
http://forums.sdn.sap.com/thread.jspa?threadID=841234

Monday, November 7, 2011

HR reporting - defaulting value through programming

Ever wanted to put a default value into the HR reporting....

Now you can.

1. Run the program and press F1 to the defaulted field you want to initialise.

2. Under the abap coding "INITIALIZATION" copy the code below please modify base on your field name.

INITIALIZATION. "TO ADD IF THERE IS ANY TO INITIALIZE
PNPSTAT2-SIGN = 'I'.
PNPSTAT2-OPTION = 'EQ'.
PNPSTAT2-LOW = '0'. PNPSTAT2-HIGH = '0'. APPEND PNPSTAT2.

3. Activate and run the program! Walla Done...

Tuesday, November 1, 2011

SAP Remove Comma / Remove full stop




**********************************************************************

* FORM    :   remove_comma

* Created :  13.09.2011 18:33:22

**********************************************************************

FORM REMOVE_COMMA CHANGING $FIELD.



  DATA : WA_INDEX(02) TYPE I.

  DATA : F3(10) TYPE C.



  F3 = $FIELD.



  DO 10 TIMES.

    IF F3+WA_INDEX(01) EQ ','.

      F3+WA_INDEX(01) = ''.

    ENDIF.

    ADD TO WA_INDEX.

  ENDDO.



  CONDENSE F3 NO-GAPS.

  $FIELD = F3.



ENDFORM. " remove_comma



**********************************************************************


* FORM    :   remove_fullstop

* Created :  13.09.2011 18:33:22

**********************************************************************

FORM REMOVE_FULLSTOP CHANGING $FIELD.



  DATA : WA_INDEX(02) TYPE I.

  DATA : F3(10) TYPE C.



  F3 = $FIELD.



  DO 10 TIMES.

    IF F3+WA_INDEX(01) EQ '.'.

      F3+WA_INDEX(01) = ''.

    ENDIF.

    ADD TO WA_INDEX.

  ENDDO.



  CONDENSE F3 NO-GAPS.

  $FIELD = F3.



ENDFORM. " remove_fullstop