programa z de estandard

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • romario2
    Senior Member
    • abr
    • 233

    #1

    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 .
Trabajando...