Ver Mensaje Individual
  #1  
Viejo 26/01/10, 10:49:21
romario2 romario2 is offline
Senior Member
 
Fecha de Ingreso: abr 2006
Mensajes: 233
Exclamation programa z de estandard

Hola compañeros,

parecía facil pero no.

Tengo que encontrar las descripciones de los campos de una dynpro ( no estan metidas en la dynpro) y además cuando le doy al F8 me sale un pop-up
con funciones (tiene forma de subscreen y lleva pestañas) que tengo que deshabilitar.

Alguna sugerencia ? GRACIAS DE ANTEMANO

Os paso el código( disculpad la parrafada) : no es tan sencillo como encontrar el término popup o el evento start-of-selection


*********************

REPORT RCNMASSCHANGE

AT SELECTION-SCREEN OUTPUT.
STATICS: FLG_FIRST_BATCH VALUE CON_YES.

* background processing? --> delete name of generated program,
* because of disappearance due to change of roll area
* roll area has to be regenerated
data l_maspar type mass_changes with header line.

if not sy-batch is initial.
macro_import_tcndb_for_batch.
l_maspar[] = p_maspar[].
loop at l_maspar where not abap_prog is initial.
clear l_maspar-abap_prog.
modify l_maspar index sy-tabix.
endloop.
p_maspar[] = l_maspar[].
endif.

IF P_MASCNG[] IS INITIAL.
* set/delete Icon-Okay in Pushbutton
PERFORM DRUCKTASTEN_ICON USING P_MASPAR CHANGING B_MASPAR.
* hide test indicator
IF P_MASPAR[] IS INITIAL.
LOOP AT SCREEN.
CHECK SCREEN-GROUP1 = 'TST'.
SCREEN-ACTIVE = '0'.
MODIFY SCREEN.
ENDLOOP.
ENDIF.

IMPORT FLG_CALL_POPUP CURRENT_TABNAME
FROM MEMORY ID 'RCNMASSCHANGE_POPUP'.
FREE MEMORY ID 'RCNMASSCHANGE_POPUP'.

*IU
IF FLG_CALL_POPUP = CON_YES.
* call popup for parameter input
FLG_CALL_POPUP = CON_NO.
SSCRFIELDS-UCOMM = 'MASP2'.
SY-UCOMM = 'MASP2'.
SUPPRESS DIALOG.
ENDIF.

ELSEIF SY-BATCH IS INITIAL.
IF FLG_FIRST_BATCH = CON_NO.
* leave report
LEAVE PROGRAM.
ELSE.
* call background processing (Popup)
FLG_FIRST_BATCH = CON_NO.
IF SY-BATCH IS INITIAL.
macro_export_tcndb_for_batch.
SSCRFIELDS-UCOMM = 'SJOB'.
SY-UCOMM = 'SJOB'.
FLG_SJOB = CON_YES.
ENDIF.
SUPPRESS DIALOG.
ENDIF.

ELSE.
* background call with transfered single changes
FLG_NO_STOP_INFO = CON_YES.
ENDIF.
"AT SELECTION-SCREEN OUTPUT .


*---------------------------------------------------------------------*
* AT SELECTION-SCREEN *
*---------------------------------------------------------------------*
* Selection Screen PAI (Process After Input) *
*---------------------------------------------------------------------*
AT SELECTION-SCREEN.
IF FLG_SJOB = CON_YES.
* execute report in background
FLG_SJOB = CON_NO.
macro_export_tcndb_for_batch.
SSCRFIELDS-UCOMM = 'SJOB'.
SY-UCOMM = 'SJOB'.
ENDIF.

CASE SSCRFIELDS-UCOMM.
WHEN 'MASP'.
* parameter input for mass data change
EXPORT P_MASPAR P_TEST CURRENT_TABNAME
TO MEMORY ID 'RCNMASSCHANGE_MASPAR'.
PERFORM MASSENAENDERUNG USING CON_YES.

WHEN 'MASP2'.

* If a temporary ABAP-program name had been generated for an ABAP
* after 'testing', 'executing', or 'execute in background' (with
* cancel), it would have been deleted here, due to an appearing dump
* LOAD_UNKNOWN_SUBPOOL when running 'testing' again


LOOP AT P_MASPAR ASSIGNING <MASPAR>
WHERE ABAP_PROG(2) = '%_'.
CLEAR <MASPAR>-ABAP_PROG.
ENDLOOP.
* parameter input for mass data changes
PERFORM MASSENAENDERUNG USING CON_YES.

WHEN 'ONLI'.
IF P_TEST IS INITIAL AND
NOT P_MASPAR[] IS INITIAL AND
P_MASCNG[] IS INITIAL.
* security popup
CALL FUNCTION 'MASS_SHOW_CONFIG_MESSAGE'
EXPORTING
ARBGB = 'M&'
MSGNR = '303'
EXCEPTIONS
USER_CANCEL = 1
MESSAGE_NOT_FOUND = 2
OTHERS = 3.
IF SY-SUBRC = 1.
CLEAR: SY-UCOMM,
SSCRFIELDS-UCOMM.
ENDIF.
ENDIF.
ENDCASE.
"AT SELECTION-SCREEN .


*---------------------------------------------------------------------*
* START-OF-SELECTION *
*---------------------------------------------------------------------*
* possible call of mass data change *
*---------------------------------------------------------------------*
START-OF-SELECTION.
IF NOT P_MASCNG[] IS INITIAL.
PERFORM MASSENAENDERUNG USING CON_NO.
LEAVE PROGRAM.
ENDIF.
" START-OF-SELECTION .


*---------------------------------------------------------------------*
* GET PROJ *
*---------------------------------------------------------------------*
* get project definition *
*---------------------------------------------------------------------*
_GET_PROJ.
APPEND PROJ TO PROJ_TAB.
"END GET PROJ .


*---------------------------------------------------------------------*
* GET PRPS_R *
*---------------------------------------------------------------------*
* get PSP-element *
*---------------------------------------------------------------------*
_GET_PRPS_R.
MOVE-CORRESPONDING PRPS_R TO PRPS_TAB.
APPEND PRPS_TAB TO PRPS_TAB.
"END GET PRPS_R .


*---------------------------------------------------------------------*
* GET PSMLST *
*---------------------------------------------------------------------*
* get milestone for PSP-element *
*---------------------------------------------------------------------*
_GET_PSMLST.
APPEND PSMLST TO PSMLST_TAB.
"END GET PSMLST .


*---------------------------------------------------------------------*
* GET AUFK *
*---------------------------------------------------------------------*
* get network *
*---------------------------------------------------------------------*
_GET_AUFK.
APPEND AUFK TO AUFK_TAB.
"END GET AUFK .


*---------------------------------------------------------------------*
* GET AFKO *
*---------------------------------------------------------------------*
* get network *
*---------------------------------------------------------------------*
_GET_AFKO.
APPEND AFKO TO AFKO_TAB.
MOVE-CORRESPONDING AFKO TO NETZ_KEY.
APPEND NETZ_KEY.
"END GET AFKO .


*---------------------------------------------------------------------*
* GET AFPO *
*---------------------------------------------------------------------*
* get network *
*---------------------------------------------------------------------*
_GET_AFPO.
APPEND AFPO TO AFPO_TAB.
"END GET AFPO .


*---------------------------------------------------------------------*
* GET ACT01 *
*---------------------------------------------------------------------*
* get activity or element for network *
*---------------------------------------------------------------------*
_GET_ACT01.
IF FLG_FIRST_ACT = CON_YES.
SORT NETZ_KEY BY AUFPL.
FLG_FIRST_ACT = CON_NO.
ENDIF.

MOVE-CORRESPONDING ACT01 TO AFVGD_TAB.
IF NOT NETZ_KEY-AUFPL = ACT01-AUFPL.
READ TABLE NETZ_KEY WITH KEY ACT01-AUFPL BINARY SEARCH.
IF NOT SY-SUBRC IS INITIAL.
SELECT AUFNR AUFPL FROM AFKO INTO CORRESPONDING FIELDS OF NETZ_KEY
UP TO 1 ROWS WHERE AUFPL = ACT01-AUFPL.
ENDSELECT.
ENDIF.
ENDIF.
AFVGD_TAB-AUFNRD = NETZ_KEY-AUFNR.
APPEND AFVGD_TAB.
"END GET ACT01 .


*---------------------------------------------------------------------*
* GET AFAB01 *
*---------------------------------------------------------------------*
* get relationship *
*---------------------------------------------------------------------*
_GET_AFAB01.
MOVE-CORRESPONDING AFAB01 TO AFABD_TAB.
IF AFAB01-NCH = CON_NO.
AFABD_TAB-NETZPL_VOR = AFAB01-AUFNR.
AFABD_TAB-VORN1 = AFAB01-VORNR.
AFABD_TAB-NETZPL_NCH = AFVGD_TAB-AUFNRD.
AFABD_TAB-VORN2 = ACT01-VORNR.
ELSE.
AFABD_TAB-NETZPL_VOR = AFVGD_TAB-AUFNRD.
AFABD_TAB-VORN1 = ACT01-VORNR.
AFABD_TAB-NETZPL_NCH = AFAB01-AUFNR.
AFABD_TAB-VORN2 = AFAB01-VORNR.
ENDIF.
APPEND AFABD_TAB.
"END GET AFAB01 .


*---------------------------------------------------------------------*
* GET MLSTD *
*---------------------------------------------------------------------*
* get milestone for activity *
*---------------------------------------------------------------------*
_GET_MLSTD.
APPEND MLSTD TO MLSTD_TAB.
"END GET MLSTD .


*---------------------------------------------------------------------*
* GET RESB01 *
*---------------------------------------------------------------------*
* get component for activity *
*---------------------------------------------------------------------*
*_GET_RESB01.
* APPEND RESB01 TO RESBD_TAB.
"END GET RESB01 .

*---------------------------------------------------------------------*
* GET PRTE *
*---------------------------------------------------------------------*
* get component for activity *
*---------------------------------------------------------------------*
_GET_PRTE.
MOVE-CORRESPONDING PRTE TO PRTE_TAB. "v_n_1046574
APPEND PRTE_TAB. "^_n_1046574
"END GET RESB01

*---------------------------------------------------------------------*
* END-OF-SELECTION *
*---------------------------------------------------------------------*
* call mass data change *
*---------------------------------------------------------------------*
END-OF-SELECTION.
* Has there been a selection of data?
IF PROJ_TAB[] IS INITIAL AND
PRPS_TAB[] IS INITIAL AND
PRTE_TAB[] IS INITIAL AND
PSMLST_TAB[] IS INITIAL AND
AUFK_TAB[] IS INITIAL AND
AFKO_TAB[] IS INITIAL AND
AFPO_TAB[] IS INITIAL AND
AFVGD_TAB[] IS INITIAL AND
AFABD_TAB[] IS INITIAL AND
MLSTD_TAB[] IS INITIAL AND
RESBD_TAB[] IS INITIAL AND
P_MASCNG[] IS INITIAL.
MESSAGE I600(OK).
* there has not been a selection of objects with the given selection *
* criterions
EXIT.
ENDIF.

PERFORM MASSENAENDERUNG USING CON_NO.
" END-OF-SELECTION .


*---------------------------------------------------------------------*
* FORM DRUCKTASTEN_ICON *
*---------------------------------------------------------------------*
* set or delete Okay-icon in push button text *
*---------------------------------------------------------------------*
* FLAG Indicator *
* BUTTON push button text *
*---------------------------------------------------------------------*
FORM DRUCKTASTEN_ICON USING FLAG
CHANGING BUTTON.
DATA: LONG_BUTTON(50).

IF FLAG IS INITIAL.
IF BUTTON CS ICON_OKAY.
* delete Okay-icon
SHIFT BUTTON LEFT BY 4 PLACES.
ENDIF.

ELSEIF BUTTON NS ICON_OKAY.
* paste Okay-icon
CONCATENATE ICON_OKAY BUTTON INTO BUTTON.
* CALL FUNCTION 'ICON_CREATE'
* EXPORTING
* NAME = ICON_OKAY
* TEXT = BUTTON
* ADD_STDINF = ' '
* IMPORTING
* RESULT = LONG_BUTTON
* EXCEPTIONS
* ICON_NOT_FOUND = 1
* OUTPUTFIELD_TOO_SHORT = 2
* OTHERS = 3.
* BUTTON = LONG_BUTTON.
ENDIF.
ENDFORM. "DRUCKTASTEN_ICON .


*---------------------------------------------------------------------*
* FORM MASSENAENDERUNG *
*---------------------------------------------------------------------*
* Popup for input of mass data change parameters *
*---------------------------------------------------------------------*
* --> FLG_SELSCREEN Flag,if call takes place from selection screen *
*---------------------------------------------------------------------*
FORM MASSENAENDERUNG USING FLG_SELSCREEN TYPE C.
DATA: FLG_NO_DIALOG,
FLG_MAINTAIN_TABLES,
FLG_TEST,
FLG_ONLINE,
FLG_BATCH,
FLG_SAVE,
FLG_COPY.

DATA: ITAB_PRPS LIKE PRPS OCCURS 0 WITH HEADER LINE,
ITAB_AFABD LIKE PRPS OCCURS 0 WITH HEADER LINE.

* set parameter for function module mass data change
IF FLG_SELSCREEN = CON_YES.
* call on the Selection Screen
FLG_NO_DIALOG = CON_NO.
FLG_MAINTAIN_TABLES = CON_NO.
FLG_TEST = CON_YES.
FLG_ONLINE = CON_YES.
FLG_BATCH = CON_YES.
FLG_SAVE = CON_YES.
FLG_COPY = CON_YES.

ELSE.
* Call after data selection
IF P_MASPAR[] IS INITIAL AND
P_MASCNG[] IS INITIAL.
* IF SY-BATCH = CON_NO OR
* SY-CALLD = CON_YES.
FLG_NO_DIALOG = CON_NO.
FLG_TEST = CON_YES.
ELSE.
FLG_NO_DIALOG = CON_YES.
FLG_TEST = P_TEST.
ENDIF.
FLG_MAINTAIN_TABLES = CON_YES.
FLG_ONLINE = CON_YES.
FLG_BATCH = CON_YES.
FLG_SAVE = CON_YES.
FLG_COPY = CON_NO.
ENDIF.

SORT AUFK_TAB BY AUFNR.
SORT AFKO_TAB BY AUFNR.
SORT AFPO_TAB BY AUFNR.
SORT AFABD_TAB BY NETZPL_VOR VORN1 NETZPL_NCH VORN2.
DELETE ADJACENT DUPLICATES FROM AFABD_TAB
COMPARING NETZPL_VOR VORN1
NETZPL_NCH VORN2.

* call mass data change
CALL FUNCTION 'CNMASS_CALL_MASS_CHANGE_DATA'
EXPORTING
I_FLG_NO_DIALOG = FLG_NO_DIALOG
I_FLG_MAINTAIN_TABLES = FLG_MAINTAIN_TABLES
I_FLG_COMMIT = CON_YES
I_FLG_TEST = FLG_TEST
I_FLG_ONLINE = FLG_ONLINE
I_FLG_BATCH = FLG_BATCH
I_FLG_SAVE = FLG_SAVE
I_FLG_COPY = FLG_COPY
I_CURRENT_TABNAME = CURRENT_TABNAME
IMPORTING
E_FLG_TEST = FLG_TEST
E_FLG_ONLINE = FLG_ONLINE
E_FLG_BATCH = FLG_BATCH
E_FLG_SAVE = FLG_SAVE
E_CURRENT_TABNAME = CURRENT_TABNAME
TABLES
I_PROJ = PROJ_TAB
I_PRPS = PRPS_TAB
I_PRTE = PRTE_TAB
I_PSMLST = PSMLST_TAB
I_AUFK = AUFK_TAB
I_AFKO = AFKO_TAB
I_AFPO = AFPO_TAB
I_AFVGD = AFVGD_TAB
I_AFABD = AFABD_TAB
I_MLSTD = MLSTD_TAB
I_RESBD = RESBD_TAB
T_CHANGES = P_MASPAR
T_DETAILED_CHANGES = P_MASCNG
EXCEPTIONS
CANCEL = 1.
IF NOT SY-SUBRC IS INITIAL.
* mass data change aborted
IMPORT P_MASPAR P_TEST CURRENT_TABNAME
FROM MEMORY ID 'RCNMASSCHANGE_MASPAR'.
CLEAR: SY-UCOMM,
SSCRFIELDS-UCOMM.
EXIT.
ENDIF.

IF FLG_NO_DIALOG = CON_NO.
IF FLG_TEST = CON_YES.
* test changes
P_TEST = CON_YES.
SSCRFIELDS-UCOMM = 'ONLI'.
SY-UCOMM = 'ONLI'.
ELSEIF FLG_ONLINE = CON_YES OR
FLG_SAVE = CON_YES.
* execute changes directly
P_TEST = CON_NO.
SSCRFIELDS-UCOMM = 'ONLI'.
SY-UCOMM = 'ONLI'.
ELSEIF FLG_BATCH = CON_YES.
* execute changes in batch mode
macro_export_tcndb_for_batch.
P_TEST = CON_NO.
SSCRFIELDS-UCOMM = 'SJOB'.
SY-UCOMM = 'SJOB'.
ELSE.
* simple take-over of changes
IMPORT P_TEST FROM MEMORY ID 'RCNMASSCHANGE_MASPAR'.
FREE MEMORY ID 'RCNMASSCHANGE_MASPAR'.
CLEAR: SY-UCOMM,
SSCRFIELDS-UCOMM.
EXIT.
ENDIF.

* call Input-Popup again later
EXPORT FLG_CALL_POPUP FROM CON_YES CURRENT_TABNAME
TO MEMORY ID 'RCNMASSCHANGE_POPUP'.
ENDIF.
ENDFORM. "MASSENAENDERUNG .
Responder Con Cita