Thursday, February 6, 2020

How to call an OData service of a CDS view and also pass parameters and also including a date field?


Questions about SAP CDS Views.

How to call an OData service of a CDS view and also pass parameters and also including a date field?

ABAP CDS ODATA View with parameters bp_idp_date ,p_language:

























@AbapCatalog.sqlViewName: 'ZSD_CDSView'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'My Consumption CDS View'
@OData.publish: true
define view ZSD_CDS_View
    with parameters bp_id: bu_partner,
        @Environment.systemField: #SYSTEM_DATE
        p_date: dats,
        @Environment.systemField: #SYSTEM_LANGUAGE
        p_langu: spras
as select from ZI_CDS_View_Composite {   
     
    key partner1,
    partner2,
    date_to,
    reltyp,
    date_from,
    spras,
    bez50,
    bez50_2
     
} where partner1 = :bp_id
    and date_to >= :p_date
    and date_from <= :p_date
    and spras = :p_langu



ANOTATION: -@OData. Publish: true


You can call ODATA service this link
Link ODADA Service: /sap/opu/odata/sap/ZCDS_VIEW_SRV/ZC_CDS_View(bp_id='0123456789',p_date=datetime'2019-04-01T12:00',p_langu='E')/Set


Sunday, February 2, 2020

KE51 transaction how to make field (Address) required in SAP ABAP.


KE51 transaction how to make field (Address) required in SAP ABAP.
SAP does not provide any configuration and user exit to make fields in Address tab required in transaction KE51.After that debug ABAP Code, I found the way that you need to create enhancement point in include program LRKPMF05 in subroutine md_user_command_handle.

This example we want to make field Street, City, Country and Region is required when user click SAVE. Please check out this ABAP Code below.
FORM md_user_command_handle CHANGING p_fcode.
1) Form MD_USER_COMMAND_HANDLE, Start                                                                                                               
ENHANCEMENT 1  ZIMP_CO_REQUIRED_ADDR_KE51.    "active version
IF md_fcode = 'MD_SAVE'.

IF PRCT_V-STRAS EQ ''.
  MESSAGE 'You must input Street' TYPE 'E'.
ENDIF.


IF PRCT_V-ORT01 EQ ''.
 MESSAGE 'You must input Kota' TYPE 'E'.
ENDIF.

IF PRCT_V-LAND1 EQ ''.
 MESSAGE 'You must input Country' TYPE 'E'.
ENDIF.

IF PRCT_V-REGIO EQ ''.
 MESSAGE 'You must input Region' TYPE 'E'.
ENDIF.

ENDIF.
ENDENHANCEMENT.

Thursday, January 30, 2020

Details about Class and Method with OOABAP.


OOABAP
Class: Class is one type of user-define data type with Attributes, Methods, Events, and interface for the application.
Ø  Type of Class:
1. Local Class.
2. Global Class.
·         Local Class: It can be define in an ABAP Program and can only use only with in the program.
·         Global Class: It can be define globally it can access all the ABAP program in SAP system BUT it Created T-Code: SE24.
v  How we create class and define a class.
When we create a class there is a two section
1. Definition.
2. Implementation.
ü  How to Define Class and Method.
CLASS <class name> DEFINITION.
..
END CLASS.
***************************************************
*   START                                                                                  *
***************************************************
CLASS CL_TEST DEFINITION.
             PUBLIC SECTION.
                             DATA        : LV_NAME TYPE CHAR30.
                             METHODS: SHOW_NAME.
             PROTECTED SECTION.
                             “No Declarations.
             PRIVATE SECTION.
                            “No Declarations.
END CLASS.
***************************************************
*   END                                                                                      *
***************************************************
ü  How to Implementation Class and Method.

CLASS <class name> IMPLEMENTATION.
………
END CLASS.

***************************************************
*  START                                                                                   *
***************************************************
CLASS CL_TEST IMPLEMENTATION.
              METHOD SHOW_NAME.
                         WRITE: / ‘This is the SHOW_NAME Method’.
                          WRITE: /5 LV_NAME.
              ENDMETHOS.
END CLASS.
**************************************************
*    END                                                                                    *                                               
**************************************************

Structure of Class
 Components of a Class:
1.    Attributes
·        Static Attributes
·        Instance Attributes
2.    Methods
·        Static Methods
·        Instance Methods
3.    Events
4.    Interfaces
********************************************
*REPORT USING OO ABAP                            *
********************************************
Report: YRAM_OOABAP1
======================================================
 Project:  SAP Object Oriented ABAP
 Description: Displaying the name by using OO ABAP
======================================================
REPORT yram_ooabap1.
CLASS lcl_class DEFINITION.
  PUBLIC SECTION.
          ** Declaration of Instance Variable
    DATA: lv_name TYPE char20 VALUE.
          ** Declaration of Instance Method
    METHODS: show_name.
  PROTECTED SECTION.
         "No Declaratons
  PRIVATE SECTION.
         "No Declaratons
ENDCLASS.
*************************************************
* Class Implementation                                                               *
*************************************************

CLASS lcl_class IMPLEMENTATION.
** Implementation of method
     METHOD show_name.
             WRITE: / 'This is the SHOW_NAME method'.
             WRITE: /5 lv_name.  “Public Variable
  ENDMETHOD.
ENDCLASS.

**************************************************
* START of TREATMENT                                                                 *
**************************************************
START-OF-SELECTION.
** Declaration of Object
  DATA: obj1 TYPE REF TO lcl_class.
**Creation of the Object
  CREATE OBJECT obj1.
** Calling the method
  CALL METHOD obj1->show_name.



Friday, March 15, 2019

RFC Function Module Create step by step in sap ABAP.


  • RFC Function Module Create step by step in sap ABAP.
  • Go to T-code-SE37
  • At first created function group.
  • If function group not created that time first create function group.
  • At first go to T-code-:-SE37=>Go to=>Function group=>Create Group



  1.  If function group already has created so you can selected your created function group.


  • After that give function module name next select create option.

  • After that select remote enable module option and also give the short text.   Program name and include option automatically created.


  •  Go to import tab


  •  Go to tables tab


BAPI MATERIAL CREATION........................

After that go to Source Code

FUNCTION zrth_pre_ord_chek_list.
*"-----------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(I_AUFNR) TYPE  AUFNR
*"  TABLES
*"      GT_FINAL STRUCTURE  ZPP_PRODORD_PRE_CHK
*"      GT_FINAL_AUIT STRUCTURE  ZPPRTHID_VALUE
*"      GT_FINAL_AREA STRUCTURE  ZPP_RTH_OP_AREA
*"------------------------------------------------------
*******************************************************
*              BAPI RELATED DATA                      *
*******************************************************
  
DATA:lv_werks TYPE werks_d.
  
DATAnumber           TYPE  bapi_order_key-order_number,
        collective_order 
TYPE  bapi_order_func_cntrl-collective_order,
        order_objects    
TYPE  bapi_pp_order_objects,
        
return           TYPE  bapireturn1,
        return2          
TYPE  bapiret2.

  
DATA:header           TYPE TABLE OF  bapi_order_header1,
       ls_header        
TYPE bapi_order_header1,
       
position         TYPE TABLE OF  bapi_order_item,
       ls_position      
TYPE bapi_order_item,
       sequence         
TYPE TABLE OF  bapi_order_sequence,
       ls_sequence      
TYPE  bapi_order_sequence,
       operation        
TYPE TABLE OF  bapi_order_operation1,
       ls_operation     
TYPE bapi_order_operation1,
       trigger_point    
TYPE TABLE OF  bapi_order_trigger_point,
       ls_trigger_point 
TYPE bapi_order_trigger_point,
       
component        TYPE TABLE OF  bapi_order_component,
       ls_component     
TYPE bapi_order_component,
       prod_rel_tool    
TYPE TABLE OF  bapi_order_prod_rel_tools,
       ls_prod_rel_tool 
TYPE  bapi_order_prod_rel_tools.

  
DATAi_insplot        TYPE  qibplosnr,
        i_inspoper       
TYPE  qibpvornr,
        lt_inspchar      
TYPE TABLE OF  bapi2045l3,
        ls_inspchar      
TYPE bapi2045l3,
        lt_insppointdata 
TYPE TABLE OF  bapi2045l4,
        ls_insppointdata 
TYPE bapi2045l4.

  
DATAlt_char_results   TYPE TABLE OF  bapi2045d2,
        lt_sample_results 
TYPE TABLE OF  bapi2045d3,
        lt_single_results 
TYPE TABLE OF  bapi2045d4,
        returntable       
TYPE TABLE OF  bapiret2.

*****************************************************
*                       Get Result                  *
*****************************************************
  
IF i_aufnr IS NOT INITIAL.
    
SELECT aufnr
           stlnr
           stlal
      
FROM afko
      
INTO TABLE gt_afko
      
WHERE aufnr EQ i_aufnr.

    
IF gt_afko[] IS NOT INITIAL.
      
SELECT  matnr
              werks
              stlal
              maktx
              stlnr
        
FROM zpp_bom
        
INTO TABLE gt_zpp_bom
*       INTO CORRESPONDING FIELDS OF TABLE gt_final
        
FOR ALL ENTRIES IN gt_afko
        
WHERE stlal  gt_afko-stlal
          
AND stlnr gt_afko-stlnr.

      
SELECT *
        
FROM zpprthid
        
INTO CORRESPONDING FIELDS OF TABLE gt_zppr.

      
IF gt_zppr[] IS NOT INITIAL.
        
SELECT z_op_type_id
               z_op_type_desc
               z_op_value
          
FROM zpprthid_value
          
INTO TABLE gt_zpprval
          
FOR ALL ENTRIES IN gt_zppr
          
WHERE z_op_type_id gt_zppr-z_op_type_id.
      
ENDIF.
    
ENDIF.

*******************************************************
*Call Bapi For Output Details of a Production Order   *
*******************************************************
    
number i_aufnr.
    order_objects
-header         'X'.
    order_objects
-positions      'X'.
*   order_objects-sequences      = 'X'.
    order_objects
-operations     'X'.
*   order_objects-components     = 'X'.
*   order_objects-prod_rel_tools = 'X'.
*   order_objects-trigger_points = 'X'.
*   order_objects-suboperations  = 'X'.

    
CALL FUNCTION 'BAPI_PRODORD_GET_DETAIL'
      
EXPORTING
        
number           number
        collective_order 
collective_order
        order_objects    
order_objects
      
IMPORTING
        
return           return2
      
TABLES
        
header           header
        
position         position
        sequence         
sequence
        operation        
operation
        trigger_point    
trigger_point
        
component        component
        prod_rel_tool    
prod_rel_tool.


    
IF sy-subrc EQ 0.
      
READ TABLE header INTO ls_header INDEX 1.
      
IF sy-subrc EQ 0.
        lv_werks 
ls_header-production_plant.
      
ENDIF.

      
IF lv_werks IS NOT INITIAL.
        
SELECT *
          
FROM zrth_area_id
          
INTO CORRESPONDING FIELDS OF TABLE gt_zarea.

        
IF gt_zarea[] IS NOT INITIAL.
          
SELECT plant
                 matnr
                 zsection
                 z_section_desc
                 z_areaid
                 z_areaname
                 z_checklist_id
                 z_chk_list_ty_desc
                 z_remarks
                 zflag
            
FROM zpp_rth_op_area
            
INTO CORRESPONDING FIELDS OF TABLE gt_zarea_val
            
FOR ALL ENTRIES IN gt_zarea
            
WHERE z_areaid gt_zarea-z_areaid.
        
ENDIF.
      
ENDIF.
    
ENDIF.
  
ENDIF.
*****************************************************
****                   This is order                *
*****************************************************
  
LOOP AT gt_afko INTO gs_afko.
    gs_final
-aufnr  =  gs_afko-aufnr.
    
READ TABLE header INTO ls_header INDEX 1.
    
IF sy-subrc EQ 0.
      gs_final
-plant  ls_header-production_plant.
    
ENDIF.
    
READ TABLE gt_zpp_bom INTO gs_zpp_bom WITH KEY stlal gs_afko-stlal
                                                   stlnr 
gs_afko-stlnr.
    
IF sy-subrc EQ 0.
      gs_final
-material          gs_zpp_bom-matnr.
      gs_final
-material_text  gs_zpp_bom-maktx.
    
ENDIF.
    
APPEND gs_final TO gt_final.
    
CLEARgs_afkogs_final.
  
ENDLOOP.
*****************************************************
****                   This is adit                 *
*****************************************************
  
LOOP AT gt_zpprval INTO gs_zpprval.
    gs_final_auit
-z_op_type_id      gs_zpprval-z_op_type_id.
    gs_final_auit
-z_op_type_desc  gs_zpprval-z_op_type_desc.
    gs_final_auit
-z_op_value          gs_zpprval-z_op_value.
    
APPEND gs_final_auit TO gt_final_auit.
    
CLEAR:gs_final_auit,gs_zpprval.
  
ENDLOOP.
*****************************************************
****                   This is area                 *
*****************************************************
  
LOOP AT gt_zarea_val INTO gs_zarea_val.
    gs_final_area
-plant                     gs_zarea_val-plant.
    gs_final_area
-matnr                    gs_zarea_val-matnr.
    gs_final_area
-zsection                gs_zarea_val-zsection.
    gs_final_area
-z_section_desc     gs_zarea_val-z_section_desc.
    gs_final_area
-z_areaid               gs_zarea_val-z_areaid.
    gs_final_area
-z_areaname         gs_zarea_val-z_areaname.
    gs_final_area
-z_checklist_id     gs_zarea_val-z_checklist_id.
    gs_final_area
-z_chk_list_ty_desc gs_zarea_val-z_chk_list_ty_desc.
    gs_final_area
-z_remarks          gs_zarea_val-z_remarks.
    gs_final_area
-zflag                  gs_zarea_val-zflag.
    
APPEND gs_final_area TO gt_final_area.
    
CLEAR:gs_final_area,gs_zarea_val.
  
ENDLOOP.

ENDFUNCTION.