Icon_history
hi
i need to add icon_history symbol in the alv grid
could you please help in this
<b><REMOVED BY MODERATOR></b>
Message was edited by:
Alvaro Tejada Galindo
Suresh,
You need to create the PF-Status in the menu painter and then call the same in the I_CALLBACK_PF_STATUS_SET event of your ALV function module.
KC
Similar Messages
-
Hi all
I need to add a button/icon at the end of each row of an ALV. When the user clicks on a button it will send a mail.
Can you help me? Specially on the first issue.
Many thanks.hi check this code this is also works as same except the mail part,this will trigger a workflow log .plz go trought he code below and revert back to me for any clarifications.
*& Report yi_amra_yiamraber *
report yi_amra_yiamraber no standard page heading.
tables: yiamra_ber,SWW_WI2OBJ.
include <icon>.
include <symbol>.
type-pools: slis.
class cl_gui_resources definition load.
constants: con_true type char1 value 'X',
con_on type char1 value '1',
con_off type char1 value '0',
con_exit like sy-ucomm value 'EXIT',
con_back like sy-ucomm value 'BACK',
con_canc like sy-ucomm value 'CANC'.
data: g_okcode type sy-ucomm,
g_container_d0100 type ref to cl_gui_custom_container,
g_container_name_d0100 type scrfname value 'D0100_CONTAINER',
g_grid_d0100 type ref to cl_gui_alv_grid.
DATA: objkey LIKE sweinstcou-objkey.
DATA: ls_ibfobject TYPE sibflporb.
data : v_WI_ID type SWW_WI2OBJ-WI_ID.
DATA BEGIN OF GT_yiamra_ber OCCURS 0 .
INCLUDE STRUCTURE yiamra_ber .
DATA cellstyles TYPE lvc_t_styl.
DATA text(28) TYPE c.
DATA printer(10) TYPE c.
DATA workflow(13) TYPE c.
DATA END OF GT_yiamra_ber .
DATA ls_style TYPE lvc_s_styl.
DATA: X_FIELDCAT TYPE LVC_S_FCAT.
DATA:L_POS TYPE I VALUE 1.
data: gs_layout TYPE lvc_s_layo.
SELECT-OPTIONS LFDNR FOR yiamra_ber-LFDNR.
SELECT-OPTIONS POSNR FOR yiamra_ber-POSNR.
SELECT-OPTIONS UNAME FOR yiamra_ber-UNAME.
SELECT-OPTIONS ROLLE FOR yiamra_ber-ROLLE.
SELECT-OPTIONS PRCTR FOR yiamra_ber-PRCTR.
SELECT-OPTIONS PRCTRGRP FOR yiamra_ber-PRCTRGRP.
SELECT-OPTIONS KOSTL FOR yiamra_ber-KOSTL.
SELECT-OPTIONS KOSTLGRP FOR yiamra_ber-KOSTLGRP.
SELECT-OPTIONS ABREC FOR yiamra_ber-ABRECHNST.
SELECT-OPTIONS ANFORD FOR yiamra_ber-ANFORDERER.
SELECT-OPTIONS DATUMU FOR yiamra_ber-DATUMNEU.
SELECT-OPTIONS DATUMA FOR yiamra_ber-DATUMANF.
SELECT-OPTIONS STATUS FOR yiamra_ber-STATUS.
SELECT-OPTIONS DATUM FOR yiamra_ber-DATUMADM.
SELECT-OPTIONS DATUMB FOR yiamra_ber-DATUMBEG.
SELECT-OPTIONS DATUME FOR yiamra_ber-DATUMEND.
class Definition.
CLASS lcl_event_handler DEFINITION .
PUBLIC SECTION .
METHODS:
*To control button clicks
handle_button_click
FOR EVENT button_click OF cl_gui_alv_grid
IMPORTING es_col_id
es_row_no.
*PRIVATE SECTION.
METHODS:
perform_copy_checks
IMPORTING
er_data_changed TYPE REF TO cl_alv_changed_data_protocol.
ENDCLASS. "lcl_event_handler DEFINITION
*& Class (Implementation) lcl_event_handler
Text
CLASS lcl_event_handler IMPLEMENTATION.
METHOD handle_button_click .
PERFORM handle_button_click USING es_col_id
es_row_no.
ENDMETHOD.
ENDCLASS. "lcl_event_handler
Display Data
start-of-selection.
end-of-selection.
call screen 0100.
*& Module d0100_set_status OUTPUT
text
module d0100_set_status output.
perform d0100_set_status.
endmodule. " d0100_set_status OUTPUT
*& Module d0100_prepare_container OUTPUT
text
module d0100_prepare_container output.
perform d0100_prepare_container.
endmodule. " d0100_prepare_container OUTPUT
*& Module d0100_exit INPUT
text
module d0100_exit input.
perform d0100_exit changing g_okcode.
endmodule. " d0100_exit INPUT
*& Module d0100_fcode INPUT
text
module d0100_fcode input.
perform d0100_fcode changing g_okcode.
endmodule. " d0100_fcode INPUT
*& Form d0100_set_status
text
form d0100_set_status.
set pf-status 'D0100' .
set titlebar 'D0100'.
SELECT * FROM yiamra_ber
INTO corresponding fields of TABLE GT_yiamra_ber
WHERE LFDNR IN LFDNR
AND POSNR IN POSNR
AND UNAME IN UNAME
AND ROLLE In ROLLE
AND PRCTR IN PRCTR
AND PRCTRGRP IN PRCTRGRP
AND KOSTL IN KOSTL
AND KOSTLGRP IN KOSTLGRP
AND ABRECHNST IN ABREC
AND ANFORDERER IN ANFORD
AND DATUMNEU IN DATUMU
AND DATUMANF IN DATUMA
AND STATUS IN STATUS
AND DATUMADM IN DATUM
AND DATUMBEG IN DATUMB
AND DATUMEND IN DATUME.
loop at gt_yiamra_ber.
CONCATENATE GT_yiamra_ber-lfdnr GT_yiamra_ber-posnr INTO objkey.
ls_ibfobject-catid = 'BO'.
ls_ibfobject-typeid = 'YIAMRAROLL'.
ls_ibfobject-instid = objkey.
clear v_WI_ID.
select single WI_ID from SWW_WI2OBJ into v_WI_ID where INSTID = objkey.
IF sy-subrc = 0.
ls_style-fieldname = 'WORKFLOW'.
ls_style-style = cl_gui_alv_grid=>mc_style_button.
INSERT ls_style INTO TABLE GT_yiamra_ber-cellstyles.
GT_yiamra_ber-anfordern = icon_workflow_event_producer.
GT_yiamra_ber-printer = icon_print.
GT_yiamra_ber-workflow = ICON_HISTORY.
endif.
ls_style-fieldname = 'TEXT' .
ls_style-style = cl_gui_alv_grid=>mc_style_button .
INSERT ls_style INTO TABLE gt_yiamra_ber-cellstyles.
GT_yiamra_ber-text = ICON_DISPLAY_TEXT.
MODIFY GT_yiamra_ber
INDEX sy-tabix
TRANSPORTING cellstyles Text workflow.
endloop.
endform. " d0100_set_status
*& Form d0100_prepare_container
text
form d0100_prepare_container.
data: ls_vari type disvariant,
lt_fcat type lvc_t_fcat.
DATA gr_event_handler TYPE REF TO lcl_event_handler .
DATA IT_UI_FUNCTIONS TYPE UI_FUNCTIONS.
APPEND '&DETAIL' TO IT_UI_FUNCTIONS.
if g_container_d0100 is initial.
create object g_container_d0100
exporting container_name = g_container_name_d0100.
create object g_grid_d0100
exporting i_parent = g_container_d0100.
CREATE OBJECT gr_event_handler .
SET HANDLER gr_event_handler->handle_button_click FOR g_grid_d0100 .
perform d0100_set_grid_vari changing ls_vari.
perform d0100_set_grid_fcat changing lt_fcat.
perform d0100_set_grid_fcat1 changing lt_fcat.
call method g_grid_d0100->INIT_TOOLBAR
EXPORTING
IT_TOOLBAR_EXCLUDING = IT_UI_FUNCTIONS.
call method g_grid_d0100->set_table_for_first_display
EXPORTING
is_layout = gs_layout
IT_TOOLBAR_EXCLUDING = IT_UI_FUNCTIONS
CHANGING
it_outtab = gt_yiamra_ber[]
it_fieldcatalog = lt_fcat.
call method cl_gui_control=>set_focus
EXPORTING
control = g_grid_d0100.
endif.
endform. " d0100_prepare_container
*& Form d0100_exit
text
form d0100_exit changing c_okcode type sy-ucomm.
data: l_okcode like sy-ucomm.
l_okcode = c_okcode.
clear c_okcode.
case l_okcode.
when con_exit or con_back or con_canc.
call method g_grid_d0100->free.
call method g_container_d0100->free.
call method cl_gui_cfw=>flush.
clear g_container_d0100.
clear g_grid_d0100.
set screen 0.
leave screen.
endcase.
endform. " d0100_exit
*& Form d0100_fcode
text
form d0100_fcode changing c_okcode type sy-ucomm.
data: l_okcode like sy-ucomm.
l_okcode = c_okcode.
clear c_okcode.
call method cl_gui_cfw=>dispatch.
case l_okcode.
when con_exit or con_back or con_canc.
call method g_container_d0100->free.
call method cl_gui_cfw=>flush.
clear g_container_d0100.
clear g_grid_d0100.
set screen 0.
leave screen.
endcase.
endform. " d0100_fcode
*& Form d0100_set_grid_fcat
text
form d0100_set_grid_fcat changing ct_fcat type lvc_t_fcat.
data: ls_fcat type lvc_s_fcat.
gs_layout-stylefname = 'CELLSTYLES'.
*+++ STEP 1: retrieve the fieldcatalog
call function 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'YIAMRA_BER'
CHANGING
ct_fieldcat = ct_fcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
others = 3.
if sy-subrc eq 0.
*+++ STEP 2: modify the fieldcatalog.
loop at ct_fcat into ls_fcat.
clear ls_fcat.
ls_fcat-fieldname = 'LFDNR' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'LFDNR' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'POSNR' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'POSNR' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'UNAME' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'UNAME' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'ROLLE' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'ROLLE' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'PRCTR' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'PRCTR' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'PRCTRGRP' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'PRCTRGRP' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'KOSTL' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'KOSTL' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'KOSTLGRP' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'KOSTLGRP' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'ABRECHNST' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'ABRECHNST' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'ANFORDERER' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'ANFORDERER' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'DATUMNEU' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'DATUMNEU' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'DATUMANF' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'DATUMANF' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'STATUS' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'STATUS' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'DATUMADM' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'DATUMADM' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'DATUMBEG' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'DATUMBEG' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'DATUMEND' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'DATUMEND' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'WORKFLOW' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'WORKFLOW'.
ls_fcat-icon = 'X'.
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'TEXT' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'TEXT' .
ls_fcat-icon = 'X'.
APPEND LS_FCAT TO CT_FCAT.
modify ct_fcat from ls_fcat.
endloop.
endif.
endform. " d0100_set_grid_fcat
*& Form d0100_set_grid_vari
text
form d0100_set_grid_vari changing cs_vari type disvariant.
*+++ allow layout maintenance
*+++ note report is compelling
cs_vari-report = .
cs_vari-handle = .
cs_vari-log_group = .
cs_vari-username = .
cs_vari-variant = .
cs_vari-text = .
cs_vari-dependvars = .
endform. " d0100_set_grid_vari
*& Form handle_button_click
text
-->P_ES_COL_ID text
-->P_ES_ROW_NO text
FORM handle_button_click USING P_ES_COL_ID TYPE lvc_s_col
P_ES_ROW_NO TYPE lvc_s_roid.
DATA: objkey LIKE sweinstcou-objkey.
DATA: ls_ibfobject TYPE sibflporb.
DATA: BEGIN OF ls_output OCCURS 0 .
INCLUDE STRUCTURE yiamra_ber .
DATA cellstyles TYPE lvc_t_styl.
DATA text(28) TYPE c.
DATA printer(10) TYPE c.
DATA workflow(13) TYPE c.
DATA END OF ls_output.
READ TABLE GT_yiamra_ber INDEX p_es_row_no-row_id INTO ls_output.
IF sy-subrc <> 0.
RETURN.
ENDIF.
case P_ES_COL_ID-fieldname.
when 'TEXT'.
IF GT_yiamra_ber-rolle IS NOT INITIAL.
CALL FUNCTION 'Y_I_AMRA_ROLLE_TEXT'
EXPORTING
i_rolle = GT_yiamra_ber-rolle.
endif.
when 'WORKFLOW'.
clear: objkey.
IF sy-subrc = 0 AND p_es_col_id-fieldname = 'WORKFLOW'.
CONCATENATE ls_output-lfdnr ls_output-posnr INTO objkey.
ls_ibfobject-catid = 'BO'.
ls_ibfobject-typeid = 'YIAMRAROLL'.
ls_ibfobject-instid = objkey.
CALL FUNCTION 'SWI_WF_CONNECTIONS_DISPLAY'
EXPORTING
ibf_object = ls_ibfobject
EXCEPTIONS
not_found = 1
no_authority = 2
no_workflows_found = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
endif.
endcase.
ENDFORM. " handle_button_click -
Hi,
I am new to the oops concept..
i know how to write methods...
can any one guide to use these oops concept in *REPORTS*,&
hw can i implement (inheritance, polymorphism,& other concepts..)
can any one give sample report for using all oops concepts
how can implement the methods in Reports..
Thanks& Regards
Spandanahi if you wants to use oo in reports than u can go for alv.there you can get alot of options for using oo.
as a sample look into the below report whcih used 00 for events and displaying the list.
*& Report yi_amra_yiamraber *
report yi_amra_yiamraber no standard page heading.
tables: yiamra_ber,SWW_WI2OBJ.
include <icon>.
include <symbol>.
type-pools: slis.
class cl_gui_resources definition load.
constants: con_true type char1 value 'X',
con_on type char1 value '1',
con_off type char1 value '0',
con_exit like sy-ucomm value 'EXIT',
con_back like sy-ucomm value 'BACK',
con_canc like sy-ucomm value 'CANC'.
data: g_okcode type sy-ucomm,
g_container_d0100 type ref to cl_gui_custom_container,
g_container_name_d0100 type scrfname value 'D0100_CONTAINER',
g_grid_d0100 type ref to cl_gui_alv_grid.
DATA: objkey LIKE sweinstcou-objkey.
DATA: ls_ibfobject TYPE sibflporb.
data : v_WI_ID type SWW_WI2OBJ-WI_ID.
DATA BEGIN OF GT_yiamra_ber OCCURS 0 .
INCLUDE STRUCTURE yiamra_ber .
DATA cellstyles TYPE lvc_t_styl.
DATA text(28) TYPE c.
DATA printer(10) TYPE c.
DATA workflow(13) TYPE c.
DATA END OF GT_yiamra_ber .
DATA ls_style TYPE lvc_s_styl.
DATA: X_FIELDCAT TYPE LVC_S_FCAT.
DATA:L_POS TYPE I VALUE 1.
data: gs_layout TYPE lvc_s_layo.
class Definition.
CLASS lcl_event_handler DEFINITION .
PUBLIC SECTION .
METHODS:
*To control button clicks
handle_button_click
FOR EVENT button_click OF cl_gui_alv_grid
IMPORTING es_col_id
es_row_no.
*PRIVATE SECTION.
METHODS:
perform_copy_checks
IMPORTING
er_data_changed TYPE REF TO cl_alv_changed_data_protocol.
ENDCLASS. "lcl_event_handler DEFINITION
*& Class (Implementation) lcl_event_handler
Text
CLASS lcl_event_handler IMPLEMENTATION.
METHOD handle_button_click .
PERFORM handle_button_click USING es_col_id
es_row_no.
ENDMETHOD.
ENDCLASS. "lcl_event_handler
Display Data
start-of-selection.
end-of-selection.
call screen 0100.
*& Module d0100_set_status OUTPUT
text
module d0100_set_status output.
perform d0100_set_status.
endmodule. " d0100_set_status OUTPUT
*& Module d0100_prepare_container OUTPUT
text
module d0100_prepare_container output.
perform d0100_prepare_container.
endmodule. " d0100_prepare_container OUTPUT
*& Module d0100_exit INPUT
text
module d0100_exit input.
perform d0100_exit changing g_okcode.
endmodule. " d0100_exit INPUT
*& Module d0100_fcode INPUT
text
module d0100_fcode input.
perform d0100_fcode changing g_okcode.
endmodule. " d0100_fcode INPUT
*& Form d0100_set_status
text
form d0100_set_status.
set pf-status 'D0100' .
set titlebar 'D0100'.
SELECT * FROM yiamra_ber
INTO corresponding fields of TABLE GT_yiamra_ber
WHERE LFDNR IN LFDNR
AND POSNR IN POSNR
AND UNAME IN UNAME
AND ROLLE In ROLLE
AND PRCTR IN PRCTR
AND PRCTRGRP IN PRCTRGRP
AND KOSTL IN KOSTL
AND KOSTLGRP IN KOSTLGRP
AND ABRECHNST IN ABREC
AND ANFORDERER IN ANFORD
AND DATUMNEU IN DATUMU
AND DATUMANF IN DATUMA
AND STATUS IN STATUS
AND DATUMADM IN DATUM
AND DATUMBEG IN DATUMB
AND DATUMEND IN DATUME.
loop at gt_yiamra_ber.
CONCATENATE GT_yiamra_ber-lfdnr GT_yiamra_ber-posnr INTO objkey.
ls_ibfobject-catid = 'BO'.
ls_ibfobject-typeid = 'YIAMRAROLL'.
ls_ibfobject-instid = objkey.
clear v_WI_ID.
select single WI_ID from SWW_WI2OBJ into v_WI_ID where INSTID = objkey.
IF sy-subrc = 0.
ls_style-fieldname = 'WORKFLOW'.
ls_style-style = cl_gui_alv_grid=>mc_style_button.
INSERT ls_style INTO TABLE GT_yiamra_ber-cellstyles.
GT_yiamra_ber-anfordern = icon_workflow_event_producer.
GT_yiamra_ber-printer = icon_print.
GT_yiamra_ber-workflow = ICON_HISTORY.
endif.
ls_style-fieldname = 'TEXT' .
ls_style-style = cl_gui_alv_grid=>mc_style_button .
INSERT ls_style INTO TABLE gt_yiamra_ber-cellstyles.
GT_yiamra_ber-text = ICON_DISPLAY_TEXT.
MODIFY GT_yiamra_ber
INDEX sy-tabix
TRANSPORTING cellstyles Text workflow.
endloop.
endform. " d0100_set_status
*& Form d0100_prepare_container
text
form d0100_prepare_container.
data: ls_vari type disvariant,
lt_fcat type lvc_t_fcat.
DATA gr_event_handler TYPE REF TO lcl_event_handler .
DATA IT_UI_FUNCTIONS TYPE UI_FUNCTIONS.
APPEND '&DETAIL' TO IT_UI_FUNCTIONS.
if g_container_d0100 is initial.
create object g_container_d0100
exporting container_name = g_container_name_d0100.
create object g_grid_d0100
exporting i_parent = g_container_d0100.
CREATE OBJECT gr_event_handler .
SET HANDLER gr_event_handler->handle_button_click FOR g_grid_d0100 .
perform d0100_set_grid_vari changing ls_vari.
perform d0100_set_grid_fcat changing lt_fcat.
perform d0100_set_grid_fcat1 changing lt_fcat.
call method g_grid_d0100->INIT_TOOLBAR
EXPORTING
IT_TOOLBAR_EXCLUDING = IT_UI_FUNCTIONS.
call method g_grid_d0100->set_table_for_first_display
EXPORTING
is_layout = gs_layout
IT_TOOLBAR_EXCLUDING = IT_UI_FUNCTIONS
CHANGING
it_outtab = gt_yiamra_ber[]
it_fieldcatalog = lt_fcat.
call method cl_gui_control=>set_focus
EXPORTING
control = g_grid_d0100.
endif.
endform. " d0100_prepare_container
*& Form d0100_exit
text
form d0100_exit changing c_okcode type sy-ucomm.
data: l_okcode like sy-ucomm.
l_okcode = c_okcode.
clear c_okcode.
case l_okcode.
when con_exit or con_back or con_canc.
call method g_grid_d0100->free.
call method g_container_d0100->free.
call method cl_gui_cfw=>flush.
clear g_container_d0100.
clear g_grid_d0100.
set screen 0.
leave screen.
endcase.
endform. " d0100_exit
*& Form d0100_fcode
text
form d0100_fcode changing c_okcode type sy-ucomm.
data: l_okcode like sy-ucomm.
l_okcode = c_okcode.
clear c_okcode.
call method cl_gui_cfw=>dispatch.
case l_okcode.
when con_exit or con_back or con_canc.
call method g_container_d0100->free.
call method cl_gui_cfw=>flush.
clear g_container_d0100.
clear g_grid_d0100.
set screen 0.
leave screen.
endcase.
endform. " d0100_fcode
*& Form d0100_set_grid_fcat
text
form d0100_set_grid_fcat changing ct_fcat type lvc_t_fcat.
data: ls_fcat type lvc_s_fcat.
gs_layout-stylefname = 'CELLSTYLES'.
*+++ STEP 1: retrieve the fieldcatalog
call function 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'YIAMRA_BER'
CHANGING
ct_fieldcat = ct_fcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
others = 3.
if sy-subrc eq 0.
*+++ STEP 2: modify the fieldcatalog.
loop at ct_fcat into ls_fcat.
clear ls_fcat.
ls_fcat-fieldname = 'LFDNR' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'LFDNR' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'POSNR' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'POSNR' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'UNAME' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'UNAME' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'ROLLE' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'ROLLE' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'PRCTR' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'PRCTR' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'PRCTRGRP' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'PRCTRGRP' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'KOSTL' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'KOSTL' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'KOSTLGRP' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'KOSTLGRP' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'ABRECHNST' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'ABRECHNST' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'ANFORDERER' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'ANFORDERER' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'DATUMNEU' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'DATUMNEU' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'DATUMANF' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'DATUMANF' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'STATUS' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'STATUS' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'DATUMADM' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'DATUMADM' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'DATUMBEG' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'DATUMBEG' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'DATUMEND' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'DATUMEND' .
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'WORKFLOW' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'WORKFLOW'.
ls_fcat-icon = 'X'.
APPEND LS_FCAT TO CT_FCAT.
clear ls_fcat.
ls_fcat-fieldname = 'TEXT' .
ls_fcat-outputlen = '10' .
ls_fcat-coltext = 'TEXT' .
ls_fcat-icon = 'X'.
APPEND LS_FCAT TO CT_FCAT.
modify ct_fcat from ls_fcat.
endloop.
endif.
endform. " d0100_set_grid_fcat
*& Form d0100_set_grid_vari
text
form d0100_set_grid_vari changing cs_vari type disvariant.
*+++ allow layout maintenance
*+++ note report is compelling
cs_vari-report = .
cs_vari-handle = .
cs_vari-log_group = .
cs_vari-username = .
cs_vari-variant = .
cs_vari-text = .
cs_vari-dependvars = .
endform. " d0100_set_grid_vari
*& Form handle_button_click
text
-->P_ES_COL_ID text
-->P_ES_ROW_NO text
FORM handle_button_click USING P_ES_COL_ID TYPE lvc_s_col
P_ES_ROW_NO TYPE lvc_s_roid.
DATA: objkey LIKE sweinstcou-objkey.
DATA: ls_ibfobject TYPE sibflporb.
DATA: BEGIN OF ls_output OCCURS 0 .
INCLUDE STRUCTURE yiamra_ber .
DATA cellstyles TYPE lvc_t_styl.
DATA text(28) TYPE c.
DATA printer(10) TYPE c.
DATA workflow(13) TYPE c.
DATA END OF ls_output.
READ TABLE GT_yiamra_ber INDEX p_es_row_no-row_id INTO ls_output.
IF sy-subrc <> 0.
RETURN.
ENDIF.
case P_ES_COL_ID-fieldname.
when 'TEXT'.
IF GT_yiamra_ber-rolle IS NOT INITIAL.
CALL FUNCTION 'Y_I_AMRA_ROLLE_TEXT'
EXPORTING
i_rolle = GT_yiamra_ber-rolle.
endif.
when 'WORKFLOW'.
clear: objkey.
IF sy-subrc = 0 AND p_es_col_id-fieldname = 'WORKFLOW'.
CONCATENATE ls_output-lfdnr ls_output-posnr INTO objkey.
ls_ibfobject-catid = 'BO'.
ls_ibfobject-typeid = 'YIAMRAROLL'.
ls_ibfobject-instid = objkey.
CALL FUNCTION 'SWI_WF_CONNECTIONS_DISPLAY'
EXPORTING
ibf_object = ls_ibfobject
EXCEPTIONS
not_found = 1
no_authority = 2
no_workflows_found = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
endif.
endcase.
ENDFORM. " handle_button_click
reward points if anwer is helpful -
Hi friends,
I have created a session with lsmw, and executed the session in background.
now the problem is out of 2500 records there are 500 records with errors?
so how to correct these errors?? is it manually you have to identify each error transaction?? or is there any way in LSMW or session to download the error records in a file???
thanks a lot.hi,
u can use the below program to get the logfile into excel
You need to provide the session QUEUE ID as input. Please use the code below.
REPORT ZDOWNLOAD_LOG MESSAGE-ID 00.
PARAMETERS:
queue_id LIKE apqi-qid OBLIGATORY.
INCLUDE rsbdcil3. "Read plain log from TemSe
TYPE-POOLS: icon, sdydo.
TABLES:
apqi, apqd, apql, t100, snap.
CONTROLS:
tc_tcodes TYPE TABLEVIEW USING SCREEN 200,
tc_dynpro TYPE TABLEVIEW USING SCREEN 300,
tc_protocol TYPE TABLEVIEW USING SCREEN 400,
tc_bdcld TYPE TABLEVIEW USING SCREEN 600,
tc_q_tcodes TYPE TABLEVIEW USING SCREEN 700,
tab_dynpro TYPE TABSTRIP,
tab_apqi TYPE TABSTRIP.
FIELD-SYMBOLS:
DATA:
this table keeps those tcodes actually displayed
BEGIN OF bdc_tcodes OCCURS 0,
index TYPE i, tcode LIKE sy-tcode, status(1), s_text(16),
END OF bdc_tcodes,
this table keeps all tcodes of the session
BEGIN OF all_bdc_tcodes OCCURS 0,
index TYPE i, tcode LIKE sy-tcode, status(1), s_text(16),
END OF all_bdc_tcodes.
DATA:
this table keeps those dynpros actually displayed
BEGIN OF bdc_dynpro OCCURS 0,
program LIKE sy-cprog, dynpro LIKE sy-dynnr,
fnam LIKE bdcdata-fnam, fval LIKE bdcdata-fval,
index TYPE i,
END OF bdc_dynpro,
this table keeps all dynpros of the session
BEGIN OF all_bdc_dynpro OCCURS 0,
program LIKE sy-cprog, dynpro LIKE sy-dynnr,
fnam LIKE bdcdata-fnam, fval LIKE bdcdata-fval,
index TYPE i,
END OF all_bdc_dynpro,
dynpro_index TYPE i,
cat_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA:
this table keeps protocol lines to be displayed
BEGIN OF bdc_protocol OCCURS 0.
INCLUDE STRUCTURE bdclm.
DATA:
longtext TYPE bdc_mpar,
END OF bdc_protocol.
DATA:
it_apqd LIKE apqd OCCURS 0 WITH HEADER LINE,
udat LIKE apqd-vardata, sdat LIKE apqd-vardata.
DATA:
BEGIN OF tf OCCURS 0, "interne tabelle mit dynprofeldern
count TYPE i VALUE 0, "zum abmischen
trcd(4),stat(4),
pgm(8), "programmname
dyn(4) TYPE n, "dynpronummer
fname(35), farg(132), fstart(5) TYPE p, fende(5) TYPE p,
END OF tf.
needed for check if TemSe interface is active:
DATA: protparam(60) VALUE 'bdc/new_protocol',
newprot(3) VALUE 'off'.
message header
DATA:
BEGIN OF bdcmh,
mtype, state,
tcode(20), " (4 -> 20)
prog(40), " (8 -> 40)
dynr(4), sepc, filler,
END OF bdcmh.
transaction header
DATA:
BEGIN OF bdcth,
mtype, state,
tcode(20), " (4 -> 20)
postg, print,
msgid(20), " (2 -> 20)
END OF bdcth.
DATA:
bdcmhlen TYPE i VALUE 68, " (20 -> 68 ) MessageHeaderlaenge
dcnt TYPE i, tcnt TYPE i, gencnt TYPE i, delcnt TYPE i, wcount TYPE i,
mfstart TYPE i, mfende TYPE i, mflen TYPE i, mfart(2).
DATA BEGIN OF bdclm OCCURS 0. " ITabelle der Messageseintraege
INCLUDE STRUCTURE bdclm. " LogTabelle
DATA: counter TYPE i,
longtext TYPE bdc_mpar,
isdetail(1) TYPE c,
END OF bdclm .
DATA: lm LIKE bdclm,
save_mpar TYPE bdc_mpar.
DATA BEGIN OF bdcld OCCURS 0. " ITabelle der Verzeichniseintraege
INCLUDE STRUCTURE bdcld. " LogTabelle aller Protokolle
DATA: logname(80), " protokollpfad
local_host(12), " lokaler rechner
cnt TYPE i, " satzzaehler
active(1) TYPE c, " active flag
temseid TYPE rstsoname. " TemSe ID
DATA END OF bdcld .
DATA:
logtab LIKE bdcld OCCURS 0 WITH HEADER LINE,
logtab_temse LIKE apql OCCURS 0 WITH HEADER LINE.
DATA:
main_okcode TYPE fcode,
d0500_fcode TYPE fcode,
d0600_fcode TYPE fcode,
d0700_fcode TYPE fcode,
d0701_fcode TYPE fcode,
tc_mark(1),
counter TYPE i,
status_icon(32),
dynprotab_subscreen_dynpro LIKE sy-dynnr,
header_subscreen_dynpro LIKE sy-dynnr.
DATA:
ex_date(12), string(48), tab_proto(48).
Radio buttons and checkbox on screen 0500
DATA:
BEGIN OF rb,
tcodes_all VALUE 'X', tcodes_error,
fieldlist VALUE ' ',
pro_all VALUE 'X', pro_tcode, pro_session,
log_detail,
END OF rb.
DATA:
Flags for identifying contents of the bdc_... tables
bdc_tcodes_content(1), "a: all, e: errors
bdc_dynpro_content(1), "f: fieldlist, s: screens only
bdc_protocol_content(1), "a: all, t: for transaction, s: for session
bdc_lines LIKE sy-index,
c_field(132),
c_line TYPE i,
selected_index LIKE sy-index,
selected_protocol LIKE sy-index,
tc_index LIKE sy-index,
tc_select LIKE sy-index,
tcode_index LIKE bdc_tcodes-index,
tcode_index_apqd LIKE bdc_tcodes-index,
1st_bdc_tcode_index LIKE bdc_tcodes-index,
i_tcodes TYPE i,
i_protocols TYPE i,
tcode LIKE sy-tcode,
tcode_status(16),
previous_tab(64).
Data needed for CATT simulation of screens
DATA:
BEGIN OF bdc_subscreen,
program LIKE sy-cprog,
dynpro LIKE sy-dynnr,
subscr(64),
END OF bdc_subscreen.
Table for keeping fcodes to be excluded from pf-status
DATA:
BEGIN OF ex_cua OCCURS 2,
fcode LIKE rsmpe-func,
END OF ex_cua.
data for keeping scoll infos
DATA:
current_page LIKE sy-tabix VALUE 1,
new_page LIKE sy-tabix,
total_pages LIKE sy-tabix,
new_line LIKE sy-tabix,
entries LIKE sy-tabix,
loopc LIKE sy-loopc.
data for queue dump
DATA:
BEGIN OF q,
tcode_index LIKE all_bdc_tcodes-index,
itab_index LIKE all_bdc_tcodes-index,
c_field(132),
c_line LIKE sy-index,
c_area(132),
wa LIKE LINE OF all_bdc_tcodes,
control_init VALUE 'X',
reuse_control,
uc_bytes TYPE i,
c(1),
show_hex VALUE ' ',
END OF q.
DATA:
t TYPE sdydo_text_element,
c(128).
TYPES:
BEGIN OF block,
dt TYPE REF TO cl_dd_table_element,
dta TYPE REF TO cl_dd_table_area,
END OF block.
DATA:
it_blocks TYPE STANDARD TABLE OF block,
b_wa TYPE block.
DATA:
dd TYPE REF TO cl_dd_document,
cust TYPE REF TO cl_gui_custom_container.
TYPES:
BEGIN OF cx,
char(1) TYPE c,
hex(4) TYPE x,
xtoc(8) TYPE c,
END OF cx,
uc_1(1) TYPE x,
uc_2(2) TYPE x,
uc_4(4) TYPE x.
DATA:
it_cx TYPE STANDARD TABLE OF cx,
cx TYPE cx.
FIELD-SYMBOLS:
DATA:
BEGIN OF count,
start TYPE i,
index TYPE i,
part TYPE i,
rest TYPE i,
END OF count.
DATA:
cspan TYPE i.
CONSTANTS:
nr_cols TYPE i VALUE 64,
reload_apqi VALUE 'X'.
DATA:
BEGIN OF apqdcnt,
transcntb TYPE apq_tran, "neu
msgcntb TYPE apq_reco,
transcnte TYPE apq_tran, "fehlerhaft
msgcnte TYPE apq_reco,
transcnto TYPE apq_tran, "noch zu verarbeiten
msgcnto TYPE apq_reco,
transcntf TYPE apq_tran, "verarbeitet
msgcntf TYPE apq_reco,
transcntd TYPE apq_tran, "gelöscht
msgcntd TYPE apq_reco,
transcnt TYPE apq_tran, "enthält aktuell
msgcnt TYPE apq_reco,
transcntx TYPE apq_tran, "entfernt
msgcntx TYPE apq_reco,
transcntp TYPE apq_tran, "angelegt
msgcntp TYPE apq_reco,
END OF apqdcnt.
DATA:
dynpro_cnt TYPE i,
show_dynpro_cnt VALUE ' ',
filename TYPE string,
lt_string TYPE char4000 OCCURS 0,
wa_string TYPE char4000,
p_cnt(8).
START-OF-SELECTION.
PERFORM prepare USING queue_id.
CALL SCREEN 100.
*& Form prepare
FORM prepare USING qid TYPE apqi-qid.
CLEAR: bdc_tcodes_content, bdc_dynpro_content, bdc_protocol_content.
SELECT SINGLE * FROM apqi WHERE qid = qid.
IF sy-subrc <> 0.
MESSAGE i307(00) WITH 'Lesen'(010) 'mit Queue-ID'(011) qid.
LEAVE PROGRAM.
ENDIF.
PERFORM fill_all_bdc_tcodes. " find all transactions
PERFORM get_logfiles_for_qid. " logfiles -> bdcld
PERFORM get_log USING 1. " most recent log -> bdclm
selected_protocol = 1.
GET PARAMETER ID 'RSBDC_ANALYSE_RB' FIELD rb.
IF sy-subrc <> 0.
rb-tcodes_all = 'X'. rb-pro_all = 'X'.
ENDIF.
ex_cua-fcode = 'FL_ON'. APPEND ex_cua.
ex_cua-fcode = 'FL_OFF'. APPEND ex_cua.
ENDFORM. "prepare
Module loopc
MODULE loopc OUTPUT.
loopc = sy-loopc.
ENDMODULE. "loopc OUTPUT
Module status_main
MODULE status_main OUTPUT.
CLEAR main_okcode.
SET TITLEBAR '0100' WITH apqi-groupid.
LOOP AT SCREEN.
set text of tabstrip tab for protocol display or set tab invisible if
no protocol was found for the qid
IF screen-name = 'TAB_PROTO'.
IF selected_protocol IS INITIAL.
screen-invisible = 1. MODIFY SCREEN.
ELSE.
WRITE bdcld-edate TO ex_date.
CONCATENATE '@96@' 'Protokoll vom'(020) ex_date "ICON_HISTORY
INTO tab_proto SEPARATED BY ' '.
ENDIF.
ENDIF.
ENDLOOP.
set header and subscreen dynpro depending on active tab
CASE tab_dynpro-activetab.
WHEN 'TAB_TCODES'.
SET PF-STATUS 'PF_MAIN' EXCLUDING ex_cua.
dynprotab_subscreen_dynpro = '0200'.
header_subscreen_dynpro = '0201'.
WHEN 'TAB_LIST'.
IF rb-fieldlist = 'X'.
SET PF-STATUS 'PF_MAIN_NAVI' EXCLUDING 'FL_ON'.
ELSE.
SET PF-STATUS 'PF_MAIN_NAVI' EXCLUDING 'FL_OFF'.
ENDIF.
dynprotab_subscreen_dynpro = '0300'.
header_subscreen_dynpro = '0301'.
WHEN 'TAB_PROTO'.
IF rb-pro_tcode = 'X'.
SET PF-STATUS 'PF_MAIN_NAVI' EXCLUDING ex_cua.
ELSE.
SET PF-STATUS 'PF_MAIN' EXCLUDING ex_cua.
ENDIF.
dynprotab_subscreen_dynpro = '0400'.
header_subscreen_dynpro = '0401'.
WHEN OTHERS.
SET PF-STATUS 'PF_MAIN' EXCLUDING ex_cua.
tab_dynpro-activetab = 'TAB_TCODES'.
dynprotab_subscreen_dynpro = '0200'.
header_subscreen_dynpro = '0201'.
ENDCASE.
is this the first call?
IF tcode_index IS INITIAL.
tcode_index = 1.
tcode = all_bdc_tcodes-tcode.
tcode_status = all_bdc_tcodes-s_text.
ELSE.
tcode_index was already set in PAI
tcode = bdc_tcodes-tcode.
tcode_status = bdc_tcodes-s_text.
ENDIF.
ENDMODULE. "status_main OUTPUT
Module exit_main
MODULE exit_main INPUT.
SET PARAMETER ID 'RSBDC_ANALYSE_RB' FIELD rb.
LEAVE PROGRAM.
ENDMODULE. "exit_main INPUT
Module user_command_main
MODULE user_command_main INPUT.
IF tab_dynpro-activetab <> 'TAB_TCODES'.
previous_tab = tab_dynpro-activetab.
ENDIF.
CASE main_okcode.
change the active tab
WHEN 'TAB_TCODES'.
tab_dynpro-activetab = 'TAB_TCODES'.
WHEN 'TAB_LIST'.
tab_dynpro-activetab = 'TAB_LIST'.
WHEN 'TAB_PROTO'.
tab_dynpro-activetab = 'TAB_PROTO'.
select entry for display
WHEN 'DISPLAY'.
PERFORM set_new_display.
change the viewing options
WHEN 'VIEW_OPT'.
CALL SCREEN 500 STARTING AT 5 5.
show list of protocols
WHEN 'PROTO'.
IF selected_protocol > 0.
CALL SCREEN 600 STARTING AT 5 5.
ELSE.
MESSAGE s324(00).
ENDIF.
WHEN 'PROTO_REFRESH'.
reload protocol file (while watching running sessions)
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = 'Protokoll wird erneut gelesen ...'(006).
PERFORM get_log USING selected_protocol.
PERFORM extend_message_texts.
CLEAR bdc_protocol_content.
switch field list on or off
WHEN 'FL_ON'. rb-fieldlist = 'X'.
WHEN 'FL_OFF'. rb-fieldlist = ' '.
go to first transaction
WHEN 'FIRST'.
IF tcode_index > 1.
READ TABLE bdc_tcodes INDEX 1.
tcode_index = 1.
PERFORM scan_transaction USING bdc_tcodes-index.
CLEAR: bdc_dynpro_content, bdc_protocol_content.
ENDIF.
go to next transaction
WHEN 'NEXT'.
IF tcode_index < i_tcodes.
tcode_index = tcode_index + 1.
READ TABLE bdc_tcodes INDEX tcode_index.
PERFORM scan_transaction USING bdc_tcodes-index.
CLEAR: bdc_dynpro_content, bdc_protocol_content.
ENDIF.
go to previous transaction
WHEN 'PREV'.
IF tcode_index > 1.
tcode_index = tcode_index - 1.
READ TABLE bdc_tcodes INDEX tcode_index.
PERFORM scan_transaction USING bdc_tcodes-index.
CLEAR: bdc_dynpro_content, bdc_protocol_content.
ENDIF.
go to last transaction
WHEN 'LAST'.
IF tcode_index < i_tcodes.
tcode_index = i_tcodes.
READ TABLE bdc_tcodes INDEX i_tcodes.
PERFORM scan_transaction USING bdc_tcodes-index.
CLEAR: bdc_dynpro_content, bdc_protocol_content.
ENDIF.
scrolling in table controls
WHEN 'P-' OR 'P--' OR 'P' OR 'P+'.
PERFORM scrolling.
display queue dump
WHEN 'QUEUE'.
CALL SCREEN '0700'.
display header (APQI)
WHEN 'APQI'.
CALL SCREEN '0701'.
recalculate dynpro counters
WHEN 'DISP_CNT'.
PERFORM recalculate_counters.
leave this nice program
WHEN 'BACK' OR 'END'.
SET PARAMETER ID 'RSBDC_ANALYSE_RB' FIELD rb.
LEAVE PROGRAM.
WHEN OTHERS.
ENDCASE.
if field list or protocol chosen, but no transaction has been
scanned yet, it's now time to read the first transaction from APQD
IF ( main_okcode = 'TAB_LIST' OR
main_okcode = 'TAB_PROTO' ) AND
tcode_index_apqd IS INITIAL.
READ TABLE bdc_tcodes INDEX 1.
IF sy-subrc = 0.
PERFORM scan_transaction USING bdc_tcodes-index.
tcode_index_apqd = bdc_tcodes-index.
ENDIF.
ENDIF.
ENDMODULE. "user_command_main INPUT
Module fill_bdc_tcodes
copy transactions from all_bdc_tcodes to bdc_tcodes
according to rb-settings
MODULE fill_bdc_tcodes OUTPUT.
check whether contents are already up to date
IF show_dynpro_cnt = 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'DCT'.
screen-invisible = 0.
screen-active = 1.
MODIFY SCREEN.
ENDIF.
IF screen-name = 'CMD_DISP_CNT'.
screen-invisible = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
IF bdc_tcodes_content = 'A' AND rb-tcodes_all = 'X'.
EXIT.
ELSEIF bdc_tcodes_content = 'E' AND rb-tcodes_error = 'X'.
EXIT.
ENDIF.
fill bdc_tcodes according to the settings in screen 500
CLEAR bdc_tcodes. REFRESH bdc_tcodes.
IF rb-tcodes_all ='X'.
LOOP AT all_bdc_tcodes.
bdc_tcodes = all_bdc_tcodes. APPEND bdc_tcodes.
ENDLOOP.
bdc_tcodes_content = 'A'.
ELSEIF rb-tcodes_error = 'X'.
LOOP AT all_bdc_tcodes WHERE status = 'E'.
bdc_tcodes = all_bdc_tcodes. APPEND bdc_tcodes.
ENDLOOP.
bdc_tcodes_content = 'E'.
ENDIF.
DESCRIBE TABLE bdc_tcodes LINES bdc_lines.
i_tcodes = bdc_lines.
tc_tcodes-lines = bdc_lines.
CLEAR tcode_index_apqd.
READ TABLE bdc_tcodes INDEX 1.
1st_bdc_tcode_index = bdc_tcodes-index.
tcode_index = 1.
ENDMODULE. "fill_bdc_tcodes OUTPUT
Module fill_bdc_dynpro
copy dynpro data from all_bdc_dynpro to bdc_bdc_dynpro
according to rb-settings
MODULE fill_bdc_dynpro OUTPUT.
DATA: wa LIKE LINE OF tc_dynpro-cols,
tline LIKE sy-index.
tline = tc_dynpro-top_line.
tc_dynpro-top_line = tline.
hide fields if no detailed field list shall be displayed
LOOP AT tc_dynpro-cols INTO wa.
IF sy-tabix = 3 OR sy-tabix = 4.
IF rb-fieldlist = 'X'.
CLEAR wa-invisible.
ELSE.
wa-invisible = 1.
ENDIF.
MODIFY tc_dynpro-cols FROM wa.
ENDIF.
ENDLOOP.
is bdc_dynpro_content already correctly filled ?
IF rb-fieldlist = ' ' AND bdc_dynpro_content = 'S'.
EXIT.
ELSEIF rb-fieldlist = 'X' AND bdc_dynpro_content = 'F'.
EXIT.
ENDIF.
CLEAR bdc_dynpro. REFRESH bdc_dynpro.
IF rb-fieldlist = ' '.
LOOP AT all_bdc_dynpro WHERE NOT program IS INITIAL.
bdc_dynpro = all_bdc_dynpro.
APPEND bdc_dynpro.
ENDLOOP.
bdc_dynpro_content = 'S'.
ELSEIF rb-fieldlist = 'X'.
LOOP AT all_bdc_dynpro.
bdc_dynpro = all_bdc_dynpro.
APPEND bdc_dynpro.
ENDLOOP.
bdc_dynpro_content = 'F'.
ENDIF.
DESCRIBE TABLE bdc_dynpro LINES bdc_lines.
tc_dynpro-lines = bdc_lines.
tc_dynpro-top_line = 1.
ENDMODULE. "fill_bdc_dynpro OUTPUT
Module fill_bdc_protocol
copy messages from bdclm to bdc_protocol
according to rb-settings
MODULE fill_bdc_protocol OUTPUT.
IF rb-pro_all = 'X' AND bdc_protocol_content = 'A'.
EXIT.
ELSEIF rb-pro_tcode = 'X' AND bdc_protocol_content = 'T'.
EXIT.
ELSEIF rb-pro_session = 'X' AND bdc_protocol_content = 'S'.
EXIT.
ENDIF.
CLEAR bdc_protocol. REFRESH bdc_protocol.
IF rb-pro_all = 'X'.
LOOP AT bdclm.
IF rb-log_detail = ' ' AND bdclm-isdetail = 'X'.
CONTINUE.
ENDIF.
MOVE-CORRESPONDING bdclm TO bdc_protocol.
APPEND bdc_protocol.
ENDLOOP.
bdc_protocol_content = 'A'.
ELSEIF rb-pro_tcode = 'X'.
LOOP AT bdclm WHERE tcnt = tcode_index_apqd.
IF rb-log_detail = ' ' AND bdclm-isdetail = 'X'.
CONTINUE.
ENDIF.
MOVE-CORRESPONDING bdclm TO bdc_protocol.
APPEND bdc_protocol.
ENDLOOP.
bdc_protocol_content = 'T'.
ELSEIF rb-pro_session = 'X'.
LOOP AT bdclm WHERE tcnt = ' '.
MOVE-CORRESPONDING bdclm TO bdc_protocol.
APPEND bdc_protocol.
ENDLOOP.
bdc_protocol_content = 'S'.
ENDIF.
DESCRIBE TABLE bdc_protocol LINES bdc_lines.
tc_protocol-lines = bdc_lines.
tc_protocol-top_line = 1.
ENDMODULE. "fill_bdc_protocol OUTPUT
Module check_bdc_tcodes
MODULE check_bdc_protocol OUTPUT.
display lines intensified if they contain e- or a-messages
IF bdc_protocol-mart = 'E'
OR bdc_protocol-mart = 'A'.
LOOP AT SCREEN.
screen-intensified = 1. MODIFY SCREEN.
ENDLOOP.
ENDIF.
skip empty lines
IF bdc_protocol-indate IS INITIAL.
EXIT FROM STEP-LOOP.
ENDIF.
ENDMODULE. "check_bdc_protocol OUTPUT
Module get_cursor_position
MODULE get_cursor_position INPUT.
GET CURSOR FIELD c_field LINE c_line.
IF c_line > 0.
CASE tab_dynpro-activetab.
WHEN 'TAB_TCODES'.
selected_index = tc_tcodes-top_line + c_line - 1.
WHEN 'TAB_LIST'.
selected_index = tc_dynpro-top_line + c_line - 1.
WHEN 'TAB_PROTO'.
selected_index = tc_protocol-top_line + c_line - 1.
ENDCASE.
ELSE.
selected_index = 0.
ENDIF.
ENDMODULE. "get_cursor_position INPUT
Module d0500_init
MODULE d0500_init OUTPUT.
SET PF-STATUS 'POPUP'.
SET TITLEBAR '0500'.
ENDMODULE. "d0500_init OUTPUT
Module d0500_fcode
MODULE d0500_fcode INPUT.
LEAVE TO SCREEN 0.
ENDMODULE. "d0500_fcode INPUT
Module d0600_init
MODULE d0600_init OUTPUT.
SET PF-STATUS 'POPUP'.
SET TITLEBAR '0600'.
CLEAR d0600_fcode.
DESCRIBE TABLE bdcld LINES i_protocols.
tc_bdcld-lines = i_protocols.
ENDMODULE. "d0600_init OUTPUT
Module d0500_fcode
read and process another protocol which was selected on
popup dynpro 500
MODULE d0600_fcode INPUT.
CASE d0600_fcode.
WHEN 'POP_CANCEL'.
LEAVE TO SCREEN 0.
WHEN 'POP_OKAY'.
read selected protocol
IF tc_select <> selected_protocol.
CLEAR bdclm. REFRESH bdclm.
CLEAR bdc_protocol_content.
PERFORM get_log USING tc_select.
PERFORM extend_message_texts.
selected_protocol = tc_select.
ENDIF.
LEAVE TO SCREEN 0.
WHEN OTHERS.
scroll in table
ENDCASE.
ENDMODULE. "d0600_fcode INPUT
Module set_mark
set table view marker for the actual selected protocol
(dynpro 500)
MODULE set_mark OUTPUT.
tc_index = tc_bdcld-top_line + tc_bdcld-current_line - 1.
IF tc_index = selected_protocol.
tc_mark = 'X'.
ENDIF.
ENDMODULE. "set_mark OUTPUT
Module get_mark
get index of selected protocol on popup 500
MODULE get_mark INPUT.
IF tc_mark = 'X'.
tc_select = tc_bdcld-top_line + tc_bdcld-current_line - 1.
ENDIF.
ENDMODULE. "get_mark INPUT
FORM: fill_bdc_tcodes
Read all transaction codes from apqd and fill internal table
FORM fill_all_bdc_tcodes.
read APQD blocks 1 for QID
CLEAR all_bdc_tcodes. REFRESH all_bdc_tcodes.
SELECT * FROM apqd WHERE qid = queue_id AND block = 1
ORDER BY PRIMARY KEY.
MOVE apqd-vardata TO bdcth.
all_bdc_tcodes-index = apqd-trans.
all_bdc_tcodes-tcode = bdcth-tcode.
all_bdc_tcodes-status = bdcth-state.
APPEND all_bdc_tcodes.
ENDSELECT.
convert status flag to long text
calculate transaction counters
CLEAR apqdcnt.
LOOP AT all_bdc_tcodes.
ADD 1 TO apqdcnt-transcnt.
CASE all_bdc_tcodes-status.
WHEN 'D' OR 'G'.
all_bdc_tcodes-s_text = 'gelöscht'(005).
ADD 1 TO apqdcnt-transcntd.
WHEN 'F'.
all_bdc_tcodes-s_text = 'verarbeitet'(002).
ADD 1 TO apqdcnt-transcntf.
WHEN 'E'.
all_bdc_tcodes-s_text = 'fehlerhaft'(001).
ADD 1 TO apqdcnt-transcnte.
WHEN 'B'.
all_bdc_tcodes-s_text = ' '. "neu
ADD 1 TO apqdcnt-transcntb.
WHEN OTHERS.
all_bdc_tcodes-s_text = ' '.
ENDCASE.
MODIFY all_bdc_tcodes.
ENDLOOP.
apqdcnt-transcnto = apqdcnt-transcntb
+ apqdcnt-transcnte.
apqdcnt-transcntd = apqdcnt-transcnt
- apqdcnt-transcntf
- apqdcnt-transcnte
- apqdcnt-transcntb.
apqdcnt-transcntp = apqi-puttrans.
apqdcnt-transcntx = apqdcnt-transcntp
- apqdcnt-transcnt.
IF apqi-msgcnt < 1000.
PERFORM recalculate_counters.
ENDIF.
ENDFORM. "fill_all_bdc_tcodes
FORM scan_transaction
Read all APQD data for a selected transaction
FORM scan_transaction USING tcnt.
CLEAR it_apqd. REFRESH it_apqd.
CLEAR all_bdc_dynpro. REFRESH all_bdc_dynpro.
SELECT * FROM apqd INTO TABLE it_apqd
WHERE qid = queue_id AND trans = tcnt.
tcode_index_apqd = tcnt. "Display correct index in header screens
CLEAR dynpro_index.
LOOP AT it_apqd.
IF it_apqd-vardata(1) = 'M'. "it's a message header
dynpro_index = dynpro_index + 1.
PERFORM scan_dynpro.
ENDIF.
ENDLOOP.
ENDFORM. "scan_transaction
FORM: scan_dynpro
Scan APQD data for a single dynpro screen
and put it into a BDCDATA table
FORM scan_dynpro.
MOVE it_apqd-vardata TO bdcmh.
TRANSLATE bdcmh TO UPPER CASE.
get program name and screen number
CLEAR all_bdc_dynpro.
all_bdc_dynpro-index = dynpro_index.
all_bdc_dynpro-program = bdcmh-prog.
all_bdc_dynpro-dynpro = bdcmh-dynr.
APPEND all_bdc_dynpro.
get all the fnam/fval pairs
MOVE it_apqd-vardata TO sdat.
SHIFT sdat BY bdcmhlen PLACES.
wcount = bdcmhlen.
mfstart = wcount.
mfart = 'FN'.
WHILE wcount LE it_apqd-varlen.
IF sdat(1) = bdcmh-sepc.
mfende = wcount.
PERFORM move_tf.
ENDIF.
SHIFT sdat.
wcount = wcount + 1.
ENDWHILE.
ENDFORM. "scan_dynpro
Parse the apqd-vardata field for FNAM/FVAL pairs
FORM: move_tf
fills TF-FNAME and TF-FARG
FORM move_tf.
mflen = mfende - mfstart.
CASE mfart.
WHEN 'FN'.
CLEAR: tf-fname, udat.
tf-fstart = mfstart.
MOVE it_apqd-vardata TO udat.
SHIFT udat BY mfstart PLACES.
WRITE udat TO tf-fname+0(mflen).
TRANSLATE tf-fname TO UPPER CASE.
mfstart = mfende + 1.
mfende = 0.
MOVE 'FA' TO mfart.
WHEN 'FA'.
CLEAR: tf-farg, udat.
tf-fende = mfende.
MOVE it_apqd-vardata TO udat.
SHIFT udat BY mfstart PLACES.
WRITE udat TO tf-farg+0(mflen).
APPEND tf.
tf-stat = space.
mfstart = mfende + 1.
mfende = 0.
MOVE 'FN' TO mfart.
copy to bdcdata table if fname/fval is not empty
CHECK NOT tf-fname IS INITIAL.
CHECK NOT TF-FARG IS INITIAL.
CLEAR all_bdc_dynpro.
all_bdc_dynpro-index = dynpro_index.
all_bdc_dynpro-fnam = tf-fname.
all_bdc_dynpro-fval = tf-farg.
APPEND all_bdc_dynpro.
WHEN OTHERS.
ENDCASE.
ENDFORM. "move_tf
Form: get_logfiles_for_qid
DATA:
paramname(11) VALUE 'bdc/logfile',
logname(80),
logname1(80),
old_logfile(06) VALUE 'bdclog',
new_logfile(04) VALUE 'BI* ',
shiftlen TYPE i VALUE 0,
protflen TYPE i VALUE 0,
protfoff TYPE i VALUE 0,
rlen TYPE i VALUE 0,
bdcld# TYPE i, one TYPE i, ec TYPE i, return TYPE i,
protcnt TYPE i.
DATA:
BEGIN OF prot_list OCCURS 0.
INCLUDE rstr0112.
DATA: seen(1), to_be_deleted(1), has_changed(1), local_host(24),
END OF prot_list.
DATA:
BEGIN OF file.
INCLUDE rstr0112.
DATA END OF file.
DATA:
BEGIN OF bdclda OCCURS 0.
INCLUDE STRUCTURE bdcld.
DATA END OF bdclda .
DATA:
digits(10) TYPE c VALUE '0123456789',
mtext(124) TYPE c, "Messagetext
mtext1(124) TYPE c, "Messagetext
mtext2(273) TYPE c, "Messagetext
do_condense TYPE c,
mtvaroff TYPE i,
showtyp(05) TYPE c, "showtyp
lmapn(12) TYPE c, "Hilfsfeld log-mapn
date1 TYPE d,
linct0 LIKE sy-linct,
parcnt TYPE i,
sp_len TYPE i,
charcnt TYPE i,
wcnt TYPE i,
mparcnt TYPE i,
qfound(04) TYPE n,
x(1) VALUE 'X'.
DATA: "Aufbereitung Messagetext
BEGIN OF mt,
off(02) TYPE n,
len(02) TYPE n,
text(80),
END OF mt.
DATA: "Aufbereitung Messagetext
BEGIN OF mttab OCCURS 4,
off(02) TYPE n,
len(02) TYPE n,
text(80),
END OF mttab.
DATA: "Hilfsfelder
BEGIN OF old,
tcnt LIKE bdclm-tcnt,
mcnt LIKE bdclm-mcnt,
END OF old.
DATA: "ParameterAufbereitung
BEGIN OF par,
len(02) TYPE n,
text(254),
END OF par.
Form get_logfiles_for_qid
find all log files for the session in analysis,
either in common log or in TemSe
FORM get_logfiles_for_qid.
get logs from TemSe
PERFORM get_logfiles_from_temse.
now bdcld contains the log files for the given qid
SORT bdcld BY edate DESCENDING etime DESCENDING.
DESCRIBE TABLE bdcld LINES selected_protocol.
ENDFORM. "get_logfiles_for_qid
Form: log_dir
FORM log_dir.
CLEAR bdclda. REFRESH bdclda.
CALL 'ReadLogDirA' ID 'LOGN' FIELD logname
ID 'DTAB' FIELD bdclda-sys
ID 'AINF' FIELD one
ID 'ECNT' FIELD ec.
IF sy-subrc NE 0 OR ec = 0.
EXIT.
ENDIF.
LOOP AT bdclda WHERE lmand = sy-mandt AND quid = queue_id.
MOVE-CORRESPONDING bdclda TO bdcld.
MOVE logname TO bdcld-logname.
MOVE prot_list-local_host TO bdcld-local_host.
APPEND bdcld.
ENDLOOP.
ENDFORM. " log_dir.
Form: list_protocol_files
Suche nach allen aktiven Protokolldateien -> Tabelle prot_list
FORM list_protocol_files.
CLEAR: logname1, prot_list, protcnt.
REFRESH: prot_list.
protflen = STRLEN( logname ).
MOVE logname TO logname1.
WHILE shiftlen LE protflen.
IF logname1 CP '#B#I'. "suchen nach muster #B#I
IF sy-fdpos EQ 0. "nur großbuchstaben
shiftlen = 2.
ELSE.
shiftlen = sy-fdpos.
ENDIF.
protfoff = protfoff + shiftlen.
SHIFT logname1 BY shiftlen PLACES.
ELSE.
shiftlen = protflen + 1.
protfoff = protfoff - 2.
ENDIF.
ENDWHILE.
IF protfoff LE 0.
protfoff = 0.
ENDIF.
rlen = 80 - protfoff.
WRITE space TO logname+protfoff(rlen).
WRITE new_logfile TO logname+protfoff(4).
PERFORM search_prot USING logname.
ENDFORM. " FILL_PROT_LIST
FORM : search_prot *
FORM search_prot USING prot_files.
DATA: errcnt(2) TYPE p VALUE 0.
CALL 'C_DIR_READ_START' ID 'FILE' FIELD prot_files
ID 'ERRNO' FIELD file-errno
ID 'ERRMSG' FIELD file-errmsg.
IF sy-subrc <> 0.
MESSAGE i398(00)
WITH sy-subrc 'C_DIR_READ_START' ' ' prot_files.
MESSAGE i398(00)
WITH sy-subrc 'C_DIR_READ_START...'
file-errno file-errmsg.
ENDIF.
DO. "aufbau der internen tabelle fuer alle
"BI-Protokolle
CLEAR file.
CALL 'C_DIR_READ_NEXT'
ID 'TYPE' FIELD file-type
ID 'NAME' FIELD file-name
ID 'LEN' FIELD file-len
ID 'OWNER' FIELD file-owner
ID 'MTIME' FIELD file-mtime
ID 'MODE' FIELD file-mode
ID 'ERRNO' FIELD file-errno
ID 'ERRMSG' FIELD file-errmsg.
MOVE sy-subrc TO file-subrc.
CASE sy-subrc.
WHEN 0.
CASE file-type(1).
WHEN 'F'. " normal file.
MOVE 1 TO file-useable.
WHEN 'f'. " normal file.
MOVE 1 TO file-useable.
WHEN OTHERS. " Directory, device, fifo, socket,...
MOVE 0 TO file-useable.
ENDCASE.
IF file-len = 0.
MOVE 0 TO file-useable.
ENDIF.
WHEN 1.
EXIT.
WHEN OTHERS. " SY-SUBRC >= 2
ADD 1 TO errcnt.
IF errcnt > 10.
EXIT.
ENDIF.
IF sy-subrc = 5.
MOVE: '???' TO file-type,
'???' TO file-owner,
'???' TO file-mode.
ELSE.
ENDIF.
file-useable = 0.
ENDCASE.
MOVE-CORRESPONDING file TO prot_list.
SHIFT file-name BY protfoff PLACES.
prot_list-local_host = file-name.
protcnt = protcnt + 1.
APPEND prot_list.
ENDDO.
CALL 'C_DIR_READ_FINISH'
ID 'ERRNO' FIELD file-errno
ID 'ERRMSG' FIELD file-errmsg.
IF sy-subrc <> 0.
WRITE: / 'C_DIR_READ_FINISH'(999), 'SUBRC', SY-SUBRC.
ENDIF.
ENDFORM. " search_prot
Form: get_log
FORM get_log USING log_index.
DATA: BEGIN OF logtable OCCURS 50, " plain log information in TemSe
enterdate LIKE btctle-enterdate,
entertime LIKE btctle-entertime,
logmessage(400) TYPE c,
END OF logtable.
DATA:
external_date(10),
internal_date TYPE d.
LOOP AT bdcld.
logname = bdcld-logname.
IF newprot = 'OFF'.
get logfile contents from common log file
CALL 'ReadLogPartitionA' ID 'LOGN' FIELD logname
ID 'ETAB' FIELD bdclm-sys
ID 'PART' FIELD bdcld
ID 'ECNT' FIELD ec.
IF sy-subrc <> 0. MESSAGE s325(00). ENDIF.
IF ec = 0. MESSAGE s324(00). ENDIF.
ELSE.
get logfile contents from TemSe
PERFORM read_bdc_log_plain
TABLES logtable
USING bdcld-temseid bdcld-lmand.
IF sy-subrc <> 0. " Fehler beim Lesen
MESSAGE s004(ts).
EXIT.
ENDIF.
CLEAR bdclm[].
LOOP AT logtable.
Es wird geprüft, ob von TEMSE das Datum korrekt geliefert wurde
wenn nicht wird einfach der Satz ignoriert und nicht gelesen
CALL 'DATE_CONV_INT_TO_EXT'
ID 'DATINT' FIELD logtable-enterdate
ID 'DATEXT' FIELD external_date.
CALL 'DATE_CONV_EXT_TO_INT'
ID 'DATEXT' FIELD external_date
ID 'DATINT' FIELD internal_date.
IF sy-subrc NE 0. " Datum ist nicht gültig
CONTINUE.
ENDIF.
CLEAR bdclm.
bdclm-indate = logtable-enterdate.
bdclm-intime = logtable-entertime.
bdclm+14(352) = logtable-logmessage.
IF bdclm-mcnt > 0.
bdclm-mcnt = bdclm-mcnt - 1.
ENDIF.
IF bdclm-mid EQ '00'.
IF ( bdclm-mnr EQ '162' )
OR ( bdclm-mnr EQ '368' ).
bdclm-isdetail = 'X'.
ENDIF.
ENDIF.
APPEND bdclm.
ENDLOOP.
PERFORM extend_message_texts. " extended texts -> bdclm
PERFORM download.
ENDIF.
ENDLOOP.
ENDFORM. "get_log
Form: get_logfiles_from_temse
FORM get_logfiles_from_temse.
are there any logs in the TemSe for this QID ?
CLEAR logtab_temse[].
CLEAR bdcld[].
SELECT * FROM apql INTO TABLE logtab_temse
WHERE qid = apqi-qid.
CHECK sy-subrc = 0.
some logs were found: now put this info into table bdcld.
DATA: wa_log LIKE LINE OF logtab_temse,
wa_ld LIKE LINE OF bdcld.
LOOP AT logtab_temse INTO wa_log.
CLEAR wa_ld.
wa_ld-temseid = wa_log-temseid.
wa_ld-lmand = wa_log-mandant.
wa_ld-edate = wa_log-credate.
wa_ld-etime = wa_log-cretime.
wa_ld-luser = wa_log-creator.
wa_ld-grpn = wa_log-groupid.
wa_ld-quid = wa_log-qid.
wa_ld-local_host = wa_log-destsys(8).
APPEND wa_ld TO bdcld.
ENDLOOP.
ENDFORM. "get_logfiles_from_temse
Form: extend_message_texts
FORM extend_message_texts.
LOOP AT bdclm.
lm = bdclm. save_mpar = bdclm-mpar.
PERFORM get_text.
bdclm-longtext = mtext.
bdclm-mpar = save_mpar.
MODIFY bdclm.
ENDLOOP.
ENDFORM. "extend_message_texts
FORM : get_text *
FORM get_text.
Aufbereiten des Messagetextes
DATA: shiftln TYPE i,
vartcnt TYPE i,
fdpos LIKE sy-fdpos.
IF bdclm-mparcnt CN digits. "Korrupter Datensatz:
bdclm-mparcnt = 0. "z.B. Hexnullen
ENDIF.
SELECT SINGLE * FROM t100
WHERE sprsl = sy-langu
AND arbgb = bdclm-mid
AND msgnr = bdclm-mnr.
IF sy-subrc EQ 0.
CLEAR: mtext,
parcnt,
mparcnt,
charcnt,
wcnt,
mt,
sp_len,
sy-fdpos.
MOVE bdclm-mparcnt TO mparcnt.
IF t100-text CA '$&'. "Kennung fuer parameter:
MOVE t100-text TO mtext1. " alt '$' --- neu '&'
ELSE.
MOVE t100-text TO mtext.
EXIT.
ENDIF.
variable teile aus batch-input protokoll in mttab bringen.
REFRESH mttab.
CLEAR shiftln.
DO mparcnt TIMES.
CLEAR: par, mttab.
MOVE bdclm-mpar TO par.
IF par-len CN digits OR par-len EQ 0. "convert_no_number
par-len = 1. "entschärfen
par-text = ' '.
shiftln = 2.
ELSE.
shiftln = par-len + 2.
ENDIF.
WRITE par-text TO mttab-text(par-len).
MOVE par-len TO mttab-len.
MOVE mparcnt TO mttab-off.
APPEND mttab.
SHIFT bdclm-mpar BY shiftln PLACES.
ENDDO.
mtext2 = mtext1.
IF bdclm-mid EQ '00' AND " sonderbehandlung s00368
bdclm-mnr EQ '368' AND
bdclm-mart EQ 'S'.
CLEAR mtext2.
CLEAR mttab.
READ TABLE mttab INDEX 1.
WRITE mttab-text TO mtext2+0(mttab-len).
CLEAR mttab.
READ TABLE mttab INDEX 2.
WRITE mttab-text TO mtext2+35(mttab-len).
mtext = mtext2.
EXIT.
ENDIF.
do_condense = x.
CLEAR: mt, vartcnt, mtvaroff.
WHILE vartcnt LE 3.
vartcnt = vartcnt + 1.
IF mtext1 CA '$&'.
parcnt = parcnt + 1.
IF sy-fdpos GT 0.
fdpos = sy-fdpos - 1. " neu sy-fdpos -1
ELSE.
fdpos = sy-fdpos.
ENDIF.
SHIFT mtext1 BY sy-fdpos PLACES.
IF mtext1(1) EQ '&'.
SHIFT mtext1 BY 1 PLACES.
CASE mtext1(1).
WHEN ' '. "'& '
PERFORM replace_var USING '& ' parcnt fdpos.
WHEN '$'. "'&&'
PERFORM replace_var USING '&&' 0 fdpos.
WHEN '1'. "'&1'
PERFORM replace_var USING '&1' 1 fdpos.
WHEN '2'. "'&2'
PERFORM replace_var USING '&2' 2 fdpos.
WHEN '3'. "'&3'
PERFORM replace_var USING '&3' 3 fdpos.
WHEN '4'. "'&4'
PERFORM replace_var USING '&4' 4 fdpos.
WHEN OTHERS. "'&'
PERFORM replace_var USING '&<' parcnt fdpos.
ENDCASE.
ENDIF.
IF mtext1(1) EQ '$'.
SHIFT mtext1 BY 1 PLACES.
CASE mtext1(1).
WHEN ' '. "'$ '
PERFORM replace_var USING '$ ' parcnt fdpos.
WHEN '$'. "'$$'
PERFORM replace_var USING '$$' 0 fdpos.
WHEN '1'. "'$1'
PERFORM replace_var USING '$1' 1 fdpos.
WHEN '2'. "'$2'
PERFORM replace_var USING '$2' 2 fdpos.
WHEN '3'. "'$3'
PERFORM replace_var USING '$3' 3 fdpos.
WHEN '4'. "'$4'
PERFORM replace_var USING '$4' 4 fdpos.
WHEN OTHERS. "'$'
PERFORM replace_var USING '$<' parcnt fdpos.
ENDCASE.
ENDIF.
ENDIF.
ENDWHILE.
IF mtext2 CA '%%_D_%%'.
REPLACE '%%_D_%%' WITH '$' INTO mtext2.
ENDIF.
IF mtext2 CA '%%_A_%%'.
REPLACE '%%_A_%%' WITH '&' INTO mtext2.
ENDIF.
IF do_condense EQ space.
mtext = mtext2.
ELSE.
CONDENSE mtext2 .
mtext = mtext2.
ENDIF.
ELSE.
mtext = '???????????????????????????????????????????????????'.
ENDIF.
ENDFORM. " get_text1
FORM : replace_var *
FORM replace_var USING vark vari varpos.
ersetzen der variablen teile einer fehlermeldung
DATA: var(02),
var1,
moff TYPE i.
CLEAR: mttab , moff.
var = vark.
SHIFT var BY 1 PLACES.
CASE var.
WHEN ' '. "'& '
READ TABLE mttab INDEX vari.
IF sy-subrc EQ 0.
moff = varpos + mtvaroff.
ASSIGN mtext2+moff(*) TO . "neu
mtvaroff = 7. "neu
ENDIF.
ENDIF.
ENDCASE.
do_condense = space.
ENDFORM. "replace_var
Form: set_new_display
FORM set_new_display.
CASE tab_dynpro-activetab.
WHEN 'TAB_TCODES'.
F2 in tcodes list: choose new transaction:
CHECK selected_index > 0.
READ TABLE bdc_tcodes INDEX selected_index.
CHECK sy-subrc = 0.
PERFORM scan_transaction USING bdc_tcodes-index.
CLEAR: bdc_dynpro_content, bdc_protocol_content.
tcode_index = selected_index.
tcode_status = bdc_tcodes-s_text.
tcode = bdc_tcodes-tcode.
IF previous_tab IS INITIAL.
tab_dynpro-activetab = 'TAB_LIST'.
ELSE.
tab_dynpro-activetab = previous_tab.
ENDIF.
WHEN 'TAB_LIST'.
F2 in screens list: simulate screen
CHECK selected_index > 0.
simulate screen
PERFORM simulate_dynpro.
WHEN 'TAB_PROTO'.
F2 in protocol list: show message long text:
CHECK selected_index > 0.
READ TABLE bdc_protocol INDEX selected_index.
CHECK sy-subrc = 0.
PERFORM show_ltext.
ENDCASE.
ENDFORM. "set_new_display
FORM : show_ltext
display long text for a log message
FORM show_ltext.
DATA:
docnt TYPE i.
DATA:
BEGIN OF my,
msgv1 LIKE sy-msgv1,
msgv2 LIKE sy-msgv2,
msgv3 LIKE sy-msgv3,
msgv4 LIKE sy-msgv4,
END OF my.
DATA:
msg_text LIKE shkontext-meldung,
msg_arbgb LIKE shkontext-meld_id,
msg_nr LIKE shkontext-meld_nr,
msg_title LIKE shkontext-titel.
Maybe you are looking for
-
Unable to change the background color of a webi report in the infoview
Hi, Can someone please me help me with the below issue. Environment Details: BusinessObjects XI3.1 SP1SP2SP3 BusinessObjects XIR2 SP5
-
Please help.
-
Need Video Driver for Proliant ml110 G6
I need hardware drivers - video - chipset, etc and I have looked and Googled everywhere. Not on the Easy Setup CD or HP Drivers site. Help? System: HP Proliant ml110 G6 OS: Windows Server 2008 R2 (x64) This question was solved. View Solution.
-
Today when I opened Firefox the menu tab on the top left hand corner was missing.??? How can I print without a menu tab? How do I restore the menu tab?
-
Creative Cloud "Download Error" message
When I go to the App section on the creative cloud manager I get the message "Download Error. Please Contact Customer Support." Could somebody please help me fix this? I have tried restarting my computer, signing in and out of creative cloud, and cle