Sunday, February 12, 2012

SAP Execute MIRO using BAPI_INCOMINGINVOICE_CREATE

This is the sample program to create incoming vendor invoice (MIRO) using BAPI_INCOMINGINVOICE_CREATE



REPORT  zt_bapimiro.

DATA: wa_header LIKE bapi_incinv_create_header.

DATA: it_item TYPE STANDARD TABLE OF bapi_incinv_create_item,
      wa_item TYPE bapi_incinv_create_item.

DATA: it_ret LIKE bapiret2 OCCURS 0 WITH HEADER LINE.

DATA: g_invno LIKE bapi_incinv_fld-inv_doc_no,
      g_fyear LIKE bapi_incinv_fld-fisc_year.

wa_header-invoice_ind = 'X'.
wa_header-doc_date = '20120131'.   "Enter the document date
wa_header-pstng_date = '20120208'"Enter the posting date
wa_header-ref_doc_no = 'Test'.
wa_header-comp_code = '3100'.
wa_header-gross_amount = '5908.11'.  "Enter the gross amount(aft. tax) for the invoice
wa_header-calc_tax_ind = 'X'.
wa_header-currency = 'USD'.

wa_item-invoice_doc_item = '000001'.
wa_item-po_number = '4590038150'.    "Enter the PO number
wa_item-po_item = '00120'.           "Enter the PO item number
wa_item-ref_doc = '5007548571'.      "Enter the GR number
wa_item-ref_doc_year = '2012'.       "Enter the GR fiscal year
wa_item-ref_doc_it = '0001'.         "Enter the GR item number
wa_item-tax_code = 'V7'.             "Enter the tax code applicable
wa_item-item_amount = '5521.60'.     "Enter the item amount
wa_item-quantity = '2380'.           "Enter the invoice quantity
wa_item-po_unit = 'EA'.              "Enter the UoM
APPEND wa_item TO it_item.

CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'
  EXPORTING
    headerdata                = wa_header
*   ADDRESSDATA               =
 IMPORTING
   invoicedocnumber          = g_invno
   fiscalyear                = g_fyear
  TABLES
    itemdata                  = it_item
*   ACCOUNTINGDATA            =
*   GLACCOUNTDATA             =
*   MATERIALDATA              =
*   TAXDATA                   =
*   WITHTAXDATA               =
*   VENDORITEMSPLITDATA       =
    return                    = it_ret
*   EXTENSIONIN               =
          .

IF g_invno IS NOT INITIAL.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
*   EXPORTING
*     WAIT          =
*   IMPORTING
*     RETURN        =
            .
ENDIF.
WRITE:/1 g_invno, g_fyear.

LOOP AT it_ret.
  WRITE:/1 it_ret-message.
ENDLOOP.

Wednesday, December 21, 2011

ABAP Field Symbols

One of the most useful of Field Symbols in ABAP is Dynamic assign statement, meaning if you don't know the name of field to assign to the field symbols during writing your program, you can use this :

ASSIGN (<f>) TO <FS>.
Normally this can be used if you are writing a program to read the name of the field from a customized table, then you can retrieve the value of the field from the field symbols.  


Sample:

Suppose we have three programs. The main program:

REPORT demo_field_symbols_dynami_as_1.
TABLES sbook.
sbook-fldate = sy-datum.
PERFORM form1 IN PROGRAM demo_form1.


The other two programs are:  

REPORT demo_form1.
FORM form1.
  PERFORM form2 IN PROGRAM demo_form2.
ENDFORM.


and

REPORT demo_form2.
FORM form2.
  DATA name(20) TYPE c VALUE 'SBOOK-FLDATE'.
FIELD-SYMBOLS <fs> TYPE ANY.
  ASSIGN (name) TO <fs>.
  IF sy-subrc EQ 0.
    WRITE / <fs>.
ENDIF.
ENDFORM.


The output looks something like this: 02.06.1998

More Detail? please visit :


http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb38d5358411d1829f0000e829fbfe/content.htm

Tuesday, December 6, 2011

SAP FM Exchange Rate

The function is used to convert an amount to other currency.

Function Module: CONVERT_AMOUNT_TO_CURRENCY

Sample:

         CALL FUNCTION 'CONVERT_AMOUNT_TO_CURRENCY'
         EXPORTING
             DATE             = posting_date
             FOREIGN_CURRENCY = doc_curr
             FOREIGN_AMOUNT   = unitprice_lc2
             LOCAL_CURRENCY   = gv_lc2
         IMPORTING
             LOCAL_AMOUNT     = unitprice_lc2.

Note: The exchange rates are maintained in T-code F-62.

Monday, November 14, 2011

Replace Characters using ABAP

REPLACE ALL OCCURRENCES OF <Text to be replaced> IN <Original Text> WITH <Text to replace>.

if the material description consist special characters like "--", that will causing the output excel file out of alignment. 

Using above code to replace all the "--" to blank or space:

For example:

gv_text = 'Material--ABC is a Raw material'.

REPLACE ALL OCCURRENCES OF '--' IN gv_text WITH ' '.

Output:

Material ABC is a Raw material.

Monday, October 3, 2011

FM Remove Leading Zero


The function is used to remove the leading zero for the input text.


Function Module: CONVERSION_EXIT_ALPHA_OUTPUT

Sample:
 
     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
     EXPORTING
       input  = gv_pi_result-iblnr
     IMPORTING
       output = gv_pi_result-iblnr.





input: 000012345678

output: 12345678 

Monday, September 26, 2011

SAP ABAP System Fields

SYSTEM Fields related with R/3 System

SY-DBSYS  - R/3 DBMS like ORACLE.

SY-HOST - Application server .

SY-OPSYS - Application server Operating system .

SY-SYSID - R/3 System ID.


SYSTEM Fields about Current Terminal Session

SY-LANGU - One-character language key with the user’s logon language such as E

SY-MANDT - Login client e.g. 600

SY-MODNO - Index of the current external session starting from 0.

SY-UNAME - Login name of the user.


SYSTEM Fields related with current Date and Time

SY-DATUM - Date on the application server in YYYYMMDD format e.g. 20060414

SY-FDAYW - Day of the week according to Factory calendar e.g  Monday = 1.

SY-TIMLO - User’s local time.

SY-UZEIT - Time on the application server.




SYSTEM Fields related with Current ABAP Program

SY-CALLD - If the program is started using CALL TRANSACTION / DIALOG, or SUBMIT … [AND RETURN] its value is 'X'. 
If the program is started using LEAVE TO TRANSACTION or using a transaction code from a screen or when a batch input session is in progress its value is ' ' .

SY-CPROG - The name of the current program and name of the calling program within a procedure.

SY-DBNAM - The name of the logical database linked to an executable program.

SY-DYNGR - Screen group to which the current screen belongs.

SY-DYNNR - Number of the current screen.

SY-LDBPG - In executable programs, the database program of the associated logical database.

SY-REPID - Name of the current ABAP program.

SY-TCODE - The transaction code of the current program.



SYSTEM FIELDS for Background Processing and batch input

SY-BATCH - X if the ABAP program is running in the background, otherwise space


SYSTEM FIELDS for Batch Input

SY-BINPT - X while a batch input session is running and when an ABAP program is called using CALL TRANSACTION USING, otherwise space.


SYSTEM FIELDS For ABAP Programming

SY-ABCDE - It is a constant and contains alphabets(AB..Z). What ever the code page its value remains same.

SY-ULINE - Contains a horizontal line with length 255 used in  creating lists.

SY-VLINE - Contains a vertical line , used in  creating lists.

Loops

SY-INDEX - WithIn a loop it  contains the number of loop passes including the current pass and is set by ABAP commands DO,WHILE.

Strings

SY-FDPOS - It contains the location of a hit in string operations. used with CO,CN, CA, NA, CS, NS, CP, and NP, offset values are assigned to SY-FDPOS depending on the search result.

Internal Tables

SY-TABIX - Current line of an internal table. It is set  only for index tables. The field is either not set or is set to 0 for hashed tables. It iset by ABAP commands APPEND,COLLECT,LOOP AT,READ TABLE,SAERCH itab FOR .

SY-TFILL - After the statements DESCRIBE TABLE, LOOP AT, and READ TABLE, SY-TFILL contains the number of lines in the relevant internal table.

Database Access

SY-DBCNT - It contains  the number of table entries processed. In an  loop it  is not set until after the ENDSELECT or ENDEXEC statement.  It is set by ABAP commands DELETE,FETCH,INSERT,MODIFY and UPDATE.

SY-SUBRC - Return code set by the last ABAP statement. if it is 0 it means the statement was a success.


SYSTEM FIELDS for Screens

A group of system fields is set in the PAI event of each screen. Exceptf SY-DATAR, SY-LOOPC, and SY-STEPL, these can be used in list processing.

SY-CUCOL - Horizontal cursor position. Counter begins at column 2.

SY-CUROW - Vertical cursor position. Counter begins at line 1.

SY-DATAR - This field contains 'X' if at least one input field on the screen was changed by the user , otherwise it is  space.It can be used to determine if user has made any changes and a popup can be called with a prompt e.g. POPUP_TO_CONFIRM_CHANGE.

SY-LOOPC - Number of lines currently displayed in a table control. Can be used to determine the step loop blocks in the screen and for scrolling functionality.

SY-PFKEY - GUI status of the current screen. This can be set in the PBO event using the SET PF-STATUS statu OF PROGRAM rep statement.

SY-SCOLS - Number of columns on the current screen.

SY-SROWS - Number of rows on the current screen.

SY-STEPL - Index of the current line in a table control. This is set in each loop pass. SY-STEPL does not have a meaningful value outside the loop (for example, during the POV event for a table line).

SY-TITLE - It contains the text that appears in the title bar of the screen. For selection screens and lists it is the program name,it can  be set using the SET TITLEBAR statement.

SY-UCOMM - It contains the function code that triggered the PAI event.ENTER triggers the PAI but this field will remain blank if no function code is attached to ENTER key.

 Selection Screens

SY-SLSET - Variant used to fill the selection screen.


SYSTEM FIELDS for Creating Lists

SY-COLNO - It contains the current column during list creation starting  at 1. The field is set by the  output statements  WRITE,ULINE,SKIP,POSITION,NEW-LINE,NEW-PAGE and BACK (sets it to 1).

SY-LINCT - It contains  length of  the page in the list.Its value is  0 if the length of page is infinite.

SY-LINNO - It contains the current line during list creation begining from 1, and includes the page header. SY-LINNO is set by the ABAP output statements which are same as SY-COLNO.

SY-LINSZ - It contains the line width in the list. The default value is the default window width. You can change the line width of the list using the LINE-SIZE addition in the REPORT or NEW-PAGE statement. The default value is 84 .

SY-PAGNO - Current page during list creation.

SY-TVAR0 ... SY-TVAR9 - You can assign values to these variables in your programs. Their contents replace the placeholders in the list and column headers of the program in the TOP-OF-PAGE event.


SYSTEM FIELDS For Messages

With call of MESSAGE statement following system fields are set.

SY-MSGID  - contains the message class

SY-MSGNO - contains the message number

SY-MSGTY - contains the message type

SY-MSGV1,…,SY-MSGV4 - These fields hold the place holders in the  message.

Tuesday, September 6, 2011

ABAP Remove spaces in the text

The function CONDENSE with the addition of NO-GAPS is used to remove the space in the text.


Sample:


DATA: inputText(20) VALUE ' Testing 1 2 3 ... ',
length TYPE I.

length = STRLEN( inputText ).
WRITE: 'Input :' , inputText.
WRITE: / 'Length: ', length.

* Use CONDENSE to remove the leading and trailing spaces.
CONDENSE inputText .
length = STRLEN( inputText ).
WRITE: 'Input :' , inputText.
WRITE: / 'Length: ', length.

* Use CONDENSE .. NO-GAPS to remove the spaces in between words in the text .
CONDENSE inputText NO-GAPS.
length = STRLEN( inputText ).
WRITE: 'Input :' , inputText.
WRITE: / 'Length: ', length.

Output:
Input: Testing 1 2 3 ...
Length: 19


Input:Testing 1 2 3 ...
Length: 17
* leading and trailing spaces has been removed.


Input:Testing123...
Length: 13
*Spaces in between the words in the text has been removed.