Showing posts with label ABAP Programs. Show all posts
Showing posts with label ABAP Programs. Show all posts

ABAP Programs: Form parameters with generic types

REPORT ZSOURCE1009.
* Variable for later use
DATA: SHORT_STRING(3) VALUE ‘AB’,
SHORT_NUMBER(3) TYPE N VALUE ’0′,
ALL_CUSTOMERS LIKE CUSTOMERS OCCURS 100.
* Calling forms with different actual parameters
* Correct call (actual paramter is of type c)
PERFORM WRITE_FIRST_CHARACTER CHANGING SHORT_STRING.

* Inccorrect call (actual paramter is not of type c)
*perform write_first_character changing short_number.
* Correct call (actual paramter is a table)
PERFORM SORT_AND_SEARCH_IN_TABLE
CHANGING ALL_CUSTOMERS.

* Form parameters with generic types
FORM WRITE_FIRST_CHARACTER CHANGING F_STRING TYPE C.
SHIFT F_STRING LEFT DELETING LEADING SPACE.
WRITE AT (1) F_STRING.
ENDFORM.

FORM SORT_AND_SEARCH_IN_TABLE
CHANGING F_TABLE TYPE TABLE.
SORT F_TABLE.
SEARCH F_TABLE FOR ‘Smith’.
ENDFORM.

Print to PDF SAP Script

*----------------Database Declaration-----------------------------*TABLES: LFA1,ADR6.*-----------------Internal Table Declaration----------------------*

*----------------Work VAriables ----------------------------------*DATA: S_DOC_CHNG LIKE SODOCCHGI1.DATA: L_TAB_LINES LIKE SY-TABIX.DATA: COUNT1 TYPE I.DATA: COUNT2(4) TYPE N.DATA: W_ITCPO LIKE ITCPO,W_DIALOG,W_ITCPP LIKE ITCPP.DATA: W_BIN_FILESIZE(10) TYPE C.DATA: L_FILENAME LIKE RLGRAP-FILENAME .DATA: OK_CODE LIKE SY-UCOMM.


DATA: SAV_OK_CODE LIKE SY-UCOMM.
DATA: LINE_COUNT TYPE I.
DATA: FLAG(1) VALUE ‘X’.
DATA: WRK_LINES LIKE SY-TABIX.
DATA: WRK_REMNO LIKE ZDUNNING_EMAIL-REMNO.
DATA: T_OTFDATA LIKE ITCOO OCCURS 0 WITH HEADER LINE.
DATA: T_ASCII LIKE TLINE OCCURS 0 WITH HEADER LINE.
DATA: T_PDF LIKE TLINE OCCURS 0 WITH HEADER LINE.
DATA: T_OBJPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.
DATA: T_OBJHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE.
DATA: T_OBJBIN LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
DATA: T_OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.
DATA: T_RECLIST LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE.
DATA: T_TEXT1 LIKE TLINE OCCURS 0 WITH HEADER LINE.
DATA: WRK_DAT LIKE SY-DATUM.
CONTROLS: TBCTL_EMAIL TYPE TABLEVIEW USING SCREEN 9000.

CALL FUNCTION ‘OPEN_FORM’
EXPORTING
APPLICATION = ‘DS’
* ARCHIVE_INDEX =
* ARCHIVE_PARAMS =
DIALOG = W_DIALOG
FORM = ‘ZRP_DUNNING1′
LANGUAGE = SY-LANGU
OPTIONS = W_ITCPO
* MAIL_SENDER =
* MAIL_RECIPIENT =
* MAIL_APPL_OBJECT =
* RAW_DATA_INTERFACE = ‘*’
IMPORTING
* LANGUAGE =
* NEW_ARCHIVE_PARAMS =
RESULT = W_ITCPP
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
OTHERS = 10.
ENDFORM. ” OPEN_SCRIPT

*&———————————————————————*
*& Form DOWNLOAD_IN_TXT_MODE
*&———————————————————————*
* text
*———————————————————————-*
* –> p1 text
* <-- p2 text
*———————————————————————-*
FORM DOWNLOAD_IN_TXT_MODE.
REFRESH T_PDF.
CALL FUNCTION ‘CONVERT_OTF’
EXPORTING
FORMAT = ‘PDF’
MAX_LINEWIDTH = 255
IMPORTING
BIN_FILESIZE = W_BIN_FILESIZE
TABLES
OTF = T_OTFDATA
LINES = T_PDF
EXCEPTIONS
ERR_MAX_LINEWIDTH = 1
ERR_FORMAT = 2
ERR_CONV_NOT_POSSIBLE = 3
OTHERS = 4.
ENDFORM. ” DOWNLOAD_IN_TXT_MODE

*&———————————————————————*
*& Form DOWNLOAD_TO_PRES_SERV
*&———————————————————————*
* text
*———————————————————————-*
* –> p1 text
* <-- p2 text
*———————————————————————-*
FORM DOWNLOAD_TO_PRES_SERV.
COUNT2 = IT_REQ1-COUNT.
CONCATENATE ‘C:\RFQ_’ COUNT2 ‘.PDF’ INTO L_FILENAME .
CALL FUNCTION ‘DOWNLOAD’
EXPORTING
BIN_FILESIZE = W_BIN_FILESIZE
FILENAME = L_FILENAME
FILETYPE = ‘BIN’
TABLES
DATA_TAB = T_PDF
EXCEPTIONS
INVALID_FILESIZE = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
CUSTOMER_ERROR = 7
OTHERS = 8.
CLEAR COUNT2.
ENDFORM. ” DOWNLOAD_TO_PRES_SERV

*&———————————————————————*
*& Form SEND_MAIL_INSUR
*&———————————————————————*
* text
*———————————————————————-*
* –> p1 text
* <-- p2 text
*———————————————————————-*
FORM SEND_MAIL_INSUR.
DATA : L_CHRLEN TYPE I,
L_FILENAME LIKE RLGRAP-FILENAME ,
L_LENGTH LIKE T_OBJPACK-DOC_SIZE .
CLEAR : T_OBJPACK,T_OBJTXT,T_OBJBIN,T_OBJHEAD,T_RECLIST,S_DOC_CHNG.
REFRESH : T_OBJPACK,T_OBJTXT,T_OBJBIN,T_OBJHEAD,T_RECLIST.
S_DOC_CHNG-OBJ_NAME = ‘RFQ Referrals’.
S_DOC_CHNG-OBJ_DESCR = ‘RFQ Referrals’.
DESCRIBE TABLE T_OBJTXT LINES L_TAB_LINES.
READ TABLE T_OBJTXT INDEX L_TAB_LINES.
S_DOC_CHNG-DOC_SIZE = ( L_TAB_LINES – 1 ) * 255 + STRLEN( T_OBJTXT ).
CLEAR T_OBJPACK-TRANSF_BIN.
T_OBJPACK-HEAD_START = 1.
T_OBJPACK-HEAD_NUM = 0.
T_OBJPACK-BODY_START = 1.
T_OBJPACK-BODY_NUM = L_TAB_LINES.
T_OBJPACK-DOC_TYPE = ‘RAW’.
APPEND T_OBJPACK.
PERFORM CONVERT_TABLE.
DESCRIBE TABLE T_OBJBIN LINES L_TAB_LINES.
T_OBJHEAD = L_FILENAME.
APPEND T_OBJHEAD.
T_OBJPACK-TRANSF_BIN = ‘X’.
T_OBJPACK-HEAD_START = 1.
T_OBJPACK-HEAD_NUM = 1.
T_OBJPACK-BODY_START = 1.
T_OBJPACK-BODY_NUM = L_TAB_LINES.
T_OBJPACK-DOC_TYPE = ‘PDF’.
T_OBJPACK-OBJ_NAME = ‘RFQ REFERRAL’.
T_OBJPACK-OBJ_DESCR = ‘RFQ REFERRALS : PDF Format’.
T_OBJPACK-DOC_SIZE = L_TAB_LINES * 255.
W_BIN_FILESIZE = L_TAB_LINES * 255.
MOVE W_BIN_FILESIZE TO L_LENGTH+3(9).
TRANSLATE L_LENGTH USING ‘ 0′.
T_OBJPACK-DOC_SIZE = L_LENGTH .
APPEND T_OBJPACK.
T_RECLIST-RECEIVER = IT_REQ-EMAIL.
T_RECLIST-REC_TYPE = ‘U’.
APPEND T_RECLIST.

CALL FUNCTION ‘SO_NEW_DOCUMENT_ATT_SEND_API1′
EXPORTING
DOCUMENT_DATA = S_DOC_CHNG
PUT_IN_OUTBOX = ‘X’
TABLES
PACKING_LIST = T_OBJPACK
OBJECT_HEADER = T_OBJHEAD
CONTENTS_BIN = T_OBJBIN
CONTENTS_TXT = T_OBJTXT
RECEIVERS = T_RECLIST
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
OPERATION_NO_AUTHORIZATION = 4
OTHERS = 99.
IF SY-SUBRC EQ 0.
MESSAGE S501(ZF).
CLEAR IT_REQ2. REFRESH IT_REQ2.
LOOP AT IT_REQ WHERE SEL = ‘X’.
MOVE-CORRESPONDING IT_REQ TO IT_REQ2.
APPEND IT_REQ2.

DELETE IT_REQ WHERE SEL = ‘X’.
CLEAR IT_REQ.
ENDLOOP.
FLAG = ‘ ‘.
ELSE.
MESSAGE E502(ZF).
ENDIF.
ENDFORM. ” SEND_MAIL_INSUR

*&———————————————————————*
*& Form CONVERT_TABLE
*&———————————————————————*
* text
*———————————————————————-*
* –> p1 text
* <-- p2 text
*———————————————————————-*
FORM CONVERT_TABLE.
DATA: HLTLINES TYPE I.
DATA: FLE1(2) TYPE P.
DATA: FLE2(2) TYPE P.
DATA: HFELD(500) TYPE C.
DATA: OFF1 TYPE P.
DATA: HTABIX LIKE SY-TABIX.
DESCRIBE TABLE T_PDF LINES HLTLINES.
DESCRIBE FIELD T_PDF LENGTH FLE1.
DESCRIBE FIELD T_OBJBIN LENGTH FLE2.
CLEAR T_OBJBIN. REFRESH T_OBJBIN.
CLEAR OFF1. CLEAR HFELD.
LOOP AT T_PDF.
HTABIX = SY-TABIX.
MOVE T_PDF TO HFELD+OFF1.
IF HTABIX = HLTLINES.
FLE1 = STRLEN( T_PDF ).
ENDIF.
OFF1 = OFF1 + FLE1.
IF OFF1 GE FLE2.
CLEAR T_OBJBIN.
T_OBJBIN = HFELD(FLE2).
APPEND T_OBJBIN.
SHIFT HFELD BY FLE2 PLACES.
OFF1 = OFF1 – FLE2.
ENDIF.
IF HTABIX = HLTLINES.
IF OFF1 GT 0.
CLEAR T_OBJBIN.
T_OBJBIN = HFELD(OFF1).
APPEND T_OBJBIN.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. ” CONVERT_TABLE

*&———————————————————————*
*& Form OPEN_SCRIPT1
*&———————————————————————*
* text
*———————————————————————-*
* –> p1 text
* <-- p2 text
*———————————————————————-*
FORM OPEN_SCRIPT1.
IF W_ITCPP IS INITIAL.
W_DIALOG = ‘X’.
IF SAV_OK_CODE = ‘PRNPRV’.
W_ITCPO-TDGETOTF = ‘ ‘.
ENDIF.
IF SAV_OK_CODE = ‘PDFD’ OR SAV_OK_CODE = ‘PDFM’.
W_DIALOG = ‘X’.
W_ITCPO-TDGETOTF = ‘X’.
ENDIF.
ELSE. ” if w_itcpp is initial.
CLEAR W_DIALOG.
MOVE-CORRESPONDING W_ITCPP TO W_ITCPO.
ENDIF. ” if w_itcpp is initial.
IF SAV_OK_CODE = ‘PRNPRV’.
W_DIALOG = ‘X’.
ENDIF.
*changed
CALL FUNCTION ‘OPEN_FORM’
EXPORTING
* APPLICATION = ‘DS’
* DIALOG = W_DIALOG
FORM = ‘ZRP_DUNNING1′
LANGUAGE = SY-LANGU
* OPTIONS = W_ITCPO
* IMPORTING
* RESULT = W_ITCPP
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
OTHERS = 10.
ENDFORM. ” OPEN_SCRIPT1
———————

ABAP Tutorials for Beginners

Here is a Complete Guide of all the training manuals for SAP ABAP freshers. This is a organized set of all the documents which you need to learn from start to finish. The ABAP Tutorials are categorised sequentially from start to finish.

Download the Complete Tutorial from Rapidshare or Mediafire.

SAP ABAP Tutorial Contents

  1. ABAP Programming
  2. Dictionary
  3. Internal Tables
  4. ALV Grid Control
  5. SAP List Viewer
  6. Screen and Menu Painter
  7. BDC Concepts
  8. BDC Files
  9. BDC Recording
  10. BAPI Introduction & Programming
  11. Object Oriented Programming
  12. SAP Scripts/SmartForms
  13. Enhancements
  14. ALE Introduction/Programming/Steps
  15. EDI & IDOC
  16. IDOC Book
  17. LSMW Introduction & Steps
  18. Transport Management Systems
  19. Workflow

Rules for Better SQL Programming # Tip 5

Tip #5. Remove the load from the database.

Check if the table meets the criteria for table buffering. When applying the table buffering check if the table is frequently read, should be relatively small and deferred visibility of changes is acceptable.

Do not apply table buffering for tables which are changed heavily or if the contents of the table must be always up-to-date.

Ensure that you use the correct SELECT STATEMENT. Here are some of the statements which bypass the table buffer.

SELECT ... DISTINCT
SELECT ... COUNT, SUM, AVG, MIN, MAX
SELECT ... ORDER BY f1 ... fn
SELECT ... GROUP BY / HAVING
SELECT ... FOR UPDATE
SELECT ... JOIN
WHERE clause contains IS NULL statement
WHERE clause contains subquery
SELECT ... BYPASSING BUFFER


Avoid reading the same data again and again.

Wrong

SELECT SINGLE * FROM scarr
INTO xcarr
WHERE carrid = 'LH '.
...
SELECT SINGLE * FROM scarr
INTO zcarr
WHERE carrid = 'LH '.

Right

SELECT SINGLE * FROM scarr
INTO xcarr
WHERE carrid = 'LH '.

zcarr = xcarr.

Check whether a SELECT is really needed before an UPDATE is made.

Wrong

SELECT SINGLE * FROM sflight
INTO xflight
WHERE carrid = 'LH ' AND
connid = '0300' AND
fldate = '20021204'.
xflight-seatsocc = 1.
UPDATE sflight FROM xflight.

Right

UPDATE sflight
SET seatsocc = 1
WHERE carrid = 'LH ' AND
connid = '0300' AND
fldate = '20021204'.

Avoid the ORDER BY clause if the desired sorting doesn’t correspond to the index used.

Wrong

SELECT p~airpfrom p~airpto f~fldate p~deptime
INTO xflight
FROM spfli AS p INNER JOIN sflight AS f
ON p~carrid = f~carrid
AND p~connid = f~connid
WHERE p~carrid = 'LH '
ORDER BY p~airpfrom p~airpto f~fldate p~deptime.
WRITE: / xflight-airpfrom, xflight-airpto,
xflight-fldate, xflight-deptime.
ENDSELECT.

Right

SELECT p~airpfrom p~airpto f~fldate p~deptime
INTO TABLE flights
FROM spfli AS p INNER JOIN sflight AS f
ON p~carrid = f~carrid
AND p~connid = f~connid
WHERE p~carrid = 'LH '.
SORT flights BY airpfrom airpto fldate deptime.
LOOP AT flights INTO xflight.
WRITE: / xflight-airpfrom, xflight-airpto,
xflight-fldate, xflight-deptime.
ENDLOOP.