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
GaneshHi 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 PMModify 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
ANDREWSHI 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 tagsHi,
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 TUse 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
itemsdo 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,
SmitheshHi
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
RaghuHi,
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 webdynproHi
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
ManoHi,
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
-
Does the ipod nano 7th gen work with Belkin Blue tooth In car hands free? Customer support said it did when I bought it, but the box doesn't say it does and I dont want to open it in case I have to return it.
-
Wiki registration might be broken
I'm trying to create an account for the arch wiki, I'm thinking I'm entering the output wrong, except it's copied directly from the terminal, but than I thought my username had to be lowercase so tried that then used my standard 28 character password
-
How to manually change cpInQuizScope to false
Hey everyone! Is there a way that I can use javascript or something to change cpInQuizScope to false? I would like to exclude the first two quiz questions from the ReturnToQuiz scope. This way, ReturntoQuiz doesn't send the user back to these questi
-
he i did find out how to make a workflow to approve new and edited files im busy with making a SharePoint page with all of the manuals of the organization but maybe later i will covert it into a knowledge base. for now i made 2 custom column the firs
-
Itunes is updated but i cant install new ios
when i hit 'check for updates' it tells me there is a new IOS available but i have to update itunes (i did this already) so i hit okay, download it. but when i do i only have the options to repair or remove itunes. so i repaired it, and if i go into