Thursday, 19 March 2015

                                                 ZMM_GPR_PRINT


*&---------------------------------------------------------------------*
*& Report  ZMM_GPR_PRINT
*&
*&---------------------------------------------------------------------*
*& To Print the Gate Pass Request Details
*& Developer: Mounika.M
*&---------------------------------------------------------------------*

REPORT  zmm_gpr_print MESSAGE-ID zmm_gpr_msg.

INCLUDE zmm_gpr_print_top. "Data Declarations"

INCLUDE zmm_gpr_print_s01. "Selection Screen"

INCLUDE zmm_gpr_print_d01. "Fetching Data"


INCLUDE zmm_gpr_print_f01. "Subroutines"

*************************************************************************************************************
*&---------------------------------------------------------------------*
*&  Include           ZMM_GPR_PRINT_TOP
*&---------------------------------------------------------------------*
TYPE-POOLS: slis, icon.
TABLES:zmm_gp_it_det, zmm_gprh, zmm_gp_ot_det.

TYPES:  BEGIN OF gty_zmm_gprh,
        gpr_no          TYPE  zzm_gpr_no,              "GPR Number
        zyear           TYPE  zzm_year,                "Year of Creation
        sy_created_by   TYPE  zzm_crt_by,              "Created By (SAP ID)
        created_by      TYPE  zzm_usr_crt_by,          "Created By (user fills it)
        created_on      TYPE  zzm_crt_dt,              "Creation Date
        created_ph      TYPE  zzm_crt_ph,              "Phone number of the person
        released        TYPE  zzm_released,            "Released Status
        released_by     TYPE  zzm_released_by,         "Released By (HOD) - SAP Login ID
        text            TYPE  zzm_text,                "Reason Code Text
        END OF gty_zmm_gprh,

        BEGIN OF gty_zmm_gpit,
        gpr_no          TYPE  zzm_gpr_no,              "GPR Number
        zyear           TYPE  zzm_year,                "Year of Creation
        posnr           TYPE  zzm_posnr,               "Item number of the SD document
        lgort           TYPE  lgort_d,                 "Storage Location
        kostl           TYPE  kostl,                   "Cost Center
        wo_ref          TYPE  zzm_wo_ref,              "Work Order Reference
        wo_ref_dt       TYPE  zzm_wo_ref_dt,           "WO Reference Date
        mo_no           TYPE  zzm_mo_no,               "Maintenance Order Number
        mo_dt           TYPE  zzm_mo_dt,               "Maintenance Order Date
        matnr           TYPE  matnr,                   "Material Number
        quan_iss        TYPE  zzm_quan_iss,            "Quantity Issued (Weight)
        wt_unit         TYPE  meins,                   "Base Unit of Measure
        apprx_value     TYPE  zzm_apprx_value,         "Approximate Value
        END OF gty_zmm_gpit,

        BEGIN OF gty_zmm_gpot,
        gpr_no          TYPE  zzm_gpr_no,              "GPR Number
        zyear           TYPE  zzm_year,                "Year of Creation
        returnable      TYPE  zzm_returnable,          "Returnable
        exp_ret_date    TYPE  zzm_ret_date,            "Expected Return Date
        werks           TYPE  werks_d,                 "Plant
        lifnr           TYPE  lifnr,                   "Account Number of Vendor or Creditor
        name1           TYPE  name1,                   "Vendor Name
        stras           TYPE  stras,                   "Address
        ort01           TYPE  ort01_gp,                "City
        ort02           TYPE  ort01_gp,                "District
        pstlz           TYPE  pstlz,                   "Postal Code
        region          TYPE  regio,                   "Region (State, Province, County)
        land1           TYPE  land1,                   "Country Key
        tel_number      TYPE  ad_tlnmbr1,              "First telephone no.: dialling code+number
        tel_extn        TYPE  ad_tlxtns1,              "First Telephone No.: Extension
        fax_number      TYPE  ad_fxnmbr1,              "First fax no.: dialling code+number
        fax_extn        TYPE  ad_fxxtns1,              "First fax no.: extension
        v_cst_no        TYPE  j_1icstno,               "Central Sales Tax Number
        v_gst_no        TYPE  j_1icstno,               "Central Sales Tax Number
        v_vat           TYPE  stceg,                   "VAT Registration Number
        mode_of_trans   TYPE  zzm_mode_of_trans,       "Mode of Transport
        mat_rec         TYPE  zzm_mat_rec,             "Material Received By
        freight         TYPE  zzm_freight,             "Freight payer
        insu_payer      TYPE  zzm_insu,                "Insurance payer
        octr_payer      TYPE  zzm_octr,                "Octrio payer
        END OF gty_zmm_gpot,

        BEGIN OF gty_makt,
        matnr           TYPE  matnr,                   "Material Number
        maktx           TYPE  maktx,                   "Material Description
        END OF gty_makt,

        BEGIN OF gty_t001l,
        lgort           TYPE  lgort_d,                 "Storage Location
        lgobe           TYPE  lgobe,                   "Storage Description
        END OF gty_t001l,

        BEGIN OF gty_cskt,
        kostl           TYPE  kostl,                   "Cost Centre
        ltext           TYPE  ltext,                   "Text
        END OF gty_cskt,

        BEGIN OF gty_t001w,
        werks           TYPE  werks_d,                 "Material Description
        name1           TYPE  name1,                   "Vendor Name
        END OF gty_t001w,


        BEGIN OF gty_output,
        gv_sel          TYPE char4,                    "Radio Button
        gpr_no          TYPE zzm_gpr_no,               "GPR Number
        created_on      TYPE zcrt_dt,                  "Creation Date
        created_by      TYPE zzm_usr_crt_by,           "Created By (user fills it)
        werks           TYPE werks_d,                  "Plant
        werks_desc      TYPE name1,                    "Plant Description
        returnable      TYPE zzm_returnable,           "Returnable
        released        TYPE zzm_released,             "Released Status
        released_by     TYPE zzm_released_by,          "Released By (HOD) - SAP Login ID
        lgort           TYPE lgort_d,                  "Storage Location
        lgobe           TYPE lgobe,                    "Storage Location Description
        lifnr           TYPE lifnr,                    "Account Number of Vendor or Creditor
        name1           TYPE name1,                    "Vendor Name
        END OF gty_output.

DATA:
        wa_funcnm           TYPE funcname,
        fp_outputparams     TYPE sfpoutputparams,
        fp_docparams        TYPE sfpdocparams,
        fp_formoutput       TYPE fpformoutput,
        output_file         TYPE string,
        data_tab            TYPE TABLE OF x255,
        filename            TYPE string,
        path                TYPE string,
        fullpath            TYPE string,
        wt_file             TYPE filetable,
        default_extension   TYPE string VALUE 'PDF',

        lv_filelength       TYPE i,
        lt_rawtab           TYPE TABLE OF char255,

        wa_data_tab         LIKE LINE OF lt_rawtab,
        wa_data_tab1        TYPE xstring,
        lo_fp               TYPE REF TO if_fp VALUE IS INITIAL,
        lo_fpex             TYPE REF TO cx_fp_runtime VALUE IS INITIAL,
        lo_pdfobj           TYPE REF TO if_fp_pdf_object VALUE IS INITIAL,
        pdf_data            TYPE xstring,

        xml_data            TYPE xstring,
        lt_xml_data         TYPE STANDARD TABLE OF xstring,
        lv_xml_data_string  TYPE string,
        t_return            TYPE STANDARD TABLE OF bapiret2,
        t_per_info          TYPE STANDARD TABLE OF smum_xmltb,
        tag_open            TYPE tdsfflag,

        s_struct            TYPE zmm_gpr_struct,
        gi_zmm_gpit         TYPE TABLE OF gty_zmm_gpit,         "Internal Table for Item Table
        li_zmm_gpit         TYPE TABLE OF  gty_zmm_gpit,        "Internal Table for Item Table
        gs_zmm_gpit         TYPE gty_zmm_gpit,                  "Work Area for Item Table
        gi_zmm_gpot         TYPE TABLE OF gty_zmm_gpot,         "Internal Table for Others Table
        li_zmm_gpot         TYPE TABLE OF gty_zmm_gpot,         "Internal Table for Others Table
        gs_zmm_gpot         TYPE gty_zmm_gpot,                  "Work Area for Others Table
        gi_zmm_gprh         TYPE TABLE OF gty_zmm_gprh,         "Internal Table for GPR Header Table
        gs_zmm_gprh         TYPE gty_zmm_gprh,                  "Work Area for GPR Header Table
        gi_final            TYPE zmm_gpr_ttype,                 "Internal Table to display item details in the form
        gs_final            LIKE LINE OF gi_final,              "Work Area to display item details
        gi_output           TYPE TABLE OF gty_output,           "Internal Table to display Header and Other table details in the form
        gs_output           LIKE LINE OF gi_output,             "Work Area to display Header and Other table details
        i_fieldcat          TYPE slis_t_fieldcat_alv,           "Internal Table for Fieldcatalog
        gs_fieldcat         TYPE slis_fieldcat_alv ,            "Work Area For Fieldcatalog

        gs_makt             TYPE gty_makt,                      "Work Area for Material Descriptions
        gs_t001l            TYPE gty_t001l,                     "Work Area for Storage Locations
        gs_t001w            TYPE gty_t001w,                     "Work Area for Plant Details
        gs_cskt             TYPE gty_cskt,                      "Work Area for Cost Centre Texts
        gi_makt             TYPE TABLE OF gty_makt,             "Internal Table for Material Descriptions
        gi_t001l            TYPE TABLE OF gty_t001l,            "Internal Table for Storage Locations
        gi_cskt             TYPE TABLE OF gty_cskt,             "Internal Table for Cost Centre Texts
        gi_t001w            TYPE TABLE OF gty_t001w,            "Internal Table for Plant Details

        gs_user_data        TYPE soudatai1,
        gs_user             TYPE soudnamei1,

        gs_tline            TYPE tline,
        i_tline             LIKE TABLE OF gs_tline,
        e_header            TYPE thead,
        BEGIN OF wa_tab,
        tdline              TYPE tline-tdline,                  "Text Lines
        END OF wa_tab,
        td_tab              LIKE STANDARD TABLE OF wa_tab,
        s_output            TYPE zmm_gpr_output,
        str                 TYPE string,
        var                 TYPE string,

        gv_name             TYPE t005t-landx,
        gv_region_name      TYPE t005u-bezei,

        v_gpr_no            TYPE zzm_gpr_no,
        v_zyear             TYPE zzm_year,
        v_create            TYPE zzm_crt_dt,
        v_werks             TYPE werks_d,
        v_lgort             TYPE t001l-lgort,
        v_name              TYPE string,
        v_name1             TYPE string,
        v_name2             TYPE string,
        v_stras             TYPE string,
        v_stras1            TYPE string,
        v_stras2            TYPE string,
        v_stras3            TYPE string,
        v_stras4            TYPE string,
        v_stras5            TYPE string,
        v_ort01             TYPE string,
        v_pstlz             TYPE string,
        v_ortpstl           TYPE string,
        v_region            TYPE string,
        v_land1             TYPE string,
        v_regland1          TYPE string,

        dd07v_tab_a         TYPE TABLE OF dd07v,
        dd_tab              TYPE TABLE OF dd07v,
        ds_tab              TYPE dd07v.

FIELD-SYMBOLS:
        <fs_table>          LIKE i_fieldcat,
        <fs>                LIKE gs_fieldcat,
        <fs_gi_output>      LIKE gi_output,
        <fs_gs_output>      LIKE gs_output.

CONSTANTS:
        c_gi_output         TYPE slis_tabname      VALUE 'GI_OUTPUT',
        c_gpr_print         TYPE trdir-name        VALUE 'ZMM_GPR_PRINT_TOP',
        c_struc_name        TYPE dd02l-tabname     VALUE 'ZMM_GPR_OUTPUT',
        c_sel(7)            TYPE c                 VALUE 'GV_SEL',
        c_pf_status         TYPE slis_formname     VALUE 'PF_STATUS',
        c_inter             TYPE slis_formname     VALUE 'INTER',
        c_print(7)          TYPE c                 VALUE 'PRINT',
        c_menu              TYPE GUI_STATUS        VALUE 'ZMM_GPR_MENU',
        c_back(5)           TYPE c                 VALUE 'BACK',
        c_z_gate            LIKE e_header-tdobject VALUE 'Z_GATE',
        c_zgpr              LIKE e_header-tdid     VALUE 'ZGPR',
        c_tilt              TYPE c                 VALUE '~',
        c_sep               TYPE c                 VALUE '-',
        c_coma              TYPE c                 VALUE ',',
        c_x                 TYPE c                 VALUE 'X',
        c_adobe             TYPE fpname            VALUE 'ZMM_GPR_ADOBE',
        c_s                 TYPE c                 VALUE 'S',
        c_e                 TYPE c                 VALUE 'E',
        c                   TYPE c                 VALUE '.',
        c_10                TYPE c                 VALUE '/',
        c_frieght           TYPE dd01l-domname     VALUE 'YFREIGHT',
        c_insu              TYPE dd01l-domname     VALUE 'YINSU',
        c_octr              TYPE dd01l-domname     VALUE 'Y0CTR'.
***************************************************************************************************************

*&---------------------------------------------------------------------*
*&  Include           ZMM_GPR_PRINT_S01
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-a00.
SELECT-OPTIONS:s_gpr_no FOR  v_gpr_no ,
               s_zyear  FOR  v_zyear NO INTERVALS OBLIGATORY,
               s_create FOR  v_create,
               s_werks  FOR  v_werks,
               s_lgort  FOR  v_lgort.
SELECTION-SCREEN END OF BLOCK b1.

AT SELECTION-SCREEN.      "Validating Gate pass request number, year of creation and created on

  SELECT gpr_no FROM zmm_gprh INTO v_gpr_no UP TO 1 ROWS WHERE gpr_no     IN s_gpr_no
                                                           AND zyear      IN s_zyear
                                                           AND created_on IN s_create.
  ENDSELECT.
  IF sy-subrc <> 0.
    MESSAGE e100 DISPLAY LIKE c_s.
  ENDIF.

AT SELECTION-SCREEN ON s_werks.     "Validating Plant

  SELECT werks FROM t001w INTO v_werks UP TO 1 ROWS WHERE werks IN s_werks.
  ENDSELECT.
  IF sy-subrc <> 0.
    MESSAGE e103 DISPLAY LIKE c_s.
  ENDIF.

AT SELECTION-SCREEN ON s_lgort.     "Validating Storage Location

  SELECT lgort FROM t001l INTO v_lgort UP TO 1 ROWS WHERE lgort IN s_lgort.
  ENDSELECT.
  IF sy-subrc <> 0.
    MESSAGE e104 DISPLAY LIKE c_s.
  ENDIF.

***************************************************************************
*&---------------------------------------------------------------------*
*&  Include           ZMM_GPR_PRINT_D01
*&---------------------------------------------------------------------*

START-OF-SELECTION.
PERFORM zmm_get_data_f01.         "Fetching data
PERFORM zmm_combine_data_f02.     "Moving data into single internal table
PERFORM zmm_display_data_f03.     "Display data

*********************************************************************************************************************
*&---------------------------------------------------------------------*
*&  Include           ZMM_GPR_PRINT_F01
*&---------------------------------------------------------------------*

FORM zmm_get_data_f01.

  SELECT gpr_no
         zyear
         sy_created_by
         created_by
         created_on
         created_ph
         released
         released_by
         text
         FROM zmm_gprh INTO
         TABLE  gi_zmm_gprh WHERE gpr_no IN s_gpr_no
                              AND zyear IN s_zyear
                              AND created_on IN s_create
                              AND deleted NE c_x.
  IF sy-subrc = 0.
    IF gi_zmm_gprh IS NOT INITIAL.
      SORT gi_zmm_gprh BY gpr_no.
      SELECT gpr_no
             zyear
             posnr
             lgort
             kostl
             wo_ref
             wo_ref_dt
             mo_no
             mo_dt
             matnr
             quan_iss
             wt_unit
             apprx_value
             FROM zmm_gp_it_det INTO  TABLE gi_zmm_gpit
             FOR ALL ENTRIES IN gi_zmm_gprh WHERE gpr_no = gi_zmm_gprh-gpr_no
                                              AND zyear IN s_zyear
                                              AND lgort IN s_lgort.
      IF sy-subrc <> 0.
        MESSAGE s106 DISPLAY LIKE c_e.
        LEAVE LIST-PROCESSING.
      ENDIF.

      SELECT gpr_no
             zyear
             returnable
             exp_ret_date
             werks
             lifnr
             name1
             stras
             ort01
             ort02
             pstlz
             region
             land1
             tel_number
             tel_extn
             fax_number
             fax_extn
             v_cst_no
             v_gst_no
             v_vat
             mode_of_trans
             mat_rec
             freight
             insu_payer
             octr_payer
             FROM zmm_gp_ot_det INTO TABLE gi_zmm_gpot
             FOR ALL ENTRIES IN gi_zmm_gprh WHERE gpr_no = gi_zmm_gprh-gpr_no
                                              AND zyear IN s_zyear
                                              AND werks IN s_werks.
      IF sy-subrc <> 0.
        MESSAGE s106 DISPLAY LIKE c_e.
        LEAVE LIST-PROCESSING.
      ENDIF.

    ENDIF.
  ELSE.
    MESSAGE s106 DISPLAY LIKE c_e.
    LEAVE LIST-PROCESSING.
  ENDIF.

  IF gi_zmm_gpit IS NOT INITIAL.
    li_zmm_gpit[] = gi_zmm_gpit[].
    SORT gi_zmm_gpit BY lgort.
    DELETE ADJACENT DUPLICATES FROM li_zmm_gpit COMPARING lgort.
    SELECT lgort lgobe FROM t001l INTO TABLE gi_t001l
           FOR ALL ENTRIES IN li_zmm_gpit
           WHERE lgort = li_zmm_gpit-lgort.
    REFRESH li_zmm_gpit[].
    li_zmm_gpit[] = gi_zmm_gpit[].
    SORT gi_zmm_gpit BY kostl.
    DELETE ADJACENT DUPLICATES FROM li_zmm_gpit COMPARING kostl.
    SELECT kostl ltext FROM cskt INTO TABLE gi_cskt
           FOR ALL ENTRIES IN li_zmm_gpit
           WHERE kostl = li_zmm_gpit-kostl
             AND spras = sy-langu.
    REFRESH li_zmm_gpit[].
    li_zmm_gpit[] = gi_zmm_gpit[].
    SORT gi_zmm_gpit BY matnr.
    DELETE ADJACENT DUPLICATES FROM li_zmm_gpit COMPARING matnr.
    SELECT matnr maktx FROM makt INTO TABLE gi_makt
           FOR ALL ENTRIES IN li_zmm_gpit
           WHERE matnr = li_zmm_gpit-matnr
             AND spras = sy-langu.

  ENDIF.

  IF gi_zmm_gpot IS NOT INITIAL.
    li_zmm_gpot[] = gi_zmm_gpot.
    SORT li_zmm_gpot BY werks.
    DELETE ADJACENT DUPLICATES FROM li_zmm_gpot COMPARING werks.
    SELECT werks name1 FROM t001w INTO TABLE gi_t001w
                       FOR ALL ENTRIES IN li_zmm_gpot
                       WHERE werks = li_zmm_gpot-werks.
  ENDIF.
ENDFORM.                    "get_data


*&---------------------------------------------------------------------*
*&      Form  combine_data
*&---------------------------------------------------------------------*
*       Moving data into single internal table
*----------------------------------------------------------------------*
FORM zmm_combine_data_f02.

  SORT gi_zmm_gpit  BY gpr_no.
  SORT gi_zmm_gpot  BY gpr_no.
  SORT gi_t001l     BY lgort.
  SORT gi_t001w     BY werks.
  SORT gi_zmm_gprh  BY gpr_no.

  LOOP AT gi_zmm_gpot INTO gs_zmm_gpot.
    READ TABLE gi_zmm_gprh INTO gs_zmm_gprh WITH KEY gpr_no = gs_zmm_gpot-gpr_no BINARY SEARCH.
    IF sy-subrc = 0.
      READ TABLE gi_zmm_gpit INTO gs_zmm_gpit WITH KEY gpr_no = gs_zmm_gprh-gpr_no BINARY SEARCH.
      IF sy-subrc = 0.

        gs_output-gpr_no        = gs_zmm_gprh-gpr_no.
        gs_output-created_on    = gs_zmm_gprh-created_on.
        gs_output-created_by    = gs_zmm_gprh-created_by.
        gs_output-released      = gs_zmm_gprh-released.
        gs_output-released_by   = gs_zmm_gprh-released_by.
        gs_output-lgort         = gs_zmm_gpit-lgort.

        gs_output-werks       = gs_zmm_gpot-werks.
        gs_output-lifnr       = gs_zmm_gpot-lifnr.
        gs_output-name1       = gs_zmm_gpot-name1.
        gs_output-returnable  = gs_zmm_gpot-returnable.
        READ TABLE gi_t001l INTO gs_t001l WITH KEY lgort = gs_zmm_gpit-lgort BINARY SEARCH.
        IF sy-subrc = 0.
          gs_output-lgobe     = gs_t001l-lgobe.
        ENDIF.
        READ TABLE gi_t001w INTO gs_t001w WITH KEY werks = gs_zmm_gpot-werks BINARY SEARCH.
        IF sy-subrc = 0.
          gs_output-werks_desc = gs_t001w-name1.
        ENDIF.

        gs_output-gv_sel = icon_wd_radio_button_empty.

        APPEND gs_output TO gi_output.
        CLEAR:gs_output, gs_zmm_gprh, gs_zmm_gpit, gs_zmm_gpot, gs_t001l, gs_t001w.
      ENDIF.
    ENDIF.
  ENDLOOP.
ENDFORM.                    "combine_data



*&---------------------------------------------------------------------*
*&      Form  display_data
*&---------------------------------------------------------------------*
*       Display the Data
*----------------------------------------------------------------------*
FORM zmm_display_data_f03.

  PERFORM zmm_alv_fcat.                      "FieldCatalog FM

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  ASSIGN i_fieldcat TO <fs_table>.
  ASSIGN gs_fieldcat TO <fs>.

  SORT <fs_table> BY fieldname.
  READ TABLE <fs_table> ASSIGNING <fs> WITH KEY fieldname = c_sel BINARY SEARCH.
  IF sy-subrc = 0.
    <fs>-hotspot   = c_x.
    <fs>-icon      = c_x.

  ENDIF.

  PERFORM zmm_alv_grid.                     "ALV Grid FM

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.                    "display_data


*&---------------------------------------------------------------------*
*&      Form  INTER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->UCOMM      Function code that PAI triggered
*      -->SELFIELD   Information cursor position ALV
*----------------------------------------------------------------------*
FORM inter USING ucomm TYPE sy-ucomm
selfield TYPE slis_selfield.

  IF sy-ucomm = c_print.
    EXIT.
  ENDIF.
  CASE selfield-fieldname.
    WHEN c_sel.

      ASSIGN: gi_output TO <fs_gi_output>,
              gs_output TO <fs_gs_output>.
      SORT <fs_gi_output> BY gv_sel gpr_no.
      READ TABLE <fs_gi_output> ASSIGNING <fs_gs_output> WITH KEY gv_sel = icon_radiobutton BINARY SEARCH.

      IF sy-subrc = 0.
        <fs_gs_output>-gv_sel = icon_wd_radio_button_empty.
        SORT gi_output BY gpr_no.
        READ TABLE <fs_gi_output> ASSIGNING <fs_gs_output> INDEX selfield-tabindex.
        <fs_gs_output>-gv_sel = icon_radiobutton.
      ELSE.
        READ TABLE <fs_gi_output> ASSIGNING <fs_gs_output> INDEX selfield-tabindex.
        <fs_gs_output>-gv_sel = icon_radiobutton.
      ENDIF.
  ENDCASE.
  selfield-refresh = c_x.
ENDFORM.                    "user_command

*&---------------------------------------------------------------------*
*&      Form  PF_STATUS
*&---------------------------------------------------------------------*
*       Interactive Subroutine
*----------------------------------------------------------------------*
*      -->UT_EXTAB   Excluding Table
*----------------------------------------------------------------------*
FORM pf_status USING ut_extab TYPE slis_t_extab.            "#EC CALLED
  SET PF-STATUS c_menu .
  CASE sy-ucomm.
    WHEN c_back.
      LEAVE TO SCREEN 0.
    WHEN c_print.
      CLEAR: s_struct, gs_zmm_gpot, gs_zmm_gprh.
      SORT gi_output BY gv_sel.
      READ TABLE gi_output INTO gs_output WITH KEY gv_sel = icon_radiobutton BINARY SEARCH.
      IF sy-subrc = 0.

        PERFORM get_data_to_finalstruct.  "Moving header and other data to the structure

        PERFORM get_data_to_finaltab.     "Moving Item data to final internal table

        PERFORM calling_form.             "Calling the Adobe Form

      ELSE.
        MESSAGE i105 DISPLAY LIKE c_e.
      ENDIF.
  ENDCASE.
  SORT gi_output BY gpr_no.
ENDFORM.                    "PF_STATUS
*&---------------------------------------------------------------------*
*&      Form  SUB3
*&---------------------------------------------------------------------*
*       Item Details
*----------------------------------------------------------------------*
*      -->P_1222                  Item
*      -->P_gs_zmm_gpr_MATNR      Material Details
*      -->P_gs_zmm_gpr_WT_UNIT    Units of Measure
*      -->P_gs_zmm_gpr_QUAN_ISS   Quantity Issued
*      -->P_gs_zmm_gpr_LGORT      Storage Location Details
*      -->P_gs_zmm_gpr_KOSTL      Cost Centre Details
*      -->P_gs_zmm_gpr_WO_REF     Workorder Reference Details
*      -->P_gs_zmm_gpr_MO_NO      Maintainence Order Deatils
*      -->P_gs_zmm_gpr_APPRX_VALUE Approximate Value
*----------------------------------------------------------------------*
FORM sub3  USING    value(p_1222)
                    p_gs_zmm_gpr_matnr
                    p_gs_zmm_gpr_wt_unit
                    p_gs_zmm_gpr_quan_iss
                    p_gs_zmm_gpr_lgort
                    p_gs_zmm_gpr_kostl
                    p_gs_zmm_gpr_wo_ref
                    p_gs_zmm_gpr_mo_no
                    p_gs_zmm_gpr_apprx_value.

  gs_final-item_no            = p_1222.
  gs_final-material           = p_gs_zmm_gpr_matnr.
  gs_final-uom                = p_gs_zmm_gpr_wt_unit.
  gs_final-quantity           = p_gs_zmm_gpr_quan_iss.
  gs_final-storage            = p_gs_zmm_gpr_lgort.
  gs_final-cost_center        = p_gs_zmm_gpr_kostl.
  IF p_gs_zmm_gpr_wo_ref IS NOT INITIAL.
    WRITE p_gs_zmm_gpr_wo_ref TO gs_final-wo_ref.
  ENDIF.
  IF p_gs_zmm_gpr_mo_no IS NOT INITIAL.
    WRITE p_gs_zmm_gpr_mo_no    TO gs_final-maint_order.
  ENDIF.
  gs_final-approximate_value  = p_gs_zmm_gpr_apprx_value.

  APPEND gs_final TO gi_final.
  CLEAR gs_final.
ENDFORM.                    " SUB3
*&---------------------------------------------------------------------*
*&      Form  ZMM_SUB1_F05
*&---------------------------------------------------------------------*
*       To get the description from domain level
*----------------------------------------------------------------------*
*      -->P_DOMAIN    Domain name
*      <--P_TAB       View on fixed values and domain texts
*----------------------------------------------------------------------*
FORM zmm_sub1_f05  USING   p_domain LIKE dd01l-domname
                            p_dom
                   CHANGING p_tab TYPE dd07v.


  CALL FUNCTION 'DD_DOMA_GET'
    EXPORTING
      domain_name   = p_domain
    TABLES
      dd07v_tab_a   = dd07v_tab_a
      dd07v_tab_n   = dd_tab
    EXCEPTIONS
      illegal_value = 1
      op_failure    = 2
      OTHERS        = 3.

  IF sy-subrc <> 0.

  ENDIF.
  READ TABLE dd_tab INTO p_tab WITH KEY domvalue_l = p_dom.
ENDFORM.                    " ZMM_SUB1_F05
*&---------------------------------------------------------------------*
*&      Form  READ_TEXT_F06
*&---------------------------------------------------------------------*
*       Long Text
*----------------------------------------------------------------------*

FORM read_text_f06 .
  REFRESH i_tline.
  e_header-tdobject             =  c_z_gate.
  e_header-tdid                 =  c_zgpr.
  e_header-tdspras              = sy-langu.
  e_header-tdlinesize           =  132.
  e_header-tdname               = gs_zmm_gprh-gpr_no.

  CALL FUNCTION 'READ_TEXT'
    EXPORTING
      client                  = sy-mandt
      id                      = e_header-tdid
      language                = e_header-tdspras
      name                    = e_header-tdname
      object                  = c_z_gate
    TABLES
      lines                   = i_tline
    EXCEPTIONS
      id                      = 1
      language                = 2
      name                    = 3
      not_found               = 4
      object                  = 5
      reference_check         = 6
      wrong_access_to_archive = 7
      OTHERS                  = 8.

ENDFORM.                    " READ_TEXT_F06
*&---------------------------------------------------------------------*
*&      Form  FM_REGION_F07
*&---------------------------------------------------------------------*
*       Calling FM for Region Descripton
*----------------------------------------------------------------------*

FORM fm_region_f07 .

  CALL FUNCTION 'HRWPC_RFC_BLAND_TEXT_GET'
    EXPORTING
      land       = gs_zmm_gpot-land1  " eg: IN
      bland      = gs_zmm_gpot-region  " eq: 06
      langu      = sy-langu
    IMPORTING
      bland_text = gv_region_name.

ENDFORM.                    " FM_REGION_F07
*&---------------------------------------------------------------------*
*&      Form  FM_COUNTRY_F08
*&---------------------------------------------------------------------*
*       Calling FM for Country Description
*----------------------------------------------------------------------*
FORM fm_country_f08 .
  CALL FUNCTION 'DR_GET_COUNTRY_NAME'
    EXPORTING
      country  = gs_zmm_gpot-land1  " Country key
      language = sy-langu
    IMPORTING
      name     = gv_name.
ENDFORM.                    " FM_COUNTRY_F08
*&---------------------------------------------------------------------*
*&      Form  FM_USER_READ_F09
*&---------------------------------------------------------------------*
*       Calling FM for User full name
*----------------------------------------------------------------------*
FORM fm_user_read_f09 .
  CALL FUNCTION 'SO_USER_READ_API1'
    EXPORTING
      user                      = gs_user
      prepare_for_folder_access = space
    IMPORTING
      user_data                 = gs_user_data
    EXCEPTIONS
      user_not_exist            = 1
      parameter_error           = 2
      x_error                   = 3
      OTHERS                    = 4.
ENDFORM.                    " FM_USER_READ_F09
*&---------------------------------------------------------------------*
*&      Form  GET_DATA_TO_FINALTAB
*&---------------------------------------------------------------------*
*       Moving Item data to final internal table
*----------------------------------------------------------------------*
FORM get_data_to_finaltab .
  SORT gi_makt  BY matnr.
  SORT gi_t001l BY lgort.
  SORT gi_cskt  BY kostl.
  SORT gi_zmm_gpit BY posnr.
  REFRESH gi_final[].
  LOOP AT gi_zmm_gpit INTO gs_zmm_gpit WHERE gpr_no = gs_output-gpr_no.
    READ TABLE gi_makt INTO gs_makt WITH KEY matnr = gs_zmm_gpit-matnr BINARY SEARCH.
    READ TABLE gi_t001l INTO gs_t001l WITH KEY lgort = gs_zmm_gpit-lgort BINARY SEARCH.
    READ TABLE gi_cskt INTO gs_cskt WITH KEY kostl = gs_zmm_gpit-kostl BINARY SEARCH.

    PERFORM sub3 USING space gs_zmm_gpit-matnr gs_zmm_gpit-wt_unit gs_zmm_gpit-quan_iss
                       gs_zmm_gpit-lgort gs_zmm_gpit-kostl gs_zmm_gpit-wo_ref gs_zmm_gpit-mo_no
                       gs_zmm_gpit-apprx_value.
    PERFORM sub3 USING gs_zmm_gpit-posnr gs_makt-maktx space space gs_t001l-lgobe gs_cskt-ltext gs_zmm_gpit-wo_ref_dt
                       gs_zmm_gpit-mo_dt space.
  ENDLOOP.

  CLEAR: gi_makt, gs_makt, gi_t001l, gs_t001l, gi_cskt, gs_cskt, gs_zmm_gpit.

ENDFORM.                    " GET_DATA_TO_FINALTAB
*&---------------------------------------------------------------------*
*&      Form  GET_DATA_TO_FINALSTRUCT
*&---------------------------------------------------------------------*
*       Moving header and other data to the structure
*----------------------------------------------------------------------*
FORM get_data_to_finalstruct .

  SORT gi_zmm_gprh BY gpr_no.
  READ TABLE gi_zmm_gprh INTO gs_zmm_gprh WITH KEY gpr_no = gs_output-gpr_no BINARY SEARCH.
  IF sy-subrc = 0.

    s_struct-gpr_no               = gs_zmm_gprh-gpr_no.
    s_struct-sy_created_by        = gs_zmm_gprh-sy_created_by.
    s_struct-gpr_created_uname    = gs_zmm_gprh-created_by.

    IF gs_zmm_gprh-created_on IS NOT INITIAL.
      WRITE gs_zmm_gprh-created_on TO s_struct-gpr_date.
    ENDIF.
    s_struct-gpr_created_phone    = gs_zmm_gprh-created_ph.
    s_struct-gpr_released_by      = gs_zmm_gprh-released_by.
    s_struct-reason_for_movement  = gs_zmm_gprh-text.

    PERFORM read_text_f06.              "Reading long text

    IF sy-subrc = 0.
      LOOP AT i_tline INTO gs_tline.
        var =  str.
        CONCATENATE var gs_tline-tdline INTO str.
      ENDLOOP.
      s_struct-long_text = str.
    ENDIF.
  ENDIF.
  SORT gi_zmm_gpot BY gpr_no.
  READ TABLE gi_zmm_gpot INTO gs_zmm_gpot WITH KEY gpr_no = gs_zmm_gprh-gpr_no BINARY SEARCH .
  IF sy-subrc = 0.
    s_struct-plant = gs_zmm_gpot-werks.
    s_struct-vendor_account = gs_zmm_gpot-lifnr.

    v_name                 = gs_zmm_gpot-name1.
    SPLIT v_name AT c_tilt INTO v_name1 v_name2.
    s_struct-vendor_name1 = v_name1.
    s_struct-vendor_name2 = v_name2.
    v_stras               = gs_zmm_gpot-stras.
    SPLIT v_stras AT c_tilt INTO v_stras1 v_stras2 v_stras3 v_stras4 v_stras5.
    s_struct-v_addrline1 = v_stras1.
    s_struct-v_addrline2 = v_stras2.
    s_struct-v_addrline3 = v_stras3.
    s_struct-v_addrline4 = v_stras4.
    s_struct-v_addrline5 = v_stras5.
    s_struct-v_addrline6 = gs_zmm_gpot-ort02.
    v_ort01              = gs_zmm_gpot-ort01.
    v_pstlz              = gs_zmm_gpot-pstlz.

    IF v_ort01 IS NOT INITIAL AND v_pstlz IS NOT INITIAL.
      CONCATENATE v_ort01 v_pstlz INTO v_ortpstl SEPARATED BY c_sep.
    ELSEIF v_ort01 IS NOT INITIAL OR v_pstlz IS NOT INITIAL.
      IF v_ort01 IS INITIAL.
        v_ortpstl = v_pstlz.
      ELSEIF v_pstlz IS INITIAL.
        v_ortpstl = v_ort01.
      ENDIF.
    ENDIF.
    s_struct-v_addrline7 = v_ortpstl.

    PERFORM fm_region_f07.                " Calling FM for Region Descripton

    IF sy-subrc = 0.
      v_region       = gv_region_name.
    ENDIF.
    PERFORM fm_country_f08.               " Calling FM for Country Description

    IF sy-subrc = 0.
      v_land1        = gv_name.
    ENDIF.

    v_region             = gv_region_name.
    v_land1              = gv_name.

    IF v_region IS NOT INITIAL AND v_land1 IS NOT INITIAL.
      CONCATENATE v_region v_land1 INTO v_regland1 SEPARATED BY c_coma.
    ELSEIF v_region IS NOT INITIAL OR v_land1 IS NOT INITIAL.
      IF v_region IS INITIAL.
        v_regland1 = v_land1.
      ELSEIF v_land1 IS INITIAL.
        v_regland1 = v_region.
      ENDIF.
    ENDIF.


    s_struct-v_addrline8 = v_regland1.
    CONCATENATE gs_zmm_gpot-tel_number gs_zmm_gpot-tel_extn INTO s_struct-tel_extn SEPARATED BY c_10.
    CONCATENATE gs_zmm_gpot-fax_number gs_zmm_gpot-fax_extn INTO s_struct-fax_extn SEPARATED BY c_10.

    s_struct-cst_no      = gs_zmm_gpot-v_cst_no.
    s_struct-lst_no      = gs_zmm_gpot-v_gst_no.
    s_struct-vat_no      = gs_zmm_gpot-v_vat.
    IF gs_zmm_gpot-returnable = c_x.
      s_struct-returnable = text-a01.
    ELSE.
      s_struct-returnable = text-a02.
    ENDIF.
    IF gs_zmm_gpot-exp_ret_date IS NOT INITIAL.
      WRITE gs_zmm_gpot-exp_ret_date TO s_struct-exp_return_date.
    ENDIF.
    PERFORM zmm_sub1_f05 USING c_frieght            "Reading text from Freight Domain
                               gs_zmm_gpot-freight
                         CHANGING ds_tab.

    s_struct-freight              = ds_tab-ddtext.
    CLEAR:ds_tab,dd_tab.
    PERFORM zmm_sub1_f05 USING c_insu               "Reading text from Insurance Domain
                               gs_zmm_gpot-insu_payer
                         CHANGING ds_tab.
    s_struct-insurance            = ds_tab-ddtext.
    CLEAR:ds_tab,dd_tab.
    PERFORM zmm_sub1_f05 USING c_octr               "Reading text from Octroi Domain
                               gs_zmm_gpot-insu_payer
                         CHANGING ds_tab.
    s_struct-octroi               = ds_tab-ddtext.
    CLEAR:ds_tab,dd_tab.

    s_struct-mot             = gs_zmm_gpot-mode_of_trans.
    s_struct-mat_rec         = gs_zmm_gpot-mat_rec.
    s_struct-sy_created_by   = gs_zmm_gprh-sy_created_by.

    gs_user-sapname = sy-uname.
    PERFORM fm_user_read_f09.                       "Calling FM for User full name

    IF sy-subrc <> 0.

    ENDIF.

    s_struct-gpr_rel_name = gs_user_data-fullname.

  ENDIF.
  SORT gi_t001w BY werks.
  READ TABLE gi_t001w INTO gs_t001w WITH KEY werks = gs_zmm_gpot-werks BINARY SEARCH.
  IF sy-subrc = 0.
    s_struct-description = gs_t001w-name1.
    clear gs_t001w.

  ENDIF.

  CLEAR: var, str, v_name1, v_name2, v_stras1, v_stras2, v_stras3, v_stras4, v_stras5,
         v_name, v_ort01, v_pstlz, v_ortpstl, v_region, gv_region_name, v_land1, gv_name,
         v_regland1.

ENDFORM.                    " GET_DATA_TO_FINALSTRUCT
*&---------------------------------------------------------------------*
*&      Form  CALLING_FORM
*&---------------------------------------------------------------------*
*       Calling the Adobe Form
*----------------------------------------------------------------------*
FORM calling_form .
  CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
    EXPORTING
      i_name     = c_adobe
    IMPORTING
      e_funcname = wa_funcnm.

  fp_outputparams-reqnew = c_x.

  CALL FUNCTION 'FP_JOB_OPEN'
    CHANGING
      ie_outputparams = fp_outputparams
    EXCEPTIONS
      cancel          = 1
      usage_error     = 2
      system_error    = 3
      internal_error  = 4
      OTHERS          = 5.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  fp_docparams-langu     = sy-langu.
  fp_docparams-fillable  = c_x.
  fp_docparams-dynamic   = c_x.

  CALL FUNCTION wa_funcnm
    EXPORTING
      /1bcdwb/docparams  = fp_docparams
      gi_final           = gi_final
      s_struct           = s_struct
    IMPORTING
      /1bcdwb/formoutput = fp_formoutput
    EXCEPTIONS
      usage_error        = 1
      system_error       = 2
      internal_error     = 3
      OTHERS             = 4.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  CALL FUNCTION 'FP_JOB_CLOSE'
    EXCEPTIONS
      usage_error    = 1
      system_error   = 2
      internal_error = 3
      OTHERS         = 4.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.                    " CALLING_FORM
*&---------------------------------------------------------------------*
*&      Form  ZMM_ALV_FCAT
*&---------------------------------------------------------------------*
*       FieldCatalog FM
*----------------------------------------------------------------------*
FORM zmm_alv_fcat .

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name         = sy-repid
      i_internal_tabname     = c_gi_output
      i_inclname             = c_gpr_print
      i_structure_name       = c_struc_name
      i_bypassing_buffer     = c_x
    CHANGING
      ct_fieldcat            = i_fieldcat[]
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.

ENDFORM.                    " ZMM_ALV_FCAT
*&---------------------------------------------------------------------*
*&      Form  ZMM_ALV_GRID
*&---------------------------------------------------------------------*
*       ALV Grid FM
*----------------------------------------------------------------------*
FORM zmm_alv_grid .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = sy-repid
      i_callback_pf_status_set = c_pf_status
      i_callback_user_command  = c_inter
      it_fieldcat              = i_fieldcat
    TABLES
      t_outtab                 = gi_output
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.

ENDFORM.                    " ZMM_ALV_GRID


INPUT:






No comments:

Post a Comment