You are on page 1of 11

(footer).

Page…subform.
REPORT zmm_goods_rece.

TABLES:nast.
TYPES:BEGIN OF ty_mseg,
      mblnr      TYPE mblnr,
      bwart      TYPE bwart,
      matnr      TYPE matnr,
      maktx      TYPE maktx,
      lifnr      TYPE lifnr,
      budat_mkpf TYPE budat,
      ebeln      TYPE bstnr,
      meins      TYPE meins,
      werks      TYPE werks_d,
      lgort      TYPE lgort_d,
      charg      TYPE charg_d,
      menge      TYPE menge_d,
      bukrs      TYPE bukrs,
      xblnr      TYPE xblnr1,
      END OF ty_mseg,

      BEGIN OF ty_ekko,
      ebeln TYPE bstnr,
      aedat TYPE aedat,
      zterm TYPE dzterm,
      menge TYPE menge_d,
      END OF ty_ekko,

      BEGIN OF ty_lfa1,
      lifnr TYPE lifnr,
      name1 TYPE name1_gp,
      stras TYPE stras_gp,
      telf1 TYPE telf1,
      END OF ty_lfa1,

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

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

DATA: gt_final TYPE TABLE OF zmm_gr_strc,
      gs_final TYPE zmm_gr_strc,
      gt_mseg  TYPE TABLE OF ty_mseg,
      gs_mseg  TYPE ty_mseg,
      gt_ekko  TYPE TABLE OF ty_ekko,
      gs_ekko  TYPE ty_ekko,
      gt_lfa1  TYPE TABLE OF ty_lfa1,
      gs_lfa1  TYPE ty_lfa1,
      gt_adrc  TYPE TABLE OF ty_adrc,
      gs_adrc  TYPE ty_adrc,
      gt_t001  TYPE TABLE OF ty_t001,
      gs_t001  TYPE ty_t001.

DATA:lv_bukrs TYPE bukrs,
     lv_city  TYPE ad_city1,
     lv_telno TYPE ad_tlnmbr1,
     lv_lname TYPE name1_gp,
     lv_stras TYPE stras_gp,
     lv_ctel  TYPE telf1,
     lv_adate TYPE lfdat,
     lv_pono  TYPE bstnr,
     lv_pdate TYPE aedat,
     lv_zterm TYPE dzterm,
     lv_sno   TYPE i,
     lv_oqty  TYPE menge_d,
     lv_rqty  TYPE menge_d,
     lv_openq TYPE menge_d,
     lv_mblnr TYPE mblnr,
     lv_lifnr TYPE lifnr,
     lv_dnote TYPE xblnr1,
     Shar_addr TYPE STRING,
     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 'ZMM_GR_FORM',
     fp_docparams      TYPE sfpdocparams,
     fp_formoutput     TYPE fpformoutput,
     fp_outputparams   TYPE sfpoutputparams.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS:p_mblnr TYPE mseg-mblnr.
SELECTION-SCREEN END OF BLOCK b1.

CLASS lcl_gr DEFINITION DEFERRED.
DATA lc_obj TYPE REF TO lcl_gr.

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

CLASS lcl_gr IMPLEMENTATION.
METHOD get_data .

   SELECT
      a~mblnr
      a~bwart
      a~matnr
      b~maktx
      a~lifnr
      a~budat_mkpf
      a~ebeln
      a~meins
      a~werks
      a~lgort
      a~charg
      a~menge
      a~bukrs
      c~xblnr
   FROM mseg AS a INNER JOIN makt AS b
   ON ( a~matnr EQ b~matnr )
   INNER JOIN mkpf as c on ( a~mblnr eq c~mblnr )
   INTO TABLE gt_mseg
   WHERE a~mblnr EQ nast-objky
   AND   bwart eq '101'.

 IF gt_mseg IS NOT INITIAL.
   SELECT
      a~ebeln
      a~aedat
      a~zterm
      b~menge
    FROM ekko as a INNER JOIN ekpo as b
    on ( a~ebeln eq b~ebeln )
    INTO TABLE gt_ekko
    FOR ALL ENTRIES IN gt_mseg
    WHERE a~ebeln eq gt_mseg-ebeln.

    SELECT
      lifnr
      name1
      stras
      telf1
     FROM lfa1
     INTO TABLE gt_lfa1
     FOR ALL ENTRIES IN gt_mseg
     WHERE lifnr eq gt_mseg-lifnr.

     SELECT
         bukrs
         adrnr
        FROM t001
        INTO TABLE gt_t001
        FOR ALL ENTRIES IN gt_mseg
        WHERE bukrs EQ gt_mseg-bukrs.

  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.
else.
  MESSAGE 'No Data Found' TYPE 'E'.
 ENDIF.
 LOOP AT gt_mseg INTO gs_mseg.
   lv_sno   = lv_sno + 1.
   lv_bukrs = gs_mseg-bukrs.
   lv_adate = gs_mseg-budat_mkpf.
   lv_pono  = gs_mseg-ebeln.
   lv_lifnr  = gs_mseg-lifnr.
   lv_mblnr  = gs_mseg-mblnr.
   LV_DNOTE  = gs_mseg-XBLNR.

  READ TABLE gt_t001 INTO gs_t001 with key bukrs = gs_mseg-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.
  READ TABLE gt_lfa1 INTO gs_lfa1 with key lifnr = gs_mseg-lifnr.
   IF sy-subrc eq 0.
      lv_lname = gs_lfa1-lifnr.
      lv_stras = gs_lfa1-stras.
      lv_ctel  = gs_lfa1-telf1.
   ENDIF.
  READ TABLE gt_ekko INTO gs_ekko with key ebeln = gs_mseg-ebeln.
   IF sy-subrc eq 0.
      lv_pdate      = gs_ekko-aedat.
      lv_zterm      = gs_ekko-zterm.
      gs_final-pqty = gs_ekko-menge.
   ENDIF.

   gs_final-sno       = lv_sno.
   gs_final-item_code = gs_mseg-matnr.
   gs_final-desc      = gs_mseg-maktx.
   gs_final-plant     = gs_mseg-werks.
   gs_final-sloc      = gs_mseg-lgort.
   gs_final-batch     = gs_mseg-charg.
   gs_final-rqty      = gs_mseg-menge.
   gs_final-uom       = gs_mseg-meins.
   gs_final-oqty = gs_final-pqty - gs_final-rqty.

   lv_oqty  = lv_oqty + gs_final-pqty.
   lv_rqty  = lv_rqty + gs_final-rqty.

   APPEND gs_final to gt_final.
   CLEAR:gs_final,gs_mseg,gs_ekko,gs_lfa1,
         gs_t001,gs_adrc.

 ENDLOOP.

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

*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'.
 ELSEIF lv_bukrs = 1100 .
  shar_addr = 'SHAR-Construction'.
  s_box = 'P.O BOX 25507'.
  s_box_abb = 'CR'.
  s_box_tel = '1010230789'.
  s_add = 'Riyadh 11476'.
  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
          .

CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
  EXPORTING
    i_name                     = 'ZMM_GR_FORM'
 IMPORTING
   e_funcname                  = i_fmname

          .

  wa_docparams-langu   = 'E'.

CALL FUNCTION i_fmname
  EXPORTING
   /1BCDWB/DOCPARAMS         = fp_docparams
    GT_FINAL                 = gt_final
    LV_BUKRS                 = lv_bukrs
    LV_CITY                  = lv_city
    LV_TELNO                 = lv_telno
    LV_CTEL                  = lv_ctel
    LV_ADATE                 = lv_adate
    LV_PONO                  = lv_pono
    LV_PDATE                 = lv_pdate
    LV_ZTERM                 = lv_zterm
    LV_OQTY                  = lv_oqty
    LV_RQTY                  = lv_rqty
    LV_OPENQ                 = lv_openq
    LV_LIFNR                 = lv_lifnr
    LV_LNAME                 = lv_lname
    LV_MBLNR                 = lv_mblnr
    LV_STRAS                 = lv_stras
    LV_dnote                 = lv_dnote
    S_BOX_final              = S_BOX_final
    S_ADD_final              = S_ADD_final
    TEL1                     = TEL1
    TEL2                     = TEL2
    s_datetime               = l_dt_time

 IMPORTING
   /1BCDWB/FORMOUTPUT       = fp_formoutput
 EXCEPTIONS
   USAGE_ERROR              = 1
   SYSTEM_ERROR             = 2
   INTERNAL_ERROR           = 3
   OTHERS                   = 4
          .

 CALL FUNCTION 'FP_JOB_CLOSE'
  EXCEPTIONS
    usage_error          = 1
    system_error         = 2
    internal_error       = 3
    OTHERS               = 4
           .
ENDMETHOD.

ENDCLASS.

FORM ENTRY_GR USING   RETURN_CODE US_SCREEN.
CREATE OBJECT lc_obj.
lc_obj->get_data( ).
lc_obj->get_disp( ).
ENDFORM.

You might also like