zmc3.xlsx

23
********************************************************************** ********************************************************************** ********************************************************************** ********************************************************************** *--------------------------------------------------------------------- ********************************************************************** *////////////////////// Welspun India Ltd. \\\\\\\\\\\\\\\\\\\\\\\\* * Description :Commercial Invoice * Module :SD * Trans. code :zcm93 * Author :Subash Chandra Doss * Consultant : * Tested By : * Text Symbols : * Remarks : * Change History : * Description | Date | Author |Change * | | |Request No * | | | *Added STD_SHADE_NO_2 |23.08.2008|GANESH T |WVDK921227 REPORT ZCMS092V LINE-SIZE 80 LINE-COUNT 65 MESSAGE-ID ZW NO STANDARD PAGE HEADING. *-- Tables TABLES:T001W , ADRC, J_1IMOCUST, "Customer Master Excise Additional Data J_1IMOCOMP, "Company and Plant - Excise Additional Data NAST, VBRK, TSP03L, SNAST, ITCPO, TVFK. *-- Selection-Screen SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. PARAMETERS: P_PINO LIKE VBRK-VBELN, P_PLANT LIKE T001W-WERKS OBLIGATORY, P_BUKRS LIKE VBRK-BUKRS OBLIGATORY MEMORY ID PID. SELECTION-SCREEN END OF BLOCK B1.

description

vvv

Transcript of zmc3.xlsx

**********************************************************************

**********************************************************************

**********************************************************************

**********************************************************************

*---------------------------------------------------------------------

**********************************************************************

*//////////////////////  Welspun India Ltd.  \\\\\\\\\\\\\\\\\\\\\\\\*

* Description  :Commercial Invoice

* Module       :SD

* Trans. code  :zcm93

* Author       :Subash Chandra Doss

* Consultant   :

* Tested By    :

* Text Symbols :

* Remarks      :

* Change History :

* Description                        | Date     | Author  |Change

*                                    |          |         |Request No

*                                    |          |         |

*Added STD_SHADE_NO_2                |23.08.2008|GANESH T |WVDK921227

REPORT ZCMS092V  LINE-SIZE 80 LINE-COUNT 65 MESSAGE-ID ZW

        NO STANDARD PAGE HEADING.

*-- Tables

TABLES:T001W ,

       ADRC,

       J_1IMOCUST,   "Customer Master Excise Additional Data

       J_1IMOCOMP,   "Company and Plant - Excise Additional Data

       NAST,

       VBRK,

       TSP03L,

       SNAST,

       ITCPO,

       TVFK.

*-- Selection-Screen

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETERS:  P_PINO  LIKE VBRK-VBELN,

             P_PLANT LIKE T001W-WERKS OBLIGATORY,

             P_BUKRS LIKE VBRK-BUKRS OBLIGATORY MEMORY ID PID.

SELECTION-SCREEN END OF BLOCK B1.

*-- Internal Table Declaration

DATA BEGIN OF IVBRP OCCURS 0.

        INCLUDE STRUCTURE VBRP.

DATA :  KNUMV  LIKE KONV-KNUMV,

        KPOSN  LIKE KONV-KPOSN,

        KBETR  LIKE KONV-KBETR,

        STUNR  LIKE KONV-STUNR,

        ZAEHK  LIKE KONV-ZAEHK,

        KSCHL  LIKE KONV-KSCHL.

DATA END OF IVBRP.

DATA I_VBRP LIKE IVBRP OCCURS 0 WITH HEADER LINE.

DATA BEGIN OF IVBRK OCCURS 0.

        INCLUDE STRUCTURE VBRK.

DATA END   OF IVBRK.

DATA : BEGIN OF IKONV OCCURS 0.

        INCLUDE STRUCTURE KONV.

DATA : END OF IKONV.

* For TIN Number

DATA BEGIN OF I_J_1IMOCOMP OCCURS 0.

        INCLUDE STRUCTURE J_1IMOCOMP.

DATA END   OF I_J_1IMOCOMP.

DATA BEGIN OF I_J_1IMOCUST OCCURS 0.

        INCLUDE STRUCTURE J_1IMOCUST.

DATA END OF I_J_1IMOCUST.

DATA : BEGIN OF IADRC OCCURS 0.

        INCLUDE STRUCTURE ZADRC.

DATA : END OF IADRC.

DATA: BEGIN OF IADRC1 OCCURS 0.

        INCLUDE STRUCTURE ZADRC.

DATA END OF IADRC1.

DATA : BEGIN OF I_IKOMVD OCCURS 0.

        INCLUDE STRUCTURE KOMVD .

DATA : END OF I_IKOMVD.

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

DATA: BEGIN OF I_DATA OCCURS 0,

      ADRNR  LIKE  VBPA-ADRNR,

      PARVW  LIKE  VBPA-PARVW,

      KUNNR  LIKE  VBPA-KUNNR,

      LIFNR  LIKE  VBPA-LIFNR,

END OF I_DATA.

DATA: RETCODE LIKE SY-SUBRC,        " Return Code

      IBSTNK LIKE VBAK-BSTNK,

      NAST_CHECK TYPE C,

      XSCREEN(1) TYPE C,

      IBUKRS LIKE VBAK-BUKRS_VF.

DATA: SF_CONTROL TYPE SSFCTRLOP,

      SF_OUTPUT_OPTION TYPE SSFCOMPOP,

      VTEXT1 LIKE T685T-VTEXT.

START-OF-SELECTION.

  PERFORM PROCESS_OUTPUT CHANGING RETCODE.

*---################## PERFORMS ##############################

FORM ENTRY USING RETURN_CODE US_SCREEN.

  NAST_CHECK = 1.

  CLEAR RETCODE.

  XSCREEN = US_SCREEN.

  P_PINO = NAST-OBJKY(10).

*  P_DOCYR = NAST-OBJKY+10(4).

  PERFORM PROCESS_OUTPUT CHANGING RETCODE.

  RETURN_CODE = RETCODE.

  NAST_CHECK = 0.

ENDFORM.                    "ENTRY

*&      Form  PROCESS_OUTPUT

*       text

*      -->P_RETCODE  text

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

FORM PROCESS_OUTPUT  CHANGING P_RETCODE.

  PERFORM CLEAR_DATA.

  PERFORM GET_DATA.

  PERFORM GET_PLANTADDRESS.

  PERFORM GET_BATCH_CHARACTERISTIC .

  PERFORM CALC_TAX.

  PERFORM PRINT.

  PERFORM FORM_PRINT.

ENDFORM.                    " PROCESS_OUTPUT

*&      Form  GET_DATA

*       text

*  -->  p1        text

*  <--  p2        text

FORM GET_DATA .

  IF NAST_CHECK EQ 1.

    SELECT SINGLE * FROM VBRK

         INTO  IVBRK

         WHERE VBELN = P_PINO        .

  ELSE.

    SELECT SINGLE * FROM VBRK

          INTO  IVBRK

          WHERE VBELN = P_PINO

          AND   BUKRS = P_BUKRS.

  ENDIF.

  IF SY-SUBRC EQ 0.

    SELECT SINGLE *

            INTO I_J_1IMOCUST

            FROM J_1IMOCUST

            WHERE KUNNR =  IVBRK-KUNRG.

    SELECT SINGLE * FROM TVFK

           WHERE FKART = IVBRK-FKART.

    APPEND IVBRK.

  ENDIF.

  SELECT * FROM VBRP

          INTO TABLE IVBRP

         WHERE VBELN = P_PINO

          AND  FKIMG <> 0.

  LOOP AT IVBRP.

    READ TABLE IVBRK WITH KEY VBELN = IVBRP-VBELN.

    IVBRP-KNUMV = IVBRK-KNUMV.

    MODIFY IVBRP TRANSPORTING KNUMV.

  ENDLOOP.

  IF IVBRP[] IS NOT INITIAL.

    READ TABLE IVBRP INDEX 1.

    SELECT ADRNR PARVW KUNNR LIFNR

        FROM VBPA

        INTO TABLE I_DATA

        WHERE  VBELN = IVBRP-VGBEL

        AND    LAND1 = 'IN'

        GROUP BY ADRNR PARVW KUNNR LIFNR.

    SELECT SINGLE BSTNK BUKRS_VF

                    FROM    VBAK

                    INTO    (IBSTNK,IBUKRS)

                    WHERE   VBELN = IVBRP-AUBEL.

  ENDIF.

  CHECK IVBRP[] IS NOT INITIAL.

  SELECT KNUMV KPOSN KBETR STUNR ZAEHK KSCHL KWERT KAPPL KNTYP

      FROM KONV

      INTO CORRESPONDING FIELDS OF TABLE IKONV

      FOR ALL ENTRIES IN IVBRP

      WHERE KNUMV = IVBRP-KNUMV

      AND KPOSN   = IVBRP-POSNR.

  CHECK IKONV[] IS NOT INITIAL.

  LOOP AT IKONV WHERE KAPPL = 'TX'.

    SELECT SINGLE VTEXT FROM T685T INTO VTEXT1

    WHERE  KAPPL = IKONV-KAPPL

      AND  KSCHL = IKONV-KSCHL.

  ENDLOOP.

  IF NAST_CHECK EQ 1.

    P_PLANT = IVBRP-WERKS.

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

    P_BUKRS = IVBRK-BUKRS.    " IBUKRS.

  ENDIF.

  PERFORM PLANT.

ENDFORM.                    " GET_DATA

*&      Form  PLANT

*       text

*  -->  p1        text

*  <--  p2        text

FORM PLANT .

  SELECT  SINGLE J_1ICSTNO J_1ILSTNO J_1IPANNO J_1IEXCD

    FROM  J_1IMOCOMP

    INTO (I_J_1IMOCOMP-J_1ICSTNO , I_J_1IMOCOMP-J_1ILSTNO ,

    I_J_1IMOCOMP-J_1IPANNO , I_J_1IMOCOMP-J_1IEXCD)

    WHERE BUKRS = P_BUKRS

      AND WERKS = P_PLANT.

  APPEND I_J_1IMOCOMP.

*  ENDSELECT.

ENDFORM.                    " PLANT

*&      Form  GET_PLANTADDRESS

*       text

*  -->  p1        text

*  <--  p2        text

FORM GET_PLANTADDRESS .

* --Plant wise address details(w)

*  SELECT * FROM T001W INTO TABLE I_T001W WHERE WERKS = P_PLANT.

* --Company Code wise address details(b)

  PERFORM ZGET_ADDRESS USING 'W' P_PLANT.

  MOVE IADRC TO  IADRC1.

  IADRC1-PARVW = 'W'.

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

  APPEND IADRC1.

*  READ TABLE I_DATA INDEX 1.

  LOOP AT I_DATA.

    PERFORM ZGET_ADDRESS USING 'V'  I_DATA-LIFNR.

    MOVE IADRC TO  IADRC1.

    IADRC1-PARVW = 'V'.

    APPEND IADRC1.

* --Customer Wise address details (c)

    PERFORM ZGET_ADDRESS USING 'C' I_DATA-KUNNR .

    MOVE IADRC TO  IADRC1.

    IADRC1-PARVW = 'C'.

    APPEND IADRC1.

  ENDLOOP.

  SORT IADRC1 BY PARVW.

  DELETE ADJACENT DUPLICATES FROM IADRC1.

ENDFORM.                    " GET_PLANTADDRESS

*&      Form  ZGET_ADDRESS

*       text

*      -->VALUE(OBJKEY)  text

*      -->VPLANT         text

FORM ZGET_ADDRESS  USING    VALUE(OBJKEY)

                            VPLANT.

  DATA : TEMP(10) TYPE C.

  TEMP = VPLANT.

  IADRC-ADRNR = I_DATA-ADRNR.

  IADRC-PARVW = I_DATA-PARVW.

  CALL FUNCTION 'ZGET_ADDRESS'

    EXPORTING

      I_OBJKEY = OBJKEY

      I_VALUE  = TEMP

    CHANGING

      ZADRC    = IADRC.

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

ENDFORM.                    " ZGET_ADDRESS

*&      Form  FORM_PRINT

*       text

FORM FORM_PRINT .

  DATA: FORMNAME TYPE TDSFNAME VALUE SY-REPID,

        FM_NAME  TYPE RS38L_FNAM.

*  DATA : CON_PAR  TYPE SSFCTRLOP.

*  DATA : OUTPUT_OPTIONS TYPE SSFCOMPOP.

*  OUTPUT_OPTIONS-TDNOPREV = 'X'.

*  OUTPUT_OPTIONS-TDPRINTER = 'HPLJ6P'.

*  OUTPUT_OPTIONS-TDDEST = 'HPLJ'.

*  OUTPUT_OPTIONS-TDIMMED = 'X'.

*  OUTPUT_OPTIONS-TDNOPRINT = 'X'.

  DATA: OUTPUT_INFO TYPE SSFCRESCL.

  SF_CONTROL-NO_DIALOG = ''.

  SF_CONTROL-DEVICE = 'PRINTER'.

  SF_OUTPUT_OPTION-TDIMMED = 'X'.

  IF SF_OUTPUT_OPTION-TDDEST IS INITIAL.

    SF_OUTPUT_OPTION-TDDEST = NAST-LDEST.

  ENDIF.

  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

      EXPORTING

        FORMNAME                 = FORMNAME                 "'ZCMS094V'

*   VARIANT                  = ' '

*   DIRECT_CALL              = ' '

     IMPORTING

       FM_NAME                  = FM_NAME

     EXCEPTIONS

       NO_FORM                  = 1

       NO_FUNCTION_MODULE       = 2

       OTHERS                   = 3

              .

  IF SY-SUBRC <> 0.

    RETCODE = SY-SUBRC.

    MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO

          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  ENDIF.

*call function '/1BCDWB/SF00000126'.

  CALL FUNCTION FM_NAME

    EXPORTING

      I_J_1IMOCUST       = I_J_1IMOCUST

      IBSTNK             = IBSTNK

      P_PLANT            = P_PLANT

      CONTROL_PARAMETERS = SF_CONTROL

      OUTPUT_OPTIONS     = SF_OUTPUT_OPTION

      USER_SETTINGS      = ''

      VTEXT              = VTEXT1

      TVFK               = TVFK

    IMPORTING

      JOB_OUTPUT_INFO    = OUTPUT_INFO

    TABLES

      IADRC1             = IADRC1

      IVBRP              = IVBRP

      IVBRK              = IVBRK

      I_J_1IMOCOMP       = I_J_1IMOCOMP

      I_J_1IMOCUST       = I_J_1IMOCUST

      IKONV              = IKONV

      I_VBRP             = I_VBRP

      I_IKOMVD           = I_IKOMVD

    EXCEPTIONS

      FORMATTING_ERROR   = 1

      INTERNAL_ERROR     = 2

      SEND_ERROR         = 3

      USER_CANCELED      = 4

      OTHERS             = 5.

  IF SY-SUBRC <> 0.

    MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO

            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

    PERFORM NAST_UPDATE.

  ENDIF.

ENDFORM.                    " FORM_PRINT

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

*&      Form  NAST_UPDATE

*       text

*  -->  p1        text

*  <--  p2        text

FORM NAST_UPDATE .

  CHECK NAST-NACHA IS NOT INITIAL.

  CALL FUNCTION 'NAST_PROTOCOL_UPDATE'

    EXPORTING

      MSG_ARBGB              = SYST-MSGID

      MSG_NR                 = SYST-MSGNO

      MSG_TY                 = SYST-MSGTY

      MSG_V1                 = SYST-MSGV1

      MSG_V2                 = SYST-MSGV2

      MSG_V3                 = SYST-MSGV3

      MSG_V4                 = SYST-MSGV4

    EXCEPTIONS

      MESSAGE_TYPE_NOT_VALID = 1

      NO_SY_MESSAGE          = 2

      OTHERS                 = 3.

  IF SY-SUBRC <> 0.

    MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO

            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  ENDIF.

ENDFORM.                    " NAST_UPDATE

*&      Form  PRINT

*       text

*  -->  p1        text

*  <--  p2        text

FORM PRINT .

  SF_CONTROL-DEVICE = 'PRINTER'.

  IF ( NAST-NACHA = '7' OR NAST-NACHA = '1' ) AND NAST-LDEST IS INITIAL.

    NAST-LDEST = 'HPLJ'.

    SF_OUTPUT_OPTION-TDDEST = NAST-LDEST.

  ENDIF.

*  ITCPO-TDDEST = 'HPLJ'.

  CALL FUNCTION 'CONVERT_COMM_TYPE_DATA'

    EXPORTING

      PI_COMM_TYPE              = 'XXX'

      PI_REPID                  = SY-REPID

      PI_SNAST                  = SNAST

    IMPORTING

      PE_ITCPO                  = ITCPO

*      PE_DEVICE                 = SF_CONTROL-DEVICE

    EXCEPTIONS

      COMM_TYPE_NOT_SUPPORTED   = 1

      RECIPIENT_CREATION_FAILED = 2

      SENDER_CREATION_FAILED    = 3

      OTHERS                    = 4.

  IF SY-SUBRC <> 0.

    RETCODE = SY-SUBRC.

    MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO

         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

    PERFORM NAST_UPDATE.

  ENDIF.

  CALL FUNCTION 'EFG_GET_SMARTFORM_PARAMS'

     EXPORTING

       X_ITCPO                    = ITCPO

       X_DEVICE                   = SF_CONTROL-DEVICE

       X_LANGU                    = SY-LANGU

*     X_XSF                      =

*     X_STARTPAGE                =

       X_GET_XSF                  = 'X'

*     X_SPONUMIV                 =

    IMPORTING

      Y_CONTROL_PARAMETERS       = SF_CONTROL

      Y_OUTPUT_OPTIONS           = SF_OUTPUT_OPTION.

  SF_OUTPUT_OPTION-TDNEWID = 'X'.

  SF_OUTPUT_OPTION-TDLIFETIME = 1.

  SF_OUTPUT_OPTION-TDTITLE = SF_OUTPUT_OPTION-TDCOVTITLE.

  IF SF_OUTPUT_OPTION-TDTITLE IS INITIAL.

    SF_OUTPUT_OPTION-TDTITLE = TEXT-003.

  ENDIF.

*  IF SF_CONTROL-DEVICE = 'PRINTER' AND SF_OUTPUT_OPTION-TDDEST IS INITIAL.

*    SF_CONTROL-NO_DIALOG = SPACE.

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*  ENDIF.

ENDFORM.                    " PRINT

*&      Form  CLEAR_DATA

*       text

*  -->  p1        text

*  <--  p2        text

FORM CLEAR_DATA .

  REFRESH : IADRC , IVBRP , IKONV.

  CLEAR : IVBRK, IBSTNK, I_DATA, IADRC , I_J_1IMOCOMP.

ENDFORM.                    " CLEAR_DATA

*&      Form  GET_BATCH_CHARACTERISTIC

*       text

FORM GET_BATCH_CHARACTERISTIC .

  DATA: I_SEL_CHAR LIKE CABN OCCURS 0 WITH HEADER LINE.

  DATA: ICLBATCH LIKE CLBATCH OCCURS 0 WITH HEADER LINE.

  DATA ATZHL LIKE CAWN-ATZHL.

*   ADDED BY GANESH TAMBE 23/08/2008 WVDK921227

    I_SEL_CHAR-ATNAM = 'STD_SHADE_NO'.

    APPEND I_SEL_CHAR.

    I_SEL_CHAR-ATNAM = 'STD_SHADE_NO_2'.

    APPEND I_SEL_CHAR.CLEAR I_SEL_CHAR.

*   END WVDK921227

  MOVE IVBRP[] TO I_VBRP[].

  LOOP AT I_VBRP.

    REFRESH ICLBATCH[].

    CLEAR ICLBATCH.

*   COMMENTED BY GANESH TAMBE 23/08/2008 WVDK921227

*    I_SEL_CHAR-ATINN = 'STD_SHADE_NO'.

*    I_SEL_CHAR-ATNAM = 'STD_SHADE_NO'.

*   END WVDK921227

    CALL FUNCTION 'GET_BATCH_CHAR_VALUES'

      EXPORTING

        P_OBTAB                            = 'MCH1'

*       P_OBJEK                            =

        P_KLART                            = '023'

        P_MATNR                            = I_VBRP-MATNR

        P_CHARG                            = I_VBRP-CHARG

      TABLES

        I_SEL_CHAR                         = I_SEL_CHAR

        ICLBATCH                           = ICLBATCH

      EXCEPTIONS

        ENTER_MATNR_CHARG                  = 1

        INVALID_SEL_CHARACTERISTICS        = 2

        CLASS_OBJECT_NOT_FOUND             = 3

        CLASS_OBJECT_VALUE_NOT_FOUND       = 4

        OBJECT_REQUIRED                    = 5

        OTHERS                             = 6.

    IF SY-SUBRC <> 0.

*      MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO

*       WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

    ENDIF.

    READ TABLE ICLBATCH INDEX 1.

    IF SY-SUBRC = 0.

      SELECT SINGLE ATZHL INTO ATZHL FROM  CAWN

              WHERE ATINN = ICLBATCH-ATINN

                AND ATWRT = ICLBATCH-ATWTB.

      SELECT SINGLE ATWTB INTO I_VBRP-ARKTX FROM CAWNT

      WHERE ATINN = ICLBATCH-ATINN

        AND ATZHL = ATZHL

        AND SPRAS = SY-LANGU.

      IF SY-SUBRC EQ 0.

        MODIFY I_VBRP.

      ELSEIF SY-SUBRC NE 0.

        CLEAR I_VBRP-ARKTX.

        MODIFY I_VBRP.

      ENDIF.

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

    ELSEIF SY-SUBRC NE 0.

      CLEAR I_VBRP-ARKTX.

      MODIFY I_VBRP.

    ENDIF.

  ENDLOOP.

ENDFORM.                    " GET_BATCH_CHARACTERISTIC

*&      Form  SPELL_WORDS

*       text

*      -->AMT        text

*      -->WORDS      text

FORM SPELL_WORDS USING AMT CHANGING WORDS.

  CALL FUNCTION 'ZSPELL_AMOUNT'

   EXPORTING

     AMOUNT           = AMT

     CURRENCY         = 'INR'

*   FILLER          = ' '

     LANGUAGE        = SY-LANGU

     CURR_TEXT       = 'X'

   IMPORTING

*   E_SPELL         =

     IN_WORDS        = WORDS

   EXCEPTIONS

     NOT_FOUND       = 1

     TOO_LARGE       = 2

     OTHERS          = 3

            .

  IF SY-SUBRC <> 0.

    MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO

            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  ENDIF.

ENDFORM.                    "SPELL_WORDS

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

*&      Form  CALC_TAX

*       text

*  -->  p1        text

*  <--  p2        text

FORM CALC_TAX .

  CALL FUNCTION 'ZGET_PRICING_CONDITION'

     EXPORTING

*   I_VBELN                  =

*   I_TABLE                  =

*   I_FIELD                  =

       I_KNUMV                   = IVBRK-KNUMV

      TABLES

        IKOMVD                   = I_IKOMVD

     EXCEPTIONS

       INVALID_INPUT            = 1

       DOCUMENT_NOT_FOUND       = 2

       OTHERS                   = 3

              .

  IF SY-SUBRC <> 0.

    MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO

            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  ENDIF.

ENDFORM.                    " CALC_TAX

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

 INITIAL.

*  IF SF_CONTROL-DEVICE = 'PRINTER' AND SF_OUTPUT_OPTION-TDDEST IS INITIAL.

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*----------------------------------------------------------------------*

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------**& Report Z_SDP_COM_INV_PRT*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*

REPORT Z_SDP_COM_INV_PRT.

Tables : vbrk , vbrp.selection-screen begin of block b1 with FRAME.

select-options so_vbeln for vbrk-vbeln.select-options so_fkdat for vbrk-fkdat.select-options so_kunag for vbrk-kunag.select-options so_werks for vbrp-werks OBLIGATORY.

selection-screen end of block b1.

types : begin of gty_vbrp, vbeln type vbeln_vf, werks type werks_d, end of gty_vbrp.

types:begin of gty_vbrk, vbeln type VBRK-vbelN, fkdat type fkdat, kunag type kunag,* werks type werks_d, end of gty_vbrk. types : begin of gty_final, vbeln type vbeln_vf, werks type werks_d, fkdat type fkdat, kunag type kunag, end of gty_final.

data : gt_vbrp type STANDARD TABLE OF gty_vbrp, gs_vbrp type gty_vbrp.data : gt_vbrk type TABLE OF gty_vbrk, gs_vbrk type gty_vbrk.data : gt_final type STANDARD TABLE OF gty_final, gs_final type gty_final.

select vbeln werks from vbrp into table gt_vbrp where werks in so_werks and vbeln eq so_vbeln.

if gt_vbrp is not initial.

select vbeln fkdat kunag from vbrk into table gt_vbrk for all entries in gt_vbrp where vbeln eq gt_vbrp-vbeln and fkdat in so_fkdat.

endif.

loop at gt_vbrp into gs_vbrp. gs_final-vbeln = gs_vbrp-vbeln. gs_final-werks = gs_vbrp-werks. Read table gt_vbrk into gs_vbrk with KEY vbeln = gs_vbrP-vbeln . IF SY-SUBRC = 0. gs_final-fkdat = gs_vbrk-fkdat. gs_final-kunag = gs_vbrk-kunag. ENDIF. endloop.

*&---------------------------------------------------------------------*

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

*& Report  ZSD_INVOICE

REPORT  ZSD_INVOICE.

Tables : vbrk , vbrp.

selection-screen begin of block b1 with FRAME.

select-options so_vbeln for vbrk-vbeln.

select-options so_fkdat for vbrk-fkdat.

select-options so_kunag for vbrk-kunag.

select-options so_werks for vbrp-werks OBLIGATORY.

selection-screen end of block b1.

types : begin of gty_vbrp,

        vbeln type vbeln_vf,

        werks type werks_d,

        end of gty_vbrp.

types:begin of gty_vbrk,

      vbeln type VBRK-vbelN,

      fkdat type fkdat,

      kunag type kunag,

*      werks type werks_d,

      end of gty_vbrk.

 types : begin of gty_final,

         check(1) type c,

         vbeln type vbeln_vf,

        werks type werks_d,

        fkdat type fkdat,

        kunag type kunag,

        end of gty_final.

data : gt_vbrp type STANDARD TABLE OF gty_vbrp,

       gs_vbrp type gty_vbrp.

data : gt_vbrk type  TABLE OF gty_vbrk,

       gs_vbrk type gty_vbrk.

data : gt_final type STANDARD TABLE OF gty_final,

        gs_final type gty_final.

data : gt_sel type STANDARD TABLE OF gty_final,

        gs_sel type gty_final.

AT SELECTION-SCREEN.

TOP-OF-PAGE.

WRITE 'INVOICE LIST'.

START-OF-SELECTION.

SET PF-STATUS 'ZSTAT'.

select vbeln werks from vbrp

  into table gt_vbrp

  where werks in so_werks

   and vbeln in so_vbeln.

if gt_vbrp is not initial.

  select vbeln fkdat kunag from

    vbrk into table gt_vbrk

    for all entries in gt_vbrp

    where vbeln eq gt_vbrp-vbeln

     and fkdat in so_fkdat and kunag in so_kunag.

  endif.

loop at gt_vbrp into gs_vbrp.

  gs_final-vbeln  = gs_vbrp-vbeln.

  gs_final-werks = gs_vbrp-werks.

  Read table gt_vbrk into gs_vbrk with  KEY vbeln  = gs_vbrP-vbeln  .

  IF SY-SUBRC = 0.

  gs_final-fkdat = gs_vbrk-fkdat.

  gs_final-kunag = gs_vbrk-kunag.

  ENDIF.

 append gs_final to gt_final.

 clear gs_final.

  endloop.

 delete ADJACENT DUPLICATES FROM gt_final.

sort gt_final by  vbeln.

  loop at gt_final into gs_final.

    write :/ gs_final-check as checkbox,

             gs_final-vbeln ,

        gs_final-werks,

        gs_final-fkdat,

        gs_final-kunag.

    endloop.

AT USER-COMMAND.

  CASE SY-UCOMM.

    WHEN 'EXIT'.

      LEAVE TO TRANSACTION SY-TCODE.

 WHEN 'PNT'.

LEAVE TO LIST-PROCESSING.

loop at gt_final into gs_final.

if  gs_final-check = 'X'.

APPEND gs_final TO gt_sel.

endif.

endloop.

loop at gt_sel into gs_sel.

  write :/ gs_sel-check as checkbox,

             gs_sel-vbeln ,

        gs_sel-werks,

        gs_sel-fkdat,

        gs_sel-kunag.

  endloop.

  MESSAGE 'TEST FOR PNT' TYPE 'I'.

  WHEN 'SAVE'.

    loop at gt_final into gs_final.

        if  gs_final-check = 'X'.

          APPEND gs_final TO gt_sel.

          endif.

endloop.

  ENDCASE.