Friday, December 28, 2018

Field Symbol - Dynamic Programming in ABAP.


Field Symbol - Dynamic Programming in ABAP.



A. How to declare field symbol in sap abap.
DATA :new_val TYPE i VALUE 4.
FIELD-SYMBOLS:<lv_var> TYPE i.
ASSIGN new_val to <lv_var>.
   
WRITE/ <lv_var>.
     <lv_var> 
8.
   
WRITE/ new_val.
***End how to declare field symbol

B. Field symbol as a replacement of Work area in sap abap:
DATA:IT_SPFLI TYPE STANDARD TABLE OF SPFLI.
FIELD-SYMBOLS:<FS_SPFLI> TYPE SPFLI.
START-OF-SELECTION.
SELECT *
  
FROM SPFLI
  
INTO TABLE IT_SPFLI
  
UP TO 10 ROWS.
END-OF-SELECTION.
****Loop declare
  
LOOP AT IT_SPFLI ASSIGNING <FS_SPFLI>.
     <FS_SPFLI>
-COUNTRYFR 'COUNTRYFR'.
  
ENDLOOP.
****End field symbol as a replacement of Work area:
***************************************************
*                      3                          *
***************************************************
C. Appending to internal table in sap abap:
DATA:IT_SPFLI1 TYPE STANDARD TABLE OF SPFLI.
FIELD-SYMBOLS:<FS_SPFLI1> TYPE SPFLI.
APPEND INITIAL LINE TO IT_SPFLI1 ASSIGNING <FS_SPFLI1>.
  
IF <FS_SPFLI1> is ASSIGNED.
    <Fs_spfLi1>
-COUNTRYFR 'TEST'.
    <Fs_spfli1>
-CITYFROM 'TEST'.
    UNASSIGN <FS_SPFLI1>
.
  
ENDIF.

APPEND INITIAL LINE TO IT_SPFLI1 ASSIGNING <FS_SPFLI1>.
  
IF <FS_SPFLI1> is ASSIGNED.
    <Fs_spfLi1>
-COUNTRYFR 'TEST1'.
    <Fs_spfli1>
-CITYFROM 'TEST1'.
    UNASSIGN <FS_SPFLI1>
.
ENDIF.
*******************End appending to internal table:
**************************************************
*                      5                          *
***************************************************

D. Reading internal table using generic field symbol in sap abap:

FIELD-SYMBOLS<fs_tab> TYPE SPFLI.
FIELD-SYMBOLS<fs_str> TYPE SPFLI.
DATAlt_ SPFLI TYPE STANDARD TABLE OF SPFLI.

ASSIGN lt_SPFLI TO <fs_tab>.
SELECT FROM SPFLI INTO TABLE lt_SPFLI UP TO 10 ROWS.

READ TABLE <fs_tab> ASSIGNING <fs_str> WITH KEY ('CARRID') = 'TESTDATA'.

**************************************************
*                      6                          *
***************************************************
E. Simple Object In fields symbols
*REPORT ZSW_FIELD_SYMBOLS.
***Type declare
TYPES:BEGIN OF TY_SPFLI,
        CARRID 
TYPE  S_CARR_ID,
        CONNID 
TYPE  S_CONN_ID,
  
END OF TY_SPFLI.
**Internal Table Declare.
  
DATA:it_SPFLI_1 TYPE STANDARD TABLE OF TY_SPFLI.

  
DATAgd_index TYPE string,
        gd_rfp0 
TYPE string.
**field Symbol  Declare
  
FIELD-SYMBOLS :<fs_SPFLI_1> TYPE TY_SPFLI.
** Start selection screen
  
START-OF-SELECTION.
**** Select query for fetch data
  
SELECT CARRID
         CONNID
    
FROM SPFLI
    
INTO TABLE it_SPFLI_1
    
UP TO 50 ROWS.
  
END-OF-SELECTION.
**  End selection screen
*** Loop With field Symbol
  
LOOP AT it_SPFLI1 ASSIGNING <fs_SPFLI>.
    
IF <fs_SPFLI_1> is ASSIGNED.
       
WRITE<fs_SPFLI_1>-CARRID,<fs_SPFLI_1>-CONNID.
    
ENDIF.
  
ENDLOOP.
********--------------------------------------

Wednesday, December 26, 2018

Upload program in z-table in SAP ABAP.


Upload program in ztable.
This is Table

FILE FORMAT IN (xlsx).
ID
NAME
EMPDES
EMPPHONE
53
Alex
9874563215
54
Ponting
8745632103

*&---------------------------------------------------------------------*
*& Report  ZSW_UPLOAD_TABLE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZSW_UPLOAD_TABLE.

TYPE-POOLS truxs.
TABLES ZEMP03.
PARAMETER p_file TYPE rlgrap-filename DEFAULT 'C:\Users\swadesh\Desktop\Book1_1.xlsx'.

TYPES:BEGIN OF t_tab,
         EMPID 
TYPE ZEMP03-EMPID,
         EMPNAME 
TYPE ZEMP03-EMPNAME,
         EMPDES 
TYPE ZEMP03-EMPDES,
         EMPPHONE 
TYPE ZEMP03-EMPPHONE,
      
END OF t_tab.

DATA :t_upload TYPE STANDARD TABLE OF t_tab,
      wa_upload 
TYPE t_tab,
      it_type 
TYPE truxs_t_text_data.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  
CALL FUNCTION 'F4_FILENAME'
    
EXPORTING
      PROGRAM_NAME  
SYST-CPROG
      DYNPRO_NUMBER 
SYST-DYNNR
      field_name    
'P_FILE'
    
IMPORTING
      file_name     
p_file.

START-OF-SELECTION.

*  Uploading the data in the file into internal table

  
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    
EXPORTING
*     I_FIELD_SEPERATOR    =
      I_LINE_HEADER        
'X'
      i_tab_raw_data       
it_type
      i_filename           
p_file
    
TABLES
      i_tab_converted_data 
t_upload[]
    
EXCEPTIONS
      conversion_failed    
1
      
OTHERS               2.

  
IF sy-subrc NE 0.
    
MESSAGE ID sy-msgid
    
TYPE sy-msgty
    
NUMBER sy-msgno
    
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  
else.
    
MESSAGE 'Dada Upload sucessfull' TYPE 'I'.
  
endif.

END-OF-SELECTION.

*  Uploading the data into the database table

  
LOOP AT T_UPLOAD INTO WA_UPLOAD.
    ZEMP03
-EMPID    WA_UPLOAD-EMPID.
    ZEMP03
-EMPNAME  WA_UPLOAD-EMPNAME.
    ZEMP03
-EMPDES   WA_UPLOAD-EMPDES.
    ZEMP03
-EMPPHONE WA_UPLOAD-EMPPHONE.
    
MODIFY ZEMP03.
  
ENDLOOP.



After Updating Result.



Tuesday, December 25, 2018

Classical Interactive Report in SAP ABAP.




Classical Interactive Report.

REPORT  ZABAP_GUISW1.

TABLESekkoekpot161t.

* Declaring local structures for internal table & work area
TYPES:
       
BEGIN OF ty_ekko,
        ebeln 
TYPE ekko-ebeln"Purchase Order
        bukrs 
TYPE ekko-bukrs"Company Code
        bstyp 
TYPE ekko-bstyp"Category
        bsart 
TYPE ekko-bsart"Type
        lifnr 
TYPE ekko-lifnr"Vendor
       
END OF ty_ekko,

       
BEGIN OF ty_text,
        spras 
TYPE t161t-spras,
        bsart 
TYPE t161t-bsart,
        bstyp 
TYPE t161t-bstyp,
        batxt 
TYPE t161t-batxt"PO Info
       
END OF ty_text,

       
BEGIN OF ty_ekpo,
        ebeln 
TYPE ekpo-ebeln"Purchase Order
        ebelp 
TYPE ekpo-ebelp"PO Item
        matnr 
TYPE ekpo-matnr"Material
        werks 
TYPE ekpo-werks"Plant
        lgort 
TYPE ekpo-lgort"Storage Location
        matkl 
TYPE ekpo-matkl"Material Group
        menge 
TYPE ekpo-menge"Quantity
        meins 
TYPE ekpo-meins"Unit
       
END OF ty_ekpo,

       
BEGIN OF ty_out1,
        ebeln 
TYPE ekko-ebeln,
        bukrs 
TYPE ekko-bukrs,
        bstyp 
TYPE ekko-bstyp,
        bsart 
TYPE ekko-bsart,
        lifnr 
TYPE ekko-lifnr,
        batxt 
TYPE t161t-batxt,
       
END OF ty_out1.

* Declaring work area & internal table
DATA:
      wa_ekko 
TYPE ty_ekko,                   "Header table work area
      it_ekko 
TYPE STANDARD TABLE OF ty_ekko"Header internal table
      wa_text 
TYPE ty_text,                   "Info table work area
      it_text 
TYPE STANDARD TABLE OF ty_text"Info internal table
      wa_out1 
TYPE ty_out1,                   "Basic output work area
      it_out1 
TYPE STANDARD TABLE OF ty_out1"Basic output internal table
      wa_ekpo 
TYPE ty_ekpo,                   "Item table work area
      it_ekpo 
TYPE STANDARD TABLE OF ty_ekpo"Item internal table

      v_repid 
TYPE sy-repid,
      v_user  
TYPE sy-uname,
      v_date  
TYPE sy-datum,

      v_field1 
TYPE char40,
      v_field2 
TYPE char40,
      v_value1 
TYPE char40,
      v_value2 
TYPE char40.

* Event Initialization
INITIALIZATION.
  v_repid 
sy-repid"Program Name
  v_user  
sy-uname"User name
  v_date  
sy-datum"Current Date

* Declaring selection screen
  
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
  
SELECT-OPTIONS   s_ebeln FOR ekko-ebeln OBLIGATORY.
  
SELECTION-SCREEN END OF BLOCK b1.

* Event Start of Selection
START-OF-SELECTION.
  
PERFORM get_ekko.     "Get data from header table
  
PERFORM get_t161t.    "Get data from Info table
  
PERFORM basic_output"Preparing the primary output
  
PERFORM disp_basic.   "Displaying output of first list

* Event At line selection for Double click operation
AT LINE-SELECTION.

* It passes the field and value to the current cursor position
* When double click is happened on the PO field of Primary list
  
GET CURSOR FIELD v_field1 VALUE v_value1.

  
CASE v_field1.
*   When we double click on PO number on Basic output list
    
WHEN 'WA_OUT1-EBELN'.
      
PERFORM get_ekpo.    "Get data from Item table
      
PERFORM ekpo_output"Displaying output of second list
  
ENDCASE.

* It passes the field and value to the current cursor position
* When double click is happened on the Material field of Secondary list
  
GET CURSOR FIELD v_field2 VALUE v_value2.

  
CASE v_field2.
*   When we double click on Material on Second list
    
WHEN 'WA_EKPO-MATNR'.
      
PERFORM get_mara"Get Information by calling MM03 Transaction
  
ENDCASE.

* Event top of page for Basic list / Primary list
TOP-OF-PAGE.
  
PERFORM top_page1.

* Event top of page for Second list
TOP-OF-PAGE DURING LINE-SELECTION.
  
PERFORM top_page2.

*&---------------------------------------------------------------------*
*&      Form  get_ekko
*&---------------------------------------------------------------------*
*       Get data from header table
*----------------------------------------------------------------------*
FORM get_ekko .

* Selection of header table data
  
SELECT ebeln bukrs bstyp bsart lifnr
  
FROM ekko INTO TABLE it_ekko
  
WHERE ebeln IN s_ebeln.

  
IF sy-subrc 0.
    
SORT it_ekko BY ebeln.
  
ELSE.
    
MESSAGE 'Purchase Order doesn''t exist.' TYPE 'I'.
    
LEAVE LIST-PROCESSING.
  
ENDIF.

ENDFORM.                    " get_ekko
*&---------------------------------------------------------------------*
*&      Form  get_t161t
*&---------------------------------------------------------------------*
*       Get data from Info table
*----------------------------------------------------------------------*
FORM get_t161t .

* Seelction of Info table data
  
IF it_ekko IS NOT INITIAL.      "Prerequisite of For all Entries
    
SELECT spras bsart bstyp batxt
    
FROM t161t INTO TABLE it_text
    
FOR ALL ENTRIES IN it_ekko
    
WHERE spras sy-langu        "System language at login time
      
AND bsart it_ekko-bsart
      
AND bstyp it_ekko-bstyp.

    
IF sy-subrc 0.
      
SORT it_text BY bsart bstyp.
    
ENDIF.
  
ENDIF.

ENDFORM.                                                    " get_t161t
*&---------------------------------------------------------------------*
*&      Form  basic_output
*&---------------------------------------------------------------------*
*       Preparing the primary output
*----------------------------------------------------------------------*
FORM basic_output .

* Preparing the basic output table
  
IF it_ekko IS NOT INITIAL.
    
LOOP AT it_ekko INTO wa_ekko.
      wa_out1
-ebeln wa_ekko-ebeln.
      wa_out1
-bukrs wa_ekko-bukrs.
      wa_out1
-bstyp wa_ekko-bstyp.
      wa_out1
-bsart wa_ekko-bsart.
      wa_out1
-lifnr wa_ekko-lifnr.

      
READ TABLE it_text INTO wa_text
      
WITH KEY bsart wa_ekko-bsart
               bstyp 
wa_ekko-bstyp BINARY SEARCH.
      
IF sy-subrc 0.
        wa_out1
-batxt wa_text-batxt.
      
ENDIF.

      
APPEND wa_out1 TO it_out1.
      
CLEARwa_out1wa_ekkowa_text.
    
ENDLOOP.
  
ENDIF.

ENDFORM.                    " basic_output
*&---------------------------------------------------------------------*
*&      Form  disp_basic
*&---------------------------------------------------------------------*
*       Displaying output of first list
*----------------------------------------------------------------------*
FORM disp_basic .

  
IF it_out1 IS NOT INITIAL.
    
LOOP AT it_out1 INTO wa_out1.
      
AT FIRST"Control Break Statement - triggers at first
        
WRITE/  'Purchase Order',
               
20 'Company',
               
30 'Category',
               
40 'Type',
               
50 'Vendor',
               
65 'PO Info.'.
        
ULINE.
        
SKIP.
      
ENDAT.

      
WRITE/  wa_out1-ebeln,
             
20 wa_out1-bukrs,
             
33 wa_out1-bstyp,
             
40 wa_out1-bsart,
             
50 wa_out1-lifnr,
             
65 wa_out1-batxt.

      
AT LAST"Control Break Statement - triggers at last
        
SKIP.
        
ULINE.
        
WRITE/12 '~~End of Report~~'.
      
ENDAT.
    
ENDLOOP.
  
ENDIF.

ENDFORM.                    " disp_basic
*&---------------------------------------------------------------------*
*&      Form  get_ekpo
*&---------------------------------------------------------------------*
*       Get data from Item table
*----------------------------------------------------------------------*
FORM get_ekpo .

* Local temporary variable for conversion
  
DATAlv_ebeln TYPE ekko-ebeln.

  
IF v_value1 IS NOT INITIAL.

*   To convert the value from output format to input format
*   and passing it from input format to output format
    
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      
EXPORTING
        
input  v_value1
      
IMPORTING
        
output lv_ebeln.

    
IF lv_ebeln IS NOT INITIAL.

*     Selection of Item table
      
SELECT ebeln ebelp matnr werks lgort
             matkl menge meins
        
FROM ekpo INTO TABLE it_ekpo
        
WHERE ebeln lv_ebeln.

      
IF sy-subrc <> 0.
        
MESSAGE 'PO Item doesn''t Exist.' TYPE 'I'.
        
LEAVE LIST-PROCESSING.
      
ENDIF.
    
ENDIF.
  
ENDIF.

ENDFORM.                    " get_ekpo
*&---------------------------------------------------------------------*
*&      Form  ekpo_output
*&---------------------------------------------------------------------*
*       Displaying output of second list
*----------------------------------------------------------------------*
FORM ekpo_output .

* Preparing secondary output
  
IF it_ekpo IS NOT INITIAL.
    
LOOP AT it_ekpo INTO wa_ekpo.

      
AT FIRST.
        
WRITE/  'Purchase Order',
               
20 'PO Item',
               
30 'Material',
               
48 'Plant',
               
55 'Storage',
               
65 'Material Group',
               
83 'PO Quantity',
              
100 'Unit'.
        
ULINE.
        
SKIP.
      
ENDAT.

      
WRITE/  wa_ekpo-ebeln,
             
20 wa_ekpo-ebelp,
             
30 wa_ekpo-matnr,
             
48 wa_ekpo-werks,
             
55 wa_ekpo-lgort,
             
70 wa_ekpo-matkl,
             
75 wa_ekpo-menge,
            
100 wa_ekpo-meins.

      
AT LAST.
        
SKIP.
        
ULINE.
        
WRITE/12 '~~End of PO Item~~'.
      
ENDAT.

    
ENDLOOP.
  
ENDIF.

ENDFORM.                    " ekpo_output
*&---------------------------------------------------------------------*
*&      Form  get_mara
*&---------------------------------------------------------------------*
*       Get Information by calling MM03 Transaction
*----------------------------------------------------------------------*
FORM get_mara .

* Local temporary variable for conversion
  
DATAlv_matnr TYPE mara-matnr.

  
IF v_value2 IS NOT INITIAL.

*   Converting material from output format to input format
*   and passing it from input format to output format
    
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
      
EXPORTING
        
input        v_value2
      
IMPORTING
        
output       lv_matnr
      
EXCEPTIONS
        length_error 
1
        
OTHERS       2.

    
IF lv_matnr IS NOT INITIAL.

*     Calling the MM03 transaction needs parameter ID
*     which is available on domain of MATNR
      
SET PARAMETER ID 'MAT' FIELD lv_matnr.
      
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
    
ENDIF.
  
ENDIF.

ENDFORM.                    " get_mara
*&---------------------------------------------------------------------*
*&      Form  top_page1
*&---------------------------------------------------------------------*
*       Event top of page for Basic list / Primary list
*----------------------------------------------------------------------*
FORM top_page1 .

  
WRITE'Purchase Order Header',
         / 
'Date: ',   12 v_date DD/MM/YYYY,
         / 
'User: ',   12 v_user,
         / 
'Report: '12 v_repid.
  
ULINE.
  
SKIP.

ENDFORM.                                                    " top_page1
*&---------------------------------------------------------------------*
*&      Form  top_page2
*&---------------------------------------------------------------------*
*       Event top of page for Second list
*----------------------------------------------------------------------*
FORM top_page2 .

  
WRITE'Purchase Order Item List',
         / 
'Date: ',   12 v_date DD/MM/YYYY,
         / 
'User: ',   12 v_user,
         / 
'Report: '12 v_repid.
  
ULINE.
  
SKIP.

ENDFORM.