Module pool-structure calling

Hi experts,
INPUT
Plant (WERKS)
MRP Controller (MARC-DISPO)
DATE
OUT PUT
WORK SCHEDULE NO: MERGE(push button)
PLANNED ORDER NO
MATERIAL NO
MATERIAL DESCRIPTION
QUANTITY
SET
PRIORITY
WORK SCHEDULE NO: should be taken from req plan number (PLAF/PBIM-PBDNR)
PLANNED ORDER NO (PLAF-PLNUM)
MATERIAL NUMBER (PLAF-MATNR)
MATERIAL DESCRIPTION
QUANTITY (PLAF-GSMNG)
SET: here provision should be given to enter the numeric value (default it should be 1)
PRIORITY: provision should be given to enter the numeric value
MERGE: this can be a push button, which is used to merge two planned orders into one
here, i have created one structure.......and i called in internal table...
data: begin of spp occurs 0.
        include structure zsppmod.
data: end of spp.
data: begin of it_itab occurs 0,
      werks like marc-werks,
      dispo like marc-dispo,
      psttr like plaf-psttr,
      pbdnr like plaf-pbdnr,
      plnum like plaf-plnum,
      matnr like plaf-matnr,
      gsmng like plaf-gsmng,
      maktx like makt-maktx,
      p_set like zsppmod-pset,
      priority like zsppmod-priority,
end of it_itab.
  select single * from it_itab
   into spp
   where plant = zsppmod-werks
         mrpcontroller = zsppmod-dispo
         date = zsppmod-psttr.
endselect.
like this i called.....when i activate my prog i got one error
ERROR:
"IT_ITAB" is not defined in the ABAP Dictionary as a table, projection view or database view.          
how to call structure to internal table.....
plz help me.......
with regards,
Uma

Hi Uma,
Instead of using Select statement on Internal table u use MOVE CORRESPONDING <structure> TO <internal Table>.
awrd points if useful
Bhupal

Similar Messages

  • Module Pool Programming - Calling SAP Standard Text Screen

    Hi Gurus
    I am working on Module Pool Programming...In the one of the screen there is a column named "Description"  where I need to keep a Button to call a SAP standard text editing screen and what ever information I enter in the field should be downloadable
    is this option possible?If so...Plz send me the Sample code
    Thanks
    Ganesh

    Hi Gani,
    I can help you till getting the text editor in your module pool program.
    TOP
    PROGRAM  ZREDDY_TEXT.
    constants: line_length type i value 132.
       data:
    reference to wrapper class of control
       g_editor type ref to cl_gui_textedit,
    reference to custom container: necessary to bind TextEdit Control
       g_editor_container type ref to cl_gui_custom_container,
       g_repid like sy-repid,                        " getting program name
       g_ok_code like sy-ucomm,                " return code from screen
       g_mytable(132) type c occurs 0,        " getting the text of table
       g_mycontainer(30) type c,                " string for the containers
       v_result(256) type c,                        " getting the text of table control
       gw_thead like thead,                        " for header information
       it_line type table of tline with header line. " internal table of type tline
    PBO
    MODULE STATUS_0900 OUTPUT.
      SET PF-STATUS 'ZTEXT'.
    SET TITLEBAR 'xxx'.
    if g_editor is initial.
    create control container
       create object g_editor_container
       exporting
       container_name = 'CUSTOM_CONTROL' " Make sure when you create custom container in layout give name as Custom container
       exceptions
       cntl_error = 1
       cntl_system_error = 2
       create_error = 3
       lifetime_error = 4
       lifetime_dynpro_dynpro_link = 5.
       g_mycontainer = 'CUSTOM_CONTROL'.
    create calls constructor, which initializes, creates and links
    TextEdit Control
      create object g_editor
       exporting
       parent = g_editor_container
       wordwrap_mode =
    cl_gui_textedit=>wordwrap_off
       cl_gui_textedit=>wordwrap_at_fixed_position
    cl_gui_textedit=>WORDWRAP_AT_WINDOWBORDER
       wordwrap_position                      = line_length
       wordwrap_to_linebreak_mode     = cl_gui_textedit=>true.
       refresh g_mytable.  " to initialize table upon OK_CODE 'BACK' at PAI
       endif.
    ENDMODULE.                 " STATUS_0900  OUTPUT
    Cheers!!
    Balu
    Edited by: Balu CH on Oct 22, 2008 8:55 PM

  • Regarding Module Pool's Cancel button

    Hi Guys,
    Please help me I have created on Module Pool and now this module pool is called through a a UserExit .
    now the thing is if i cancel button which is placed on my popup screen then it is still going into the output which is wrong it should show up the previous screen.
    My code for the Sy-ucomm = cancel is
    IF SY-UCOMM = 'CANC'.
        SET SCREEN 0.
        LEAVE SCREEN.
      ENDIF.
    Can you please provide me some code by which i can go to the previous screen.

    I am calling the Module pool through User exit and inside user exit i am calling FM which calls my screen.
    Userexit -> FM -> ModulePool
    here is the code :
    ***INCLUDE LZRMA_NOTIFO01 .
    *&      Module  STATUS_0150  OUTPUT
    *       text
    MODULE STATUS_0150 OUTPUT.
    *  SET PF-STATUS SY-DYNNR.
    *  SET TITLEBAR SY-DYNNR.
    ENDMODULE.                 " STATUS_0150  OUTPUT
    *&      Module  CUA_STATUS  OUTPUT
    *       text
    MODULE CUA_STATUS OUTPUT.
    *  SET PF-STATUS SY-DYNNR.
    *  SET TITLEBAR SY-DYNNR.
    ENDMODULE.                 " CUA_STATUS  OUTPUT
    *&      Module  EXIT_SCREEN  INPUT
    *       text
    MODULE EXIT_SCREEN INPUT.
      DATA:      C_FCODE_ABBR   LIKE SY-PFKEY  VALUE 'ABBR' .
    break-point.
      CASE OK-CODE.
        WHEN C_FCODE_ABBR.
    *-- Abbrechen
    *   Daten zurücknehmen
          CLEAR RQM01.
    *      RAISE CANCEL.
          set screen 0.
          LEAVE TO SCREEN 0.
            call transaction 'QM01'.
      ENDCASE.
    IF SY-UCOMM = 'CANC'. "  Here is the SY-UCOMM Where i have to handle the CANC BUTTON
    *    SET SCREEN 0.
    *    LEAVE SCREEN.
       LEAVE PROGRAM.
      ENDIF.
    ENDMODULE.                 " EXIT_SCREEN  INPUT
    *&      Module  CHECK_NOTIF_NO  INPUT
    *       text
    MODULE CHECK_NOTIF_NO INPUT.
    *& Below condition checks if the user enter a Notification Num and Porduction
    *  Order Then Message comees Please enter a Prod Order or RMA Notif Num only
    *  Process cannot accept both.
      IF NOT VIQMEL-QMNUM IS INITIAL.
        IF NOT RQM01-FERTAUFNR IS INITIAL.
          MESSAGE E904(QM).    "  Please enter a Prod order or RMA Notif Num only.
                                  "  Process can't accept both
        ENDIF.
      ENDIF.
    *& If Production order is entered, then check if the Order type is 'AES1' or *
    *&  'AES3'AES2,AES4, AES5, AES6,ICSO, PM01, PM02, RMA, SM01, SM02, ZEXR,
    *&   Message flashes ' Please enter only enter RMA Notif Number.       *
      data: v_dauat like afpo-dauat.
      SELECT SINGLE DAUAT INTO V_DAUAT FROM AFPO WHERE AUFNR = RQM01-FERTAUFNR.
      if sy-subrc = 0.
        IF V_DAUAT = 'AES1' OR V_DAUAT = 'AES3' OR
           V_DAUAT = 'AES2' OR V_DAUAT = 'AES4' OR
           V_DAUAT = 'ICSO' OR V_DAUAT = 'PM01' OR
           V_DAUAT = 'PM01' OR V_DAUAT = 'RMA' OR
           V_DAUAT = 'SM01' OR V_DAUAT = 'SM02' OR V_DAUAT = 'ZEXR'..
          MESSAGE E905(QM).    " Please Only enter a RMA Notif Number.
        ENDIF.
      endif.
    ENDMODULE.                 " CHECK_NOTIF_NO  INPUT
    *&      Module  FEAUF_SAAUF_CHECK  INPUT
    *       text
    MODULE FEAUF_SAAUF_CHECK INPUT.
      OK-CODE = SY-UCOMM.
    *Added by CChauhan
      IF VIQMEL-QMNUM IS INITIAL.
    *& End of Addition by CChauhan
        IF  NOT RQM01-FERTAUFNR IS INITIAL
        AND ( NOT RQM01-VERID IS INITIAL
             OR NOT RQM01-RM_WERKS IS INITIAL
             OR NOT RQM01-RM_MATNR IS INITIAL ).
    *   only production order or manufacturing version meaningfully
          MESSAGE E902(QM).
        ENDIF.
    *Added by CChauhan
      ENDIF.
    *& End of Addition by CChauhan
    ENDMODULE.                 " FEAUF_SAAUF_CHECK  INPUT
    *&      Module  FEAUF_FEPOS_CHECK  INPUT
    *       text
    MODULE FEAUF_FEPOS_CHECK INPUT.
      IF VIQMEL-QMNUM = ''.
        IF      RQM01-FERTAUFNR = ''
        AND RQM01-FERTVORNR <> ''.
          MESSAGE E903(QM).
        ENDIF.
      ENDIF.
      IF SY-UCOMM = 'CANC'.
        LEAVE SCREEN.
      ENDIF.
    ENDMODULE.                 " FEAUF_FEPOS_CHECK  INPUT
    *&      Module  FAUF_LESEN  INPUT
    *       text
    MODULE FAUF_LESEN INPUT.
    *& Added by CChauhan  Date: 01/23/2007
    *& Execute further if RMa_Notif(VIQMEL-QMNUM)ield is blank.
    IF VIQMEL-QMNUM IS INITIAL.
    *&End by CChauhan     Date: 01/23/2007
        PERFORM FAUF_LESEN USING RQM01-FERTAUFNR
                                 RQM01-FERTVORNR
                        CHANGING CAUFV
                                 AFVC.
    *   Belegdaten an Qualitätsmeldung übergeben
        PERFORM FAUF_TO_QMEL USING CAUFV
                                   AFVC
                          CHANGING RQM01.
    *& Added by CChauhan  Date: 01/23/2007
    ENDIF.
    *&End by CChauhan     Date: 01/23/2007
    ENDMODULE.                 " FAUF_LESEN  INPUT
    *&      Form  FAUF_LESEN
    *       text
    *      -->P_RQM01_FERTAUFNR  text
    *      -->P_RQM01_FERTVORNR  text
    *      <--P_CAUFV  text
    *      <--P_AFVC  text
    FORM FAUF_LESEN USING VALUE(P_AUFNR) LIKE RQM01-FERTAUFNR
                          VALUE(P_VORNR) LIKE RQM01-FERTVORNR
                 CHANGING VALUE(P_CAUFV) LIKE CAUFV
                          VALUE(P_AFVC)  LIKE AFVC .
      CALL FUNCTION 'QMHL_HELP_FAUF'
        EXPORTING
          I_AUFNR             = P_AUFNR
          I_VORNR             = P_VORNR
          I_FOLGE             = G_FOLGE
        IMPORTING
          E_CAUFV             = P_CAUFV
          E_AFVC              = P_AFVC
        EXCEPTIONS
          ORDER_NOT_FOUND     = 1
          OPERATION_NOT_FOUND = 2
          OTHERS              = 3.
      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.                    " FAUF_LESEN
    *&      Form  FAUF_TO_QMEL
    *       text
    *      -->P_CAUFV  text
    *      -->P_AFVC  text
    *      <--P_RQM01  text
    FORM FAUF_TO_QMEL USING VALUE(P_CAUFV) LIKE CAUFV
                            VALUE(P_AFVC)  LIKE AFVC
                   CHANGING       P_RQM01  LIKE RQM01.
    * zunächst Berechtigung für Meldungsart/Werk prüfen
      PERFORM CHECK_QAUT_QMEL USING SY-TCODE
                                    TQ80-QMART
                                    P_CAUFV-WERKS.
    * Materialnummer des Fertigprodukts ermitteln
      SELECT * FROM AFPO
      WHERE AUFNR = P_CAUFV-AUFNR.
    * Materialnummer steht in der ersten Auftragsposition
        EXIT.
      ENDSELECT.
      IF SY-SUBRC IS INITIAL.
    *   Materialnummer übernehmen
        P_RQM01-MATNR  = AFPO-MATNR.
        IF NOT AFPO-MATNR IS INITIAL.
          PERFORM MATERIAL_CHECK USING AFPO-MATNR.
        ENDIF.
    *   Charge
        P_RQM01-CHARG     =  AFPO-CHARG.
    *--- Lieferantencharge bestimmen
        IF NOT P_RQM01-CHARG IS INITIAL.
          SELECT SINGLE * INTO MCHA FROM MCHA
                  WHERE MATNR =  P_RQM01-MATNR
                  AND   WERKS =  P_RQM01-MAWERK
                  AND   CHARG =  P_RQM01-CHARG.
          IF SY-SUBRC EQ 0.
            MOVE MCHA-LICHA TO P_RQM01-LICHN.
          ENDIF.
        ENDIF.
        P_RQM01-LGORTCHAR =  AFPO-LGORT.
      ENDIF.
      P_RQM01-MAWERK    =  P_CAUFV-WERKS.
      IF NOT AFPO-MATNR IS INITIAL
        AND  NOT P_CAUFV-WERKS IS INITIAL.
        PERFORM MATERIAL_WERK_CHECK USING AFPO-MATNR
                                          P_CAUFV-WERKS.
      ENDIF.
    * Revisionsstand
      P_RQM01-REVLV     =   P_CAUFV-REVLV.
    * reklamierte Menge
      P_RQM01-RKMNG     =   P_CAUFV-GAMNG - P_CAUFV-GASMG.
      P_RQM01-BZMNG     =   P_CAUFV-GAMNG - P_CAUFV-GASMG.
      P_RQM01-MGEIN     =   P_CAUFV-GMEIN.
    * Arbeitsplatz
      P_RQM01-ARBPL = P_AFVC-ARBID.
    * eindeutiger Schluessel fuer Vorgang
      P_RQM01-FERTAUFPL = P_AFVC-AUFPL.
      P_RQM01-PNLKN     = P_AFVC-APLZL.
    * Info über automatische Datenübernahme
      MESSAGE S026(QM) WITH P_CAUFV-AUFNR RQM01-FERTVORNR.
    ENDFORM.                    " FAUF_TO_QMEL
    *&      Form  CHECK_QAUT_QMEL
    *       text
    *      -->P_SY_TCODE  text
    *      -->P_TQ80_QMART  text
    *      -->P_P_CAUFV_WERKS  text
    FORM CHECK_QAUT_QMEL USING VALUE(P_TCODE)
                               VALUE(P_QMART)
                               VALUE(P_WERK).
      CHECK NOT P_WERK IS INITIAL.
      MOVE-CORRESPONDING RQM01 TO H_VIQMEL.
      CALL FUNCTION 'QAUT_QMEL'
        EXPORTING
          I_WERKS  = P_WERK
          I_QMART  = P_QMART
          I_TCODE  = P_TCODE
          I_VIQMEL = H_VIQMEL.
    ENDFORM.                    " CHECK_QAUT_QMEL
    *&      Form  MATERIAL_CHECK
    *       text
    *      -->P_AFPO_MATNR  text
    FORM MATERIAL_CHECK USING  VALUE(P_MATNR).
    *-- lokale Daten
      DATA : BEGIN OF L_DUMMY_TAB OCCURS 0,
               DUMMY(1),
             END   OF L_DUMMY_TAB.
    * Prüfung nur, falls Materialnummer und Werk gefüllt
      CHECK NOT P_MATNR IS INITIAL.
    * Verprobung auf MARA-Segment
      MOVE C_MARA_SEGMENT TO MTCOM-KENNG.
      MOVE P_MATNR        TO MTCOM-MATNR.
      TABLES: MTCOR.
      CALL FUNCTION 'MATERIAL_READ'
        EXPORTING
          SCHLUESSEL           = MTCOM
        IMPORTING
          MATDATEN             = MARA
          RETURN               = MTCOR
        TABLES
          SEQMAT01             = L_DUMMY_TAB
        EXCEPTIONS
          ACCOUNT_NOT_FOUND    = 01
          BATCH_NOT_FOUND      = 02
          FORECAST_NOT_FOUND   = 03
          LOCK_ON_ACCOUNT      = 04
          LOCK_ON_MATERIAL     = 05
          LOCK_ON_PLANT        = 06
          LOCK_ON_SALES        = 07
          LOCK_ON_SLOC         = 08
          LOCK_SYSTEM_ERROR    = 09
          MATERIAL_NOT_FOUND   = 10
          PLANT_NOT_FOUND      = 11
          SALES_NOT_FOUND      = 12
          SLOC_NOT_FOUND       = 13
          SLOCNUMBER_NOT_FOUND = 14
          SLOCTYPE_NOT_FOUND   = 15
          TEXT_NOT_FOUND       = 16
          UNIT_NOT_FOUND       = 17.
      CASE SY-SUBRC.
        WHEN C_RC00.
    *       alles o.k.
          RQM01-MATKL = MARA-MATKL.
          RQM01-PRDHA = MARA-PRDHA.
        WHEN C_RC10.
          MESSAGE E005(QM) WITH P_MATNR.
      ENDCASE.
    * Beim Material sitzt Loeschvormerkung.
      IF NOT MTCOR-LVORM IS INITIAL.
        MESSAGE W008(M3).
      ENDIF.
    ENDFORM.                    " MATERIAL_CHECK
    *&      Form  MATERIAL_WERK_CHECK
    *       text
    *      -->P_AFPO_MATNR  text
    *      -->P_P_CAUFV_WERKS  text
    FORM MATERIAL_WERK_CHECK USING VALUE(P_MATNR)
                                   VALUE(P_WERK).
    *-- local data
      DATA : BEGIN OF L_DUMMY_TAB OCCURS 0,
               DUMMY(1),
             END   OF L_DUMMY_TAB.
    * Examination only, if materials number and work filled
      CHECK (    NOT P_MATNR IS INITIAL
             AND NOT P_WERK  IS INITIAL ).
    * Checking on MARC segment
      MOVE C_MARC_SEGMENT TO MTCOM-KENNG.
      MOVE P_MATNR        TO MTCOM-MATNR.
      MOVE P_WERK         TO MTCOM-WERKS.
      CALL FUNCTION 'MATERIAL_READ'
        EXPORTING
          SCHLUESSEL           = MTCOM
        IMPORTING
          MATDATEN             = MARC
        TABLES
          SEQMAT01             = L_DUMMY_TAB
        EXCEPTIONS
          ACCOUNT_NOT_FOUND    = 01
          BATCH_NOT_FOUND      = 02
          FORECAST_NOT_FOUND   = 03
          LOCK_ON_ACCOUNT      = 04
          LOCK_ON_MATERIAL     = 05
          LOCK_ON_PLANT        = 06
          LOCK_ON_SALES        = 07
          LOCK_ON_SLOC         = 08
          LOCK_SYSTEM_ERROR    = 09
          MATERIAL_NOT_FOUND   = 10
          PLANT_NOT_FOUND      = 11
          SALES_NOT_FOUND      = 12
          SLOC_NOT_FOUND       = 13
          SLOCNUMBER_NOT_FOUND = 14
          SLOCTYPE_NOT_FOUND   = 15
          TEXT_NOT_FOUND       = 16
          UNIT_NOT_FOUND       = 17.
      CASE SY-SUBRC.
        WHEN C_RC00.
    *       alles o.k.
          RQM01-KZDKZ = MARC-KZDKZ.
          RQM01-KZKRI = MARC-KZKRI.
        WHEN C_RC11.
          MESSAGE E004(QM) WITH P_MATNR
                                P_WERK.
        WHEN C_RC10.
          MESSAGE E005(QM) WITH P_MATNR.
      ENDCASE.
    ENDFORM.                    " MATERIAL_WERK_CHECK
    *&      Module  FCODE  INPUT
    *       text
    MODULE FCODE INPUT.
    *& Inserted by CC  01/24/2007
      II_VIQMEL-FERTAUFNR = RQM01-FERTAUFNR.
    *& End by CC   01/24/2007
      PERFORM FCODE USING OK-CODE.
    ENDMODULE.                 " FCODE  INPUT
    *&      Form  FCODE
    *       text
    *      -->P_OK_CODE  text
    FORM FCODE USING VALUE(P_FCODE) LIKE SY-TCODE.
      CASE P_FCODE.
        WHEN C_FCODE_ENT1.
    *-- Weiter
          SET SCREEN 0.
          LEAVE SCREEN.
      ENDCASE.
      IF SY-UCOMM = 'CANC'.
        SET SCREEN 0.
        LEAVE SCREEN.
      ENDIF.
    ENDFORM.                    " FCODE

  • Editable alv container in module pool

    Hi,
    I have done a module pool program in which for a certain sectain i have to display a alv table...So I added a container in the module pool and called a editable alv in that..But the problem is now I am not able to trap any event in the editable alv..For eg if the user  edit somethng in the alv and press enter I am not able to trap the user command..Please guide me how to do this???

    create a handler for event DATA_CHANGED - it has parameters
    ER_DATA_CHANGED     Type Ref To     CL_ALV_CHANGED_DATA_PROTOCOL
    E_ONF4     Type     CHAR01
    E_ONF4_BEFORE     Type     CHAR01
    E_ONF4_AFTER     Type     CHAR01
    E_UCOMM     Type     SY-UCOMM
    That means all information you need.
    See the sample programs mentionend, search the forum before posting, close the thread as solved.
    Regards,
    Clemens

  • How to call module pool through interactive ALV

    Moderator message: do not post in ALL CAPITALS.
    Hi all,
    I want to create an interactive report in which some parameters on selection-screen when i fill those & press f8  then an alv list is generated from ddic and when user double click on any row then a tcode get call which call a module pool program how can i do so please help me for that
    Ketan pande
    Abap consultant.
    Edited by: Matt on Feb 13, 2009 1:33 PM - Switched to sentence case
    Edited by: Matt on Feb 13, 2009 1:34 PM

    Modify this code to add Hot spots or double click action.
    This code will dynamically list the data of any DB table.
    REPORT yptc_dynamic_alv_table_display .
    TABLES: dd02t.
    TYPE-POOLS: slis. " ALV Global Types*data declaration for dynamic
    * internal table and alv
    DATA: l_structure                TYPE REF TO data,
          l_table                    TYPE REF TO data,
          struc_desc                 TYPE REF TO cl_abap_structdescr,
          lt_layout                  TYPE slis_layout_alv,
          ls_lvc_fieldcatalogue      TYPE lvc_s_fcat,
          lt_lvc_fieldcatalogue      TYPE lvc_t_fcat,
          ls_fieldcatalogue          TYPE slis_fieldcat_alv,
          lt_fieldcatalogue          TYPE slis_t_fieldcat_alv,
          g_repid                    LIKE sy-repid,
          g_list_top_of_page         TYPE slis_t_listheader,
          g_events                   TYPE slis_t_event,
          g_events_ex                TYPE slis_t_event_exit.
    *field symbols declaration
    FIELD-SYMBOLS :
      <it_table> TYPE STANDARD TABLE,
      <dyn_str> TYPE ANY,
      <str_comp> TYPE abap_compdescr.
    *declarations for grid title
    DATA : t1(30),
           t2(10),
           t3(50).
    *selection screen declaration for table input
    PARAMETERS : p_table LIKE dd02l-tabname.
    *initialization event
    INITIALIZATION.
    *start of selection event
    START-OF-SELECTION.
    *texts for grid title
      t1 = 'Dynamic ALV display for table'.
      t2 = p_table. CONCATENATE t1 t2 INTO t3 SEPARATED BY space.
    * dynamic  creation of a structure
      CREATE DATA l_structure TYPE (p_table).
      ASSIGN l_structure->* TO <dyn_str>.
    * fields structure
      struc_desc ?= cl_abap_typedescr=>describe_by_data( <dyn_str> ).
      LOOP AT struc_desc->components ASSIGNING <str_comp>.
    *    build fieldcatalog
        ls_lvc_fieldcatalogue-fieldname = <str_comp>-name.
        ls_lvc_fieldcatalogue-ref_table = p_table.
        APPEND ls_lvc_fieldcatalogue TO lt_lvc_fieldcatalogue.
    *    build fieldcatalog
        ls_fieldcatalogue-fieldname = <str_comp>-name.
        ls_fieldcatalogue-ref_tabname = p_table.
        APPEND ls_fieldcatalogue TO lt_fieldcatalogue.
      ENDLOOP.
    *  create internal table dynamic
      CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog = lt_lvc_fieldcatalogue
        IMPORTING
          ep_table = l_table.
      ASSIGN l_table->* TO <it_table>.
    * read data from the table selected.
      SELECT * FROM (p_table)
        INTO CORRESPONDING FIELDS OF TABLE <it_table>.
    * alv layout
      lt_layout-zebra = 'X'.
      lt_layout-colwidth_optimize = 'X'.
      lt_layout-window_titlebar = t3.
    * Events
      PERFORM eventtab_build     USING g_events[]
                                       g_events_ex[].
      g_repid = sy-repid.
    *alv output
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                i_callback_program       = g_repid
                is_layout     = lt_layout
                it_fieldcat   = lt_fieldcatalogue
                it_events     = g_events[]
    *            it_excluding  = g_exclude
           TABLES
                t_outtab      = <it_table>
           EXCEPTIONS
                program_error = 1
                OTHERS        = 2.
      IF sy-subrc NE 0.
    *    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    *    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    *       FORM eventtab_build                                           *
    FORM eventtab_build
        USING e03_lt_events TYPE slis_t_event
              e03_lt_events_ex TYPE slis_t_event_exit.
      CONSTANTS:
        gc_formname_top_of_page   TYPE slis_formname VALUE 'TOP_OF_PAGE',
        gc_formname_user_command   TYPE slis_formname VALUE 'USER_COMMAND'.
      DATA: ls_event      TYPE slis_alv_event,
            ls_event_exit LIKE LINE OF e03_lt_events_ex.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
           EXPORTING
                i_list_type = 1
           IMPORTING
                et_events   = e03_lt_events.
      READ TABLE e03_lt_events
           WITH KEY name = slis_ev_top_of_page
           INTO ls_event.
      IF sy-subrc = 0.
        MOVE gc_formname_top_of_page TO ls_event-form.
        APPEND ls_event TO e03_lt_events.
      ENDIF.
    ENDFORM.                    " build_events_table
    *       FORM top_of_page                                              *
    FORM top_of_page.
      DATA: ls_line TYPE slis_listheader.
      SELECT SINGLE * FROM dd02t
        WHERE tabname = p_table
          AND ddlanguage = sy-langu.
      CLEAR g_list_top_of_page[].
      CLEAR ls_line.
      ls_line-typ  = 'H'.
      CONCATENATE p_table '-' dd02t-ddtext INTO ls_line-info
        SEPARATED BY space.
    *  ls_line-info = p_table.
      APPEND ls_line TO g_list_top_of_page.
      PERFORM build_sub_headings
          USING g_list_top_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
           EXPORTING
                it_list_commentary = g_list_top_of_page[].
    ENDFORM.                    " top_of_page
    *       FORM build_sub_headings                                       *
    *  -->  E07_TOP_OF_PAGE                                               *
    FORM build_sub_headings
            USING e07_top_of_page TYPE slis_t_listheader.
      DATA: ls_line TYPE slis_listheader.
      CLEAR ls_line.
      ls_line-typ  = 'S'.
      ls_line-key = 'Run Info'.
      CONCATENATE  sy-sysid sy-uname sy-mandt
            INTO ls_line-info
            SEPARATED BY space.
      APPEND ls_line TO e07_top_of_page.
    ENDFORM.                    "build_sub_headings

  • Getting error while calling a subscreen in  module pool program

    HI  ALL,
                         ACTUALLY I'M GETTING A SYNTAX ERROR WHILE I'M CALLING A SUBSCREEN
                       IN A MODULE POOL PROGRAM IN PAI MODULE
                       THE ERROR IS AS FOLLOW
                           "." or "ID ... FIELD ..." expected after "SUBSCREEN"
                        CAN ANYBODY PLS HELP ME.
    REGARDS
    ANDREWS

    HI MAX ,
                      THE CODE IS AS FOLLOWS:
    *& Report  ZTABSTRIP_PS
    REPORT  ZTABSTRIP_PS.
    type-pools : vrm.
    DATA:number1 type I,
         number2 type I,
         result  type I,
         ok_code like SY-UCOMM,
         employee1 type c,
         ABAP(19)    type c,
         SALES(19)  type c,
         HR(19)      type c,
         MM(19)     type  c,
    employee type c.
        emp type c.
    CONTROLS  tabstrip TYPE TABSTRIP.
    CALL SCREEN 100.
    call screen 110.
    call screen 130.
    call screen 120.
    call screen  140.
    *&      Module  STATUS_0100  OUTPUT
          text
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS 'STATUS'.
      SET TITLEBAR 'TITLE'.
      CASE OK_CODE.
        WHEN 'BACK' or 'EXIT' or 'DELETE'.
         leave program.
         WHEN 'SAVE'.
           MESSAGE 'please choose a valid function' TYPE 'I'.
       WHEN 'BACK'.
        leave PROGRAM.
    when  'EXIT' or 'DELETE'.
        leave to screen 0.
        WHEN 'SAVE'.
          MESSAGE 'please choose a valid function' TYPE 'I'.
    endcase.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
          text
    MODULE USER_COMMAND_0100 INPUT.
    CASE OK_CODE.
      when 'TAB1'.
    tabstrip-activetab = 'TAB1'.
       when 'TAB2'.
    tabstrip-activetab = 'TAB2'.
    result = number1 + number2.
       when 'TAB3'.
      tabstrip-activetab = 'TAB3'.
    SET TITLEBAR 'TITLE1'.
      when 'TAB4'.
        tabstrip-activetab = 'TAB4'.
       if employee = 'NEERAJ'.
         ABAP = 'NEERAJ'.
       elseif employee = 'UMESH'.
         SALES = 'UMESH'.
       ELSEIF employee = 'RAM'.
         HR = 'RAM'.
       elseif employee = 'ANIL'.
         MM = 'ANIL'.
         endif.
       employee = employee.
    WHEN 'BACK'.
        leave PROGRAM.
    when  'EXIT' or 'DELETE'.
        leave to screen 0.
        WHEN 'SAVE'.
          MESSAGE 'please choose a valid function' TYPE 'I'.
    ENDCASE.
       WHEN 'BACK' or 'EXIT' or 'DELETE'.
         leave program .
         WHEN 'SAVE'.
           MESSAGE 'please choose a valid function' TYPE 'I'.
    endcase.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Module  STATUS_0110  OUTPUT
          text
    **MODULE STATUS_0110 OUTPUT.
    SET PF-STATUS 'STATUS1'.
    SET TITLEBAR 'xxx'.
    **case ok_code.
    **WHEN 'back' or 'exit' or 'delete'.
        leave PROGRAM.
        WHEN 'save'.
          MESSAGE 'please choose a valid function ' TYPE 'W'.
    ENDCASE.
    **ENDMODULE.                 " STATUS_0110  OUTPUT
    *&      Module  USER_COMMAND_0110  INPUT
          text
    MODULE USER_COMMAND_0110 INPUT.
      number1 = number1.
      number2 = number2.
    CLEAR NUMBER1.
    CLEAR NUMBER2.
    REFRESH NUMBER1.
    REFRESH NUMBER2.
    ENDMODULE.                 " USER_COMMAND_0110  INPUT
    *&      Module  STATUS_0130  OUTPUT
          text
    MODULE STATUS_0130 OUTPUT.
    SET PF-STATUS 'STATUS2'.
    SET TITLEBAR 'xxx'.
    RESULT = number1 + number2.
    *CLEAR RESULT.
    REFRESH RESULT.
    ENDMODULE.                 " STATUS_0130  OUTPUT
    *&      Module  STATUS_0120  OUTPUT
          text
    MODULE STATUS_0120 OUTPUT.
    SET PF-STATUS 'xxxxxxxx'.
    SET TITLEBAR 'xxx'.
    DATA:  l_name TYPE vrm_id,
            li_list TYPE vrm_values,
            l_value LIKE LINE OF li_list.
      l_value-key = '1'.
      l_value-text = 'ANIL'.
      APPEND l_value TO li_list.
      CLEAR l_value.
    CLEAR li_list.
      l_value-key = '2'.
      l_value-text = 'RAM'.
      APPEND l_value TO li_list.
      CLEAR l_value.
    CLEAR li_list.
      l_value-key = '3'.
      l_value-text = 'NEERAJ'.
      APPEND l_value TO li_list.
      CLEAR l_value.
    CLEAR li_list.
      l_value-key = '4'.
      l_value-text = 'UMESH'.
      APPEND l_value TO li_list.
      CLEAR l_value.
    CLEAR li_list.
    l_name =  'employee'.
      CALL FUNCTION 'VRM_SET_VALUES'
        EXPORTING
          ID                    =  l_name
          VALUES                =  li_list
       EXCEPTIONS
         ID_ILLEGAL_NAME       = 1
         OTHERS                = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CLEAR li_list.
    ENDMODULE.                 " STATUS_0120  OUTPUT
    *&      Module  USER_COMMAND_0120  INPUT
          text
    MODULE USER_COMMAND_0120 INPUT.
    INCLUDING sy-repid '140'.
    employee1 = employee.
    IF employee1 CS 'NEERAJ'.
      call SUBSCREEN    sub4  .
      ABAP = 'NEERAJ'.
      CLEAR ABAP.
    ELSEIF employee1 CS 'UMESH'.
       call SUBSCREEN  sub4  .
        SALES = 'UMESH'.
        CLEAR SALES.
    elseif employee1 CS 'RAM'.
      call SUBSCREEN sub4 .
       HR = 'RAM'.
       CLEAR  HR.
    ELSEIF employee1 CS 'ANIL'.
       call SUBSCREEN sub4 .
       MM = 'ANIL'.
       CLEAR MM.
       endif.
    ENDMODULE.                 " USER_COMMAND_0120  INPUT
    *&      Module  STATUS_0140  OUTPUT
          text
    MODULE STATUS_0140 OUTPUT.
    *CASE OK_CODE.
       WHEN employee1  'NEERAJ'.
         screen-active = 1.
         ABAP = 'NEERAJ'.
       WHEN employee1 = 'UMESH'.
         screen-active = 1.
         SALES = 'UMESH'.
       WHEN employee1 = 'RAM'.
         screen-active = 1.
         HR = 'RAM'.
       WHEN employee1 = 'ANIL'.
         screen-active = 1.
         MM = 'ANIL'.
         endif.
    *ENDCASE.
    ENDMODULE.                 " STATUS_0140  OUTPUT

  • How to call a "Z"module pool program in a "z"report

    Hi Guys,
    I have two reports .
    1. Report : uploads a tab delimited " .Txt1" file and update the "z1" table
        ".TXT1" : File contains 4 fields
    2. Module pool. :Uploads a a tab delimited " .Txt2" file and update another "z2" table
        ".TXT2" file contains  the 4 fileds of ".TXT1" and also 2 extra fields.
    I want to merge (call) the module pool program in the Report and perform the upload function using only one ".TXT" file.Please do guide me precisely .
    *Report:*
    REPORT zrswbgcs009 NO STANDARD PAGE HEADING MESSAGE-ID zwb
                         LINE-SIZE 185.
    TABLES:  zgcs_foc.      "FOC Parts Table
    *data count buffer
    DATA:    read_cnt(6)    TYPE p,        "Find read record
             update_cnt(6)  TYPE p,        "OK record
             error_cnt(6)   TYPE p.        "Error record
    *file buffer(FOC)
    DATA: BEGIN OF FOC_inrec  OCCURS  0,
            CUSTOMER(10),      "Customer
            PART_CODE(18),     "Parts Code
            REF_NO(35),        "Ref No.
            REF_DATE(10),      "Ref Date
            QTY(12),           "Parts Qty
            TEXT(100),         "Remark
          END OF FOC_inrec.
    *file buffer
    DATA: BEGIN OF inrec  OCCURS  0,
            CUSTOMER(10),      "Customer
            PART_CODE(18),     "Parts Code
            REF_NO(35),        "Ref No.
            REF_DATE(10),      "Ref Date
            QTY(12),           "Parts Qty
            PRICE(15),         "Parts Price
            WAERK(5),          "Parts Currency
            TEXT(100),         "Remark
          END OF inrec.
    DATA : v_file      LIKE rlgrap-filename.
    DATA gt_zgcs_foc LIKE zgcs_foc OCCURS 0 WITH HEADER LINE.
    DATA gs_zgcs_foc LIKE zgcs_foc.
    *File name ACCEPT--------------------------------------------------
    SELECTION-SCREEN SKIP 1.
    SELECTION-SCREEN  BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    *Company code
    PARAMETERS:  p_comp LIKE zgcs_imei-company OBLIGATORY.
    PARAMETERS:  pcfile LIKE rlgrap-filename OBLIGATORY LOWER CASE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN POSITION 1.
    PARAMETERS: HQfile  RADIOBUTTON GROUP b2.
    SELECTION-SCREEN COMMENT 7(20)  text-101 FOR FIELD HQfile.
    SELECTION-SCREEN POSITION 31.
    PARAMETERS: SUBfile RADIOBUTTON GROUP b2.
    SELECTION-SCREEN COMMENT 37(20) text-102 FOR FIELD SUBfile.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN  END   OF BLOCK b1.
    SELECTION-SCREEN SKIP 1.
    SELECTION-SCREEN BEGIN OF BLOCK box WITH FRAME.
    SELECTION-SCREEN: COMMENT /2(40) text-011, COMMENT  42(40) text-001,
                      ULINE,
                      COMMENT /2(40) text-012, COMMENT  42(40) text-002,
                      COMMENT /2(40) text-013, COMMENT  42(40) text-003,
                      COMMENT /2(40) text-014, COMMENT  42(40) text-004,
                      COMMENT /2(40) text-015, COMMENT  42(40) text-005,
                      COMMENT /2(40) text-016, COMMENT  42(40) text-006,
                      COMMENT /2(40) text-017, COMMENT  42(40) text-007,
                      COMMENT /2(40) text-018, COMMENT  42(40) text-008,
                                               COMMENT /42(40) text-009.
    SELECTION-SCREEN END OF BLOCK box.
    * -- AT SELECTION SCREEN ON
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR pcfile.
      CALL FUNCTION 'WS_FILENAME_GET'
           EXPORTING
                def_filename     = space
                def_path         = 'C:\'
                mask             = ',*.txt,*.TXT.'
                mode             = 'O'
                title            = ' '
           IMPORTING
                filename         = pcfile
           EXCEPTIONS
                inv_winsys       = 1
                no_batch         = 2
                selection_cancel = 3
                selection_error  = 4
                OTHERS           = 5.
    *-----------------------------start--------------------------------
    START-OF-SELECTION.
      CLEAR: read_cnt, update_cnt, error_cnt.
      REFRESH gt_zgcs_foc.        CLEAR gs_zgcs_foc.
      PERFORM file_upload_from_pc.
      SORT gt_zgcs_foc.
      DELETE ADJACENT DUPLICATES FROM gt_zgcs_foc
             COMPARING COMPANY CUSTOMER PART_CODE REF_NO REF_DATE.
    *// customer code check
      DATA: LT_ZESTD LIKE ZESTD OCCURS 0 WITH HEADER LINE.
      IF NOT gt_zgcs_foc[] IS INITIAL.
        SELECT COMPANY CUSTOMER CURRENCY
          INTO CORRESPONDING FIELDS OF TABLE LT_ZESTD
          FROM ZESTD
           FOR ALL ENTRIES IN gt_zgcs_foc
         WHERE COMPANY  = gt_zgcs_foc-COMPANY
           AND CUSTOMER = gt_zgcs_foc-CUSTOMER.
      ENDIF.
      SORT LT_ZESTD BY COMPANY CUSTOMER.
    *// part code check
      DATA: LT_MARA LIKE MARA OCCURS 0 WITH HEADER LINE.
      IF NOT gt_zgcs_foc[] IS INITIAL.
        SELECT *
          INTO TABLE LT_MARA
          FROM MARA
           FOR ALL ENTRIES IN gt_zgcs_foc
         WHERE MATNR = gt_zgcs_foc-PART_CODE.
      ENDIF.
      SORT LT_MARA BY MATNR.
      LOOP AT gt_zgcs_foc.
    *// customer code check
        READ TABLE LT_ZESTD WITH KEY
                COMPANY  = gt_zgcs_foc-COMPANY
                CUSTOMER = gt_zgcs_foc-CUSTOMER.
        IF SY-SUBRC <> 0.
          WRITE:/'Invalid Customer code ',
             gt_zgcs_foc-COMPANY, ' ',
             gt_zgcs_foc-CUSTOMER.
          STOP.
        ENDIF.
    *// part code check
        READ TABLE LT_MARA WITH KEY MATNR = gt_zgcs_foc-PART_CODE
          BINARY SEARCH.
        IF SY-SUBRC <> 0.
          WRITE:/ 'Invalid part code ', gt_zgcs_foc-PART_CODE.
          STOP.
        ENDIF.
    *// REF_NO
        TRANSLATE gt_zgcs_foc-REF_NO     TO UPPER CASE.
        SHIFT gt_zgcs_foc-REF_NO     LEFT DELETING LEADING SPACE.
        IF gt_zgcs_foc-REF_NO = SPACE.
          WRITE:/'Ref No. is blank'.
          STOP.
        ENDIF.
    *// REF_DATE
        IF gt_zgcs_foc-REF_DATE = 0.
          WRITE:/'Invalid Ref Date'.
          STOP.
        ENDIF.
    *// QTY
    *    IF gt_zgcs_foc-QTY CO ' 0123456789'.
    *    ELSE.
    *      WRITE:/ gt_zgcs_foc-QTY, ' Invalid Qty value'.
    *      STOP.
    *    ENDIF.
      ENDLOOP.
    * Insert/Update table
    *  MODIFY zgcs_foc FROM TABLE gt_zgcs_foc.
      INSERT zgcs_foc FROM TABLE gt_zgcs_foc.
      IF sy-subrc EQ 0.
        COMMIT WORK.
        DESCRIBE TABLE gt_zgcs_foc LINES update_cnt.
        error_cnt = read_cnt - update_cnt.
      ELSE.
        ROLLBACK WORK.
        error_cnt = read_cnt - update_cnt.
      ENDIF.
      ULINE.
      FORMAT COLOR 3.
      WRITE: / 'Read count                :', read_cnt.
      WRITE: / 'Insert/Update count       :', update_cnt.
      WRITE: / 'Error count               :', error_cnt.
      FORMAT COLOR OFF.
    *end-of-selection--------------------------------------------------
    END-OF-SELECTION.
    *&      Form FILE_UPLOAD_FROM_PC
    FORM file_upload_from_pc.
      IF pcfile IS INITIAL.
        WRITE: / 'SELECT UPLOAD FILE !'.
      ELSE.
        MOVE pcfile TO v_file.
    * HQ file upload
        IF HQfile EQ 'X'.
          CALL FUNCTION 'WS_UPLOAD'
               EXPORTING
                    filename                = v_file
                    filetype                = 'DAT'
               TABLES
                    data_tab                = FOC_inrec
               EXCEPTIONS
                    conversion_error        = 1
                    file_open_error         = 2
                    file_read_error         = 3
                    invalid_type            = 4
                    no_batch                = 5
                    unknown_error           = 6
                    invalid_table_width     = 7
                    gui_refuse_filetransfer = 8
                    customer_error          = 9
                    OTHERS                  = 10.
          IF sy-subrc <> 0.
            WRITE: / 'FILE UPLOAD                :', sy-subrc.
          ENDIF.
          LOOP AT FOC_inrec.
            ADD 1 TO read_cnt.
            call function 'CONVERSION_EXIT_ALPHA_INPUT'
                 exporting
                      input  = FOC_inrec-customer
                 importing
                      output = FOC_inrec-customer.
            call function 'CONVERSION_EXIT_ALPHA_INPUT'
                 exporting
                      input  = FOC_inrec-part_code
                 importing
                      output = FOC_inrec-part_code.
            MOVE-CORRESPONDING FOC_inrec TO gs_zgcs_foc.
            MOVE p_comp          TO gs_zgcs_foc-company.
            MOVE gs_zgcs_foc-qty TO gs_zgcs_foc-balan.
            MOVE sy-uname        TO gs_zgcs_foc-ERNAM.
            MOVE sy-datum        TO gs_zgcs_foc-ERDAT.
            MOVE sy-UZEIT        TO gs_zgcs_foc-ERZET.
    * Source(1:HQ,2:SUB,0:Etc)
            MOVE '1'             TO gs_zgcs_foc-source.
            APPEND gs_zgcs_foc TO gt_zgcs_foc.
          ENDLOOP.
    * SGE file upload
        ELSE.
          CALL FUNCTION 'WS_UPLOAD'
               EXPORTING
                    filename                = v_file
                    filetype                = 'DAT'
               TABLES
                    data_tab                = inrec
               EXCEPTIONS
                    conversion_error        = 1
                    file_open_error         = 2
                    file_read_error         = 3
                    invalid_type            = 4
                    no_batch                = 5
                    unknown_error           = 6
                    invalid_table_width     = 7
                    gui_refuse_filetransfer = 8
                    customer_error          = 9
                    OTHERS                  = 10.
          IF sy-subrc <> 0.
            WRITE: / 'FILE UPLOAD                :', sy-subrc.
          ENDIF.
          LOOP AT inrec.
            ADD 1 TO read_cnt.
            call function 'CONVERSION_EXIT_ALPHA_INPUT'
                 exporting
                      input  = inrec-customer
                 importing
                      output = inrec-customer.
            call function 'CONVERSION_EXIT_ALPHA_INPUT'
                 exporting
                      input  = FOC_inrec-part_code
                 importing
                      output = FOC_inrec-part_code.
            MOVE-CORRESPONDING inrec TO gs_zgcs_foc.
            MOVE p_comp          TO gs_zgcs_foc-company.
            MOVE gs_zgcs_foc-qty TO gs_zgcs_foc-balan.
            MOVE sy-uname        TO gs_zgcs_foc-ERNAM.
            MOVE sy-datum        TO gs_zgcs_foc-ERDAT.
            MOVE sy-UZEIT        TO gs_zgcs_foc-ERZET.
    * Source(1:HQ,2:SUB,0:Etc)
            MOVE '2'             TO gs_zgcs_foc-source.
            APPEND gs_zgcs_foc TO gt_zgcs_foc.
          ENDLOOP.
        ENDIF.
      ENDIF.
    ENDFORM.
    *MODULE POOL::*
    *& Module Name      : Warranty Bill
    *& Sub-Module       : W/B
    *& Description      : Parts Q'ty Adjust(Sales & Warranty)
    *& Program Name     : ZRSWBP004
    *& History
    *& Date             Author            Reason
    *& 2007.05.08       Song, Ji-Hyun     Initial Coding     Req.by WH.Song
    *& Logic Process
    *  - CONDITIONS
    *    Company, Customer, Material
    *  - PROCESS
    *    Display,Insert,Update data in the T/B ZESP04
    REPORT  zrswbp004 NO STANDARD PAGE HEADING
                      MESSAGE-ID 00
                      LINE-SIZE  250
                      LINE-COUNT 50.
    *               G L O B A L    V A R I A B L E S                       *
    TABLES : zesp04.
    DATA : BEGIN OF itab_list OCCURS 0,
            company       LIKE zesp04-company,
            customer      LIKE zesp04-customer,
            material      LIKE zesp04-material,
            adj_date      LIKE zesp04-adj_date,
            adjust        LIKE zesp04-adjust,
            reason        LIKE zesp04-reason,
            reason_code   LIKE zesp04-reason_code,
            doc_no        LIKE zesp04-doc_no,
            in_date       LIKE zesp04-in_date,
            create_id     LIKE zesp04-create_id,
          END OF itab_list.
    DATA : itab_upload LIKE TABLE OF zesp04 WITH HEADER LINE.
    DATA : s_mode(10).
    DATA : table_name(10) VALUE 'ZESP04'.
    DATA : tot_cnt TYPE i.
    DATA : ref_flag(1).
    *               M A C R O    D E F I N E                               *
    DEFINE conversion_kunnr.
      call function 'CONVERSION_EXIT_ALPHA_INPUT'
           exporting
                input  = &1
           importing
                output = &1.
    END-OF-DEFINITION.
    DEFINE conversion_material.
      call function 'CONVERSION_EXIT_MATN1_INPUT'
           exporting
                input  = &1
           importing
                output = &1.
    END-OF-DEFINITION.
    *               S E L E C T I O N   S C R E E N                        *
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME  TITLE title1.
    PARAMETERS     : company LIKE zesp04-company MEMORY ID buk MODIF ID v1
                     OBLIGATORY.
    SELECT-OPTIONS : customer   FOR zesp04-customer MEMORY ID kun
                                                    MODIF ID v1.
    SELECT-OPTIONS : material   FOR zesp04-material MEMORY ID mat
                                                    MODIF ID v1.
    SELECTION-SCREEN SKIP.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN POSITION 3.
    SELECTION-SCREEN COMMENT 3(12) text-002 MODIF ID v2.
    PARAMETERS : up_flag AS CHECKBOX MODIF ID v2.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 3(12) text-001 MODIF ID v2.
    PARAMETERS : p_fname(300) LOWER CASE MODIF ID v2.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK b1.
    SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME  TITLE title2.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 3(53) text-003 MODIF ID v2.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 5(10) text-004 MODIF ID v2.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 5(12) text-005 MODIF ID v2.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 5(12) text-006 MODIF ID v2.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 5(15) text-007 MODIF ID v2.
    PARAMETERS : df1 TYPE c RADIOBUTTON GROUP grp1.
    SELECTION-SCREEN COMMENT 24(13) text-012 MODIF ID v2.
    PARAMETERS : df2 TYPE c RADIOBUTTON GROUP grp1.
    SELECTION-SCREEN COMMENT 41(11) text-013 MODIF ID v2.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 5(14) text-008 MODIF ID v2.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 5(11) text-009 MODIF ID v2.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 5(14) text-010 MODIF ID v2.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 5(10) text-011 MODIF ID v2.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK b2.
    INCLUDE zrswbp004_pbo.
    INCLUDE zrswbp004_pai.
    INITIALIZATION.
      title1 = ' Parts Quantity Adjustment '.
      title2 = ' Text File Layout '.
    *            S T A R T   O F   S E L E C T I O N                       *
    TOP-OF-PAGE.
      PERFORM write_header.
    TOP-OF-PAGE DURING LINE-SELECTION.
      PERFORM write_header.
    START-OF-SELECTION.
      IF up_flag = 'X'.
        PERFORM upload_data.
      ELSE.
        PERFORM select_data.
        SET PF-STATUS 'PF01' EXCLUDING 'SAVE'.
        PERFORM display_data.
      ENDIF.
    AT USER-COMMAND.
      PERFORM user_command.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
      PERFORM get_filename.
    *&      Form  SELECT_DATA
    *       Select Data for Display
    FORM select_data.
      SELECT * FROM (table_name)
        INTO CORRESPONDING FIELDS OF TABLE itab_list
       WHERE company = company
         AND customer IN customer
         AND material IN material.
      CHECK sy-subrc <> 0.
      WRITE: 'No data found with your option.'.
    ENDFORM.                    " SELECT_DATA
    *&      Form  DISPLAY_DATA
    *       Display Data following Condition
    FORM display_data.
      LOOP AT itab_list.
        FORMAT COLOR 2 INTENSIFIED.
        WRITE : / '|' NO-GAP.
        WRITE :  (07) itab_list-company    CENTERED   NO-GAP, '|' NO-GAP,
                 (10) itab_list-customer   CENTERED   NO-GAP, '|' NO-GAP,
                 (20) itab_list-material   CENTERED   NO-GAP, '|' NO-GAP,
                 (10) itab_list-adj_date   CENTERED   NO-GAP, '|' NO-GAP,
                 (15) itab_list-adjust  RIGHT-JUSTIFIED  NO-GAP, '|'
    NO-GAP,
                 (55) itab_list-reason LEFT-JUSTIFIED NO-GAP, '|' NO-GAP,
                 (11) itab_list-reason_code CENTERED  NO-GAP, '|' NO-GAP,
                 (10) itab_list-doc_no      CENTERED  NO-GAP, '|' NO-GAP,
                 (10) itab_list-in_date  CENTERED   NO-GAP, '|' NO-GAP,
                 (12) itab_list-create_id  CENTERED   NO-GAP, '|' NO-GAP.
        FORMAT INTENSIFIED OFF.
        HIDE itab_list.
      ENDLOOP.
      WRITE : / sy-uline(171).
    ENDFORM.                    " DISPLAY_DATA
    *&      Form  WRITE_HEADER
    *       Write Report Header
    FORM write_header.
      DATA : line(1024).
      CLEAR line WITH '-'.
      DESCRIBE TABLE itab_list LINES tot_cnt.
      FORMAT INTENSIFIED ON.
      WRITE : 15 'Parts Quantity Adjustment'.
      SKIP.
      WRITE : / 'Total Count : ', tot_cnt.
      WRITE : /.
      WRITE : (171) sy-uline.
      WRITE : / '|' NO-GAP.
      WRITE : (07) 'Company'  CENTERED   NO-GAP, '|' NO-GAP,
              (10) 'Customer' CENTERED   NO-GAP, '|' NO-GAP,
              (20) 'Material' CENTERED   NO-GAP, '|' NO-GAP,
              (10) 'Adj. Date' CENTERED   NO-GAP, '|' NO-GAP,
              (15) 'Adjust' CENTERED   NO-GAP, '|' NO-GAP,
              (55) 'Reason' CENTERED   NO-GAP, '|' NO-GAP,
              (11) 'Reason Code' CENTERED   NO-GAP, '|' NO-GAP,
              (10) 'Doc No' CENTERED   NO-GAP, '|' NO-GAP,
              (10) 'IN DATE' CENTERED   NO-GAP, '|' NO-GAP,
              (12) 'CREATE ID' CENTERED   NO-GAP, '|' NO-GAP.
      WRITE : /(171) sy-uline.
      FORMAT INTENSIFIED OFF.
    ENDFORM.                    " WRITE_HEADER
    *&      Form  UPLOAD_DATA
    *       Data Upload from File
    FORM upload_data.
      DATA : l_filename LIKE rlgrap-filename,
             temp_dateformat TYPE dateformat.
      IF df1 = 'X'.
        temp_dateformat = 'YYYY.MM.DD'.
      ELSE.
        temp_dateformat = 'DD.MM.YYYY'.
      ENDIF.
      MOVE p_fname TO l_filename.
      CHECK l_filename NE space.
      CALL FUNCTION 'WS_UPLOAD'
           EXPORTING
                filename                = l_filename
                filetype                = 'DAT'
                dat_d_format            = temp_dateformat
           TABLES
                data_tab                = itab_list
           EXCEPTIONS
                conversion_error        = 1
                file_open_error         = 2
                file_read_error         = 3
                invalid_type            = 4
                no_batch                = 5
                unknown_error           = 6
                invalid_table_width     = 7
                gui_refuse_filetransfer = 8
                customer_error          = 9.
      IF sy-subrc NE 0.
        MESSAGE s000 WITH 'File upload is failed!'.
        STOP.
      ELSE.
        CLEAR : itab_upload, itab_upload[].
        LOOP AT itab_list.
          MOVE-CORRESPONDING itab_list TO itab_upload.
          conversion_kunnr    itab_upload-customer.
          conversion_material itab_upload-material.
          itab_upload-mandt     = sy-mandt.
          itab_upload-in_date   = sy-datum.
          itab_upload-create_id = sy-uname.
    *>>>>Insert by GSCHOI 2007.11.08
          IF itab_list-adj_date+0(6) NE sy-datum+0(6).
            MESSAGE i368 WITH 'Adjust month must same as current month!'.
            ROLLBACK WORK.
            STOP.
          ENDIF.
    *<<<<End
          APPEND itab_upload.
          INSERT INTO (table_name) VALUES itab_upload.
          IF sy-subrc EQ 0.
            CONTINUE.
          ELSEIF sy-subrc EQ 4.
            MESSAGE s368 WITH 'Duplicated Data Error!'.
            ROLLBACK WORK.
            STOP.
          ELSE.
            MESSAGE s368 WITH 'File Error!'.
            ROLLBACK WORK.
            STOP.
          ENDIF.
        ENDLOOP.
      ENDIF.
      IF sy-subrc EQ 0.
        MESSAGE s368 WITH 'Uploaded Successfully!'.
      ENDIF.
    ENDFORM.                    " UPLOAD_DATA
    *&      Form  USER_COMMAND
    *       User Command Execution in Screen 1000
    FORM user_command.
      MOVE-CORRESPONDING itab_list TO zesp04.
      CASE sy-ucomm.
        WHEN 'INSERT'.
          PERFORM insert_item.
        WHEN 'UPDATE'.
          PERFORM update_item.
        WHEN 'DISPLAY'.
          PERFORM display_item.
        WHEN 'REFRESH'.
          PERFORM refresh_list.
      ENDCASE.
      IF ref_flag = 'Y'.
        PERFORM refresh_list.
        CLEAR ref_flag.
      ENDIF.
    ENDFORM.                    " USER_COMMAND
    *&      Form  INSERT_ITEM
    *       When Clicking Insert Button
    FORM insert_item.
      CLEAR : s_mode.
      CLEAR : zesp04.
      s_mode = 'INSERT'.
      CALL SCREEN '100'.
    ENDFORM.                    " INSERT_ITEM
    *&      Form  UPDATE_ITEM
    *       When Clicking Update Button
    FORM update_item.
      CLEAR : s_mode.
      s_mode = 'UPDATE'.
      CALL SCREEN '100'.
    ENDFORM.                    " UPDATE_ITEM
    *&      Form  DISPLAY_ITEM
    *       When Clicking Display Button
    FORM display_item.
      CLEAR : s_mode.
      s_mode = 'DISPLAY'.
      CALL SCREEN '100'.
    ENDFORM.                    " DISPLAY_ITEM
    *&      Form  REFRESH_LIST
    *       When Clicking Refresh Button or Returning Display Screen
    FORM refresh_list.
      CLEAR : itab_list, itab_list[].
      PERFORM select_data.
      sy-lsind = sy-lsind - 1.
      PERFORM display_data.
    ENDFORM.                    " REFRESH_LIST
    *&      Form  GET_FILENAME
    *       Get Filename
    FORM get_filename.
      DATA: l_fname LIKE ibipparms-path .
      DATA : p_name LIKE sy-repid.
      p_name = sy-repid.
      CALL FUNCTION 'F4_FILENAME'
           EXPORTING
                program_name  = p_name
                dynpro_number = sy-dynnr
                field_name    = ''
           IMPORTING
                file_name     = l_fname.
      p_fname = l_fname.
    ENDFORM.                    " GET_FILENAME
    Edited by: Matt on Nov 24, 2008 11:24 AM - surrounded the ABAP with  tags

    Hi,
        Use SUBMIT statement in your first Report zrswbgcs009 at the end, to call the Modulepool program zrswbp004.
    do a search in SDN you will get lot of threads on SUBMIT statement with selection screen.
    SUBMIT... [VIA SELECTION-SCREEN]
               [USING SELECTION-SET <var>]
               [WITH <sel> <criterion>]
               [WITH FREE SELECTIONS <freesel>]
               [WITH SELECTION-TABLE <rspar>].
    http://help.sap.com/saphelp_nw04/Helpdata/EN/9f/dba51a35c111d1829f0000e829fbfe/content.htm
    Regards
    Bala Krishna

  • Calling a report from module pool program

    Hi all,
            I had a requirement where I need to call a report from the module pool program where in when we click REPORT button, it should display the report output in the another screen.
    Can we do by calling screen after pushing REPORT button. If so, where we should write that code ( In pbo or pai). Please give me an idea.
    Thanking you,
    Regards,
    Murali Krishna T

    Use submit syntax.
    Press F1 on submit, Donot use return statement with it.
    If so, where we should write that code ( In pbo or pai).
    Please understand about these two events before doing the requirement.

  • Calling a report from Module Pool

    While calling a report from the module pool I'm not able to display th alv. The skeleton of the ALV is coming. But the data and headings are also not displayed.
    But where as calling the same program from a report it is coming properly. can somebody please guide me where did I go wrong?

    MODULE user_command_1001 INPUT.
      w_ok_code = ok_code.
      CLEAR ok_code.
      CASE w_ok_code.
        WHEN 'BACK'.
          LEAVE PROGRAM .
        WHEN 'CREATE'.
          CALL TRANSACTION 'Z_FIRST_TIME'.
        WHEN 'SYNC'.
          CALL TRANSACTION 'Z_SYNC'.
        WHEN 'APPROVE'.
         SUBMIT zds_xx_approval_status WITH po_aname EQ sy-uname AND RETURN.
        WHEN 'OVERVIEW'.
          PERFORM show_all_reqids.
      ENDCASE.
    ENDMODULE.

  • How to get tree structure navigation in module pool program

    please send me a sample code for getting tree structure navigation in a screen  in module pool program.
    ex.
    masters
    items

    do a chain and endchain on the fields.Then insert the fields in to the required database.

  • Calling subscreen in module pool

    Hi friends,
                    I am trying to call sub-screen in module pool.
    but it is giving me an error as  "." or "ID ... FIELD ..." expected after "SUBSCREEN".
    i am using followning statement
    CALL SUBSCREEN SUB  INCLUDING SY-REPID '0101'.
    OR
    CALL SUBSCREEN SUB. (SUB is screen i have created in layout).
    I tried it a lot, but not able to solve it.
    Kindly help me.

    Hi Kiran,
    <li>Subscreen concept is like this. You have one main screen. You want another screen which has to be displayed on main screen when you run main screen.
    <li>First we need to create subscreen area on main screen. Goto layout and click subscreen element and place on main screen and name to that subscreen area as SUB.
    <li>Now create another screen type subscreen. place fields on that and write logic.
    <li> Check REPORT demo_dynpro_subscreens.
    Thanks
    venkat.O

  • Conditional call to a subscreen in module pool program.

    Hi,
    Could anybody please let me know how i will be able to call a subscreen conditionally in a module pool program?
    Example: I have to call a subscreen XXXX if a FLAG = X. How will I achieve this?
    I tried to write the below code in PAI
    if flag = 'X'.
    call subscreen XXXX.
    endif.
    This produced an error.
    Regards,
    Smithesh

    Hi
    In TOP Include
    data repid type sy-repid,
            dynnr type sy-dynnr.
    In PBO of main screen
    module status_100. " First Call This Module to provide the SubScreen Number to below Code
    call subscreen sub including repid dynnr. " This serves the purpose of calling subscreen based on condition
    in Program.
    module status_100.
    repid = sy-repid.
    if your_condition = 'X'. " This also can be implemented in any PAI logi as its purpose is just to pass a value to DYNNR
    dynnr = '200'. " The SUB Screen  Number you want to pass
    else.
    dynnr = '300'. " Dummy Sub Screen Screen or any other (Make Sure these are of SUB SCREEN type )
    endif.
    endmodule
    Cheerz
    Ram

  • Calling search helps dynamically in module pool program

    Hi Experts,
    I have created two search helps. I need to call these search helps in my module pool program dynamically for a single field (i.e ZMATNR).
    you might be known... if it is a single search help, we can assign that in field attributes.
    But here... I need to call different search helps for a single field based on the condition.
    Pls help me.
    Thanks
    Raghu

    Hi,
    Use the below function module and  pass the search help created in search help field according to the condition.
    Process on Value-request.
    if condition = A.
    call function " F4IF_FIELD_VALUE_REQUEST"
    TABNAME           =                                                         
    FIELDNAME        =                                                       
    SEARCHHELP     =  "Mention search help created                                                          
    Elseif  Conditon =B.
    call function " F4IF_FIELD_VALUE_REQUEST"
    TABNAME           =                                                         
    FIELDNAME        =                                                       
    SEARCHHELP     =  "Mention search help created      
    Endif.
    Regards,
    Prabhudas

  • Call module pool screen from ABAP Webdynpro

    Hi All
    I designed one screen in normal classical dynpro in SE80 for module pool program. I want to call that screen layout design in webdynpro view layout.
    So please help me how can i call that module pool screen from my ABAP webdynpro 

    Hi
    Thank you for your great replay. But Mr Ramakrishnappa and Mr Katrice as your reference i go through that but when i insert the program name and screen number program is end with a run time error saying
    dynamic type conflict when assigning reference.
    Please refer the below snap shot

  • Call report selection screen in module pool program with tab strip control

    Hi,
    Could anyone explain in detail to call report selection screen in module pool program with tab strip control.
    Thanks
    Mano

    Hi,
    Refer std program:
    demo_sel_screen_in_tabstrip.
    demo_sel_screen_with_tabstrip.
    Call your program with SUBMIT stmt form module program.
    Reward points if this Helps.
    Manish

Maybe you are looking for