SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Calling a sub-routine in SAP scripts



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Smartforms, SapScripts, PDF
View previous topic :: View next topic  
Author Message
admin
Администратор
Администратор



Joined: 01 Sep 2007
Posts: 1639

PostPosted: Wed Sep 05, 2007 6:23 pm    Post subject: Calling a sub-routine in SAP scripts Reply with quote

Author: Sayee Manojnah K

SOURCE CODE:

Code:
*-----------------------------------------------------------------------
* Program Name: Z689_SAPSCRIPT
* Date        : 03/28/2007
* Author      : Sayee Manojnah Kasala
* Description : Print program to display the Sales Order Details
*-----------------------------------------------------------------------
REPORT Z689_SAPSCRIPT
LINE-SIZE 80
LINE-COUNT 120
NO STANDARD PAGE HEADING.
*-----------------------------------------------------------------------
* Tables
TABLES: vbap,          " Sales Document: Item Data
        vbak,          " Sales Document: Header Data
        kna1.          " General Data in Customer Master
* Selection screen
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_kunnr FOR kna1-kunnr NO-EXTENSION.
SELECTION-SCREEN END OF BLOCK b1.
* Data declaration
DATA: BEGIN OF i_vbak OCCURS 0,
      vbeln LIKE vbak-vbeln,
      kunnr LIKE vbak-kunnr,
      END OF i_vbak.
DATA: BEGIN OF i_vbap OCCURS 0,
      vbeln LIKE vbap-vbeln,
      posnr LIKE vbap-posnr,
      matnr LIKE vbap-matnr,
      matkl LIKE vbap-matkl,
      netpr LIKE vbap-netpr,
      END OF i_vbap.
DATA: BEGIN OF i_final OCCURS 0,
      kunnr LIKE vbak-kunnr,
      vbeln LIKE vbak-vbeln,
      posnr LIKE vbap-posnr,
      matnr LIKE vbap-matnr,
      matkl LIKE vbap-matkl,
      netpr LIKE vbap-netpr,
      END OF i_final.
DATA: wa_final LIKE i_final,
      land1 LIKE kna1-land1,
      name1 LIKE kna1-name1,
      landx LIKE t005t-landx.
* Start of selection
START-OF-SELECTION.
  SELECT vbeln kunnr
    FROM vbak INTO TABLE i_vbak
    WHERE kunnr IN s_kunnr.
  IF sy-subrc = 0.
    SELECT vbeln posnr matnr matkl netpr
      FROM vbap INTO TABLE i_vbap
      FOR ALL ENTRIES IN i_vbak
      WHERE vbeln = i_vbak-vbeln.
  ENDIF.
  LOOP AT i_vbak.
    LOOP AT i_vbap WHERE vbeln = i_vbak-vbeln.
      MOVE: i_vbak-kunnr TO i_final-kunnr,
            i_vbak-vbeln TO i_final-vbeln,
            i_vbap-posnr TO i_final-posnr,
            i_vbap-matnr TO i_final-matnr,
            i_vbap-matkl TO i_final-matkl,
            i_vbap-netpr TO i_final-netpr.
      APPEND i_final.
      CLEAR: i_vbap,i_final.
    ENDLOOP.
    CLEAR: i_vbak.
  ENDLOOP.
  IF i_final[] IS NOT INITIAL.
    SORT i_final BY kunnr.
  ENDIF.
* Call OPEN FORM
  CALL FUNCTION 'OPEN_FORM'
   EXPORTING
      form                              = 'Z689_SAPSCRIPT'
      language                          = sy-langu.
  LOOP AT i_final.
    wa_final = i_final.
    AT NEW kunnr.
* Call START FORM
      CALL FUNCTION 'START_FORM'
       EXPORTING
         form                   = 'Z689_SAPSCRIPT'
         startpage              = 'PAGE1'
         program                = 'Z689_SAPSCRIPT'.
    ENDAT.
* Call WRITE FORM
    CALL FUNCTION 'WRITE_FORM'
      EXPORTING
        element                        = 'ELEMENT'
        window                         = 'MAIN'.
    AT END OF kunnr.
* Call END FORM
      CALL FUNCTION 'END_FORM'.
    ENDAT.
  ENDLOOP.
*Call CLOSE FORM
  CALL FUNCTION 'CLOSE_FORM'.


Calling a subroutine in SAP Script:

The subroutine Z689_SUBROUTINE is used to display the Customer Details through SAP Script.

In a SAP Script, the subroutine has to be called as shown below:


Below is the subroutine pool used in the creation of the SAP Script:
Code:
*-----------------------------------------------------------------------
* Program Name : Z689_SUBROUTINE
* Date          : 03/28/2007
* Author        : Sayee Manojnah Kasala
* Description  : This is the subroutine used for SAP Script,
*                Z689_SAPSCRIPT.It fetches customer details like
*                 customer name & place
*-----------------------------------------------------------------------
PROGRAM  Z689_SUBROUTINE.
* Form GET_LAND1
* Fetches the country key
*&---------------------------------------------------------------------*
*&      Form  get_land1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->INTABLE    text
*      -->OUTTABLE   text
*----------------------------------------------------------------------*
FORM get_land1 TABLES intable STRUCTURE itcsy
                      outtable STRUCTURE itcsy.
  DATA: v_kunnr LIKE kna1-kunnr,
        v_land1 LIKE kna1-land1,
        v_name1 LIKE kna1-name1.
  READ TABLE intable INDEX 1.
  v_kunnr = intable-value.
  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input  = v_kunnr
    IMPORTING
      output = v_kunnr.
  IF sy-subrc = 0.
    SELECT SINGLE land1
      FROM kna1
      INTO v_land1
      WHERE kunnr = v_kunnr.
    IF sy-subrc = 0.
      READ TABLE outtable INDEX 1.
      outtable-value = v_land1.
      MODIFY outtable INDEX 1.
    ENDIF.
    SELECT SINGLE name1
      FROM kna1
      INTO v_name1
      WHERE kunnr = v_kunnr.
    IF sy-subrc = 0.
      READ TABLE outtable INDEX 2.
      outtable-value = v_name1.
      MODIFY outtable INDEX 2.
    ENDIF.
  ENDIF.
  CLEAR: intable,outtable.
ENDFORM.                                                    "get_land1
* Form GET_LANDX
* Fetches the Country Name
*&---------------------------------------------------------------------*
*&      Form  get_landx
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->INTABLE    text
*      -->OUTTABLE   text
*----------------------------------------------------------------------*
FORM get_landx TABLES intable STRUCTURE itcsy
                      outtable STRUCTURE itcsy.
  DATA: v_land1 LIKE kna1-land1,
        v_landx LIKE t005t-landx.
  READ TABLE intable INDEX 1.
  v_land1 = intable-value.
  IF sy-subrc = 0.
    SELECT SINGLE landx
      FROM t005t
      INTO v_landx
      WHERE land1 = v_land1 AND spras = 'E'.
    IF sy-subrc = 0.
      READ TABLE outtable INDEX 1.
      outtable-value = v_landx.
      MODIFY outtable INDEX 1.
    ENDIF.
  ENDIF.
  CLEAR: intable,outtable.
ENDFORM.                    "get_landx

Test Case:
Enter the customer numbers & click on execute.


The output will be as below:

The next page that will be displayed is
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Smartforms, SapScripts, PDF All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.