You are on page 1of 12

REPORT 

ZSD_DEL_NOTE.

TABLES:likp,kna1.

TYPES:
     BEGIN OF ty_likp,
     vbeln TYPE vbeln,
     kunnr TYPE kunnr,
     lfdat TYPE lfdat,
     vkorg TYPE vkorg,
     VSART TYPE VSART, Shipping type
     END OF ty_likp,
     BEGIN OF ty_lips,
     vbeln TYPE vbeln,
     posnr TYPE posnr,
     matnr TYPE matnr,
     meins TYPE meins,
     lfimg TYPE lfimg, Actual quantity delivered (in sales units)
     vgbel TYPE vgbel, Document number of the reference document
     END OF ty_lips,

     BEGIN OF ty_kna1,
     kunnr TYPE kunnr,
     name1 TYPE name1_gp,
     ORT01 TYPE ORT01_GP,
     stras TYPE stras_gp,
     telf1 TYPE telf1,
     stceg type stceg,
     END OF ty_kna1,

     BEGIN OF ty_t001,
     bukrs TYPE bukrs,
     adrnr TYPE adrnr,
     END OF ty_t001,

     BEGIN OF ty_vbak,
     vbeln TYPE vbeln,
     audat TYPE audat,
     END OF ty_vbak,

     BEGIN OF ty_vbap,
     vbeln  TYPE vbeln,
     kwmeng TYPE vbap-kwmeng, Cumulative Order Quantity in Sales Units
     END OF ty_vbap,

     BEGIN OF ty_vbkd, (Sales Document: Business Data)


     vbeln TYPE vbeln,
     zterm TYPE dzterm,
     END OF ty_vbkd,

     BEGIN OF ty_makt,
     matnr TYPE matnr,
     maktx TYPE maktx,
     END OF ty_makt,

     BEGIN OF ty_tvko, (Organizational Unit: Sales Organizations)


     vkorg TYPE vkorg,
     bukrs TYPE bukrs,
     END OF ty_tvko,

     BEGIN OF ty_adrc, Addresses (Business Address Services)


     addrnumber     TYPE adrc-addrnumber,
     city1      TYPE ad_city1,
     tel_number TYPE ad_tlnmbr1,
     END OF ty_adrc,

     BEGIN OF ty_T173T, (Routes: Mode of Transport by Shipping Type: Texts)


       VSART TYPE VERSART,
       BEZEI TYPE VERSARTBEZ,

       END OF ty_T173T.

DATA:gt_final TYPE TABLE OF ZSD_DEL_str,
     gs_final TYPE ZSD_DEL_str,
     gt_likp  TYPE TABLE OF ty_likp,
     gs_likp  TYPE ty_likp,
     gt_lips  TYPE TABLE OF ty_lips,
     gs_lips  TYPE ty_lips,
     gt_kna1  TYPE TABLE OF ty_kna1,
     gs_kna1  TYPE ty_kna1,
     gt_makt  TYPE TABLE OF ty_makt,
     gs_makt  TYPE ty_makt,
     gt_vbkd  TYPE TABLE OF ty_vbkd,
     gs_vbkd  TYPE ty_vbkd,
     gt_vbak  TYPE TABLE OF ty_vbak,
     gs_vbak  TYPE ty_vbak,
     gt_tvko  TYPE TABLE OF ty_tvko,
     gs_tvko  TYPE ty_tvko,
     gt_t001  TYPE TABLE OF ty_t001,
     gs_t001  TYPE ty_t001,
     gt_adrc  TYPE TABLE OF ty_adrc,
     gs_adrc  TYPE ty_adrc,
     gt_vbap  TYPE TABLE OF ty_vbap,
     gs_vbap  TYPE ty_vbap,
     gt_T173T  TYPE TABLE OF ty_T173T,
     gs_T173T  TYPE ty_T173T.
DATA:lv_bukrs TYPE bukrs,
     lv_city  TYPE ad_city1,
     lv_telno TYPE ad_tlnmbr1,
     lv_kunnr TYPE kunnr,
     lv_cname TYPE name1_gp,
     lv_stras TYPE stras_gp,
     lv_ctel  TYPE telf1,
     lv_stceg type stceg,
     lv_odate TYPE lfdat,
     lv_addat TYPE lfdat,
     lv_order TYPE vbeln,
     lv_term  TYPE dzterm,
     lv_sno   TYPE i,
     lv_vbeln TYPE vbeln,
     lv_oqty  TYPE menge_d,
     lv_dqty  TYPE menge_d,
     lv_openq TYPE menge_d,
     lv_ship TYPE VERSARTBEZ,
     S_BOX TYPE STRING,
      S_BOX_ABB TYPE STRING,
      S_BOX_TEL TYPE STRING,
      S_BOX_final TYPE STRING,
      S_ADD TYPE STRING,
      S_ADD_ABB TYPE STRING,
      S_ADD_TEL TYPE STRING,
      S_ADD_final TYPE STRING,
      TEL1 TYPE STRING,
      TEL2 TYPE STRING.
DATA : l_date TYPE sy-datum,
       l_time TYPE sy-uzeit.
DATA : lt_date(10),
       lt_time(8),
       l_dt_time(20) TYPE c.
DATA:wa_outputparams TYPE sfpoutputparams,
     wa_docparams    TYPE sfpdocparams,
     i_fmname TYPE funcname,
     i_params TYPE sfpoutputparams,
     i_docparams TYPE sfpdocparams,
     fs_per_info TYPE pa0001-pernr,
     l_fm_name         TYPE rs38l_fnam,
     l_formname        TYPE fpname VALUE 'ZSD_DELI_NOTE_FORM',
     fp_docparams      TYPE sfpdocparams,
     fp_formoutput     TYPE fpformoutput,
     fp_outputparams   TYPE sfpoutputparams.

INCLUDE rvadtabl.

*SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
*PARAMETERS:s_vbeln type likp-vbeln.
*SELECTION-SCREEN END OF BLOCK b1.

CLASS lcl_deli_note DEFINITION DEFERRED.
DATA:lc_obj TYPE REF TO lcl_deli_note.

CLASS lcl_deli_note DEFINITION.
  PUBLIC SECTION.
  METHODS:get_data,get_disp.
ENDCLASS.

CLASS lcl_deli_note IMPLEMENTATION.
  METHOD get_data.

    SELECT
        vbeln
        kunnr
        lfdat
        vkorg
        VSART
      FROM likp
      INTO TABLE gt_likp
      WHERE vbeln eq nast-objky."s_vbeln.

   IF gt_likp IS NOT INITIAL.
    SELECT
        vbeln
        posnr
        matnr
        meins
        lfimg
        vgbel
      FROM lips
      INTO CORRESPONDING FIELDS OF TABLE gt_lips
      FOR ALL ENTRIES IN gt_likp
      WHERE vbeln EQ gt_likp-vbeln.

      SELECT
          kunnr
          name1
          ORT01
          stras
          telf1
          stceg
        FROM kna1
        INTO TABLE gt_kna1
        FOR ALL ENTRIES IN gt_likp
        WHERE kunnr EQ gt_likp-kunnr.

      SELECT
          vkorg
          bukrs
        FROM tvko
        INTO TABLE gt_tvko
        FOR ALL ENTRIES IN gt_likp
        WHERE vkorg EQ gt_likp-vkorg.

     SELECT
        VSART
        BEZEI
       from  T173t
       INTO TABLE gt_t173t
       FOR ALL ENTRIES IN gt_likp
       WHERE VSART eq gt_likp-vsart
       AND spras = sy-langu.

   ENDIF.

   IF gt_tvko IS NOT INITIAL.
      SELECT
         bukrs
         adrnr
        FROM t001
        INTO TABLE gt_t001
        FOR ALL ENTRIES IN gt_tvko
        WHERE bukrs EQ gt_tvko-bukrs.
   ENDIF.
   IF gt_t001 IS NOT INITIAL.
      SELECT
          addrnumber
          city1
          tel_number
        FROM adrc
        INTO TABLE gt_adrc
        FOR ALL ENTRIES IN gt_t001
        WHERE addrnumber EQ gt_t001-adrnr.

   ENDIF.

   IF gt_lips IS NOT INITIAL.
     SELECT
         vbeln
         audat
       FROM vbak
       INTO TABLE gt_vbak
       FOR ALL ENTRIES IN gt_lips
       WHERE vbeln EQ gt_lips-vgbel.

      SELECT
          vbeln
          kwmeng
        FROM vbap
        INTO TABLE gt_vbap
        FOR ALL ENTRIES IN gt_lips
        WHERE vbeln EQ gt_lips-vgbel.

      SELECT
          vbeln
          zterm
        FROM vbkd
        INTO TABLE gt_vbkd
        FOR ALL ENTRIES IN gt_lips
        WHERE vbeln EQ gt_lips-vgbel.

      SELECT
          matnr
          maktx
        FROM makt
        INTO TABLE gt_makt
        FOR ALL ENTRIES IN gt_lips
        WHERE matnr EQ gt_lips-matnr
        AND   spras EQ sy-langu.

   ENDIF.
  LOOP AT gt_lips INTO gs_lips.

*    lv_sno = lv_sno + 1.
    lv_vbeln = gs_lips-vbeln.
      lv_order = gs_lips-vgbel.
   READ TABLE gt_vbak INTO gs_vbak WITH KEY vbeln = gs_lips-vgbel.
   IF sy-subrc EQ 0.
      lv_order = gs_vbak-vbeln.
      LV_ODATE = gs_vbak-AUDAT.
   ENDIF.
   READ TABLE gt_vbkd INTO gs_vbkd WITH KEY vbeln = gs_lips-vgbel.
   IF sy-subrc EQ 0.
      lv_term = gs_vbkd-zterm.
   ENDIF.

    READ TABLE gt_likp INTO gs_likp WITH KEY vbeln = gs_lips-vbeln.
      IF sy-subrc EQ 0.
        lv_addat = gs_likp-lfdat.

        READ TABLE gt_tvko INTO gs_tvko WITH KEY vkorg = gs_likp-vkorg.
          IF sy-subrc EQ 0.
             lv_bukrs = gs_tvko-bukrs.
               READ TABLE gt_t001 INTO gs_t001 WITH KEY bukrs = gs_tvko-bukrs.
                  IF sy-subrc EQ 0.
                     READ TABLE gt_adrc INTO gs_adrc WITH KEY addrnumber = gs_
t001-adrnr.
                       IF sy-subrc EQ 0.
                         lv_city  = gs_adrc-city1.
                         lv_telno = gs_adrc-tel_number.
                       ENDIF.
                  ENDIF.
          ENDIF.
        READ TABLE gt_kna1 INTO gs_kna1 WITH KEY kunnr = gs_likp-kunnr.
          IF sy-subrc EQ 0.
            LV_KUNNR = gs_kna1-kunnr.
            lv_cname = gs_kna1-NAME1.
            lv_stras = gs_kna1-stras."ORT01.
            lv_ctel  = gs_kna1-telf1.
            lv_stceg = gs_kna1-stceg.
          ENDIF.

        READ TABLE gt_T173T INTO gs_T173T WITH KEY VSART = gs_likp-VSART.

        IF  sy-subrc EQ 0..

          lv_ship = gs_T173T-BEZEI.
        ENDIF.

      ENDIF.
* gs_final-sno     = lv_sno.
 gs_final-item_no = gs_lips-matnr.

 READ TABLE gt_makt INTO gs_makt WITH KEY matnr = gs_lips-matnr.
 IF sy-subrc EQ 0.
  gs_final-desc = gs_makt-maktx.
 ENDIF.
 READ TABLE gt_vbap INTO gs_vbap WITH KEY vbeln = gs_lips-vgbel.
 IF sy-subrc EQ 0.
  gs_final-oqty = gs_vbap-kwmeng.
 ENDIF.
  gs_final-uom  = gs_lips-meins.
  gs_final-dqty = gs_lips-lfimg.

  gs_final-open_qty = gs_final-oqty - gs_final-dqty.

  lv_oqty  = lv_oqty + gs_final-oqty.
  lv_dqty  = lv_dqty + gs_final-dqty.

*  APPEND gs_final TO gt_final.
  COLLECT gs_final INTO gt_final.

CLEAR:gs_final,gs_lips,gs_likp,gs_vbap,
      gs_makt,gs_kna1,gs_adrc,gs_vbkd,
      gs_vbak.

  ENDLOOP.

lv_openq = lv_oqty - lv_dqty.
   l_date = sy-datum.
       l_time = sy-uzeit.

LOOP AT gt_final INTO gs_final.
  lv_sno = lv_sno + 1.
  gs_final-sno     = lv_sno.

 MODIFY gt_final from gs_final.
 CLEAR:gs_final.

ENDLOOP.

*READ TABLE gt_item INTO GS_item INDEX 1 .
*SELECT SINGLE VKORG FROM MVKE INTO VKORG WHERE MATNR = GS_ITAB-MATNR .
IF LV_BUKRS = 2100 .
*  SHAR_ADDR = 'SHAR-Jeddah Cold Store'.
  S_BOX = 'P.O BOX 34314'.
  S_BOX_ABB = 'CR'.
  S_BOX_TEL = '4030168934'.
  S_ADD = 'Jeddah 21468'.
  S_ADD_ABB = 'CCM'.
  S_ADD_TEL = '119931'.
  TEL1 = '+966 12 2680000'.
  TEL2 = '+966 12 2686666'.
ELSEIF LV_BUKRS = 2200 .
*  SHAR_ADDR = 'SHAR- Riyadh Cold Store'.
  S_BOX = 'P.O BOX 25507'.
  S_BOX_ABB = 'CR'.
  S_BOX_TEL = '1010230789'.
  S_ADD = 'Riyadh 21468'.
  S_ADD_ABB = 'CCM'.
  S_ADD_TEL = '5005'.
  TEL1 = '+966 11 2655222'.
  TEL2 = '+966 12 2656222'.
ENDIF.

CONCATENATE S_BOX S_BOX_ABB S_BOX_TEL INTO s_box_final SEPARATED by space.
CONCATENATE S_add S_add_ABB S_add_TEL INTO s_add_final SEPARATED by space.

  CONCATENATE l_date+6(2)
                   l_date+4(2)
                   l_date+0(4)
                   INTO lt_date
                   SEPARATED BY '.'.
       CONCATENATE l_time+0(2)
                   l_time+2(2)
                   INTO lt_time
                   SEPARATED BY ':'.
       CONCATENATE lt_date
                   lt_time
                   INTO l_dt_time
                   SEPARATED BY SPACE.

  ENDMETHOD.
METHOD get_disp.
  CALL FUNCTION 'FP_JOB_OPEN'
  CHANGING
    ie_outputparams       = wa_outputparams
 EXCEPTIONS
   cancel                = 1
   usage_error           = 2
   system_error          = 3
   internal_error        = 4
   OTHERS                = 5
          .
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
  EXPORTING
    i_name                     = 'ZSD_DELI_NOTE_FORM'
 IMPORTING
   e_funcname                  = i_fmname
*   E_INTERFACE_TYPE           =
*   EV_FUNCNAME_INBOUND        =
          .

  wa_docparams-langu   = 'E'.
*  wa_docparams-country = 'IN'.

  CALL FUNCTION i_fmname"'/1BCDWB/SM00000189'
    EXPORTING
     /1BCDWB/DOCPARAMS         = fp_docparams
      gt_final                 = gt_final
      lv_bukrs                 = lv_bukrs
      lv_vbeln                 = lv_vbeln
      lv_city                  = lv_city
      lv_telno                 = lv_telno
      lv_kunnr                 = lv_kunnr
      lv_cname                 = lv_cname
      lv_stras                 = lv_stras
      lv_ctel                  = lv_ctel
      lv_odate                 = lv_odate
      lv_addat                 = lv_addat
      lv_order                 = lv_order
      lv_term                  = lv_term
      lv_oqty                  = lv_oqty
      lv_dqty                  = lv_dqty
      lv_openq                 = lv_openq
      lv_ship                  = lv_ship
      S_BOX_final              = S_BOX_final
      S_ADD_final                = S_ADD_final
      TEL1                       = TEL1
      TEL2                       = TEL2
      s_datetime                 = l_dt_time
      lv_stceg                   = lv_stceg
   IMPORTING
     /1BCDWB/FORMOUTPUT       = fp_formoutput
   EXCEPTIONS
     USAGE_ERROR              = 1
     SYSTEM_ERROR             = 2
     INTERNAL_ERROR           = 3
     OTHERS                   = 4
            .

 CALL FUNCTION 'FP_JOB_CLOSE'
*  IMPORTING
*    E_RESULT             =
  EXCEPTIONS
    usage_error          = 1
    system_error         = 2
    internal_error       = 3
    OTHERS               = 4
           .
 IF sy-subrc <> 0.
* Implement suitable error handling here
 ENDIF.

ENDMETHOD.

ENDCLASS.

*START-OF-SELECTION.

FORM entry_dn USING return_code us_screen.
  CREATE OBJECT lc_obj.
lc_obj->get_data( ).
lc_obj->get_disp( ).
ENDFORM.

You might also like