Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

problem in pr

Former Member
0 Likes
418

Error description: No entries are made in the ZRKILOG for the repeated time for the

company code 1001.

Carry out an extensive test for ABAP, as the operation is massively affected.

here the report :ZRKILOG

and the table name :ZRKILOG

PROGRAM ZRKILOG.

DATA: OK_CODE LIKE SY-UCOMM,

GT_ZRKILOG TYPE TABLE OF ZRKILOG,

G_CONTAINER TYPE SCRFNAME VALUE 'BCALV_GRID_DEMO_0100_CONT1',

GRID1 TYPE REF TO CL_GUI_ALV_GRID,

G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

tables: zrkilog.

  • Selektionsbildschirm

selection-screen begin of block 3 with frame.

selection-screen begin of block 1 with frame title text-002.

selection-screen begin of block 2 with frame title text-001.

select-options: s_kostl for zrkilog-kostl,

s_bukrs for zrkilog-bukrs.

selection-screen end of block 2.

selection-screen end of block 1.

selection-screen end of block 3.

----


  • MAIN *

----


SELECT * FROM ZRKILOG INTO TABLE gt_ZRKILOG where kostl in s_kostl

and bukrs in s_bukrs

and sperrkz ne 'X'.

CALL SCREEN 100.

----


  • MODULE PBO OUTPUT *

----


MODULE PBO OUTPUT.

SET PF-STATUS 'MAIN100'.

IF G_CUSTOM_CONTAINER IS INITIAL.

CREATE OBJECT G_CUSTOM_CONTAINER

EXPORTING CONTAINER_NAME = G_CONTAINER.

CREATE OBJECT GRID1

EXPORTING I_PARENT = G_CUSTOM_CONTAINER.

CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY

EXPORTING I_STRUCTURE_NAME = 'ZRKILOG_A'

CHANGING IT_OUTTAB = GT_ZRKILOG.

ENDIF.

ENDMODULE.

----


  • MODULE PAI INPUT *

----


MODULE PAI INPUT.

  • to react on oi_custom_events:

call method cl_gui_cfw=>dispatch.

ETHOD DISPATCH .

  • ...

  • FCODE: %_GC<ID><EV><Cargo>

  • ( 4)( 4)( 4)(60)

  • !! SPACEs must be in between here

  • ignore ok_code

  • ignore is_systemdispatch

CLASS CL_GUI_OBJECT DEFINITION LOAD.

DATA DUMMY TYPE REF TO CL_GUI_OBJECT. CREATE OBJECT DUMMY."Workaround

data: l_event type event_stck_line_type,

l_event_object type ref to lcl_event,

l_event_tab type cntl_events,

l_one_event type cntl_event.

RETURN_CODE = CL_GUI_CFW=>RC_NOEVENT.

FIELD-SYMBOLS: <F> type any.

DATA: EVENTID TYPE I,

IS_SHELLEVENT TYPE CHAR1,

CARGO TYPE SYUCOMM,

MY_SHELL TYPE I.

DATA: SLEN TYPE I.

DATA: F TYPE SYUCOMM, F1(10), F2(10), F3(20).

  • Check if Control-Event

SLEN = STRLEN( SAVE_OK_CODE ).

IF SLEN <= 4.

EXIT. "// RC_NOEVENT

ENDIF.

ASSIGN SAVE_OK_CODE+0(4) TO <F>.

CASE <F>.

WHEN '%_GC'.

  • Ocx Event

WHEN '%_GS'.

  • Shell Event

IS_SHELLEVENT = TRUE.

*... Create as many dynpro proxies as necessary (ShellId 10...19)

CALL METHOD LCL_DYNPRO_PROXY=>INIT.

WHEN OTHERS.

EXIT. "// RC_NOEVENT

ENDCASE.

SLEN = SLEN - 4.

  • Parse the Parameters

ASSIGN SAVE_OK_CODE+4(SLEN) TO <F>.

F = <F>.

CONDENSE F.

SPLIT F AT ' ' INTO F1 F2 F3.

  • Shellid

IF F1 CO ' -0123456789'.

MY_SHELL = F1.

ELSE.

EXIT. "// RC_NOEVENT

ENDIF.

  • Eventid

IF F2 CO ' -0123456789'.

EVENTID = F2.

ELSE.

EXIT. "// RC_NOEVENT

ENDIF.

  • Cargo

CLEAR CARGO.

CARGO = F3.

  • Find the object (Unique)

READ TABLE CFW_SUBSCRIBERLIST INTO CFW_SUBSCRIBER

WITH KEY SHELLID = MY_SHELL

binary search.

IF SY-SUBRC NE 0.

  • exit with 'not found, not subsribed

RETURN_CODE = CL_GUI_CFW=>RC_UNKNOWN.

EXIT. "// RC_unknown

ENDIF.

  • if the entry is not found, the event my come from a control

  • created by the function module based framework

  • Check for systemevents.

DATA: CURRENT_EVENT TYPE CNTL_EVENT.

READ TABLE CFW_SYSTEMEVENTS INTO CURRENT_EVENT WITH KEY

EVENTID = EVENTID

SHELLID = MY_SHELL

IS_SHELLEVENT = IS_SHELLEVENT.

IF SY-SUBRC = 0.

  • the event is known as a systemevent.

RETURN_CODE = CL_GUI_CFW=>RC_NODISPATCH.

EXIT.

ELSE.

call method lcl_friend_of_gui_control=>get_reg_events_internal

exporting control = CFW_SUBSCRIBER-REF

importing events = l_event_tab

exceptions others = 1.

if sy-subrc ne 0.

RETURN_CODE = CL_GUI_CFW=>RC_UNKNOWN.

EXIT. "// RC_unknown

ENDIF.

read table l_event_tab with key eventid = eventid

into l_one_event.

if sy-subrc ne 0 or not l_one_event-is_systemevent is initial.

RETURN_CODE = CL_GUI_CFW=>RC_UNKNOWN.

EXIT. "// RC_unknown

endif.

  • the event is a 'normal' event

RETURN_CODE = CL_GUI_CFW=>RC_FOUND.

  • GL 8.1.99

  • the dispatch method might create a new stacklevel

  • => clear SY-UCOMM and SAVE_OK_CODE first

CLEAR SAVE_OK_CODE.

  • G.Loff 5.1.99 / W.Schuster

  • Clear, Sy-Ucomm would be restored on next 'schlapp' otherwise

clear sy-ucomm.

  • Create event object

create object l_event_object

exporting event_object = cl_gui_control=>cur_event.

l_event-event_object = l_event_object.

SYSTEM-CALL KERNEL_INFO 'DYNPRO_STACK_POS' l_event-stackpos.

call method push_event

exporting current_event = l_event.

CLEAR SYSTEM_STATE. " Kompatibilitaet

  • Special treadment for drag & drop events !

  • ShellEvent Drag Drop !

if IS_SHELLEVENT = 'X' and eventid = 15.

call method handle_dragdrop_event

exporting

SHELLID = MY_SHELL

CARGO = CARGO.

else.

  • Notify object

CALL METHOD CFW_SUBSCRIBER-REF->DISPATCH

EXPORTING

EVENTID = EVENTID

IS_SHELLEVENT = IS_SHELLEVENT

CARGO = CARGO

IS_SYSTEMDISPATCH = SPACE.

endif.

call method pop_event

exporting current_event = l_event.

ENDIF.

ENDMETHOD.

CASE OK_CODE.

WHEN 'EXIT'.

PERFORM EXIT_PROGRAM.

WHEN OTHERS.

  • do nothing

ENDCASE.

CLEAR OK_CODE.

ENDMODULE.

----


  • FORM EXIT_PROGRAM *

----


FORM EXIT_PROGRAM.

  • CALL METHOD G_CUSTOM_CONTAINER->FREE.

METHOD FREE.

DATA L_CHILD TYPE REF TO CL_GUI_CONTROL.

LOOP AT CHILDREN INTO L_CHILD.

CALL METHOD L_CHILD->FREE

exceptions others = 1.

ENDLOOP.

CLEAR CHILDREN.

CALL METHOD SUPER->FREE

exceptions cntl_error = 1

cntl_system_error = 2

others = 3.

case sy-subrc.

when 0.

when 1.

raise cntl_error.

when others.

raise cntl_system_error.

endcase.

ENDMETHOD.

  • CALL METHOD CL_GUI_CFW=>FLUSH.

METHOD FLUSH .

  • ...

data: rc like sy-subrc, msgli like sy-msgli.

CALL FUNCTION 'AC_FLUSH_CALL'

EXPORTING

SYSTEM_FLUSH = ' '

IMPORTING

MESSAGE_NR = rc

MESSAGE_TEXT = msgli.

sy-subrc = rc.

sy-msgli = msgli.

CASE SY-SUBRC.

WHEN 0.

WHEN 1.

  • system_error

MESSAGE ID 'CNDP' TYPE 'X' NUMBER 007 RAISING CNTL_SYSTEM_ERROR.

WHEN 2.

  • method_call_error

MESSAGE ID 'CNDP' TYPE 'X' NUMBER 006 RAISING CNTL_ERROR.

WHEN 3.

  • property_set_error

MESSAGE ID 'CNDP' TYPE 'X' NUMBER 006 RAISING CNTL_ERROR.

WHEN 4.

  • property_get_error

MESSAGE ID 'CNDP' TYPE 'X' NUMBER 006 RAISING CNTL_ERROR.

WHEN OTHERS.

RAISE CNTL_ERROR.

ENDCASE.

ENDMETHOD.

LEAVE PROGRAM.

ENDFORM.

1 REPLY 1
Read only

Former Member
0 Likes
329

Suresh,

could you please explain what exactly you are trying to achieve in this program?

regards

Ravi