Trucs et Astuces ABAP et SapScripts
En général je n'ai pas traduit les commentaires. Les commentaires d'origine SAP sont plutôt en allemand, les miens en français et ceux trouvés sur le web en anglais.
ABAP depuis un formulaire Table des matières
le formulaire
/:DEFINE &DATAMJ& = 'AAAAMMJJ' /:DEFINE &DATSA& = 'WW.AAAA' /:SET DATE MASK = 'YYYYMMDD' /:PERFORM DATE_LIVRAISON IN PROGRAM Z_FORMULAIRE /:USING &PEKKO-EINDT& /:CHANGING &DATAMJ& /:CHANGING &DATSA& /:ENDPERFORM /*<D>&DATAMJ&</> = &DATSA& /:SET DATE MASK = '' /*** fin jpl |
le code ABAP
PROGRAM Z_FORMULAIRE . FORM DATE_LIVRAISON TABLES IN_PAR STRUCTURE ITCSY OUT_PAR STRUCTURE ITCSY. DATA: _KEINDT(8), _DATAMJ(8) VALUE '########', _DATTYP(1), _DATSA(7) VALUE '##/####', _JOUR TYPE D. *en entree, les infos récupérées dans le formulaire : * pekko-eindt pekko-lpein pekpo-eindt pekpo-lpein *en sortie, la date AAAAMMJJ (char 8) *mettre en place les valeurs 'incident' * BREAK-POINT. READ TABLE OUT_PAR WITH KEY 'DATAMJ'. CHECK SY-SUBRC = 0. OUT_PAR-VALUE = _DATAMJ. MODIFY OUT_PAR INDEX SY-TABIX. READ TABLE OUT_PAR WITH KEY 'DATSA'. CHECK SY-SUBRC = 0. OUT_PAR-VALUE = _DATSA. MODIFY OUT_PAR INDEX SY-TABIX. * parametres recus LOOP AT IN_PAR. CASE IN_PAR-NAME. WHEN 'PEKKO-EINDT'. _KEINDT = IN_PAR-VALUE. ENDCASE. ENDLOOP. *date de reception souhaitée IF _KEINDT = SPACE. _DATAMJ = _PEINDT. _DATTYP = _PLPEIN. ELSE. _DATAMJ = _KEINDT. _DATTYP = _KLPEIN. ENDIF. *maj formulaire READ TABLE OUT_PAR WITH KEY 'DATAMJ'. OUT_PAR-VALUE = _DATAMJ. MODIFY OUT_PAR INDEX SY-TABIX. * _JOUR = _DATAMJ. * convertion en semaine CALL FUNCTION 'DATE_GET_WEEK' EXPORTING DATE = _JOUR IMPORTING WEEK = _WEEK EXCEPTIONS DATE_INVALID = 1 OTHERS = 2. * WRITE _week TO _datsa. CONCATENATE _WEEK+4(2) _WEEK(4) INTO _DATSA SEPARATED BY '/'. *maj formulaire READ TABLE OUT_PAR WITH KEY 'DATSA'. OUT_PAR-VALUE = _DATSA. MODIFY OUT_PAR INDEX SY-TABIX. ENDFORM. |
Icones et symboles Table des matières
DATA: X10(10) VALUE '**********'. INCLUDE <LIST>. ULINE. WRITE: / ' Icones'. WRITE: / ' '. ULINE. write: / ICON_DUMMY as icon, 'ICON_DUMMY '. write: / ICON_CHECKED as icon, 'ICON_CHECKED '. write: / ICON_INCOMPLETE as icon, 'ICON_INCOMPLETE '. write: / ICON_FAILURE as icon, 'ICON_FAILURE '. write: / ICON_POSITIVE as icon, 'ICON_POSITIVE '. write: / ICON_NEGATIVE as icon, 'ICON_NEGATIVE '. write: / ICON_LOCKED as icon, 'ICON_LOCKED '. write: / ICON_UNLOCKED as icon, 'ICON_UNLOCKED '. write: / ICON_GREEN_LIGHT as icon, 'ICON_GREEN_LIGHT '. write: / ICON_YELLOW_LIGHT as icon, 'ICON_YELLOW_LIGHT '. write: / ICON_RED_LIGHT as icon, 'ICON_RED_LIGHT '. write: / ICON_TOTAL_LEFT as icon, 'ICON_TOTAL_LEFT '. write: / ICON_TOTAL_RIGHT as icon, 'ICON_TOTAL_RIGHT '. write: / ICON_COLUMN_LEFT as icon, 'ICON_COLUMN_LEFT '. write: / ICON_COLUMN_RIGHT as icon, 'ICON_COLUMN_RIGHT '. write: / ICON_PAGE_RIGHT as icon, 'ICON_PAGE_RIGHT '. write: / ICON_PAGE_LEFT as icon, 'ICON_PAGE_LEFT '. write: / ICON_PREVIOUS_VALUE as icon, 'ICON_PREVIOUS_VALUE '. write: / ICON_NEXT_VALUE as icon, 'ICON_NEXT_VALUE '. write: / ICON_ANNOTATION as icon, 'ICON_ANNOTATION '. write: / ICON_CREATE_NOTE as icon, 'ICON_CREATE_NOTE '. write: / ICON_DISPLAY_NOTE as icon, 'ICON_DISPLAY_NOTE '. write: / ICON_CALCULATION as icon, 'ICON_CALCULATION '. write: / ICON_GRAPHICS as icon, 'ICON_GRAPHICS '. write: / ICON_CREATE_TEXT as icon, 'ICON_CREATE_TEXT '. write: / ICON_DISPLAY_TEXT as icon, 'ICON_DISPLAY_TEXT '. write: / ICON_CHANGE_TEXT as icon, 'ICON_CHANGE_TEXT '. write: / ICON_VARIANTS as icon, 'ICON_VARIANTS '. write: / ICON_INFORMATION as icon, 'ICON_INFORMATION '. write: / ICON_ADDRESS as icon, 'ICON_ADDRESS '. write: / ICON_VIEWER_OPTICAL_ARCHIVE as icon, 'ICON_VIEWER_OPTICAL_ARCHIVE '. write: / ICON_OKAY as icon, 'ICON_OKAY '. write: / ICON_CANCEL as icon, 'ICON_CANCEL '. write: / ICON_PRINT as icon, 'ICON_PRINT '. write: / ICON_CREATE as icon, 'ICON_CREATE '. write: / ICON_CHANGE as icon, 'ICON_CHANGE '. write: / ICON_DISPLAY as icon, 'ICON_DISPLAY '. write: / ICON_DELETE as icon, 'ICON_DELETE '. write: / ICON_TEST as icon, 'ICON_TEST '. write: / ICON_SEARCH as icon, 'ICON_SEARCH '. write: / ICON_COPY_OBJECT as icon, 'ICON_COPY_OBJECT '. write: / ICON_EXECUTE_OBJECT as icon, 'ICON_EXECUTE_OBJECT '. write: / ICON_SELECT_DETAIL as icon, 'ICON_SELECT_DETAIL '. write: / ICON_INSERT_ROW as icon, 'ICON_INSERT_ROW '. write: / ICON_DELETE_ROW as icon, 'ICON_DELETE_ROW '. write: / ICON_MESSAGE_INFORMATION as icon, 'ICON_MESSAGE_INFORMATION '. write: / ICON_MESSAGE_WARNING as icon, 'ICON_MESSAGE_WARNING '. write: / ICON_MESSAGE_ERROR as icon, 'ICON_MESSAGE_ERROR '. write: / ICON_MESSAGE_QUESTION as icon, 'ICON_MESSAGE_QUESTION '. write: / ICON_MESSAGE_CRITICAL as icon, 'ICON_MESSAGE_CRITICAL '. write: / ICON_DISPLAY_MORE as icon, 'ICON_DISPLAY_MORE '. write: / ICON_ENTER_MORE as icon, 'ICON_ENTER_MORE '. write: / ICON_EQUAL as icon, 'ICON_EQUAL '. write: / ICON_NOT_EQUAL as icon, 'ICON_NOT_EQUAL '. write: / ICON_GREATER as icon, 'ICON_GREATER '. write: / ICON_LESS as icon, 'ICON_LESS '. write: / ICON_GREATER_EQUAL as icon, 'ICON_GREATER_EQUAL '. write: / ICON_LESS_EQUAL as icon, 'ICON_LESS_EQUAL '. write: / ICON_INTERVAL_INCLUDE as icon, 'ICON_INTERVAL_INCLUDE '. write: / ICON_INTERVAL_EXCLUDE as icon, 'ICON_INTERVAL_EXCLUDE '. write: / ICON_PATTERN_INCLUDE as icon, 'ICON_PATTERN_INCLUDE '. write: / ICON_PATTERN_EXCLUDE as icon, 'ICON_PATTERN_EXCLUDE '. write: / ICON_PHONE as icon, 'ICON_PHONE '. write: / ICON_FAX as icon, 'ICON_FAX '. write: / ICON_MAIL as icon, 'ICON_MAIL '. write: / ICON_TIME as icon, 'ICON_TIME '. write: / ICON_DATE as icon, 'ICON_DATE '. write: / ICON_ALARM as icon, 'ICON_ALARM '. write: / ICON_PROSHARE as icon, 'ICON_PROSHARE '. write: / ICON_VIDEO as icon, 'ICON_VIDEO '. write: / ICON_VOICE_INPUT as icon, 'ICON_VOICE_INPUT '. write: / ICON_VOICE_OUTPUT as icon, 'ICON_VOICE_OUTPUT '. write: / ICON_EQUAL_GREEN as icon, 'ICON_EQUAL_GREEN '. write: / ICON_NOT_EQUAL_GREEN as icon, 'ICON_NOT_EQUAL_GREEN '. write: / ICON_GREATER_GREEN as icon, 'ICON_GREATER_GREEN '. write: / ICON_LESS_GREEN as icon, 'ICON_LESS_GREEN '. write: / ICON_GREATER_EQUAL_GREEN as icon, 'ICON_GREATER_EQUAL_GREEN '. write: / ICON_LESS_EQUAL_GREEN as icon, 'ICON_LESS_EQUAL_GREEN '. write: / ICON_INTERVAL_INCLUDE_GREEN as icon, 'ICON_INTERVAL_INCLUDE_GREEN '. write: / ICON_INTERVAL_EXCLUDE_GREEN as icon, 'ICON_INTERVAL_EXCLUDE_GREEN '. write: / ICON_PATTERN_INCLUDE_GREEN as icon, 'ICON_PATTERN_INCLUDE_GREEN '. write: / ICON_PATTERN_EXCLUDE_GREEN as icon, 'ICON_PATTERN_EXCLUDE_GREEN '. write: / ICON_EQUAL_RED as icon, 'ICON_EQUAL_RED '. write: / ICON_NOT_EQUAL_RED as icon, 'ICON_NOT_EQUAL_RED '. write: / ICON_GREATER_RED as icon, 'ICON_GREATER_RED '. write: / ICON_LESS_RED as icon, 'ICON_LESS_RED '. write: / ICON_GREATER_EQUAL_RED as icon, 'ICON_GREATER_EQUAL_RED '. write: / ICON_LESS_EQUAL_RED as icon, 'ICON_LESS_EQUAL_RED '. write: / ICON_INTERVAL_INCLUDE_RED as icon, 'ICON_INTERVAL_INCLUDE_RED '. write: / ICON_INTERVAL_EXCLUDE_RED as icon, 'ICON_INTERVAL_EXCLUDE_RED '. write: / ICON_PATTERN_INCLUDE_RED as icon, 'ICON_PATTERN_INCLUDE_RED '. write: / ICON_PATTERN_EXCLUDE_RED as icon, 'ICON_PATTERN_EXCLUDE_RED '. write: / ICON_SYSTEM_OKAY as icon, 'ICON_SYSTEM_OKAY '. write: / ICON_SYSTEM_SAVE as icon, 'ICON_SYSTEM_SAVE '. write: / ICON_SYSTEM_BACK as icon, 'ICON_SYSTEM_BACK '. write: / ICON_SYSTEM_END as icon, 'ICON_SYSTEM_END '. write: / ICON_SYSTEM_CANCEL as icon, 'ICON_SYSTEM_CANCEL '. write: / ICON_SYSTEM_PRINT as icon, 'ICON_SYSTEM_PRINT '. write: / ICON_OTHER_OBJECT as icon, 'ICON_OTHER_OBJECT '. write: / ICON_PREVIOUS_OBJECT as icon, 'ICON_PREVIOUS_OBJECT '. write: / ICON_NEXT_OBJECT as icon, 'ICON_NEXT_OBJECT '. write: / ICON_SYSTEM_CUT as icon, 'ICON_SYSTEM_CUT '. write: / ICON_SYSTEM_COPY as icon, 'ICON_SYSTEM_COPY '. write: / ICON_SYSTEM_PASTE as icon, 'ICON_SYSTEM_PASTE '. write: / ICON_SYSTEM_UNDO as icon, 'ICON_SYSTEM_UNDO '. write: / ICON_SYSTEM_MARK as icon, 'ICON_SYSTEM_MARK '. write: / ICON_FIRST_PAGE as icon, 'ICON_FIRST_PAGE '. write: / ICON_PREVIOUS_PAGE as icon, 'ICON_PREVIOUS_PAGE '. write: / ICON_NEXT_PAGE as icon, 'ICON_NEXT_PAGE '. write: / ICON_LAST_PAGE as icon, 'ICON_LAST_PAGE '. write: / ICON_SYSTEM_MODUS_CREATE as icon, 'ICON_SYSTEM_MODUS_CREATE '. write: / ICON_SYSTEM_MODUS_DELETE as icon, 'ICON_SYSTEM_MODUS_DELETE '. write: / ICON_SYSTEM_USERMENU as icon, 'ICON_SYSTEM_USERMENU '. write: / ICON_SYSTEM_HELP as icon, 'ICON_SYSTEM_HELP '. write: / ICON_TABLE_SETTINGS as icon, 'ICON_TABLE_SETTINGS '. write: / ICON_REPLACE as icon, 'ICON_REPLACE '. write: / ICON_CHECK as icon, 'ICON_CHECK '. write: / ICON_GENERATE as icon, 'ICON_GENERATE '. write: / ICON_REFERENCE_LIST as icon, 'ICON_REFERENCE_LIST '. write: / ICON_STACK as icon, 'ICON_STACK '. write: / ICON_ACTIVATE as icon, 'ICON_ACTIVATE '. write: / ICON_ICON_LIST as icon, 'ICON_ICON_LIST '. write: / ICON_SORT_UP as icon, 'ICON_SORT_UP '. write: / ICON_SORT_DOWN as icon, 'ICON_SORT_DOWN '. write: / ICON_LAYOUT_CONTROL as icon, 'ICON_LAYOUT_CONTROL '. write: / ICON_CONVERT as icon, 'ICON_CONVERT '. write: / ICON_TOGGLE_DISPLAY_CHANGE as icon, 'ICON_TOGGLE_DISPLAY_CHANGE '. write: / ICON_SET_STATE as icon, 'ICON_SET_STATE '. write: / ICON_PREVIOUS_NODE as icon, 'ICON_PREVIOUS_NODE '. write: / ICON_NEXT_NODE as icon, 'ICON_NEXT_NODE '. write: / ICON_TREE as icon, 'ICON_TREE '. write: / ICON_INSERT_RELATION as icon, 'ICON_INSERT_RELATION '. write: / ICON_FINAL_DATE as icon, 'ICON_FINAL_DATE '. write: / ICON_HEADER as icon, 'ICON_HEADER '. write: / ICON_OVERVIEW as icon, 'ICON_OVERVIEW '. write: / ICON_DETAIL as icon, 'ICON_DETAIL '. write: / ICON_EXPAND as icon, 'ICON_EXPAND '. write: / ICON_COLLAPSE as icon, 'ICON_COLLAPSE '. write: / ICON_BREAKPOINT as icon, 'ICON_BREAKPOINT '. write: / ICON_FOREIGN_KEY as icon, 'ICON_FOREIGN_KEY '. write: / ICON_LIST as icon, 'ICON_LIST '. write: / ICON_CLOSE as icon, 'ICON_CLOSE '. write: / ICON_POSITION as icon, 'ICON_POSITION '. write: / ICON_SUM as icon, 'ICON_SUM '. write: / ICON_MOVE as icon, 'ICON_MOVE '. write: / ICON_RETRIEVE as icon, 'ICON_RETRIEVE '. write: / ICON_REFRESH as icon, 'ICON_REFRESH '. write: / ICON_SKIP as icon, 'ICON_SKIP '. write: / ICON_SYSTEM_SETTINGS as icon, 'ICON_SYSTEM_SETTINGS '. write: / ICON_TOOLS as icon, 'ICON_TOOLS '. write: / ICON_COMPARE as icon, 'ICON_COMPARE '. write: / ICON_SHORT_MESSAGE as icon, 'ICON_SHORT_MESSAGE '. write: / ICON_IMPORT as icon, 'ICON_IMPORT '. write: / ICON_EXPORT as icon, 'ICON_EXPORT '. write: / ICON_TRANSPORT as icon, 'ICON_TRANSPORT '. write: / ICON_SELECT_ALL as icon, 'ICON_SELECT_ALL '. write: / ICON_SELECT_BLOCK as icon, 'ICON_SELECT_BLOCK '. write: / ICON_DESELECT_ALL as icon, 'ICON_DESELECT_ALL '. write: / ICON_SEARCH_NEXT as icon, 'ICON_SEARCH_NEXT '. write: / ICON_RENAME as icon, 'ICON_RENAME '. write: / ICON_FILTER as icon, 'ICON_FILTER '. write: / ICON_NEXT_HIERARCHY_LEVEL as icon, 'ICON_NEXT_HIERARCHY_LEVEL '. write: / ICON_PREVIOUS_HIERARCHY_LEVEL as icon, 'ICON_PREVIOUS_HIERARCHY_LEVEL '. write: / ICON_SYSTEM_POSSIBLE_ENTRIES as icon, 'ICON_SYSTEM_POSSIBLE_ENTRIES '. write: / ICON_INTENSIFY as icon, 'ICON_INTENSIFY '. write: / ICON_PERSONAL_HELP as icon, 'ICON_PERSONAL_HELP '. write: / ICON_VARIABLE as icon, 'ICON_VARIABLE '. write: / ICON_SYSTEM_LOCAL_CUT as icon, 'ICON_SYSTEM_LOCAL_CUT '. write: / ICON_SYSTEM_LOCAL_COPY as icon, 'ICON_SYSTEM_LOCAL_COPY '. write: / ICON_SYSTEM_LOCAL_PASTE as icon, 'ICON_SYSTEM_LOCAL_PASTE '. write: / ICON_SYSTEM_LOCAL_MARK as icon, 'ICON_SYSTEM_LOCAL_MARK '. write: / ICON_SYSTEM_REDO as icon, 'ICON_SYSTEM_REDO '. write: / ICON_BUSINAV_PROCESS as icon, 'ICON_BUSINAV_PROCESS '. write: / ICON_BUSINAV_PROCESSMATRIX as icon, 'ICON_BUSINAV_PROCESSMATRIX '. write: / ICON_BUSINAV_SYSORGI as icon, 'ICON_BUSINAV_SYSORGI '. write: / ICON_BUSINAV_SZENARIO as icon, 'ICON_BUSINAV_SZENARIO '. write: / ICON_BUSINAV_OBJECTS as icon, 'ICON_BUSINAV_OBJECTS '. write: / ICON_BUSINAV_INFODIAG as icon, 'ICON_BUSINAV_INFODIAG '. write: / ICON_BUSINAV_ENTITY as icon, 'ICON_BUSINAV_ENTITY '. write: / ICON_BUSINAV_PROC_EXIST as icon, 'ICON_BUSINAV_PROC_EXIST '. write: / ICON_BUSINAV_COMMDIAG as icon, 'ICON_BUSINAV_COMMDIAG '. write: / ICON_BUSINAV_DATAMODEL as icon, 'ICON_BUSINAV_DATAMODEL '. write: / ICON_ALIGN as icon, 'ICON_ALIGN '. write: / ICON_CUT_RELATION as icon, 'ICON_CUT_RELATION '. write: / ICON_FIX_COLUMN as icon, 'ICON_FIX_COLUMN '. write: / ICON_RELEASE_COLUMN as icon, 'ICON_RELEASE_COLUMN '. write: / ICON_NET_GRAPHIC as icon, 'ICON_NET_GRAPHIC '. write: / ICON_PLANNING_TABLE as icon, 'ICON_PLANNING_TABLE '. write: / ICON_PERIOD as icon, 'ICON_PERIOD '. write: / ICON_ZOOM_IN as icon, 'ICON_ZOOM_IN '. write: / ICON_ZOOM_OUT as icon, 'ICON_ZOOM_OUT '. write: / ICON_LED_GREEN as icon, 'ICON_LED_GREEN '. write: / ICON_LED_RED as icon, 'ICON_LED_RED '. write: / ICON_LED_YELLOW as icon, 'ICON_LED_YELLOW '. write: / ICON_SYSTEM_EXTENDED_HELP as icon, 'ICON_SYSTEM_EXTENDED_HELP '. write: / ICON_SPACE as icon, 'ICON_SPACE '. write: / ICON_BUSINAV_VALUE_CHAIN as icon, 'ICON_BUSINAV_VALUE_CHAIN '. write: / ICON_WORKFLOW_ACTIVITY as icon, 'ICON_WORKFLOW_ACTIVITY '. write: / ICON_WORKFLOW_CONDITION as icon, 'ICON_WORKFLOW_CONDITION '. write: / ICON_WORKFLOW_DECISION as icon, 'ICON_WORKFLOW_DECISION '. write: / ICON_WORKFLOW_CONT_OPERATION as icon, 'ICON_WORKFLOW_CONT_OPERATION '. write: / ICON_WORKFLOW_EXTERNAL_EVENT as icon, 'ICON_WORKFLOW_EXTERNAL_EVENT '. write: / ICON_WORKFLOW_INTERNAL_EVENT as icon, 'ICON_WORKFLOW_INTERNAL_EVENT '. write: / ICON_WORKFLOW_MULT_CONDITION as icon, 'ICON_WORKFLOW_MULT_CONDITION '. WRITE: / ICON_WORKFLOW_PARALLEL_SECTION AS ICON,'ICON_WORKFLOW_PARALLEL_SECTION.'. write: / ICON_WORKFLOW_EVENT_PRODUCER as icon, 'ICON_WORKFLOW_EVENT_PRODUCER '. write: / ICON_WORKFLOW_FLOW_OF_CONTROL as icon, 'ICON_WORKFLOW_FLOW_OF_CONTROL '. write: / ICON_WORKFLOW_INDEFINITE_STEP as icon, 'ICON_WORKFLOW_INDEFINITE_STEP '. write: / ICON_WORKFLOW_UNTIL as icon, 'ICON_WORKFLOW_UNTIL '. write: / ICON_WORKFLOW_WAIT_FOR_EVENTS as icon, 'ICON_WORKFLOW_WAIT_FOR_EVENTS '. write: / ICON_WORKFLOW_WHILE as icon, 'ICON_WORKFLOW_WHILE '. write: / ICON_INTERMEDIATE_SUM as icon, 'ICON_INTERMEDIATE_SUM '. write: / ICON_EMPLOYEE as icon, 'ICON_EMPLOYEE '. write: / ICON_TIME_ZONE as icon, 'ICON_TIME_ZONE '. write: / ICON_RELEASE as icon, 'ICON_RELEASE '. write: / ICON_QUALIFY as icon, 'ICON_QUALIFY '. write: / ICON_ISO_CODE as icon, 'ICON_ISO_CODE '. write: / ICON_MODIFY as icon, 'ICON_MODIFY '. write: / ICON_GET_AREA as icon, 'ICON_GET_AREA '. write: / ICON_INTERFACE as icon, 'ICON_INTERFACE '. write: / ICON_ROUTING_OPERATION as icon, 'ICON_ROUTING_OPERATION '. write: / ICON_ROUTING_REF_OPERATION as icon, 'ICON_ROUTING_REF_OPERATION '. write: / ICON_ROUTING_TASK as icon, 'ICON_ROUTING_TASK '. write: / ICON_ROUTING_TODO as icon, 'ICON_ROUTING_TODO '. write: / ICON_EXPAND_ALL as icon, 'ICON_EXPAND_ALL '. write: / ICON_COLLAPSE_ALL as icon, 'ICON_COLLAPSE_ALL '. write: / ICON_SYSTEM_SAP_MENU as icon, 'ICON_SYSTEM_SAP_MENU '. write: / ICON_SYSTEM_COMP_MENU as icon, 'ICON_SYSTEM_COMP_MENU '. write: / ICON_SYSTEM_USER_MENU as icon, 'ICON_SYSTEM_USER_MENU '. write: / ICON_SYSTEM_FAVORITES as icon, 'ICON_SYSTEM_FAVORITES '. write: / ICON_BIW_INFO_SOURCE as icon, 'ICON_BIW_INFO_SOURCE '. write: / ICON_BIW_APPLICATION as icon, 'ICON_BIW_APPLICATION '. write: / ICON_BIW_INFO_AREA as icon, 'ICON_BIW_INFO_AREA '. write: / ICON_BIW_INFO_CUBE as icon, 'ICON_BIW_INFO_CUBE '. write: / ICON_BIW_RULES_INA as icon, 'ICON_BIW_RULES_INA '. write: / ICON_BIW_SOURCE_SYS_GEN as icon, 'ICON_BIW_SOURCE_SYS_GEN '. write: / ICON_BIW_SOURCE_SYS_R3 as icon, 'ICON_BIW_SOURCE_SYS_R3 '. write: / ICON_BIW_SOURCE_SYS_EXT as icon, 'ICON_BIW_SOURCE_SYS_EXT '. write: / ICON_BIW_SOURCE_SYS_FILE as icon, 'ICON_BIW_SOURCE_SYS_FILE '. write: / ICON_BIW_INFO_CATALOG as icon, 'ICON_BIW_INFO_CATALOG '. write: / ICON_BIW_INFO_OBJECT as icon, 'ICON_BIW_INFO_OBJECT '. write: / ICON_BIW_MONITOR as icon, 'ICON_BIW_MONITOR '. write: / ICON_BIW_SCHEDULER as icon, 'ICON_BIW_SCHEDULER '. write: / ICON_BIW_FORMULA as icon, 'ICON_BIW_FORMULA '. write: / ICON_BIW_REF_STRUCTURE as icon, 'ICON_BIW_REF_STRUCTURE '. write: / ICON_BIW_REPORT as icon, 'ICON_BIW_REPORT '. write: / ICON_BIW_REPORT_VIEW as icon, 'ICON_BIW_REPORT_VIEW '. write: / ICON_MASTER_DATA_ACT as icon, 'ICON_MASTER_DATA_ACT '. write: / ICON_MASTER_DATA_INA as icon, 'ICON_MASTER_DATA_INA '. write: / ICON_TEXT_ACT as icon, 'ICON_TEXT_ACT '. write: / ICON_TEXT_INA as icon, 'ICON_TEXT_INA '. write: / ICON_HIERARCHY_ACT as icon, 'ICON_HIERARCHY_ACT '. write: / ICON_HIERARCHY_INA as icon, 'ICON_HIERARCHY_INA '. write: / ICON_MOVING_DATA_ACT as icon, 'ICON_MOVING_DATA_ACT '. write: / ICON_MOVING_DATA_INA as icon, 'ICON_MOVING_DATA_INA '. write: / ICON_DEBUGGER_STEP_INTO as icon, 'ICON_DEBUGGER_STEP_INTO '. write: / ICON_DEBUGGER_STEP_OVER as icon, 'ICON_DEBUGGER_STEP_OVER '. write: / ICON_DEBUGGER_STEP_OUT as icon, 'ICON_DEBUGGER_STEP_OUT '. write: / ICON_DEBUGGER_CONTINUE as icon, 'ICON_DEBUGGER_CONTINUE '. write: / ICON_PARAMETER as icon, 'ICON_PARAMETER '. write: / ICON_PARAMETER_IMPORT as icon, 'ICON_PARAMETER_IMPORT '. write: / ICON_PARAMETER_EXPORT as icon, 'ICON_PARAMETER_EXPORT '. write: / ICON_PARAMETER_CHANGING as icon, 'ICON_PARAMETER_CHANGING '. write: / ICON_PARAMETER_RESULT as icon, 'ICON_PARAMETER_RESULT '. write: / ICON_OO_CLASS as icon, 'ICON_OO_CLASS '. write: / ICON_OO_INTERFACE as icon, 'ICON_OO_INTERFACE '. write: / ICON_OO_ATTRIBUTE as icon, 'ICON_OO_ATTRIBUTE '. write: / ICON_OO_CLASS_ATTRIBUTE as icon, 'ICON_OO_CLASS_ATTRIBUTE '. write: / ICON_OO_INST_ATTRIBUTE as icon, 'ICON_OO_INST_ATTRIBUTE '. write: / ICON_OO_METHOD as icon, 'ICON_OO_METHOD '. write: / ICON_OO_CLASS_METHOD as icon, 'ICON_OO_CLASS_METHOD '. write: / ICON_OO_INST_METHOD as icon, 'ICON_OO_INST_METHOD '. write: / ICON_OO_EVENT as icon, 'ICON_OO_EVENT '. write: / ICON_OO_CONSTANT as icon, 'ICON_OO_CONSTANT '. write: / ICON_OO_OVERWRITE as icon, 'ICON_OO_OVERWRITE '. write: / ICON_OO_CONNECTION as icon, 'ICON_OO_CONNECTION '. write: / ICON_OO_INHERITANCE as icon, 'ICON_OO_INHERITANCE '. write: / ICON_OO_INTERFACE_IC as icon, 'ICON_OO_INTERFACE_IC '. write: / ICON_WS_TRUCK as icon, 'ICON_WS_TRUCK '. write: / ICON_WS_RAIL as icon, 'ICON_WS_RAIL '. write: / ICON_WS_SHIP as icon, 'ICON_WS_SHIP '. write: / ICON_WS_PLANE as icon, 'ICON_WS_PLANE '. write: / ICON_WS_POST as icon, 'ICON_WS_POST '. write: / ICON_WS_TRANSFER as icon, 'ICON_WS_TRANSFER '. write: / ICON_WS_DOUANE as icon, 'ICON_WS_DOUANE '. write: / ICON_SELECTION as icon, 'ICON_SELECTION '. write: / ICON_SYSTEM_STOP_RECORDING as icon, 'ICON_SYSTEM_STOP_RECORDING '. write: / ICON_FENCING as icon, 'ICON_FENCING '. write: / ICON_BIW_RULES_ACT as icon, 'ICON_BIW_RULES_ACT '. write: / ICON_CHARACTERISTICS_ACT as icon, 'ICON_CHARACTERISTICS_ACT '. write: / ICON_CHARACTERISTICS_INA as icon, 'ICON_CHARACTERISTICS_INA '. write: / ICON_KEYFIGURE_ACT as icon, 'ICON_KEYFIGURE_ACT '. write: / ICON_KEYFIGURE_INA as icon, 'ICON_KEYFIGURE_INA '. ULINE. WRITE: / 'Symboles'. WRITE: / ' '. ULINE. write: / SYM_SPACE as symbol, 'SYM_SPACE '. write: / SYM_PLUS_BOX as symbol, 'SYM_PLUS_BOX '. write: / SYM_MINUS_BOX as symbol, 'SYM_MINUS_BOX '. write: / SYM_PLUS_CIRCLE as symbol, 'SYM_PLUS_CIRCLE '. write: / SYM_MINUS_CIRCLE as symbol, 'SYM_MINUS_CIRCLE '. write: / SYM_FILLED_SQUARE as symbol, 'SYM_FILLED_SQUARE '. write: / SYM_HALF_FILLED_SQUARE as symbol, 'SYM_HALF_FILLED_SQUARE '. WRITE: / SYM_SQUARE AS SYMBOL, 'SYM_SQUARE '. write: / SYM_FILLED_CIRCLE as symbol, 'SYM_FILLED_CIRCLE '. write: / SYM_HALF_FILLED_CIRCLE as symbol, 'SYM_HALF_FILLED_CIRCLE '. write: / SYM_CIRCLE as symbol, 'SYM_CIRCLE '. write: / SYM_FILLED_DIAMOND as symbol, 'SYM_FILLED_DIAMOND '. write: / SYM_DIAMOND as symbol, 'SYM_DIAMOND '. write: / SYM_BOLD_X as symbol, 'SYM_BOLD_X '. write: / SYM_NOTE as symbol, 'SYM_NOTE '. write: / SYM_DOCUMENT as symbol, 'SYM_DOCUMENT '. write: / SYM_CHECKED_DOCUMENT as symbol, 'SYM_CHECKED_DOCUMENT '. write: / SYM_DOCUMENTS as symbol, 'SYM_DOCUMENTS '. write: / SYM_FOLDER as symbol, 'SYM_FOLDER '. write: / SYM_PLUS_FOLDER as symbol, 'SYM_PLUS_FOLDER '. write: / SYM_MINUS_FOLDER as symbol, 'SYM_MINUS_FOLDER '. write: / SYM_OPEN_FOLDER as symbol, 'SYM_OPEN_FOLDER '. write: / SYM_BOLD_MINUS as symbol, 'SYM_BOLD_MINUS '. write: / SYM_BOLD_PLUS as symbol, 'SYM_BOLD_PLUS '. write: / SYM_CHECKBOX as symbol, 'SYM_CHECKBOX '. write: / SYM_RADIOBUTTON as symbol, 'SYM_RADIOBUTTON '. write: / SYM_LEFT_TRIANGLE as symbol, 'SYM_LEFT_TRIANGLE '. write: / SYM_RIGHT_TRIANGLE as symbol, 'SYM_RIGHT_TRIANGLE '. write: / SYM_UP_TRIANGLE as symbol, 'SYM_UP_TRIANGLE '. write: / SYM_DOWN_TRIANGLE as symbol, 'SYM_DOWN_TRIANGLE '. write: / SYM_LEFT_HAND as symbol, 'SYM_LEFT_HAND '. write: / SYM_LEFT_ARROW as symbol, 'SYM_LEFT_ARROW '. write: / SYM_RIGHT_ARROW as symbol, 'SYM_RIGHT_ARROW '. write: / SYM_UP_ARROW as symbol, 'SYM_UP_ARROW '. write: / SYM_DOWN_ARROW as symbol, 'SYM_DOWN_ARROW '. write: / SYM_CHECK_MARK as symbol, 'SYM_CHECK_MARK '. write: / SYM_PENCIL as symbol, 'SYM_PENCIL '. write: / SYM_GLASSES as symbol, 'SYM_GLASSES '. write: / SYM_LOCKED as symbol, 'SYM_LOCKED '. write: / SYM_UNLOCKED as symbol, 'SYM_UNLOCKED '. write: / SYM_PHONE as symbol, 'SYM_PHONE '. write: / SYM_PRINTER as symbol, 'SYM_PRINTER '. write: / SYM_FAX as symbol, 'SYM_FAX '. write: / SYM_ASTERISK as symbol, 'SYM_ASTERISK '. write: / SYM_RIGHT_HAND as symbol, 'SYM_RIGHT_HAND '. write: / SYM_SORTED_UP as symbol, 'SYM_SORTED_UP '. write: / SYM_SORTED_DOWN as symbol, 'SYM_SORTED_DOWN '. write: / SYM_CUMULATED as symbol, 'SYM_CUMULATED '. write: / SYM_DELETE as symbol, 'SYM_DELETE '. write: / SYM_EXECUTABLE as symbol, 'SYM_EXECUTABLE '. write: / SYM_WORKFLOW_ITEM as symbol, 'SYM_WORKFLOW_ITEM '. write: / SYM_CAUTION as symbol, 'SYM_CAUTION '. write: / SYM_FLASH as symbol, 'SYM_FLASH '. write: / SYM_LARGE_SQUARE as symbol, 'SYM_LARGE_SQUARE '. WRITE: / ' '. ULINE. WRITE: / 'Coins et traits'. WRITE: / ' '. ULINE. write: / LINE_SPACE as line, 'LINE_SPACE '. write: / LINE_TOP_LEFT_CORNER as line, 'LINE_TOP_LEFT_CORNER '. write: / LINE_BOTTOM_LEFT_CORNER as line, 'LINE_BOTTOM_LEFT_CORNER '. write: / LINE_TOP_RIGHT_CORNER as line, 'LINE_TOP_RIGHT_CORNER '. write: / LINE_BOTTOM_RIGHT_CORNER as line, 'LINE_BOTTOM_RIGHT_CORNER '. write: / LINE_HORIZONTAL_LINE as line, 'LINE_HORIZONTAL_LINE '. write: / LINE_VERTICAL_LINE as line, 'LINE_VERTICAL_LINE '. write: / LINE_LEFT_MIDDLE_CORNER as line, 'LINE_LEFT_MIDDLE_CORNER '. write: / LINE_RIGHT_MIDDLE_CORNER as line, 'LINE_RIGHT_MIDDLE_CORNER '. write: / LINE_BOTTOM_MIDDLE_CORNER as line, 'LINE_BOTTOM_MIDDLE_CORNER'. write: / LINE_TOP_MIDDLE_CORNER as line, 'LINE_TOP_MIDDLE_CORNER '. write: / LINE_CROSS as line, 'LINE_CROSS '. * voir aussi le programme SHOWCOLO WRITE: / X10 COLOR = COL_BACKGROUND. WRITE: / X10 COLOR = COL_HEADING. WRITE: / X10 COLOR = COL_NORMAL. WRITE: / X10 COLOR = COL_TOTAL. WRITE: / X10 COLOR = COL_KEY. WRITE: / X10 COLOR = COL_POSITIVE. WRITE: / X10 COLOR = COL_NEGATIVE. WRITE: / X10 COLOR = COL_GROUP. WRITE: / X10. |
Jointure SQL Table des matières
TABLES: LFA1, MARA, MAKT, EINE, EINA, SSCRFIELDS. DATA: I TYPE I, *parameters: O_LIFNR LIKE EINA-LIFNR, O_MATKL LIKE EINA-MATKL, O_EKORG LIKE EINE-EKORG, P_I TYPE I. DATA: BEGIN OF JOIN, LIFNR LIKE EINA-LIFNR, MATNR LIKE MARA-MATNR, MATKL LIKE MARA-MATKL, INFNR LIKE EINE-INFNR, EKORG LIKE EINE-EKORG, END OF JOIN. *initialization. O_LIFNR = '0000100033'. O_MATKL = '01 '. O_EKORG = '0001 '. WRITE: / 'lifnr', 'matnr', 'matkl', 'infnr', 'ekorg'. SELECT F1~LIFNR F1~MATNR F2~MATKL F1~INFNR F3~EKORG INTO CORRESPONDING FIELDS OF JOIN FROM EINA AS F1 JOIN MARA AS F2 ON F1~MATNR = F2~MATNR JOIN EINE AS F3 ON F1~INFNR = F3~INFNR WHERE F1~LIFNR = O_LIFNR AND F2~MATKL = O_MATKL AND F3~EKORG = O_EKORG . WRITE: / JOIN-LIFNR, JOIN-MATNR, JOIN-MATKL, JOIN-INFNR, JOIN-EKORG. ENDSELECT. SELECT COUNT( * ) INTO I FROM EINA AS F1 JOIN MARA AS F2 ON F1~MATNR = F2~MATNR JOIN EINE AS F3 ON F1~INFNR = F3~INFNR WHERE F1~LIFNR = O_LIFNR AND F2~MATKL = O_MATKL AND F3~EKORG = O_EKORG . WRITE: / I. *endcase. |
SQL ... where not in Table des matières
* codage équivalent au select imbriqué. * objectif : liste des articles pour lesquels un quota * n'existe pas sur la période considérée. * en SQL standard : *select * from mara where matnr not in * (select matnr from equk where * vdatu = '19980903' and bdatu = '99991231') TABLES: MARA, EQUK. RANGES: I_MATNR FOR MARA-MATNR OCCURS 0. DATA: BEGIN OF _M OCCURS 0, MATNR LIKE MARA-MATNR, END OF _M. * liste des cas non satisfaisant SELECT MATNR INTO TABLE _M FROM EQUK WHERE VDATU = '19980903' AND BDATU = '99991231' . * transformer la liste en critere de selection WRITE: / 'trouver les MATNR sauf ceux-ci:'. LOOP AT _M. MOVE 'I' TO I_MATNR-SIGN. MOVE 'EQ' TO I_MATNR-OPTION. MOVE _M-MATNR TO I_MATNR-LOW. CLEAR I_MATNR-HIGH. WRITE:/ I_MATNR. APPEND I_MATNR. ENDLOOP. ULINE. * resultat final SELECT * FROM MARA WHERE MATNR NOT IN I_MATNR. WRITE: / MARA-MATNR. ENDSELECT. |
Liste des utilisateurs Table des matières
TABLES: UINFO. DATA: BEGIN OF USR_TABL OCCURS 10. INCLUDE STRUCTURE UINFO. DATA: END OF USR_TABL, TRACE_STATE(5), TRACE_VALUE TYPE X, OPCODE TYPE X. FREE USR_TABL. OPCODE = 2. CALL 'ThUsrInfo' ID 'OPCODE' FIELD OPCODE ID 'TAB' FIELD USR_TABL-*SYS*. LOOP AT USR_TABL. WRITE: / USR_TABL-MANDT, USR_TABL-BNAME , USR_TABL-TERM , USR_TABL-TCODE , USR_TABL-ZEIT , USR_TABL-EXTMODI, USR_TABL-INTMODI . ENDLOOP. |
Copie de formulaires Table des matières
Utiliser RSTXCPFS
Report interactif Table des matières
Coller le code dans l'éditeur, ajouter un menu nommé INLI (ça, c'est pas une mince affaire, je n'ai jamais vraiment compris la logique de ce programme), générer les textes d'entête de page (editeur abap / symboles de texte / comparer ...).
Modèle de menu (statut) pour liste : SAPMSSY0 – INLI
Ou alors, pour un menu à jour, exécuter un programme abap simpliste (Write ‘toto’.) + systeme status ; ce qui donne le nom du programme standard SAP qui contient le menu standard.
*ce report nécessite un menu dessiné à peu près comme ceci : *menu *---- list *f pri @0x@ print * save *f %sl office office *f %st report tree report tree *f %pc file... file... *f %ex exit exit * edit *f pick @16@ choose *f %sc @13@ find *f %sc+ @4e@ find next *f rw @0w@ cancel * goto *f back @0w@ back * *boutons *------- *f veri @4k@ vérifier vérifier *f exec @15@ exécuter exécuter *f tout @4b@ sélect tout sélectionner tout *f rien @4d@ sélect rien désélectionner tout * *icones *------ *@15@ icon_execute_object *@16@ icon_select_detail *@0w@ icon_cancel *@13@ icon_search *@4e@ icon_search_next *@0x@ icon_print *@4d@ icon_deselect_all *@4b@ icon_select_all *@4k@ icon_intensify *@0w@ icon_cancel REPORT ZZJPL030 *largeur du report LINE-SIZE 255 *hauteur du saut de page (hauteur du pied de page) LINE-COUNT 65(1) *prise de controle sur les entetes NO STANDARD PAGE HEADING. * les indications de largeur et de hauteur permettent au pilote * d'impression de choisir le format d'impression applicable. Par exemple * pour une imprimante HPLJ4, on trouve : * X_65_80 X_65_132 X_90_120 X_65_255 X_65_320 * X_58_170 X_48_255 X_44_120 X_24_255 INCLUDE <LIST>. TABLES: MAKT, EINE, EINA. DATA: MARKFIELD(1) TYPE C VALUE 'X'. DATA LIGNEOK(1). DATA I TYPE I. DATA TYPELIGNE(1). *=--------------------------------------------------------------------=* TOP-OF-PAGE. *=--------------------------------------------------------------------=* * typeligne = 'C'. hide typeligne. * write: / '123456789', '123456789', '123456789', '123456789', * '123456789', '123456789', '123456789', '123456789', * '123456789', '123456789', '123456789', '123456789', * '123456789', '123456789', '123456789', '123456789'. TYPELIGNE = 'H'. HIDE TYPELIGNE. WRITE:/ TEXT-H01 NO-GAP, TEXT-H21 NO-GAP, TEXT-H41 NO-GAP, TEXT-H61 NO-GAP, TEXT-H81 NO-GAP. TYPELIGNE = 'H'. HIDE TYPELIGNE. WRITE:/ TEXT-H02 NO-GAP, TEXT-H22 NO-GAP, TEXT-H42 NO-GAP, TEXT-H62 NO-GAP, TEXT-H82 NO-GAP. TYPELIGNE = 'H'. HIDE TYPELIGNE. WRITE 75 SY-PAGNO. WRITE:/ TEXT-H03 NO-GAP, TEXT-H23 NO-GAP, TEXT-H43 NO-GAP, TEXT-H63 NO-GAP, TEXT-H83 NO-GAP. TYPELIGNE = 'H'. HIDE TYPELIGNE. WRITE 101 SY-REPID. WRITE:/ TEXT-H04 NO-GAP, TEXT-H24 NO-GAP, TEXT-H44 NO-GAP, TEXT-H64 NO-GAP, TEXT-H84 NO-GAP. TYPELIGNE = 'H'. HIDE TYPELIGNE. WRITE 101 SY-DATUM. WRITE:/ TEXT-H05 NO-GAP, TEXT-H25 NO-GAP, TEXT-H45 NO-GAP, TEXT-H65 NO-GAP, TEXT-H85 NO-GAP. TYPELIGNE = 'H'. HIDE TYPELIGNE. WRITE 101 SY-UZEIT. *=--------------------------------------------------------------------=* END-OF-PAGE. *=--------------------------------------------------------------------=* TYPELIGNE = 'H'. HIDE TYPELIGNE. WRITE:/ TEXT-H08 NO-GAP, TEXT-H28 NO-GAP, TEXT-H48 NO-GAP, TEXT-H68 NO-GAP, TEXT-H88 NO-GAP. *=--------------------------------------------------------------------=* START-OF-SELECTION. *=--------------------------------------------------------------------=* *report dynamique : monter le menu et le titre SET PF-STATUS 'INLI'. SET TITLEBAR 'T01'. *=--------------------------------------------------------------------=* MARKFIELD = 'x'. EINA-MATNR = '000000000123456789'. MAKT-MAKTX = 'article verbeux abcdefghijklmnopqrstuvwxyz'. EINE-APLFZ = 123. EINE-MINBM = '1234567890.123-'. EINA-MEINS = 'PAK'. EINE-NETPR = '12345678.90-'. EINE-WAERS = 'FRF'. EINE-PEINH = 12345. EINE-BPRME = 'EA'. * configuration d'une ligne correcte LIGNEOK = '1'. EINE-APLFZ = 1. PERFORM LIGNE. EINE-APLFZ = 2. PERFORM LIGNE. EINE-APLFZ = 3. PERFORM LIGNE. PERFORM LIGNE. PERFORM LIGNE. PERFORM TRAIT. * configuration d'une ligne incorecte LIGNEOK = '0'. EINE-APLFZ = 123. DO 2 TIMES. PERFORM LIGNE. ENDDO. PERFORM TRAIT. DO 100 TIMES. LIGNEOK = '1'. EINE-APLFZ = 1. PERFORM LIGNE. ENDDO. *=--------------------------------------------------------------------=* END-OF-SELECTION. *=--------------------------------------------------------------------=* WRITE:/ TEXT-H09 NO-GAP, TEXT-H29 NO-GAP, TEXT-H49 NO-GAP, TEXT-H69 NO-GAP, TEXT-H89 NO-GAP. *=--------------------------------------------------------------------=* AT USER-COMMAND. *=--------------------------------------------------------------------=* * break-point. * write sy-ucomm. IF SY-LSIND = 1. CASE SY-UCOMM. WHEN 'EXEC' OR 'VERI'. I = 0. DO. ADD 1 TO I. READ LINE I FIELD VALUE MARKFIELD. *fin de fichier IF SY-SUBRC <> 0. EXIT. ENDIF. *selectionner les lignes à traiter IF TYPELIGNE = '1' . *lignes hors selection IF MARKFIELD = ' '. MODIFY CURRENT LINE LINE FORMAT INTENSIFIED ON COLOR OFF. ELSE. *conversions et controles supplémentaires PERFORM CONTROLE. CHECK SY-SUBRC = 0. *traiter IF SY-UCOMM = 'EXEC'. ".../... TYPELIGNE = '2'. MARKFIELD = SPACE. MODIFY CURRENT LINE LINE FORMAT COLOR COL_POSITIVE INPUT OFF FIELD VALUE MARKFIELD. ENDIF. ENDIF. ENDIF. ENDDO. *** marquer WHEN 'TOUT'. I = 0. DO. I = I + 1. READ LINE I. IF SY-SUBRC <> 0. EXIT. ENDIF. IF TYPELIGNE = '1'. MARKFIELD = 'X'. MODIFY CURRENT LINE FIELD VALUE MARKFIELD. ENDIF. ENDDO. *** demarquer WHEN 'RIEN'. I = 0. DO. ADD 1 TO I. READ LINE I. IF SY-SUBRC <> 0. EXIT. ENDIF. IF TYPELIGNE = '1'. MARKFIELD = SPACE. MODIFY CURRENT LINE FIELD VALUE MARKFIELD. ENDIF. ENDDO. ENDCASE. ENDIF. *=--------------------------------------------------------------------=* AT LINE-SELECTION. SET PF-STATUS SPACE. SET LANGUAGE 'E'. WRITE: / 'typeligne =', TYPELIGNE. WRITE: / 'eina-matnr=', EINA-MATNR. WRITE: / 'eina-meins=', EINA-MEINS. WRITE: / 'eine-waers=', EINE-WAERS. WRITE: / 'eine-bprme=', EINE-BPRME. WRITE: / 'makt-maktx=', MAKT-MAKTX. WRITE: / 'eine-minbm=', EINE-MINBM. WRITE: / 'eine-aplfz=', EINE-APLFZ. WRITE: / 'eine-netpr=', EINE-NETPR. WRITE: / 'eine-peinh=', EINE-PEINH. *=--------------------------------------------------------------------=* *&---------------------------------------------------------------------* *& Form LIGNE *&---------------------------------------------------------------------* * ajouter une ligne sur la liste en cours *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM LIGNE. *lignes correctes : couleur = normal, saisie = possible *lignes erronnees : couleur = rouge, saisie = verrouillee IF LIGNEOK = '1'. MARKFIELD = 'X'. FORMAT RESET. FORMAT COLOR OFF INTENSIFIED OFF. ELSE. MARKFIELD = ' '. FORMAT RESET. FORMAT COLOR COL_NEGATIVE INTENSIFIED OFF. ENDIF. *fonds de ligne WRITE:/ TEXT-H06 NO-GAP, TEXT-H26 NO-GAP, TEXT-H46 NO-GAP, TEXT-H66 NO-GAP, TEXT-H86 NO-GAP. * champs fixes WRITE 4 EINA-MATNR+8(10) NO-GAP. HIDE EINA-MATNR. WRITE 33 EINA-MEINS NO-GAP. HIDE EINA-MEINS. WRITE 56 EINE-WAERS(3) NO-GAP. HIDE EINE-WAERS. WRITE 66 EINE-BPRME NO-GAP. HIDE EINE-BPRME. WRITE 70 MAKT-MAKTX. HIDE MAKT-MAKTX. WRITE 16 EINE-MINBM NO-GAP. HIDE EINE-MINBM. WRITE 37 EINE-APLFZ NO-GAP. HIDE EINE-APLFZ. WRITE 41 EINE-NETPR NO-GAP. HIDE EINE-NETPR. WRITE 60 EINE-PEINH NO-GAP. HIDE EINE-PEINH. TYPELIGNE = LIGNEOK. HIDE TYPELIGNE. *champ modifiable : markfield IF LIGNEOK = '1'. FORMAT INPUT ON INTENSIFIED OFF. WRITE 2 MARKFIELD AS CHECKBOX. ELSE. FORMAT INPUT OFF INTENSIFIED OFF. WRITE 2 MARKFIELD AS CHECKBOX INPUT OFF. ENDIF. TYPELIGNE = LIGNEOK. HIDE TYPELIGNE. FORMAT RESET. ENDFORM. " LIGNE *&---------------------------------------------------------------------* *& Form trait *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM TRAIT. WRITE: / SY-ULINE. TYPELIGNE = 'U'. HIDE TYPELIGNE. ENDFORM. *&---------------------------------------------------------------------* *& Form CONTROLE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM CONTROLE. *code retour du controle SY-SUBRC = 0. * controles supplémentaires IF EINE-APLFZ = ' 2 '. SY-SUBRC = 1. ENDIF. *saisie erronnée : ligne en jaune et champ en rouge IF SY-SUBRC > 0. MODIFY CURRENT LINE LINE FORMAT COLOR COL_TOTAL INTENSIFIED OFF FIELD FORMAT EINE-APLFZ COLOR COL_NEGATIVE . SY-SUBRC = 2. ELSE. *saisie correcte : refaire la mise en page MODIFY CURRENT LINE LINE FORMAT COLOR OFF INTENSIFIED OFF. ENDIF. ENDFORM. " READ_NUMERIC_FIELD *&---------------------------------------------------------------------* *& Form NEVER_USED *&---------------------------------------------------------------------* *ce form n'est jamais exécuté.Il sert uniquement à l'initialisation des *symboles de texte (editeur abap / symboles de texte / comparer ...) *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM NEVER_USED. DATA _I(60). *Hxy : H = préfixe pour HEADER * x = tranche de l'entete. la largeur maxi d'un report est de 255 * caractères. les 4 premières tranches font 50 cars de large, * la 5° tranche fait 55 cars de large. * y = numéro de ligne, ou format d'impression * première tranche, colonnes 1 à 50 *******'....+....1....+....2....+....3....+....4....+....5' _I = '--------------------------------------------------'(H01). _I = '| | |Quantités | |Prix '(H02). _I = '| | |-----------------------------------'(H03). _I = '|S|Article |Qté mini U |Dly| unitaire '(H04). _I = '--------------------------------------------------'(H05). _I = '| | | | | '(H06). _I = '-------A Suivre-----------------------------------'(H08). _I = '-------fin de liste-------------------------------'(H09). * deuxième tranche, colonnes 51 à 100 *******'....+....6....+....7....+....8....+....9....+...10' _I = '--------------------------------------------------'(H21). _I = ' |Page 1 '(H22). _I = '--------------------------------------------------'(H23). _I = ' U |Pour U |Désignation '(H24). _I = '--------------------------------------------------'(H25). _I = ' / | '(H26). _I = '--------------------------------------------------'(H28). _I = '--------------------------------------------------'(H29). * troisième tranche, colonnes 101 à 150 *******'....+...11....+...12....+...13....+...14....+...15' _I = '--------------------------------------------------'(H41). _I = '||||||||||||||||||||||||||||||||||||||||||||||||||'(H42). _I = '---------| |||||||||||||||||||||||||||||||||||||||'(H43). _I = ' |||--||||||||||||||||||||||||||||||||||||'(H44). _I = '---------|||||||||||||||||||||||||||||||||||||||||'(H45). _I = '---------|||||||||||||||||||||||||||||||||||||||||'(H48). _I = '---------|||||||||||||||||||||||||||||||||||||||||'(H49). * quatrième tranche, colonnes 151 à 200 *******'....+...16....+...17....+...18....+...19....+...20' _I = ' -------------------------------------------------'(H61). _I = ' ---| |------|--------| |-------------------------'(H62). _I = ' ---- --------------------------------------------'(H63). _I = ' -------------------------------------------------'(H64). _I = ' -------------------------------------------------'(H65). _I = ' -------------------------------------------------'(H68). _I = ' -------------------------------------------------'(H69). * cinquième tranche, colonnes 200 à 255 *******'....+...21....+...22....+...23....+...24....+...25....+' _I = '||||||||||||||||||||||||||||||||||||||||||||||||||....+'(H81). _I = '||||||||||||||||||||||||||||||||||||||||||||||||||....+'(H82). _I = '||||||||||||||||||||||||||||||||||||||||||||||||||....+'(H83). _I = '||||||||||||||||||||||||||||||||||||||||||||||||||....+'(H84). _I = '||||||||||||||||||||||||||||||||||||||||||||||||||....+'(H85). _I = '||||||||||||||||||||||||||||||||||||||||||||||||||....+'(H88). _I = '||||||||||||||||||||||||||||||||||||||||||||||||||....+'(H89). *_i = ' '( ). *_i = ' '( ). *_i = ' '( ). *_i = ' '( ). *_i = ' '( ). *_i = ' '( ). *_i = ' '( ). *_i = ' '( ). *_i = ' '( ). ENDFORM. " NEVER_USED |
Export vers Excel pour mailing Table des matières
Crée un fichier d'extraction, le copie su le PC, ouvre Excel, charge le fichier depuis le PC et se termine en laissant Excel ouvert
Textpool : ---------- I001 Exporter des fiches clients dans EXCEL, limité à 100 fiches I002 Intitulé des colonnes IJPL JP Lamontre R Shell EXCEL SS_KUNNR N° Client SS_NAME Façon MAILING SS_TITLE compréhensible Abap : ------ REPORT ZZJPL033 NO STANDARD PAGE HEADING. INCLUDE OLE2INCL. *=-------------------------------------------------------------------=* TABLES: KNA1. *=-------------------------------------------------------------------=* DATA: TABLEUR TYPE OLE2_OBJECT. " define ole application name DATA: CLASSEUR TYPE OLE2_OBJECT. " define workbook name DATA: SHEET TYPE OLE2_OBJECT. " define excel sheet name DATA: FICHIER_LOGIC LIKE FILENAME-FILEINTERN, FICHIER_PHYSIC LIKE FILENAME-FILEEXTERN. DATA _PCFILE(128). DATA CLIENT LIKE KNA1 OCCURS 0. DATA: FIELD LIKE DFIES OCCURS 0 WITH HEADER LINE, BEGIN OF NOM OCCURS 0, N(20), END OF NOM, C80(80). DATA TABNAME LIKE DCOBJDEF-NAME. *=-------------------------------------------------------------------=* * criteres de selection * demander le type d'entete de colonne désiré SELECTION-SCREEN COMMENT 1(80) TEXT-JPL. SELECTION-SCREEN COMMENT /1(80) TEXT-001. SELECTION-SCREEN BEGIN OF BLOCK HDR WITH FRAME TITLE TEXT-002. PARAMETERS: S_NAME RADIOBUTTON GROUP HDR, S_TITLE RADIOBUTTON GROUP HDR DEFAULT 'X'. SELECTION-SCREEN END OF BLOCK HDR. SELECT-OPTIONS S_KUNNR FOR KNA1-KUNNR MATCHCODE OBJECT DEBI. *=-------------------------------------------------------------------=* START-OF-SELECTION. *=-------------------------------------------------------------------=* FICHIER_PHYSIC = 'C:\TEMP\CLIENT.DAT'. *=-récupérer le nom des colonnes TABNAME = 'KNA1'. CALL FUNCTION 'DDIF_FIELDINFO_GET' EXPORTING TABNAME = TABNAME TABLES DFIES_TAB = FIELD EXCEPTIONS OTHERS = 3. *=-extraire les noms de colonnes CLEAR NOM. REFRESH NOM. LOOP AT FIELD. IF S_NAME = 'X'. *version avec les noms de colonnes : idéal pour faire un mailing NOM-N = FIELD-FIELDNAME. ENDIF. IF S_TITLE = 'X'. *version avec les intitulés courts de colonnes NOM-N = FIELD-SCRTEXT_S. ENDIF. APPEND NOM. ENDLOOP. *=-récupérer les données SELECT * INTO TABLE CLIENT FROM KNA1 UP TO 100 ROWS WHERE KUNNR IN S_KUNNR. SORT CLIENT. *=-charger le fichier EXCEL _PCFILE = FICHIER_PHYSIC. "pour respecter le typage CALL FUNCTION 'WS_DOWNLOAD' EXPORTING FILENAME = _PCFILE FILETYPE = 'DAT' TABLES DATA_TAB = CLIENT FIELDNAMES = NOM EXCEPTIONS OTHERS = 9. *----------------------------------------------------------------------- * call excel opening export file *----------------------------------------------------------------------- *liste des applications : table TOLE, trx SOLE CREATE OBJECT TABLEUR 'EXCEL.APPLICATION'. *liste des propriétés : table OLELOAD(verbtype='P'), trx SOLI SET PROPERTY OF TABLEUR 'Visible' = 1. *liste des méthodes : table OLELOAD(verbtype='M'), trx SOLI CALL METHOD OF TABLEUR 'Workbooks' = CLASSEUR. CALL METHOD OF CLASSEUR 'Open' EXPORTING #1 = FICHIER_PHYSIC. |
Shell d'application PC, synchrone et asynchrone Table des matières
Html
*=-en SHELL direct, synchrone
CLEAR RC.
CALL FUNCTION 'WS_EXECUTE'
EXPORTING
* DOCUMENT = ' '
* CD = ' '
COMMANDLINE = 'c:\temp\client.dat'
INFORM = 'X'
PROGRAM =
'C:\Program Files\Microsoft Office\Office\EXCEL.EXE'
* STAT = ' '
WINID = 'EXCEL69'
* OSMAC_SCRIPT = ' '
* OSMAC_CREATOR = ' '
* WIN16_EXT = ' '
* EXEC_RC = ' '
IMPORTING
RBUFF = RC
EXCEPTIONS
FRONTEND_ERROR = 1
NO_BATCH = 2
PROG_NOT_FOUND = 3
ILLEGAL_OPTION = 4
OTHERS = 5.
* ca marche, ABAP s'arrête et attend.
WRITE: 'ce texte devrait s''afficher apres la fermeture de Excel'.
*=-en SHELL direct, synchrone
CALL FUNCTION 'WS_EXECUTE'
EXPORTING
* DOCUMENT = ' '
* CD = ' '
COMMANDLINE = 'k:\cdrom\sapr3e\booklist.hlp'
INFORM = 'X'
PROGRAM = 'winhelp'
* STAT = ' '
WINID = 'HELP88'
* OSMAC_SCRIPT = ' '
* OSMAC_CREATOR = ' '
* WIN16_EXT = ' '
* EXEC_RC = ' '
IMPORTING
RBUFF = RC
EXCEPTIONS
FRONTEND_ERROR = 1
NO_BATCH = 2
PROG_NOT_FOUND = 3
ILLEGAL_OPTION = 4
OTHERS = 5.
WRITE: 'ce texte devrait s''afficher apres la fermeture du',
'premier affichage de WINHELP'.
*raté, il ne s'arrête pas. winhelp ne permet pas la synchro.
WRITE RC.
*=-en SHELL direct, asynchrone
RC = 'TotO'.
CALL FUNCTION 'WS_EXECUTE'
EXPORTING
* DOCUMENT = ' '
* CD = ' '
COMMANDLINE = 'k:\cdrom\sapr3e\booklist.hlp'
INFORM = ' '
PROGRAM = 'winhelp'
* STAT = ' '
* WINID = ' '
* OSMAC_SCRIPT = ' '
* OSMAC_CREATOR = ' '
* WIN16_EXT = ' '
* EXEC_RC = ' '
IMPORTING
RBUFF = RC
EXCEPTIONS
FRONTEND_ERROR = 1
NO_BATCH = 2
PROG_NOT_FOUND = 3
ILLEGAL_OPTION = 4
OTHERS = 5.
WRITE RC.
|
OLE vers Excel Table des matières
* Including OLE types INCLUDE OLE2INCL. * Tables and variables for later use TABLES: KNA1. DATA W_KNA1 LIKE KNA1 OCCURS 0 WITH HEADER LINE. DATA: APPLICATION TYPE OLE2_OBJECT, WORKBOOK TYPE OLE2_OBJECT, SHEET TYPE OLE2_OBJECT, CELLS TYPE OLE2_OBJECT. * Creating an object CREATE OBJECT APPLICATION 'excel.application'. IF SY-SUBRC NE 0. WRITE: / 'Error when opening excel.application', SY-MSGLI. ENDIF. * Setting properties SET PROPERTY OF APPLICATION 'Visible' = 1. * Calling methods CALL METHOD OF APPLICATION 'Workbooks' = WORKBOOK. PERFORM ERRORS. CALL METHOD OF WORKBOOK 'Add'. PERFORM ERRORS. CALL METHOD OF APPLICATION 'Worksheets' = SHEET EXPORTING #1 = 1. PERFORM ERRORS. CALL METHOD OF SHEET 'Activate'. PERFORM ERRORS. PERFORM FILL_SHEET. * Subroutine for filling the spread sheet FORM FILL_SHEET. DATA: ROW_MAX TYPE I VALUE 256, INDEX TYPE I VALUE 1. FIELD-SYMBOLS: <NAME>. SELECT * FROM KNA1 UP TO 10 ROWS INTO TABLE W_KNA1 . LOOP AT W_KNA1. KNA1 = W_KNA1. * index = row_max * ( sy-dbcnt - 1 ) + 1. DO 4 TIMES. ASSIGN COMPONENT SY-INDEX OF STRUCTURE KNA1 TO <NAME>. CALL METHOD OF SHEET 'Cells' = CELLS EXPORTING #1 = INDEX. SET PROPERTY OF CELLS 'Value' = <NAME>. ADD 1 TO INDEX. ENDDO. ENDLOOP. ENDFORM. * Subroutine for error handling FORM ERRORS. IF SY-SUBRC NE 0. WRITE: / 'Error in OLE call', SY-MSGLI. EXIT. ENDIF. ENDFORM. |
A étudier
REPORT Z66WORD . INCLUDE OLE2INCL. INCLUDE DOCSINCL. TABLES: MAKT. DATA F_RETOUR TYPE OLE2_OBJECT. DATA S_RETOUR TYPE OLE2_OBJECT. DATA APPLICATION TYPE OLE2_OBJECT. DATA WORD TYPE OLE2_OBJECT. DATA: BEGIN OF ITAB OCCURS 100, MATNR LIKE MAKT-MATNR, SEP1(1), SPRAS LIKE MAKT-SPRAS, SEP2(1), MAKTX LIKE MAKT-MAKTX, SEP3(1), MAKTG LIKE MAKT-MAKTG, END OF ITAB. SELECT * FROM MAKT. MOVE MAKT-MATNR TO ITAB-MATNR. MOVE MAKT-SPRAS TO ITAB-SPRAS. MOVE MAKT-MAKTX TO ITAB-MAKTX. MOVE MAKT-MAKTG TO ITAB-MAKTG. MOVE ';' TO ITAB-SEP1. MOVE ';' TO ITAB-SEP2. MOVE ';' TO ITAB-SEP3. APPEND ITAB. ENDSELECT. LOOP AT ITAB. WRITE: / ITAB-MATNR, ITAB-SPRAS, ITAB-SPRAS, ITAB-MAKTX. ENDLOOP. *CALL FUNCTION 'WS_DOWNLOAD' * EXPORTING * FILENAME = 'C:\titi.txt' * TABLES * DATA_TAB = ITAB. *CALL FUNCTION 'WS_EXECUTE' * EXPORTING * CD = 'C:\' * COMMANDLINE = 'c:\titi.txt' * PROGRAM = 'winword.exe'. * STAT = ' ' * WINID = ' ' * OSMAC_SCRIPT = ' ' * OSMAC_CREATOR = ' ' * WIN16_EXT = ' ' * EXEC_RC = ' ' * IMPORTING * RBUFF = CREATE OBJECT APPLICATION 'WORD.BASIC'. IF SY-SUBRC NE 0. WRITE / 'pb ouverture Word'. ELSE. CALL METHOD OF APPLICATION 'FILEOPEN' EXPORTING #1 = 'C:\TITI.txt' #2 = '0'. "ouvre le fichier CALL METHOD OF APPLICATION 'AppShow'. "Ouvre word * CALL METHOD OF APPLICATION 'VIEWTOOLBAR'. " masque les icones. *SET PROPERTY OF WORD 'APPSHOW' = S_RETOUR. *set property of application 'AppShow' = f_retour. *CALL METHOD OF APPLICATION 'MENUITEMMACRO'."aperçu avant impression CALL METHOD OF APPLICATION 'FILEPRINTPREVIEW'. "aperçu avant impression *IF F_RETOUR-HANDLE NE -1. *CALL METHOD OF APPLICATION 'CLOSEPREVIEW'. *ENDIF. *CALL METHOD OF APPLICATION 'FILEEXIT'. "Ferme Word ENDIF. REPORT Z66WORD . INCLUDE OLE2INCL. INCLUDE DOCSINCL. DATA: H_WORD TYPE OLE2_OBJECT. DATA: H_VALS TYPE OLE2_OBJECT. DATA: H_STAT TYPE OLE2_OBJECT. DATA VIS TYPE I. DATA FILENAME(30). DATA STRING(30). CREATE OBJECT H_WORD 'WORD.APPL'. FILENAME = 'C:\TITI.TXT'. *CALL METHOD OF H_WORD 'FILEOPEN' EXPORTING #1 = FILENAME. *CALL METHOD OF H_WORD 'CurValues' = H_VALS. GET PROPERTY OF H_WORD 'Visible' = VIS. *GET PROPERTY OF H_STAT 'filesize' = STRING. *WRITE: 'Resultat :',STRING. *CALL METHOD OF APPLICATION 'AppShow'. "Ouvre word * CALL METHOD OF APPLICATION 'VIEWTOOLBAR'. " masque les icones. *SET PROPERTY OF WORD 'APPSHOW' = S_RETOUR. *GET PROPERTY OF WORD 'FILEOPEN' = F_RETOUR. *CALL METHOD OF APPLICATION 'MENUITEMMACRO'."aperçu avant impression *CALL METHOD OF APPLICATION 'FILEPRINTPREVIEW'. "aperçu avant impression *IF F_RETOUR-HANDLE NE -1. *CALL METHOD OF APPLICATION 'CLOSEPREVIEW'. *ENDIF. *CALL METHOD OF APPLICATION 'FILEEXIT'. "Ferme Word *ENDIF. |
Copie de fichiers SAP <-> PC Table des matières
Voir aussi transaction AL11
Textpool : ---------- I001 Fichier sur le serveur I002 Fichier sur le poste de travail I003 Sens de la copie R Copie de fichiers SPCDIR Répertoire PC SPCFILE Fichier PC SPCSFX Suffixe PC SPC_SRV PC vers serveur SSRVDIR Répertoire serveur SSRVFILE Fichier serveur SSRVSFX Suffixe serveur SSRV_PC Serveur vers PC Abap : ------ REPORT ZZJPL040 LINE-SIZE 255. DATA: BEGIN OF PC OCCURS 0, ENR(5000), END OF PC. DATA: SRVDIR(64) VALUE '/home/france/' , SRVSFX(4) VALUE '.txt' , PCDIR(64) VALUE 'c:\sappc\', PCSFX(4) VALUE '.txt' , ZG_DEBUGTEXT(5000) , W-LEN TYPE I , W-LIN TYPE I . SELECTION-SCREEN BEGIN OF BLOCK SERVEUR WITH FRAME TITLE TEXT-001. PARAMETERS SRVFILE(128) LOWER CASE. SELECTION-SCREEN END OF BLOCK SERVEUR. SELECTION-SCREEN BEGIN OF BLOCK PC WITH FRAME TITLE TEXT-002. PARAMETERS PCFILE(128) LOWER CASE. SELECTION-SCREEN END OF BLOCK PC. SELECTION-SCREEN BEGIN OF BLOCK SENS WITH FRAME TITLE TEXT-003. PARAMETERS PC_SRV RADIOBUTTON GROUP SENS. PARAMETERS SRV_PC RADIOBUTTON GROUP SENS. SELECTION-SCREEN END OF BLOCK SENS. *---------------------------------------------------------------------- INITIALIZATION. *---------------------------------------------------------------------- CONCATENATE SRVDIR '?' SRVSFX INTO SRVFILE. CONCATENATE PCDIR '?' PCSFX INTO PCFILE. *---------------------------------------------------------------------- START-OF-SELECTION. *---------------------------------------------------------------------- W-LIN = 0. W-LEN = 0. *copie serveur vers pc IF SRV_PC = 'X'. OPEN DATASET SRVFILE FOR INPUT IN TEXT MODE. *lire le serveur DO. READ DATASET SRVFILE INTO ZG_DEBUGTEXT. IF SY-SUBRC <> 0. EXIT. ENDIF. APPEND ZG_DEBUGTEXT TO PC. WRITE:/ ZG_DEBUGTEXT. COMPUTE W-LEN = W-LEN + STRLEN( ZG_DEBUGTEXT ). ENDDO. CLOSE DATASET SRVFILE. *ecrire sur le pc DESCRIBE TABLE PC LINES W-LIN. CALL FUNCTION 'WS_DOWNLOAD' EXPORTING FILENAME = PCFILE TABLES DATA_TAB = PC EXCEPTIONS FILE_OPEN_ERROR = 1 FILE_WRITE_ERROR = 2 INVALID_FILESIZE = 3 INVALID_TABLE_WIDTH = 4 INVALID_TYPE = 5 NO_BATCH = 6 UNKNOWN_ERROR = 7 OTHERS = 8. ULINE. *compte-rendu IF SY-SUBRC <> 0. FORMAT COLOR COL_NEGATIVE. ENDIF. WRITE: / 'copie de', SRVFILE. WRITE: / 'vers', PCFILE. WRITE: / 'sy-subrc=', SY-SUBRC, W-LIN, 'lignes', W-LEN, 'octets'. *copie pc vers serveur ELSE. *lire le pc CALL FUNCTION 'WS_UPLOAD' EXPORTING FILENAME = PCFILE TABLES DATA_TAB = PC EXCEPTIONS OTHERS = 9. DESCRIBE TABLE PC LINES W-LIN. *ecrire sur le serveur OPEN DATASET SRVFILE FOR OUTPUT IN TEXT MODE. LOOP AT PC. COMPUTE W-LEN = W-LEN + STRLEN( PC-ENR ). TRANSFER PC-ENR TO SRVFILE. IF SY-SUBRC <> 0. FORMAT COLOR COL_NEGATIVE. WRITE: / 'ecriture sur le serveur, sy-subrc=', SY-SUBRC. EXIT. ENDIF. WRITE:/ PC-ENR. ENDLOOP. CLOSE DATASET SRVFILE. ULINE. *compte-rendu IF SY-SUBRC <> 0. FORMAT COLOR COL_NEGATIVE. ENDIF. WRITE: / 'copie de', PCFILE. WRITE: / 'vers', SRVFILE. WRITE: / 'sy-subrc=', SY-SUBRC, W-LIN, 'lignes', W-LEN, 'octets'. ENDIF. |
Selection-Screen Table des matières
SELECTION-SCREEN BEGIN OF BLOCK ESSAI WITH FRAME TITLE TEXT-003. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 5(10) T1. SELECTION-SCREEN POSITION 20. PARAMETERS C1 AS CHECKBOX. SELECTION-SCREEN POSITION 40. PARAMETERS C2 AS CHECKBOX. SELECTION-SCREEN POSITION 60. PARAMETERS C3 AS CHECKBOX. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 5(15) T2. SELECTION-SCREEN POSITION POS_LOW. PARAMETERS R1 RADIOBUTTON GROUP G1. SELECTION-SCREEN POSITION POS_HIGH. PARAMETERS R2 RADIOBUTTON GROUP G1. SELECTION-SCREEN END OF LINE. SELECTION-SCREEN BEGIN OF BLOCK CB2 WITH FRAME. PARAMETERS C4 AS CHECKBOX. SELECTION-SCREEN ULINE 35(20). SELECTION-SCREEN PUSHBUTTON 60(8) POUSSER USER-COMMAND PUSH. PARAMETERS C5 AS CHECKBOX. SELECTION-SCREEN END OF BLOCK CB2. SELECTION-SCREEN BEGIN OF BLOCK RB2 WITH FRAME. PARAMETERS R3 RADIOBUTTON GROUP G2. PARAMETERS R4 RADIOBUTTON GROUP G2. PARAMETERS R5 RADIOBUTTON GROUP G2. SELECTION-SCREEN END OF BLOCK RB2. SELECTION-SCREEN FUNCTION KEY 1. SELECTION-SCREEN FUNCTION KEY 2. SELECTION-SCREEN FUNCTION KEY 3. SELECTION-SCREEN FUNCTION KEY 4. SELECTION-SCREEN FUNCTION KEY 5. SELECTION-SCREEN END OF BLOCK ESSAI. INITIALIZATION. CONCATENATE 'DEBUG_' SY-UNAME INTO SRVFILE. PCFILE = SRVFILE. T1 = 'Checkbox'. T2 = 'Radio Bouton'. POUSSER = 'Pousse !'. SSCRFIELDS-FUNCTXT_01 = 'fonction 1'. SSCRFIELDS-FUNCTXT_02 = 'fonction 2'. SSCRFIELDS-FUNCTXT_03 = 'bouton 3'. SSCRFIELDS-FUNCTXT_04 = 'bouton 4'. SSCRFIELDS-FUNCTXT_05 = 'bouton 5'. |
Html
T Shell unix - Change as needed and press F2 (or double-clic) to execute DATA: BEGIN OF TABL OCCURS 0, LINE(2000), END OF TABL. DATA: PARCOM_LOC(100) TYPE C VALUE 'whoami'. DATA LINE LIKE TABL-LINE. *---------------------------------------------------------------------- START-OF-SELECTION. PERFORM CALL_UNIX. *-------------------------------------------------------------------* AT LINE-SELECTION. PARCOM_LOC = SY-LISEL. PERFORM CALL_UNIX. *---------------------------------------------------------------------* FORM CALL_UNIX. REFRESH TABL. CALL 'SYSTEM' ID 'COMMAND' FIELD PARCOM_LOC ID 'TAB' FIELD TABL-*SYS*. FORMAT RESET. FORMAT INPUT ON . WRITE / PARCOM_LOC. LOOP AT TABL. LINE = TABL-LINE. WRITE / LINE. ENDLOOP. ENDFORM. |
Matrice de Batch Input Table des matières
Génération d’un batch input simple :
Utiliser cette façon quand il n’y a pas d’intelligence dans le programme batch input : pas de gestion de rupture, pas de vérification compliquée, ... en gros chaque fois que pour une ligne de fichier en entrée il y a toujours la même suite de transaction(s), dynpros et champs.
* transaction : SM35
* bouton mémoriser
* donner un nom à l’enregistrement
* créer l’enregistrement par F5
* donner le code transaction
* saisir tous les champs ciblés, même si la valeur affichée est déjà correcte
* chaque fois que l’on sort d’une transaction, SM35 affiche la mémorisation
* a ce moment on peux choisir d’en ajouter une autre, ou de terminer. si l’on choisit d’en ajouter une autre, on peux soit reprendre le travail déjà fait soit recommencer depuis le début. Pour terminer : F3
* SM35 affiche la liste des enregistrement. Vérifier si le nombre de transactions est correct
* bouton Créer programme
* adaptation du programme généré : voir la matrice ci-après
dans le corps du programme, remplacer quand c’est nécessaire les constantes par les champs de la table lue par exemple :
remplacer
perform bdc_field using 'QINF-LIEFERANT' '100080'.par
perform bdc_field using 'QINF-LIEFERANT' tab-lifnr.c’est fini. Tester, ca devrait marcher directement du premier coup.
Textpool : ---------- R Matrice de Batch Input SFORTEST Juste pour voir (sans dossier) SGROUP Nom du dossier Batch Input SPC ou...de ce PC ? SPHY_NAME Quel fichier lire ? SM35 Enchainer sur SM35 SSRV .....du serveur SAP ? Abap : ------ REPORT ZZJPL047 NO STANDARD PAGE HEADING LINE-SIZE 255. *=------------------------------------------------------------------=* *constantes CONSTANTS: C_BIFOLDER(12) VALUE 'JPL_DEMO', C_FILENAME(64) VALUE 'C:\jpl\Fichier.txt' . *=--naming-via-FILE-transaction-------------------------------------=* DATA: IN_NAME LIKE FILENAME-FILEINTERN VALUE '???'. *=------------------------------------------------------------------=* *structure du fichier UNIX à plat en entree DATA DATASET(5000). *les zones respectent le mappage du fichier à plat *soit au caractère près, soit par tabulation X'09' DATA: BEGIN OF HPUX OCCURS 0, COL_A(9), COL_B(20), COL_C(40), COL_D(1), COL_E(1), COL_F(4), COL_G(1), COL_H(1), COL_I(10), END OF HPUX, HPUXLUS TYPE I VALUE 0 "nb lignes lues ,TRTLUS TYPE I VALUE 0 "nb lignes conservees ,TRXECRI TYPE I VALUE 0 "nb transactions ,TCODE(4), *------table sbdc. * Batchinputdata of single transaction BEGIN OF BDCDATA OCCURS 0. INCLUDE STRUCTURE BDCDATA. DATA: END OF BDCDATA. DATA RC TYPE I. *=------------------------------------------------------------------=* *selection screen *=------------------------------------------------------------------=* *description du fichier en lecture PARAMETERS PHY_NAME LIKE FILENAME-FILEEXTERN. PARAMETERS SRV RADIOBUTTON GROUP SENS. PARAMETERS PC RADIOBUTTON GROUP SENS. SELECTION-SCREEN ULINE. *description du dossier BI en écriture PARAMETERS GROUP(12). PARAMETERS FORTEST AS CHECKBOX. PARAMETERS SM35 AS CHECKBOX. SELECTION-SCREEN ULINE. *----------------------------------------------------------------------* INITIALIZATION. *----------------------------------------------------------------------* *fichier en entree nom du fichier PERFORM READ_PHYSICAL_NAME USING IN_NAME CHANGING PHY_NAME. GROUP = C_BIFOLDER. * srv = 'X'. PC = 'X'. *----------------------------------------------------------------------* START-OF-SELECTION. *----------------------------------------------------------------------* * lecture du fichier en entree vers la table interne IF SRV = 'X'. OPEN DATASET PHY_NAME FOR INPUT IN TEXT MODE. DO. READ DATASET PHY_NAME INTO DATASET. IF SY-SUBRC <> 0. EXIT. ENDIF. *format avec tabulation ? ... ou sans : ca roule ! * avec tabulations PERFORM FLF2COL USING DATASET HPUX RC. * sans tabulations * hpux = dataset. *charger en table interne APPEND HPUX. ENDDO. ELSE. DATA FILENAME LIKE RLGRAP-FILENAME . FILENAME = PHY_NAME . CALL FUNCTION 'WS_UPLOAD' EXPORTING FILENAME = FILENAME FILETYPE = 'DAT' "avec tabulations TABLES DATA_TAB = HPUX EXCEPTIONS OTHERS = 8. ENDIF. *=------------------------------------------------------------------=* * decortiquer le fichier -> dossier BI *=------------------------------------------------------------------=* PERFORM OPEN_GROUP. LOOP AT HPUX. ADD 1 TO HPUXLUS. *sans les lignes en commentaire CHECK HPUX-COL_A(1) <> '*'. *modèle pour éliminer les lignes inutiles **eliminer les ___ * if ___ = '___'. * write:/ '___ : ', ___. * write: * 'abandonné : '. * continue. * endif. *modèle pour rechercher des infos complémentaires déja dans SAP **trouver ___ * data w_matnr like eina-matnr. * call function 'CONVERSION_EXIT_ALPHA_INPUT' * exporting * input = ___ * importing * output = w_matnr. * select single * from eina where matnr = w_matnr. * if sy-subrc <> 0. * continue. * endif. *la ligne HPUX est acceptée ADD 1 TO TRTLUS. PERFORM BDC_POSTE. ENDLOOP. WRITE: / HPUXLUS, 'lus sur', PHY_NAME. WRITE:/ TRTLUS, 'sélectionnés pour le dossier', group. IF FORTEST <> SPACE. WRITE:/ ' Mode TEST requis, dossier non ouvert'. ENDIF. WRITE:/ TRXECRI, 'transactions dans le dossier', group. PERFORM CLOSE_GROUP. IF FORTEST = SPACE AND SM35 = 'X'. SET PARAMETER ID 'MPN' FIELD GROUP . CALL TRANSACTION 'SM35' AND SKIP FIRST SCREEN. LEAVE PROGRAM. ENDIF. *---------------------------------------------------------------------* * FORM READ_PHYS_NAME * *---------------------------------------------------------------------* * --> LOG_NAME * *---------------------------------------------------------------------* FORM READ_PHYSICAL_NAME USING LOG_NAME CHANGING PHY_NAME. IF LOG_NAME = '???'. PHY_NAME = C_FILENAME. ELSE. CALL FUNCTION 'FILE_GET_NAME' EXPORTING LOGICAL_FILENAME = LOG_NAME IMPORTING FILE_NAME = PHY_NAME EXCEPTIONS FILE_NOT_FOUND = 1 OTHERS = 2. IF NOT SY-SUBRC IS INITIAL. MESSAGE A651(M7) WITH 'V_FILENAME' LOG_NAME. ENDIF. ENDIF. ENDFORM. " change_ext_int *----------------------------------------------------------------------* * create batchinput session * *----------------------------------------------------------------------* FORM OPEN_GROUP. IF FORTEST = SPACE. REFRESH BDCDATA. SKIP. WRITE: /(20) 'Create group'(I01), GROUP. SKIP. * open batchinput group CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING CLIENT = SY-MANDT GROUP = GROUP USER = SY-UNAME KEEP = 'X'. WRITE: /(30) 'BDC_OPEN_GROUP'(I02), 'returncode:'(I05), SY-SUBRC. ENDIF. ENDFORM. *----------------------------------------------------------------------* * end batchinput session * *----------------------------------------------------------------------* FORM CLOSE_GROUP. * close batchinput group IF FORTEST = SPACE. CALL FUNCTION 'BDC_CLOSE_GROUP'. WRITE: /(30) 'BDC_CLOSE_GROUP'(I04), 'returncode:'(I05), SY-SUBRC. ENDIF. ENDFORM. *----------------------------------------------------------------------* * Start new transaction * *----------------------------------------------------------------------* FORM BDC_TRANSACTION USING TCODE. IF FORTEST = SPACE. CALL FUNCTION 'BDC_INSERT' EXPORTING TCODE = TCODE TABLES DYNPROTAB = BDCDATA. * write / bdcdata. add 1 to trxecri . REFRESH BDCDATA. ENDIF. ENDFORM. * *----------------------------------------------------------------------* * Start new screen * *----------------------------------------------------------------------* FORM BDC_DYNPRO USING PROGRAM DYNPRO. IF FORTEST = SPACE. CLEAR BDCDATA. BDCDATA-PROGRAM = PROGRAM. BDCDATA-DYNPRO = DYNPRO. BDCDATA-DYNBEGIN = 'X'. APPEND BDCDATA. * write / bdcdata. ENDIF. ENDFORM. *----------------------------------------------------------------------* * Insert field * *----------------------------------------------------------------------* FORM BDC_FIELD USING FNAM FVAL. IF FORTEST = SPACE. CLEAR BDCDATA. BDCDATA-FNAM = FNAM. BDCDATA-FVAL = FVAL. APPEND BDCDATA. * write / bdcdata. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form BDC_DEBUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM BDC_DEBUT. ENDFORM. " BDC_DEBUT *&---------------------------------------------------------------------* *& Form BDC_POSTE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM BDC_POSTE. CLEAR BDCDATA. REFRESH BDCDATA. WRITE: / HPUX. ENDFORM. " BDC_POSTE *&---------------------------------------------------------------------* *& Form BDC_FIN *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM BDC_FIN. ENDFORM. " BDC_FIN *&---------------------------------------------------------------------* *& Form flf2col (cf asc2dat_konvert(saplgrap)) *&---------------------------------------------------------------------* * flat file to columned internal table * fichier a plat vers table interne colonnée *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM FLF2COL USING INPUT TYPE C DATA_TAB KONV_RC TYPE I. FIELD-SYMBOLS: <T>, <F>, <H>. DATA: AKT_POS LIKE SY-FDPOS. DATA: FOUND(1). DATA: BEGIN OF HT, X(1) TYPE X VALUE '09', END OF HT. DATA: KONV_ERROR TYPE I. DATA: LEN TYPE I. LEN = STRLEN( INPUT ). ASSIGN INPUT TO <T>. DO. ASSIGN COMPONENT SY-INDEX OF STRUCTURE DATA_TAB TO <F>. IF SY-SUBRC NE 0. EXIT. ENDIF. CLEAR <F>. ENDDO. DO. IF NOT KONV_ERROR IS INITIAL. EXIT. ENDIF. ASSIGN COMPONENT SY-INDEX OF STRUCTURE DATA_TAB TO <F>. IF SY-SUBRC NE 0. EXIT. ENDIF. CLEAR FOUND. IF <T> CA HT. FOUND = 'x'. ENDIF. IF SY-FDPOS > 0. FOUND = 'x'. "// last field, no more TABs ENDIF. AKT_POS = SY-FDPOS. CLEAR <F>. IF NOT FOUND IS INITIAL. IF AKT_POS NE 0. ASSIGN <T>(AKT_POS) TO <H>. <F> = <H>. ENDIF. ADD 1 TO AKT_POS. LEN = LEN - AKT_POS. IF LEN LE 0. EXIT. ENDIF. ASSIGN <T>+AKT_POS(LEN) TO <T>. ENDIF. ENDDO. KONV_RC = KONV_ERROR. ENDFORM. " flf2col |
FTP vers un autre serveur Table des matières
Textpool : ---------- R Transfer TFP via SYSTEM-CALL {{{ Abap : ------ REPORT YYJPL049. *---------------------------------------------------------------------- * Topic : The program uses FTP to exchange files *----------------------------------------------------------------------* DATA: BEGIN OF PC OCCURS 0, DATA(1000), END OF PC. DATA: FICHIER_UNIX LIKE FILENAME-FILEEXTERN. DATA: FICHIER_AS LIKE FILENAME-FILEEXTERN. DATA: FICHIER_IN LIKE FILENAME-FILEEXTERN. DATA: FICHIER_OUT LIKE FILENAME-FILEEXTERN. *=-------------------------------------------------------------------=* * criteres de selection *=-------------------------------------------------------------------=* PARAMETERS: IP(60) LOWER CASE, USER(20) LOWER CASE, PASS(20) LOWER CASE, UNIXDIR(60) LOWER CASE, UNIXFILE(60) LOWER CASE, AS4DIR(60) LOWER CASE, AS4FILE(60) LOWER CASE. PARAMETERS GET RADIOBUTTON GROUP G1. PARAMETERS PUT RADIOBUTTON GROUP G1. *=-------------------------------------------------------------------=* INITIALIZATION. *=-------------------------------------------------------------------=* DATA S_BUKRS LIKE LFB1-BUKRS. GET PARAMETER ID 'BUK' FIELD S_BUKRS. IP = '153.112.118.10'. USER = 'SAPFTP'. PASS = 'SAPFTP'. GET = 'X'. *=-------------------------------------------------------------------=* START-OF-SELECTION. *=-------------------------------------------------------------------=* CONCATENATE UNIXDIR UNIXFILE INTO FICHIER_UNIX. TRANSLATE FICHIER_UNIX TO LOWER CASE. CONCATENATE AS4DIR AS4FILE INTO FICHIER_AS. TRANSLATE FICHIER_AS TO UPPER CASE. * pile de commandes FTP à exécuter MOVE '...dossier...unix/yy.ftp' TO FICHIER_IN. TRANSLATE FICHIER_IN TO LOWER CASE. * reponses de FTP MOVE '...dossier...unix/yy.log' TO FICHIER_OUT. TRANSLATE FICHIER_OUT TO LOWER CASE. DATA: BEGIN OF FTP OCCURS 0, CMD(1000), END OF FTP. * construire la pile FTP dans la table ftp CLEAR FTP. REFRESH FTP. CONCATENATE 'open' IP INTO FTP-CMD SEPARATED BY SPACE . APPEND FTP. FTP-CMD = ' '. APPEND FTP. FTP-CMD = ' '. APPEND FTP. CONCATENATE 'user' USER PASS INTO FTP-CMD SEPARATED BY SPACE . APPEND FTP. FTP-CMD = 'pwd'. APPEND FTP.0 IF PUT = 'X'. CONCATENATE 'put_' FICHIER_UNIX '_' FICHIER_AS ' (replace' INTO FTP-CMD. ELSE. CONCATENATE 'get_' FICHIER_AS '_' FICHIER_UNIX ' (replace' INTO FTP-CMD. ENDIF. TRANSLATE FTP-CMD USING '_ '. APPEND FTP. FTP-CMD = 'quit'. APPEND FTP. *charger la pile FTP OPEN DATASET FICHIER_IN FOR OUTPUT IN TEXT MODE. IF SY-SUBRC <> 0. WRITE: 'erreur ouverture dataset', FICHIER_IN, 'erreur =', SY-SUBRC. EXIT. ENDIF. LOOP AT FTP. TRANSFER FTP-CMD TO FICHIER_IN. IF SY-SUBRC <> 0. WRITE: 'erreur transfert dataset', FICHIER_IN, 'erreur =', SY-SUBRC. EXIT. ENDIF. WRITE FTP-CMD. ENDLOOP. CLOSE DATASET FICHIER_IN. ULINE. *run ftp DATA: BEGIN OF TABL OCCURS 0, LINE(2000), END OF TABL. DATA: PARCOM_LOC(100) TYPE C. DATA LINE LIKE TABL-LINE. CONCATENATE 'ftp <' FICHIER_IN '>' FICHIER_OUT INTO PARCOM_LOC SEPARATED BY ' '. *from call help : before calling a c_func, need to check for * authority. CALL FUNCTION 'AUTHORITY_CHECK_C_FUNCTION' EXPORTING PROGRAM = 'COMMAND' ACTIVITY = 'CALL' FUNCTION = 'SYSTEM' EXCEPTIONS NO_AUTHORITY = 1 ACTIVITY_UNKNOWN = 2. IF SY-SUBRC <> 0. WRITE:/'No authority to run File Transfer. Send the file manually'. ULINE. EXIT. ENDIF. REFRESH TABL. CALL 'SYSTEM' ID 'COMMAND' FIELD PARCOM_LOC ID 'TAB' FIELD TABL-*SYS*. * show log OPEN DATASET FICHIER_OUT FOR INPUT IN TEXT MODE. IF SY-SUBRC <> 0. WRITE: 'erreur ouverture dataset', FICHIER_OUT, 'erreur =', SY-SUBRC. EXIT. ENDIF. WRITE / PARCOM_LOC. DO. READ DATASET FICHIER_OUT INTO LINE. IF SY-SUBRC <> 0. EXIT. ENDIF. WRITE / LINE. ENDDO. CLOSE DATASET FICHIER_OUT. DELETE DATASET FICHIER_IN. DELETE DATASET FICHIER_OUT. |
Sauvegarde ABAP Table des matières
Cet outil de sauvegarde permet d'exporter
Il n'y a pas d'outil de restauration correspondant, c'est exprès parce que le but n'est pas de faire un outil de sauvegarde/restauration, il y bien déjà assez comme ça (enfin, juste pour voir, demandez à votre administrateur de restaurer uniquement le programme xxx, sauvegardé vendredi il y a trois semaines. En général la réponse est non : les sauvegardes de l'administrateur sont là pour permettre de restaurer un disque en cas de crash, pas pour récupérer les conneries d'un utilisateur, fût-il programmeur). En plus, je n'ai jamais pris le temps de vérifier si on peux réinjecter un DYNPRO dans les bases de SAP sans véroller les tables de références croisées.
L'objectif est d'archiver l'état d'un ou plusieurs programmes à une date donnée, un peu à la façon du gestionnaire de version, mais hors de SAP. Utilisation courante : faire une recherche avec l'explorateur de windows pour retrouver un texte particulier, ce qui permet de couvrir les cas où les références croisées de SAP ne répondent pas (c'est possible), par exemple dans les textpools des ABAP.
Textpool : ---------- IJPL JP Lamontre R exporter des ABAP SAUTHOR Auteur SMODIF Date de modification SOBJ_NAME Objet SSEP Séparateur CSV ------------------------------------ Abap : ------ REPORT ZZJPL100 LINE-SIZE 255. TABLES: TRDIR. DATA: _TRDIR LIKE TRDIR OCCURS 0 WITH HEADER LINE, BEGIN OF SOMMAIRE OCCURS 0, PROG LIKE TRDIR-NAME, TITRE(70), END OF SOMMAIRE, PCSFX(4) VALUE '.DAT', PCFILE(64), ZG_PCFILE(128). SELECTION-SCREEN COMMENT 1(80) TEXT-JPL. PARAMETERS: PCDIR(64) DEFAULT 'c:\sappc\'. SELECT-OPTIONS: OBJ_NAME FOR TRDIR-NAME DEFAULT 'Z*' OPTION CP , AUTHOR FOR TRDIR-CNAM , MODIF FOR TRDIR-UDAT . DATA: BEGIN OF NOM OCCURS 0, N(20), END OF NOM. START-OF-SELECTION. SELECT * INTO TABLE _TRDIR FROM TRDIR WHERE NAME IN OBJ_NAME AND CNAM IN AUTHOR AND UDAT IN MODIF ORDER BY NAME. LOOP AT _TRDIR. WRITE: / _TRDIR. PERFORM EXTRACT_PROG USING _TRDIR-NAME. ENDLOOP. MOVE 'SOMMAIRE.TXT' TO PCFILE. CONCATENATE PCDIR PCFILE INTO ZG_PCFILE. CALL FUNCTION 'WS_DOWNLOAD' EXPORTING FILENAME = ZG_PCFILE TABLES DATA_TAB = SOMMAIRE EXCEPTIONS OTHERS = 9. *&---------------------------------------------------------------------* *& Form EXTRACT_PROG *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_TADIR_OBJ_NAME text * *----------------------------------------------------------------------* FORM EXTRACT_PROG USING P_NAME. DATA BEGIN OF TTAB OCCURS 0. INCLUDE STRUCTURE TEXTPOOL. DATA: END OF TTAB, BEGIN OF PC OCCURS 0, ENR(5000), END OF PC, W100(100). CLEAR PC. REFRESH PC. PC-ENR = 'TRDIR='. APPEND PC. PC-ENR = '----------------------------------------------------------------------- -----------------------------------------------------------------------' . APPEND PC. PC-ENR = _TRDIR. APPEND PC. PC-ENR = '----------------------------------------------------------------------- -----------------------------------------------------------------------' . APPEND PC. READ TEXTPOOL P_NAME INTO TTAB LANGUAGE SY-LANGU. PC-ENR = 'Textpool :'. APPEND PC. PC-ENR = '----------------------------------------------------------------------- -----------------------------------------------------------------------' . APPEND PC. LOOP AT TTAB. PC-ENR = TTAB. APPEND PC. IF TTAB-ID = 'R'. SOMMAIRE-PROG = P_NAME. SOMMAIRE-TITRE = TTAB-ENTRY. APPEND SOMMAIRE. WRITE : / P_NAME, TTAB-ENTRY(70). ENDIF. ENDLOOP. PC-ENR = '----------------------------------------------------------------------- -----------------------------------------------------------------------' . APPEND PC. DATA: BEGIN OF SOURCE OCCURS 0, LINE(72), END OF SOURCE. PC-ENR = 'Abap :'. APPEND PC. PC-ENR = '----------------------------------------------------------------------- -----------------------------------------------------------------------' . APPEND PC. READ REPORT P_NAME INTO SOURCE. LOOP AT SOURCE. PC-ENR = SOURCE-LINE. APPEND PC. ENDLOOP. PC-ENR = '----------------------------------------------------------------------- -----------------------------------------------------------------------' . APPEND PC. CONCATENATE P_NAME '-ABAP.TXT' INTO PCFILE. CONCATENATE PCDIR PCFILE INTO ZG_PCFILE. CALL FUNCTION 'WS_DOWNLOAD' EXPORTING FILENAME = ZG_PCFILE TABLES DATA_TAB = PC EXCEPTIONS OTHERS = 9. DATA: * main node table TREE LIKE SNODE OCCURS 5000 WITH HEADER LINE, CURRENT_ROOT_ID LIKE SNODE-ID VALUE '1', CUCOL LIKE SY-CUCOL, CUROW LIKE SY-CUROW, LICOL LIKE SY-STACO, LIROW LIKE SY-STARO, * expanded nodes EXPAND LIKE SEUTEXPAND OCCURS 100 WITH HEADER LINE, DEVCLASS LIKE TDEVC-DEVCLASS, DB, CURRENT_TREENAME LIKE DWTREE-NAME. CONCATENATE 'PG_' P_NAME INTO CURRENT_TREENAME. EXPORT TREE CURRENT_ROOT_ID CUCOL CUROW LICOL LIROW EXPAND TO MEMORY ID CURRENT_TREENAME. CALL FUNCTION 'WB_TREE_INIT' EXPORTING NAME = CURRENT_TREENAME IMPORTING DEVCLASS = DEVCLASS FROM_DATABASE = DB. IMPORT TREE CURRENT_ROOT_ID CUCOL CUROW LICOL LIROW EXPAND FROM MEMORY ID CURRENT_TREENAME. *BREAK-POINT. CONCATENATE P_NAME '-TREE.TXT' INTO PCFILE. CONCATENATE PCDIR PCFILE INTO ZG_PCFILE. CALL FUNCTION 'WS_DOWNLOAD' EXPORTING FILENAME = ZG_PCFILE FILETYPE = 'DAT' TABLES DATA_TAB = TREE EXCEPTIONS OTHERS = 9. LOOP AT TREE. * CASE tree-tlevel. * WHEN '01'. * WRITE / tree-id. * WHEN '02'. * WRITE: / ' ', tree-id. * WHEN '03'. * WRITE: / ' ', tree-id. * WHEN OTHERS. * WRITE: / ' >>', tree-id. * ENDCASE. * * WRITE tree-type . * WRITE tree-name . * WRITE tree-parent. * WRITE tree-child . * WRITE tree-next . * WRITE tree-tlevel. * WRITE tree-tlock . * WRITE tree-status . * WRITE tree-include. * WRITE tree-link. IF TREE-TYPE = 'OPS'. PERFORM EXTRACT_DYNPRO USING P_NAME TREE-NAME. ENDIF. ENDLOOP. ENDFORM. " EXTRACT_PROG *&---------------------------------------------------------------------* *& Form EXTRACT_DYNPRO *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_P_NAME text * * -->P_TREE_NAME text * *----------------------------------------------------------------------* FORM EXTRACT_DYNPRO USING P_PROG P_DYNP. TABLES: D020S. DATA: BEGIN OF DYNP, PROG LIKE D020S-PROG, DNUM LIKE D020S-DNUM, END OF DYNP, H LIKE D020S, WH LIKE SCR_CHHEAD, WHT LIKE SCR_CHHEAD OCCURS 0, F LIKE D021S OCCURS 0 WITH HEADER LINE, WF LIKE SCR_CHFLD OCCURS 0 WITH HEADER LINE, E LIKE D022S OCCURS 0 WITH HEADER LINE, M LIKE D023S OCCURS 0 WITH HEADER LINE, BEGIN OF PC OCCURS 0, ENR(5000), END OF PC, PCFILE(64), ZG_PCFILE(128). DYNP-PROG = P_PROG. DYNP-DNUM = P_DYNP. IMPORT DYNPRO H F E M ID DYNP. IF SY-SUBRC <> 0. MESSAGE E010(37) WITH P_PROG P_DYNP. ENDIF. PERFORM ACTUALIZE_LANGUAGE_FOR_TEXTS(SAPMSEUS) TABLES F USING H SY-LANGU. *entete de dynpro CONCATENATE DYNP-PROG '-' DYNP-DNUM '-HEADER' INTO PCFILE. CONCATENATE PCDIR PCFILE PCSFX INTO ZG_PCFILE. CLEAR PC. REFRESH PC. *conversion CALL FUNCTION 'RS_SCRP_HEADER_RAW_TO_CHAR' EXPORTING HEADER_INT = H IMPORTING HEADER_CHAR = WH EXCEPTIONS OTHERS = 1. *nom des colonnes CLEAR NOM. REFRESH NOM. NOM-N = 'PROG'. APPEND NOM. NOM-N = 'DNUM'. APPEND NOM. NOM-N = 'TYPE'. APPEND NOM. NOM-N = 'FNUM'. APPEND NOM. NOM-N = 'DGRP'. APPEND NOM. NOM-N = 'BZMX'. APPEND NOM. NOM-N = 'BZBR'. APPEND NOM. NOM-N = 'MILI'. APPEND NOM. NOM-N = 'MICO'. APPEND NOM. NOM-N = 'MALI'. APPEND NOM. NOM-N = 'MACO'. APPEND NOM. NOM-N = 'NOLI'. APPEND NOM. NOM-N = 'NOCO'. APPEND NOM. NOM-N = 'VALP'. APPEND NOM. NOM-N = 'CUAN'. APPEND NOM. NOM-N = 'HDAT'. APPEND NOM. NOM-N = 'SPRA'. APPEND NOM. NOM-N = 'CUPO'. APPEND NOM. NOM-N = 'DGEN'. APPEND NOM. NOM-N = 'TGEN'. APPEND NOM. CLEAR WHT. REFRESH WHT. APPEND WH TO WHT. CALL FUNCTION 'WS_DOWNLOAD' EXPORTING FILENAME = ZG_PCFILE FILETYPE = 'DAT' TABLES DATA_TAB = WHT FIELDNAMES = NOM EXCEPTIONS FILE_OPEN_ERROR = 1 FILE_WRITE_ERROR = 2 INVALID_FILESIZE = 3 INVALID_TABLE_WIDTH = 4 INVALID_TYPE = 5 NO_BATCH = 6 UNKNOWN_ERROR = 7 OTHERS = 8. *champs du dynpro CONCATENATE DYNP-PROG '-' DYNP-DNUM '-FIELD' INTO PCFILE. CONCATENATE PCDIR PCFILE PCSFX INTO ZG_PCFILE. CLEAR PC. REFRESH PC. *conversion CALL FUNCTION 'RS_SCRP_FIELDS_RAW_TO_CHAR' TABLES FIELDS_INT = F FIELDS_CHAR = WF EXCEPTIONS OTHERS = 1. CLEAR NOM. REFRESH NOM. NOM-N = 'FELDNAME'. APPEND NOM. NOM-N = 'INTTYP'. APPEND NOM. NOM-N = 'FELDFORMAT'. APPEND NOM. NOM-N = 'LAENGE'. APPEND NOM. NOM-N = 'FLG1'. APPEND NOM. NOM-N = 'FLG2'. APPEND NOM. NOM-N = 'FLG3'. APPEND NOM. NOM-N = 'FMB1'. APPEND NOM. NOM-N = 'FMB2'. APPEND NOM. NOM-N = 'LINE'. APPEND NOM. NOM-N = 'COLN'. APPEND NOM. NOM-N = 'LOOPTYPE'. APPEND NOM. NOM-N = 'LOOPBEGIN'. APPEND NOM. NOM-N = 'LOOPBLOCK'. APPEND NOM. NOM-N = 'LOOPREPEAT'. APPEND NOM. NOM-N = 'FMKY'. APPEND NOM. NOM-N = 'DIDX'. APPEND NOM. NOM-N = 'FILL'. APPEND NOM. NOM-N = 'COLR'. APPEND NOM. NOM-N = 'PAID'. APPEND NOM. NOM-N = 'UCNV'. APPEND NOM. NOM-N = 'AGLT'. APPEND NOM. NOM-N = 'ADEZ'. APPEND NOM. NOM-N = 'AUTH'. APPEND NOM. NOM-N = 'WNAM'. APPEND NOM. NOM-N = 'DMAC'. APPEND NOM. NOM-N = 'GRP1'. APPEND NOM. NOM-N = 'GRP2'. APPEND NOM. NOM-N = 'GRP3'. APPEND NOM. NOM-N = 'GRP4'. APPEND NOM. NOM-N = 'STXT'. APPEND NOM. CALL FUNCTION 'WS_DOWNLOAD' EXPORTING FILENAME = ZG_PCFILE FILETYPE = 'DAT' TABLES DATA_TAB = WF FIELDNAMES = NOM EXCEPTIONS OTHERS = 9. *PAI PBO CONCATENATE DYNP-PROG '-' DYNP-DNUM '-ABAP' INTO PCFILE. CONCATENATE PCDIR PCFILE PCSFX INTO ZG_PCFILE. CLEAR PC. REFRESH PC. *nom des colonnes CLEAR NOM. REFRESH NOM. NOM-N = 'LINE'. APPEND NOM. CALL FUNCTION 'WS_DOWNLOAD' EXPORTING FILENAME = ZG_PCFILE FILETYPE = 'DAT' TABLES DATA_TAB = E FIELDNAMES = NOM EXCEPTIONS OTHERS = 9. *Matchcodes CONCATENATE DYNP-PROG '-' DYNP-DNUM '-MCODE' INTO PCFILE. CONCATENATE PCDIR PCFILE PCSFX INTO ZG_PCFILE. CLEAR PC. REFRESH PC. *nom des colonnes CLEAR NOM. REFRESH NOM. NOM-N = 'FNAM'. APPEND NOM. NOM-N = 'FLDP'. APPEND NOM. NOM-N = 'FLDN'. APPEND NOM. *ecrire sur le pc CALL FUNCTION 'WS_DOWNLOAD' EXPORTING FILENAME = ZG_PCFILE FILETYPE = 'DAT' TABLES DATA_TAB = M FIELDNAMES = NOM EXCEPTIONS OTHERS = 9. ENDFORM. " EXTRACT_DYNPRO |
Sauvegarde Tables Table des matières
Textpool : ---------- IJPL JP Lamontre R exporter des TABLES SAUTHOR Auteur SDEVCLASS Classe de développement SOBJECT Objet SPCDIR Répertoire sur le PC SPGMID Programme SSRCDEP system-specific or repaired S_CSV Séparateur CSV --------------------------------------------- Abap : ------ REPORT ZZJPL101 LINE-SIZE 255. SELECTION-SCREEN COMMENT 1(80) TEXT-JPL. TABLES: TADIR. DATA: _TADIR LIKE TADIR OCCURS 0 WITH HEADER LINE, PCFILE(64), ZG_PCFILE(128). PARAMETERS: PCDIR(64) DEFAULT 'c:\sappc\'. SELECT-OPTIONS: PGMID FOR TADIR-PGMID DEFAULT 'R3TR' , OBJECT FOR TADIR-OBJECT DEFAULT 'TABL' , OBJ_NAME FOR TADIR-OBJ_NAME DEFAULT 'Z*' OPTION CP , AUTHOR FOR TADIR-AUTHOR , SRCDEP FOR TADIR-SRCDEP , DEVCLASS FOR TADIR-DEVCLASS . START-OF-SELECTION. SELECT * INTO TABLE _TADIR FROM TADIR WHERE PGMID IN PGMID AND OBJECT IN OBJECT AND OBJ_NAME IN OBJ_NAME AND AUTHOR IN AUTHOR AND SRCDEP IN SRCDEP AND DEVCLASS IN DEVCLASS. LOOP AT _TADIR. WRITE: / _TADIR. CASE _TADIR-OBJECT. WHEN 'TABL'. PERFORM EXTRACT_TABL USING _TADIR-OBJ_NAME. ENDCASE. ENDLOOP. *&---------------------------------------------------------------------* *& Form EXTRACT_TABL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_TADIR_OBJ_NAME text * *----------------------------------------------------------------------* FORM EXTRACT_TABL USING P_NAME. DATA: FIELD LIKE DFIES OCCURS 0 WITH HEADER LINE, BEGIN OF NOM OCCURS 0, N(20), END OF NOM, C80(80). DATA TABNAME LIKE DCOBJDEF-NAME. TABNAME = P_NAME. CALL FUNCTION 'DDIF_FIELDINFO_GET' EXPORTING TABNAME = TABNAME * FIELDNAME = ' ' * LANGU = SY-LANGU * IMPORTING * X030L_WA = TABLES DFIES_TAB = FIELD EXCEPTIONS NOT_FOUND = 1 INTERNAL_ERROR = 2 OTHERS = 3. CLEAR NOM. REFRESH NOM. NOM-N = 'TABNAME'. APPEND NOM. NOM-N = 'FIELDNAME'. APPEND NOM. NOM-N = 'LANGU'. APPEND NOM. NOM-N = 'POSITION'. APPEND NOM. NOM-N = 'OFFSET'. APPEND NOM. NOM-N = 'DOMNAME'. APPEND NOM. NOM-N = 'ROLLNAME'. APPEND NOM. NOM-N = 'CHECKTABLE'. APPEND NOM. NOM-N = 'LENG'. APPEND NOM. NOM-N = 'INTLEN'. APPEND NOM. NOM-N = 'OUTPUTLEN'. APPEND NOM. NOM-N = 'DECIMALS'. APPEND NOM. NOM-N = 'DATATYPE'. APPEND NOM. NOM-N = 'INTTYPE'. APPEND NOM. NOM-N = 'REFTABLE'. APPEND NOM. NOM-N = 'REFFIELD'. APPEND NOM. NOM-N = 'PRECFIELD'. APPEND NOM. NOM-N = 'AUTHORID'. APPEND NOM. NOM-N = 'MEMORYID'. APPEND NOM. NOM-N = 'LOGFLAG'. APPEND NOM. NOM-N = 'MASK'. APPEND NOM. NOM-N = 'MASKLEN'. APPEND NOM. NOM-N = 'CONVEXIT'. APPEND NOM. NOM-N = 'HEADLEN'. APPEND NOM. NOM-N = 'SCRLEN1'. APPEND NOM. NOM-N = 'SCRLEN2'. APPEND NOM. NOM-N = 'SCRLEN3'. APPEND NOM. NOM-N = 'FIELDTEXT'. APPEND NOM. NOM-N = 'REPTEXT'. APPEND NOM. NOM-N = 'SCRTEXT_S'. APPEND NOM. NOM-N = 'SCRTEXT_M'. APPEND NOM. NOM-N = 'SCRTEXT_L'. APPEND NOM. NOM-N = 'KEYFLAG'. APPEND NOM. NOM-N = 'LOWERCASE'. APPEND NOM. NOM-N = 'MAC'. APPEND NOM. NOM-N = 'GENKEY'. APPEND NOM. NOM-N = 'NOFORKEY'. APPEND NOM. NOM-N = 'VALEXI'. APPEND NOM. NOM-N = 'NOAUTHCH'. APPEND NOM. NOM-N = 'SIGN'. APPEND NOM. NOM-N = 'DYNPFLD'. APPEND NOM. CONCATENATE P_NAME '-TABL.DAT' INTO PCFILE. CONCATENATE PCDIR PCFILE INTO ZG_PCFILE. CALL FUNCTION 'WS_DOWNLOAD' EXPORTING FILENAME = ZG_PCFILE FILETYPE = 'DAT' TABLES DATA_TAB = FIELD FIELDNAMES = NOM EXCEPTIONS OTHERS = 9. ENDFORM. |
Sauvegarde Texte et formulaires Table des matières
Le programme de restauration correspondant est juste après.
Textpool : ---------- IJPL JP Lamontre R exporter : Textes et formulaires SAUTHOR Auteur SMODIF Date de modification SOBJ_NAME Objet ----------------------------------------- Abap : ------ REPORT ZZJPL101 LINE-SIZE 255. SELECTION-SCREEN COMMENT 1(80) TEXT-JPL. TABLES: STXH. DATA: _STXH LIKE STXH OCCURS 0 WITH HEADER LINE, PCFILE(64), ZG_PCFILE(128). PARAMETERS: PCDIR(64) DEFAULT 'c:\sappc\'. SELECT-OPTIONS: OBJ_NAME FOR STXH-TDNAME DEFAULT 'Z*' OPTION CP , AUTHOR FOR STXH-TDFUSER , MODIF FOR STXH-TDLDATE . START-OF-SELECTION. SELECT * INTO TABLE _STXH FROM STXH WHERE TDNAME IN OBJ_NAME AND TDFUSER IN AUTHOR AND TDLDATE IN MODIF . LOOP AT _STXH . WRITE: / _STXH . PERFORM EXTRACT_TEXT. ENDLOOP. *&---------------------------------------------------------------------* *& Form EXTRACT_TEXT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_TADIR_OBJ_NAME text * *----------------------------------------------------------------------* FORM EXTRACT_TEXT . DATA: LINE LIKE TLINE OCCURS 0 WITH HEADER LINE, HEAD LIKE THEAD, BEGIN OF PC OCCURS 0, TDFORMAT LIKE TLINE-TDFORMAT, TDLINE LIKE TLINE-TDLINE, FILLER(500), END OF PC. REFRESH PC. CALL FUNCTION 'READ_TEXT' EXPORTING * CLIENT = SY-MANDT ID = _STXH-TDID LANGUAGE = _STXH-TDSPRAS NAME = _STXH-TDNAME OBJECT = _STXH-TDOBJECT * ARCHIVE_HANDLE = 0 IMPORTING HEADER = HEAD TABLES LINES = LINE EXCEPTIONS ID = 1 LANGUAGE = 2 NAME = 3 NOT_FOUND = 4 OBJECT = 5 REFERENCE_CHECK = 6 WRONG_ACCESS_TO_ARCHIVE = 7 OTHERS = 8. PC = HEAD. APPEND PC. LOOP AT LINE. CLEAR PC. MOVE-CORRESPONDING LINE TO PC. APPEND PC. ENDLOOP. CONCATENATE _STXH-TDNAME '-' _STXH-TDOBJECT '-' _STXH-TDID '-' _STXH-TDSPRAS '.TXT' INTO PCFILE. CONCATENATE PCDIR PCFILE INTO ZG_PCFILE. CALL FUNCTION 'WS_DOWNLOAD' EXPORTING FILENAME = ZG_PCFILE TABLES DATA_TAB = PC EXCEPTIONS OTHERS = 9. ENDFORM. |
Importation de formulaire Table des matières
Permet d'écraser un sapscript actif. Utile lorsque l'on change de machine de développement (par exemple pendant une migration) : la prochaine machine contient le code à une date X, le Sapscript a été modifié depuis sur la machine actuelle, et il faut re-synchroniser les modifications.
Utilisé avec Sauvegarde Texte et formulaires il fournit un service identique à l'export / import de code ABAP dans l'éditeur
Textpool : ---------- R import formulaire, style ou textes {{{" ------------------------------------------- Abap : ------ REPORT ZZJPL106 LINE-SIZE 255. SELECTION-SCREEN COMMENT 1(80) TEXT-JPL. TABLES: STXH. DATA: _STXH LIKE STXH OCCURS 0 WITH HEADER LINE, PCFILE(64), ZG_PCFILE(128). PARAMETERS: PCDIR(64) DEFAULT 'c:\sap\'. PARAMETERS: _OBJECT LIKE STXH-TDOBJECT DEFAULT 'FORM', _NAME LIKE STXH-TDNAME DEFAULT 'Z*', _ID LIKE STXH-TDID DEFAULT 'DEF', _SPRAS LIKE STXH-TDSPRAS DEFAULT 'E' . START-OF-SELECTION. SELECT SINGLE * FROM STXH WHERE TDOBJECT = _OBJECT AND TDNAME = _NAME AND TDID = _ID AND TDSPRAS = _SPRAS. IF SY-SUBRC <> 0. WRITE:/'Cet objet n''existe pas, essaie encore'. EXIT. ENDIF. DATA: LINE LIKE TLINE OCCURS 0 WITH HEADER LINE, HEAD LIKE THEAD, BEGIN OF PC OCCURS 0, TDFORMAT LIKE TLINE-TDFORMAT, TDLINE LIKE TLINE-TDLINE, FILLER(500), END OF PC. REFRESH PC. CALL FUNCTION 'READ_TEXT' EXPORTING * CLIENT = SY-MANDT ID = _ID LANGUAGE = _SPRAS NAME = _NAME OBJECT = _OBJECT * ARCHIVE_HANDLE = 0 IMPORTING HEADER = HEAD TABLES LINES = LINE EXCEPTIONS ID = 1 LANGUAGE = 2 NAME = 3 NOT_FOUND = 4 OBJECT = 5 REFERENCE_CHECK = 6 WRONG_ACCESS_TO_ARCHIVE = 7 OTHERS = 8. IF SY-SUBRC <> 0. WRITE:/'objet endommagé : READ_TEXT retourne', SY-SUBRC. EXIT. ENDIF. CONCATENATE _NAME '-' _OBJECT '-' _ID '-' _SPRAS '.TXT' INTO PCFILE. CONCATENATE PCDIR PCFILE INTO ZG_PCFILE. CALL FUNCTION 'WS_QUERY' EXPORTING * ENVIRONMENT = FILENAME = ZG_PCFILE QUERY = 'FE' * WINID = * IMPORTING * RETURN = EXCEPTIONS INV_QUERY = 1 NO_BATCH = 2 FRONTEND_ERROR = 3 OTHERS = 4 . IF SY-SUBRC <> 0. WRITE:/'Le fichier', ZG_PCFILE, 'n''existe pas, abandon'. EXIT. ENDIF. CALL FUNCTION 'WS_UPLOAD' EXPORTING * CODEPAGE = ' ' FILENAME = ZG_PCFILE * FILETYPE = ' ' * HEADLEN = ' ' * LINE_EXIT = ' ' * TRUNCLEN = ' ' * USER_FORM = ' ' * USER_PROG = ' ' * IMPORTING * FILELENGTH = TABLES DATA_TAB = PC EXCEPTIONS CONVERSION_ERROR = 1 FILE_OPEN_ERROR = 2 FILE_READ_ERROR = 3 INVALID_TABLE_WIDTH = 4 INVALID_TYPE = 5 NO_BATCH = 6 UNKNOWN_ERROR = 7 GUI_REFUSE_FILETRANSFER = 8 CUSTOMER_ERROR = 9 OTHERS = 10 . IF SY-SUBRC <> 0. WRITE:/'Le fichier', ZG_PCFILE, 'est illisible : code=', SY-SUBRC. EXIT. ENDIF. REFRESH LINE. LOOP AT PC FROM 2. CLEAR LINE. MOVE-CORRESPONDING PC TO LINE. APPEND LINE. ENDLOOP. CALL FUNCTION 'SAVE_TEXT' EXPORTING * CLIENT = SY-MANDT HEADER = HEAD * INSERT = ' ' * SAVEMODE_DIRECT = ' ' * OWNER_SPECIFIED = ' ' * IMPORTING * FUNCTION = * NEWHEADER = TABLES LINES = LINE EXCEPTIONS ID = 1 LANGUAGE = 2 NAME = 3 OBJECT = 4 OTHERS = 5 . IF SY-SUBRC <> 0. WRITE:/'objet endommagé : SAVE_TEXT retourne', SY-SUBRC. EXIT. ENDIF. *----------------------------------------------------------------------- |
Liste des menus Table des matières
Textpool : ---------- R decortiquer les menus ------------------------------ Abap : ------ REPORT ZZJPL110 LINE-SIZE 255 . TABLES: SMENAKTT , SMENAKTNEW. DATA: BEGIN OF JOIN OCCURS 0, CUSTOMIZED LIKE SMENAKTNEW-CUSTOMIZED , PARENT_ID LIKE SMENAKTNEW-PARENT_ID , OBJECT_ID LIKE SMENAKTNEW-OBJECT_ID , MENU_LEVEL LIKE SMENAKTNEW-MENU_LEVEL, REPORTTYPE LIKE SMENAKTNEW-REPORTTYPE , REPORT LIKE SMENAKTNEW-REPORT, ATTRIBUTES LIKE SMENAKTNEW-ATTRIBUTES, PAR_MENU LIKE SMENAKTNEW-PAR_MENU , CUST_FLAG LIKE SMENAKTNEW-CUST_FLAG , SAP_GUID LIKE SMENAKTNEW-SAP_GUID, SORT_ORDER LIKE SMENAKTNEW-SORT_ORDER , TEXT LIKE SMENAKTT-TEXT, END OF JOIN. *_____________________ SELECT T_01~CUSTOMIZED T_01~PARENT_ID T_01~OBJECT_ID T_01~MENU_LEVEL T_01~REPORTTYPE T_01~REPORT T_01~ATTRIBUTES T_01~PAR_MENU T_01~CUST_FLAG T_01~SAP_GUID T_01~SORT_ORDER T_00~TEXT INTO CORRESPONDING FIELDS OF TABLE JOIN FROM SMENAKTT as T_00 join SMENAKTNEW as T_01 on T_00~OBJECT_ID = T_01~OBJECT_ID "UP TO 500 ROWS WHERE ( T_01~CUSTOMIZED = 'C' AND T_01~ATTRIBUTES = 'X' "AND t_01~parent_id < 00010 AND T_00~SPRAS = 'F' ) ORDER BY T_01~SORT_ORDER . LOOP AT JOIN. WRITE: / ' '. DO JOIN-MENU_LEVEL TIMES. WRITE '. '. ENDDO. WRITE JOIN-PAR_MENU+4(4). WRITE JOIN-TEXT. IF JOIN-REPORTTYPE = 'TR'. WRITE: 80 JOIN-REPORT . ENDIF. ENDLOOP. |
Trouver le nom du formulaire Table des matières
Quel programme utilise quel formulaire pendant ma transaction ?
démarrer le debugger de formulaire et sur l’OPEN FORM, activer le debugger ABAP (menu EDIT) et descendre au niveau du programme appelant
ou
Transaction SE30 : mesure de durée d’exécution. Faire une mesure sur la transaction en précisant Objet de la mesure = Module de fonction START_FORM ou OPEN_FORM
Une fois terminé le travail (exécution de la transaction via le bouton Mesure de durée), choisir le bouton Analyser puis le bouton hiérarchie d’appel. A chaque niveau 0 on trouve le nom du programme appelant. Analyser ce programme avec l’éditeur ABAP : chercher START_FORM ou OPEN_FORM (recherche globale).
Ca y est, vous avez trouvé le programme, la ligne de code qui appelle le formulaire et la zone qui contient le nom du formulaire. Maintenant, avec le debugging classique et la recherche des cas d’emploi, on trouve tout ce qu’on veux, par exemple remonter à la table de customizing qui contient le nom du formulaire.
Rapport de conversion : BMP -> TIFF : 16 couleurs en 96 dpi
TIFF -> SAP via RSTXLDMC : vers du 150 DPI
Dans cette configuration, le rapport est de 1.875 cm de BMP pour 1 cm d’impression
SAP. Lors de la correction de la dimension dans Paint Brush, faire la correction en PIXEL, par multiple de 32 sinon rstxldmc en est tout perturbé.
Test d’impression : depuis IMAGING, File / Print / Option / Pixel to Pixel permet d’avoir un aperçu exact selon l’imprimante :300 DPI pour Laser jet 3 ; 600 DPI pour Laser Jet 4 et 5
Sapscript Unités Table des matières
Les unités CH (caractère) et LN (ligne) sont converties en points en fonction des indication CPI et LPI du header du formulaire :
et des tables de conversions suivantes :
points par caractère * CPI = 120
points par ligne * LPI = 72
Valeurs « rondes » :
LPI : 2 * 36 ; 3 * 24 ; 4 * 18 ; 6 * 12 ; 8 * 9
CPI : 2 * 60 ; 3 * 40 ; 4 * 30 ; 5 * 24 ; 6 * 20 ; 8 * 15 ; 10 * 12
Autres tables de conversion :
1 TW = 1/20 PT
1 PT = 1/72 IN
1 IN = 2.54 CM
1 CM = 10 MM
Maintenance des formulaires Table des matières
Pour améliorer la lisibilité des formulaires, et donc leur maintenance, indenter le code quand c’est possible :
/* colonne 4 : quantité en pack = 5 cars /: IF &PRINT-FKIMG(10)& = &SPACE(10)& = ,,&print-FKIMG(C)& /: ELSE / ,,,,,,&print-FKIMG(C)& /: ENDIF |
avec cette présentation la distinction entre la partie logique (commandes, commentaires) et la partie active (texte imprimable) est immédiate.
DEFINE dans un formulaire Table des matières
DEFINE = le symbole est résolu à l'utilisation
DEFINE := le symbole est résolu immédiatement.
dans le premier cas il est donc impératif de tenir à jour les variables
dans l'appelant tant qu'on peut en avoir besoin
dans le deuxième cas, les variables de l'appelant peuvent évoluer, le symbole
n'est plus dépendant. C'est préférable par exemple si l'appelant utilise un
LOOP avec des END-AT (ce qui rend incohérent à la volée chaque champ hors de
la rupture)
1) vu dans STXHFORM.HLP + chercher DEFINE:
/: DEFINE &symbol1& = 'mail' /: DEFINE &symbol2& = 'SAP&symbol1&' /: DEFINE &symbol1& = 'script' &symbol2& -> SAPscript DEFINE command written using the ':=' /: DEFINE &symbol1& = 'mail' /: DEFINE &symbol2& := 'SAP&symbol1&' /: DEFINE &symbol1& = 'script' &symbol2& -> SAPmail |
2) dans la documentation du programme RFFOUS_C
/: DEFINE &TXT& := '®UP-BUKRS&®UP-BELNR&®UP-GJAHR&' /: INCLUDE &TXT& OBJECT BELEG ID xyz |
Formatting Options Table des matières
(in …\Stxdform.hlp)
(via R3 library / BC – basis components / basis services / sapscript / style & form maintenance / formatting options)
The value of a symbol is normally output using its full length, although trailing spaces are removed. There is an exception to this rule in the case of program symbols of the following data types: CURR, DEC, QUAN, INT1 INT2, INT4, PREC and FLTP. These are formatted to be right-justified with an output length as specified in the Dictionary.
You can adapt the standard formatting to your own requirements by using one of the additional formatting options available. You supply the parameters for these options together with the symbol itself. Many of these options are abbreviated to a single letter, which has to be given as a capital letter. You can combine two or more options on a single symbol, as long as the result still makes sense.
Offset | + |
Output Length | (nn) |
Omitting the Leading Sign | (S) |
Leading Sign to the Left | (<) |
Leading Sign to the Right | (>) |
Omitting Leading Zeros | (Z) |
Space Compression | (C) |
Number of Decimal Places | (.n) |
Omitting the Separator for 'Thousands' | (T) |
Specifying an Exponent for Floating Point Numbers | (En) |
Right-Justified Output | (nR) |
Fill Characters | (Fx) |
Suppress Output of Initial Value | (I) |
Ignore Conversion Routines | (K) |
Local Dates (currently only for Japan) | (L) |
Changing the Value of a Counter | (+) (-) |
Preceding and Subsequent Texts (Pre-Text / Post-Text) | |
&'(='BSEG-DMBTR(C)' &RF140-HWAER&)'& | &’pre’symbol’post’& |
Country-dependent Formatting | /: SET COUNTRY |
Date Mask | /: SET DATE MASK |
Time Mask | /: SET TIME MASK |
SAPscript Control Commands Table des matières
NEW-PAGE | Explicit Page Break |
PROTECT | Preventing Page Breaks |
NEW-WINDOW | Next Main Window |
DEFINE | Assigning a Value to a Text Symbol |
SET DATE MASK | Formatting Date Fields |
SET TIME MASK | Formatting Time Fields |
SET COUNTRY | Country-Dependent Formatting |
SET SIGN | Position of the Leading Sign |
RESET | Initializing Numbered Paragraphs |
INCLUDE | Including Other Texts |
STYLE | Changing the Style |
ADDRESS | Formatting Addresses |
TOP | Setting a Header Text in the Main Window |
BOTTOM | Setting a Footer Text in the Main Window |
IF | Conditional Text |
CASE | Finding a Match |
PERFORM | Calling ABAP Subroutines |
PRINT-CONTROL | Inserting Print Controls |
BOX, POSITION, SIZE | Boxes, Lines, Shading |
HEX, ENDHEX | Hexadecimal Data |
SUMMING | Summing a Program Symbol |
SAPscript Symbols Table des matières
System Symbols
&DATE& | Current Date |
&DAY& | Current Day Number |
&MONTH& | Current Month Number |
&YEAR& | Current Year Number |
&LDATE& | Local Date (Currently Only for Japan) |
&NAME_OF_DAY& | Current Day Name (Long Form) |
&NAME_OF_MONTH& | Current Month Name (Long Form) |
&TIME& | Current Time |
&HOURS& | Hours Component of Current Time |
&MINUTES& | Minutes Component of Current Time |
&SECONDS& | Seconds Component of Current Time |
&PAGE& | Current Page Number |
Attention, &PAGE& peut évoluer après traitement si la ligne générée est ensuite poussée par la mise en place d’un BOTTOM | |
&NEXTPAGE& | Page Number of the Next Page |
&DEVICE& | Selected Device Type |
&SPACE& | Spaces |
&ULINE& | Underline |
&VLINE& | Vertical Line |
Program Symbols
SYST: System Fields in the ABAP Programming Environment
USR03: User Address Data
SAPSCRIPT: General SAPscript Fields
&SAPSCRIPT-SUBRC&
&SAPSCRIPT-DRIVER&
&SAPSCRIPT-FORMPAGES&
&SAPSCRIPT-JOBPAGES&
&SAPSCRIPT-COUNTER_x&
&SAPSCRIPT-TELELAND&
&SAPSCRIPT-TELENUM&
&SAPSCRIPT-TELENUME&
SapScript - paramètres Table des matières
html
PARAMETERS: COMPANY(4) TYPE C OBLIGATORY. PARAMETERS: PAR_PRIA LIKE TSP03-PADEST. *----------------------------------------------------------------------* DATA: _LFB1 LIKE LFB1 OCCURS 0 WITH HEADER LINE. DATA: _BSIK LIKE BSIK OCCURS 0 WITH HEADER LINE. DATA: HLP_AFORN LIKE T042B-AFORN, "alternative advice name (param.) HLP_AUTH LIKE ITCPO-TDAUTORITY, " print authority HLP_ELEMENT(6) TYPE C, "name of SAPscript elements HLP_FORMULAR LIKE T042B-AFORN, "form (customizing, ofi, param.) HLP_SPRACHE LIKE REGUH-ZSPRA, "language for reading texts HLP_XHRFO LIKE HRXBLNR-XHRFO,"X - use HR form FLG_DIALOG(1). CLEAR T001. SELECT SINGLE * FROM T001 WHERE BUKRS EQ COMPANY. DATA: UP_DEVICE LIKE ITCPP-TDDEVICE. HLP_FORMULAR = 'UnFormulaire'. PERFORM FILL_ITCPO USING PAR_PRIA 'LIST5S' SPACE "par_sofa via tab_ausgabe! HLP_AUTH. UP_DEVICE = 'PRINTER'. FLG_DIALOG = 'X'. ITCPO-TDNEWID = 'X'. CALL FUNCTION 'OPEN_FORM' EXPORTING FORM = HLP_FORMULAR DEVICE = UP_DEVICE LANGUAGE = T001-SPRAS OPTIONS = ITCPO DIALOG = FLG_DIALOG IMPORTING RESULT = ITCPP EXCEPTIONS FORM = 1. IF SY-SUBRC EQ 1. "Abbruch: IF SY-BATCH EQ SPACE. "Formular ist nicht aktiv! MESSAGE A069 WITH HLP_FORMULAR. ELSE. MESSAGE S069 WITH HLP_FORMULAR. MESSAGE S094. STOP. ENDIF. ENDIF. PAR_PRIA = ITCPP-TDDEST. DATA LANGUAGE LIKE THEAD-TDSPRAS. CASE LFA1-LAND1. WHEN 'FR'. LANGUAGE = 'FR'. * WHEN 'IT'. language = 'IT'. * WHEN 'DE'. language = 'DE'. WHEN OTHERS. LANGUAGE = 'EN'. ENDCASE. CALL FUNCTION 'START_FORM' EXPORTING FORM = HLP_FORMULAR LANGUAGE = LANGUAGE. CALL FUNCTION 'WRITE_FORM' EXPORTING ELEMENT = '615' EXCEPTIONS WINDOW = 1 ELEMENT = 2. IF SY-SUBRC EQ 2. ENDIF. CALL FUNCTION 'WRITE_FORM' EXPORTING ELEMENT = '615' TYPE = 'TOP' EXCEPTIONS WINDOW = 1 ELEMENT = 2. ENDLOOP. CALL FUNCTION 'END_FORM'. SET COUNTRY SPACE. ENDLOOP. CALL FUNCTION 'CLOSE_FORM' IMPORTING RESULT = ITCPP. *---------------------------------------------------------------------* * FORM FILL_ITCPO * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> P_TDDEST * * --> P_TDDATASET * * --> P_TDIMMED * * --> P_TDAUTORITY * *---------------------------------------------------------------------* FORM FILL_ITCPO USING P_TDDEST LIKE ITCPO-TDDEST P_TDDATASET LIKE ITCPO-TDDATASET P_TDIMMED LIKE ITCPO-TDIMMED P_TDAUTORITY LIKE ITCPO-TDAUTORITY. CLEAR ITCPO. ITCPO-TDPAGESLCT = SPACE. "all pages ITCPO-TDNEWID = 'X'. "create new spool dataset ITCPO-TDCOPIES = 1. "one copy ITCPO-TDDEST = P_TDDEST. "name of printer ITCPO-TDPREVIEW = SPACE. "no preview ITCPO-TDCOVER = SPACE. "no cover page ITCPO-TDDATASET = P_TDDATASET. "dataset name * IF zw_xvorl EQ space. ITCPO-TDSUFFIX1 = P_TDDEST. "name or printer * ELSE. * itcpo-tdsuffix1 = 'TEST'. "test run * ENDIF. ITCPO-TDSUFFIX2 = 'Titre Formulaire'. "name of report variant ITCPO-TDIMMED = P_TDIMMED. "print immediately? ITCPO-TDDELETE = SPACE. "do not delete after print ITCPO-TDTITLE = 'Titre Formulaire'. "title of pop-up-window ITCPO-TDCOVTITLE = 'Titre Formulaire'. "title of print-cover ITCPO-TDAUTORITY = P_TDAUTORITY. "print authority ITCPO-TDARMOD = 1. "print only ENDFORM. " FILL_ITCPO |
Transactions Table des matières
html
/$sync | sauve les buffers, synchronise la base de données |
/bda | Sous batch input : passe en mode afficher chaque dynpro |
/bde | Sous batch input : passe en mode afficher les erreurs seulement |
/bdel | Sous batch input : supprime la transaction en cours (transaction définitivement perdue, voir /n) |
/bend | Sous batch input : tue le batch input en cours (exécution interactive) |
/h | Mode Debuggage. |
/i | tue la session courante |
/n | tue la transaction courante |
/n | Sous batch input : arrête la transaction courante + marquage incorrect + passe à la suivante (la transaction est récupérable, voir /bdel) |
/nend | log off |
/o | crée une liste des sessions |
AL11 | consulter un fichier dos du repertoire \\(serveur SAP)\usr\sap\tmp |
PP30 | SAPOffice rooms: event |
PP31 | SAPOffice rooms:furnishing |
SE01 | suivi d’un transport |
SE09 | transport des modifs |
SE10 | transport du custo |
SE14 | Tables, index, convertisseurs et parametres GPA |
SE16 | consulter le contenu d’une table, sans passer par l’affichage SE11 (très long) de la structure de la table |
SE30 | analyse d’exécution |
SE43 | gestion des menus de domaine, différent de SE41, gestion des statuts de programme |
SE91 | Gestion des messages |
SM04 | gérer les verrouillages |
SM12 | gérer les sessions |
SM13 | log par utilisateur, donne accès au dump des transactions plantées |
SM21 | log système |
SM35 | gestion des dossiers de batch input |
SM36 | ajouter un travail batch |
SM37 | surveiller les batch |
SM50 | Liste des process en cours |
SM51 | Liste des SAP Servers -> process par serveur |
SM59 | liste des destinations RFC |
SDM66 | shows all active sessions across all servers |
SMOD | It is possible to … with a customer exit. Transaction /nSMOD can be used to obtain an overview of the customer functions available. The functions are activated with transaction /nCMOD. |
SO00 | SAPOffice short message |
SO01 | SAPOffice inbox |
SO02 | SAPOffice outbox |
SO03 | SAPOffice private folders |
SO04 | SAPOffice public folders |
SO05 | SAPOffice prv.waste basket |
SO06 | SAPOffice login as subst. |
SO07 | SAPOffice resubmission |
SO08 | SAPOffice logout as subst. |
SO09 | SAPOffice path jump to fol |
SO10 | manipuler des textes standard |
SO11 | SAPOffice address |
SO12 | SAPOffice user |
SO13 | SAPOffice substitute |
SO14 | SAPOffice substitution |
SO15 | SAPOffice DL |
SO16 | SAPOffice profile |
SO17 | SAPOffice aut. answer |
SO18 | SAPOffice gen.waste basket |
SO19 | SAPOffice initdocs public |
SO20 | SAPOffice initdocs private |
SOAD | SAPOffice company address |
SOCP | SAPOffice contact address |
SPAD | administration des imprimantes |
SU53 | liste des Authorization Values, à utiliser juste après un message « You have no authority … » |
SU54 | gestion des favoris |
exploitation des batch input Table des matières
Le programme RSBDCREO ou RSBDCORE réorganise une log de B.I., et ne laisse que les transactions à corriger
Le pgm rsbdcsub permet de soumettre un dossier, et avec une variante, on peut en faire un batch (dans SM36) et suivre le batch (dans SM37)
La chasse aux user exit Table des matières
Contexte : déterminer dans les commandes achat les user exit existant, et leur utilisation.
1) menu : outils / abap workbench
choisir generateur de fonctions
taper EXIT_SAPMM06E_*
cliquer le bouton d'aide (= touche F4)
Grpe fct. Responsable Désignation
Nom module fonction Désignation
XM06 User-Exits dans Gestion Articles Achats
EXIT_SAPMM06E_001
XMLU MM-SRV : exits utilisateur
EXIT_SAPMM06E_010
EXIT_SAPMM06E_011
.../...
2) recherche des fonctions appelées en UPDATE TASK, dans lesquelles il y a souvent des customer-function
3) Vérification d'activité des user-exit :
ajout d'un break-point sur chaque fonction exit-... :
par le repository browser, sur chaque ligne de code de type
call customer-function '010'
double clic sur '010', puis sur la ligne
function exit_sapmm06e_010.
cliquer le bouton STOP (celui avec OK-CODE=PGSB)
puis utiliser de la transaction
Symboles de Texte et textes de messages Table des matières
Fonction 'MESSAGE_PREPARE' : identique à MESSAGE_TEXT_BUILD, retourne le texte de premier niveau (celui qui s’affiche sur la ligne de statut)
Fonction 'DOCU_GET_FOR_F1HELP' : retourne le texte de deuxième niveau (celui qui s’affiche quand on clique un message)
*Ecrire un symbole de texte write: / zg_ms, 'messages de succès (type S)'(102). *Écrit TEXT-102, ou la constante si TEXT-102 n’existe pas. *Récupérer un symbole de texte cdata = 'fin du travail le &2 à &3 pour &1'(005). replace '&1' with sy-uname into cdata. …/… *Envoyer un message message e004(zascom) with sy-uname sy-datum sy-uzeit sy-repid. *Récupérer un message CALL FUNCTION 'MESSAGE_TEXT_BUILD ou MESSAGE_PREPARE ou WRITE_MESSAGE ou … *Cas d’emploi de cette fonction : DIRECT INPUT *The specified internal table contains all system messages that *occur during CALL TRANSACTION USING ... . The internal table *must have the structure BDCMSGCOLL. BEGIN OF MSGTAB OCCURS 10. INCLUDE STRUCTURE BDCMSGCOLL. DATA: END OF MSGTAB. .../… REFRESH MSGTAB. CALL TRANSACTION 'ME52' USING BDCDATA MODE 'N' MESSAGES INTO MSGTAB. *vider la table des messages LOOP AT MSGTAB. CALL FUNCTION 'WRITE_MESSAGE' ou sa soeur EXPORTING .../... IMPORTING MSGTEXT = CDATA. CONCATENATE MSGTAB-MSGTYP CDATA INTO CDATA SEPARATED BY '-'. WRITE: / CDATA. ENDLOOP. ULINE. |
Parameter ID Table des matières
Pour trouver la liste intégrale des Parameter ID et des valeurs de ces paramètres, passer en débugging (/h + entrée) puis
Goto > system > control blocks (ce qui déverrouille system areas), puis
Goto > system > system areas, puis
Double click sur SMEM
call transaction and skip first screen Table des matières
S l’on veux appeler une transaction depuis un report interactif, il est de bon gout de préalimenter les champs de saisie à partir des valeurs affichées.
Quel est le nom de paramètre associé aux champs du first-screen de la transaction cible ?
Ce qui donne dans le programme appelant : (exemple : SAPFM06I / FM06IF01 ligne 3051)
set parameter id 'MAT' field matnr. set parameter id 'WRK' field werks. call transaction 'ME01' and skip first screen. |
Sinon, partir en debugging dans le module PBO, il y a de fortes chances que les valeurs initiales soient gérées à la main via une structure : exemple : transaction SO10 (gérer les textes standard)
(pstxt est une structure du dictionnaire)
GET PARAMETER ID 'TXT' FIELD PSTXT. IF PSTXT-TDNAME <> SPACE. RSSCE-TDNAME = PSTXT-TDNAME. ENDIF. IF PSTXT-TDID <> SPACE. RSSCE-TDID = PSTXT-TDID. ENDIF. IF PSTXT-TDSPRAS <> SPACE. RSSCE-TDSPRAS = PSTXT-TDSPRAS. ENDIF. |
Donc, pour appeler, on procède ainsi (cf SAPMSSCE / MSSCEI00)
*....... SPA/GPA-Parameter setzen .................................... MOVE-CORRESPONDING RSSCE TO PSTXT. SET PARAMETER ID 'TXT' FIELD PSTXT. |
Field symbol Table des matières
form bdc_field using fnam fval. …/… field-symbols: <f>. data _i type i. data _x(132). _x = fval. _i = strlen( _x ). if _i > 0. assign _x(_i) to <f>. write <f>. endif. |
Cas d’emploi : write ne permet pas de variable dans l’offset, mais il le tolère via un field-symbol
FORM CREATE-BI USING MAPPE FEEDID FILEID RECTYP STRUCTUR ONLINE INAREA BIUSER SAVE. *Structur = le nom de structure dans le programme appelant *Inarea = le contenu de cette structure ASSIGN (STRUCTUR) TO <INAR>. MOVE INAREA TO <INAR>. *les zones de l’appelant sont maintenant connues et valorisées ASSIGN (ZSCR-ZFVAL) TO <FIELDVALUE>. MOVE <FIELDVALUE> TO FVAL. *on peut maintenant les utiliser. |
Exemple : dans INCLUDE <LIST>
DEFINE LINE. CONSTANTS: &1 TYPE C VALUE &2. END-OF-DEFINITION. LINE LINE_SPACE ' '. "SPACE … DEFINE ICON_PREPARE_FOR_MODIFY. TRANSLATE &1 USING '@ '. CONDENSE &1 NO-GAPS. END-OF-DEFINITION. |
Comment on fait pour envoyer du courrier ? on copie l’exemple fourni par SAP : RHMAIL00. Les courriers sont consultables par la transaction SO01.
FORMS communs à plusieurs programmes Table des matières
Le programme principal appelle un sous-programme (ici general_processing) contenu dans un include, et lui passe en paramètre le nom d'un sous-programme du programme principal (ici printing_fr)
(PGM=RDEXPAI*) include rvexinro. perform general_processing using 'PRINTING_FR'. form printing_fr. …/… (INCLUDE=RVEXINRO) form general_processing using value(local_printing_routine). perform special_processing_uk in program (sy-repid) if found. perform (local_printing_routine) in program (sy-repid) if found. |
Transport - Ré affectation d’objets Table des matières
affectation d’objets privés à une classe transportable
plusieurs objets :Repository brower
objets privés locaux + afficher, puis sélectionner puis menu Objet / Réaffecter
un programme : Editeur ABAP
menu Programme / Réaffecter
Formulaires et autres objets fantaisistes
SM31, table TADIR + Gérer : critère responsable = profil SAP puis cocher puis bouton Gérer
Pour trouver les requêtes (ordres et tâches) associées à un objet : SE16 sur V_E071EU
Ajouter un (des) objets dans un transport : Fonctions TR_OBJECTS_CHECK + TR_OBJECTS_INSERT
Icones et symboles dans un sapscript Table des matières
Question :
I have read note 104272 on this subject, and i am very interested. I have not understand what i have to add as sapscript code in my formulars to obtain icons or symbols as showed by abap reports SHOWICON or SHOWSYMB. Can you provide me an example of printing symbols with sapscript ?
OSS Answer :
let's say you want to print the icon with the printer symbol. Then do the following steps:
1. Call transaction SE38 and run the report SHOWICON. Then choose List - Print.
2. Call transaction SP01, set the cursor on the spool request you just created. Press the Button with the pair of glasses and then the button 'Display Hex'. Now search for the line with the icon you want to print. E.g. you
find:
#5 #,0X #5 ICON_PRINT #5 Print 1321235222132444455544522222222222222222221325766722222 B50BC08000B5093FEF029E40000000000000000000B50029E400000 ---- |
The underlined characters are the hex sequence, under which the icon is stored. So the printer icon is stored as 1B 2C 30 58.
3. Call transaction SPAD, press the button 'Full Administration',then the button 'Character sets', set the cursor on the characterset 1100 (I suppose this is your system codepage) and press the button 'Edit character set' (the icon with the puzzle). Now search for sequence 1B 2C 30 58. It is the SAP character number 801.
4. So if you add a <801> into your layout set, the <801> is printed as a print icon.
I know this way sounds a little complicated. Usually it might be enough that you start with step 3 and look for names of the icons.E.g. the character name SAPicon0X_PRINT suggest that it is the print
icon.
Autre moyen : SP12 / jeux de caractère / Comparer jeux. Choisir la page de code 1100 (page de code pour écran) au moins, chercher l’icône par son nom :
RSPOCP02 : Impression d'1 ou 2 jeux de caractères (codepages) 1 Edition des jeux caract. (codepages) 1100 et 1116. Syst. R/3 DEV Version 40B le 23.12.1998 . 1100 les deux 1116 L.N° B1 B2 B3 B4 B1 B2 B3 B4 B1 B2 B3 B4 Caractère et son nom …/… 00801 1B 2C 30 58 28 50 08 #,0X SAPicon0X_PRINT …/… |
Reste à découvrir ce que signifie en termes de code sapscript : add a <801> into your layout set
C’est à prendre au pied de la lettre, ça marche comme un style </> ou <C>
Avant toute chose, il faut vérifier que l’imprimante cible (ou plutot le pilote SAP de l’imprimante) supporte les icones. Pour cela, utiliser le programme RSPOCP02 (outils / ccms / spools / temse administration / jeux de caractère / imprimer jeux) pour générer un spool de contrôle du jeux de caractère. Utiliser les icônes et symboles correctement imprimés SUR LE PAPIER ! le résultat sur écran peux être tout a fait correct, contrairement au résultat sur papier. La différence vient du fait que le jeux de caractère utilisé pour l’aperçu (donc sur un appareil de type SCREEN) est différent du jeux de caractères utilisés pour imprimer. Le jeux de caractère utilisé par l’imprimante est inscrit dans les paramètres du type d’appareil (SPAD + type d’appareil + sélectionner l’appareil cible)
Administration des utilisateurs Table des matières
SAP 4.1
Exemple de groupe d’activité : Réceptions fournisseur
Cette transaction permet, sous assistance de SAP, de constituer des modèles d’organisation pour les menus. Par cette étape, on détermine les “ objets ” autorisés (nécessaires) pour exercer l’activité envisagée :
- la liste des transactions
- les autorisations et objets d’autorisations associés
- les limites de valeurs permises (exemple : code société)
Liste des menus de domaine : consulter la liste SE43 (F4 sur le premier champ + bouton Système Info)(c’est longuet) ou parcourir les menus SAP et par Système / Statut, quand le nom de programme est MENUxxxx, alors xxxx est un nom de menu de domaine, ou utiliser le programme Liste des menus qui développe toute l’arborescence des menus SAP avec noms de menu de domaine, nom de transaction associée, libellé standard.
Distinction DEV – QUA – PRO Table des matières
En phase finale de test, les données sur DEV, QUA et PRO sont souvent très proches, et normalement on utilise les mêmes imprimantes pour vérifier les cadrages des impressions. La probabilité que deux spools (un de test et un réel) au contenu très proche tombent sur la même imprimante devient très forte.
Pour éviter aux utilisateurs de réaliser par mégarde par exemple une commande client test imprimée sur l’imprimante réelle il est souhaitable d’ajouter une marque distinctive forte sur les spools de test. Personnellement, j’imprime un logo de 10 x 15 cm contenant le texte “ TEST TEST NE PAS ENVOYER ”
dans le formulaire, ajouter une nouvelle fenêtre DEVPRO : /:WINDOW DEVPRO TYPE CONST; /:WINDOW DEVPRO TEXT 'distinction dev/pro'; /:PAGE FIRST WINDOW DEVPRO 3 CM 1 CM 16.60 CM 5 CM; /WDEVPRO /:INCLUDE DISTINCTION_DEV_PRO OBJECT TEXT ID ST LANGUAGE FR objet texte : TEXT DISTINCTION_DEV_PRO ST F SYSTEM 00000JPL 40B 19990106115937JPL 40B 1999010613030313200022 0 100 /:IF &SY-SYSID& <> "PRO" /:IF &SAPSCRIPT-DRIVER& = "HPL2" OR &SAPSCRIPT-DRIVER& = "POST" OR &SAPSCRIPT-DRIVER& = "PRES" /:INCLUDE ZHEX-MACRO-BMON OBJECT TEXT ID ST LANGUAGE FR /:IF &SAPSCRIPT-SUBRC(CZ)& <> "0" * TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST /:ENDIF /:ELSE * TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST NE PAS ENVOYER TEST /:ENDIF /:ENDIF |
Objet texte ZHEX-MACRO-BMON
Autorisations Table des matières
L’appel d’une transaction depuis une autre transaction se fait hors contrôle des droits d’accès à cette transaction, puisque ce contrôle est réputé se faire uniquement lors de la demande utilisateur via un menu ou via saisie dans le OK-CODE.
Si votre application nécessite l’appel d’une transaction, par exemple un batch input ou un fast input (call transaction using …), utilisez (au moins) le contrôle d’accès suivant :
FORM START_TRANSACTION USING TCD. CALL FUNCTION 'AUTHORITY_CHECK_TCODE' EXPORTING TCODE = TCD EXCEPTIONS OK = 01 NOT_OK = 02. IF SY-SUBRC = 01. CALL TRANSACTION TCD. ELSE. MESSAGE S112 WITH TCD. ENDIF. ENDFORM. " START_TRANSACTION |
Ce sous-programme est dans le programme SAPMS01M (transaction Menu dynamique). S’il vous convient tel que, utilisez un appel de routine extérieure
perform start_transaction(sapms01m) using name. |
Execute query function on presentation server
Querying the file parameters and environment variables on the presentation server. The length or the existence of files can be determined
Query command:
'CD' : Determine current directory
'EN' : Prompt environment variable ENVIRONMENT
'FL' : Determine length of file FILENAME
'FE' : Check if file FILENAME exists
'FC' : Check if Ceator(program) FILENAME is installed (Apple only)
'DE' : Check if directory FILENAME exists
'WI' : Check if a graphic program is running with ID WINID
'WS' : Prompt Windows system of presentation server
'OS' : Prompt operating system of presentation server
'XP' : Determine Execute-Path (Unix only)
'GM' : GMUX-Version: Internal Use Only
vu dans le programme EXECSQLS V30F
PARAMETERS: REPONAME(8) DEFAULT '*' . PARAMETERS: TABNAME(30) DEFAULT '*' . PARAMETERS: DEVCLASS(4) DEFAULT 'STUI' . DATA: BEGIN OF REPORT_NAMES OCCURS 0 , NAME(8) , END OF REPORT_NAMES. .../... CASE SY-DBSYS(3) . WHEN 'ORA'. EXEC SQL PERFORMING APPEND_REPORT_NAMES. <<<<<<<SELECT T.OBJ_NAME v FROM TADIR T v WHERE T.OBJ_NAME LIKE :REPONAME AND v ( ( T.PGMID = 'R3TR' AND T.OBJECT = 'PROG' ) OR v ( T.PGMID = 'LIMU' AND T.OBJECT = 'REPO' ) OR v ( T.PGMID = 'LIMU' AND T.OBJECT = 'REPS' ) ) AND v T.DEVCLASS LIKE :DEVCLASS v UNION v v<<<<<<SELECT A.PROG v FROM D010SINF A v WHERE SUBSTR(A.PROG,1,1) = 'L' AND v A.PROG LIKE :REPONAME AND v A.SUBC = 'I' AND v SUBSTR(A.PROG,2,4) IN ( SELECT OBJ_NAME v FROM TADIR v WHERE v PGMID = 'R3TR' AND v OBJECT = 'FUGR' AND v DEVCLASS LIKE :DEVCLASS ) v>>>INTO :REPORT_NAMES ENDEXEC. WHEN OTHERS. EXIT. ENDCASE. .../... FORM APPEND_REPORT_NAMES. APPEND REPORT_NAMES . ENDFORM. |
Report spécifique et Batch input Table des matières
Quand on utilise un programme perso (un report donc) pendant un Batch input, on ramasse :
"LEAVE TO TRANSACTION" n'est pas autorisé en batch input N° message 00352 Diagnostic Fonction système spécifiée ne peut être exécutée en batch-input Procédure Définissez l'exécution batch-input dans votre application |
chaque fois qu'on veux terminer le travail
Question : Comment on termine un report par programmation sans utiliser les verbes LEAVE... ni utiliser les OK-CODE "/E..." ?
Question : pourquoi les dynpro peuvent se terminer par un leave to screen 0 et pas mon report ?
Réponse : cela ne vient pas du programme mais de la transaction : SA38 utilise LEAVE, ce qui n'est pas compatible.
Solution : faire une transaction dédiée au report, et terminer le report ainsi :
COMMIT WORK. IF SY-BINPT = 'X'. SET SCREEN 0. LEAVE SCREEN. ENDIF. LEAVE TO TRANSACTION SY-TCODE. |
match code et batch input Table des matières
html
* recherche du fournisseur par l'ancien numero (matchcode KRED) concatenate '=9.' societe '.' numero into c40. perform bdc_dynpro using 'SAPMF02K' '0106'. PERFORM BDC_FIELD USING 'RF02K-LIFNR'c40. .../... PERFORM BDC_TRANSACTION USING 'FK02'. |
et ca marche aussi en saisie directe :
Fournisseur =9.fr20.00002 |
cette syntaxe permet de s'appuyer sur les tables d'index du match-code, donc gère correctement les problèmes de performance.
Effet de bord : on n'a aucune idée du résultat, le traitement est réalisé au moment de l'exécution du dossier Batch Input.
Correctif : remplacer la lecture de la table transparente
SELECT LIFNR INTO CORRESPONDING FIELDS OF LFB1 UP TO 1 ROWS FROM LFB1 WHERE ALTKN = .... |
par la lecture de la table du match-code
SELECT LIFNR INTO CORRESPONDING FIELDS OF M_KRED9 UP TO 1 ROWS FROM M_KRED9 WHERE ALTKN = .... |
Report
If you want to convert an interactive report to html you can use following function module:
DATA: html LIKE w3html OCCURS 0 WITH HEADER LINE. CALL FUNCTION 'WWW_LIST_TO_HTML' EXPORTING list_index = 0 TABLES html = html EXCEPTIONS OTHERS = 1. |
Pas terrible, beaucoup d’erreurs de troncature de mots-clés. Nécessite de repasser derrière.
texte complémentaire (ITF)
function group AWRT_DOCU
Function module GET_DOKUOBJECT_HTML
Les textes complémentaires de type NA sont les textes complémentaires de messages.
Fonctions connexes (entre autres)
STXN SAPscript Internet
CONVERT_ITF_TO_HTML Text Conversion of the Internal SAPscript Format (ITF) to HTML
SAPSCRIPT_WWW_DOCU_TO_HTML
SAPSCRIPT_WWW_ITF_TO_HTML
SURL SAP Internet
WWW_GET_HTML_OBJECT
WWW_HTML_ECHO
WWW_HTML_FROM_LISTOBJECT
WWW_HTML_MERGER
WWW_ITAB_TO_HTML
WWW_ITAB_TO_HTML_HEADERS
WWW_ITAB_TO_HTML_LAYOUT
WWW_LIST_TO_HTML
WWW_L_HTML_LIST_BUTTONS
WWW_SCREEN_TO_HTML
Solution SAPSCRIPT vers PDF directe (solution complètement logicielle)
: RSTXPDFT4 Convert SAPscript (OTF) or ABAP List Spool Job to PDF
En particulier, voir aussi tous les abap RSTX*, c’est une mine d’or.
Nombres en lettres Table des matières
Utiliser la fonction SPELL_AMOUNT, comme dans le programme RF_SPELL
Documentation Unix AIX Risc/6000 Table des matières
http://www.rs6000.ibm.com/doc_link/en_US/a_doc_lib/aixgen/ ou
http://www.rs6000.ibm.com/cgi-bin/ds_form
ensuite cliquer sur + référence documentation (=>http://www.rs6000.ibm.com/cgi-bin/ds_rslt#1)
puis choisir le volume Command Reference Volume 1 (=>http://publib.boulder.ibm.com/doc_link/en_US/a_doc_lib/cmds/aixcmds1/toc.htm)
puis ouvrir Alphabetical Listing of Commands
Write Table des matières
Paramétrage des spoules :
RFFORI99, FORM PRINT_ON : utilisation du custo via table TLSEP BATCH-HEADING(RSBTCHH0). Avec la structure BHDGD. CLEAR BHDGD. BHDGD-INIFL = '0'. bhdgd-lines = sy-linsz. bhdgd-repid = sy-repid. bhdgd-uname = sy-uname. BHDGD-SEPAR = SY-ULINE. bhdgd-domai = 'BUKRS'. BHDGD-BUKRS = COMPANY. BHDGD-WERTE = COMPANY. bhdgd-line1 = sy-title. BHDGD-LINE2 = SPACE. TOP-OF-PAGE. PERFORM BATCH-HEADING(RSBTCHH0). |
Paramétrage des spoules : fonction GET_PRINT_PARAMETERS & structure PRI_PARAMS :
ABAP - The SAP Programming Language
Description of Syntax and Concepts
List Processing
Printing Lists
PRINT-CONTROL
Pour fixer la largeur d’une colonne dans un report, en particulier pour les zones numériques :
DATA DMSHB LIKE BSEGA-DMSHB VALUE '00345678901.23'. SET COUNTRY 'FR'. 12345678901234567 WRITE / DMSHB. 345.678.901,23 WRITE /(14) DMSHB. 345678.901,23 WRITE /(13) DMSHB. 345678901,23 WRITE /(12) DMSHB. 345678901,23 WRITE /(11) DMSHB. *5678901,23 WRITE /(10) DMSHB. *678901,23 WRITE /(09) DMSHB. *78901,23 WRITE /(08) DMSHB. *8901,23 WRITE /(07) DMSHB. *901,23 WRITE /(06) DMSHB. *01,23 |
Pour créer un report interactif façon hyper texte
FORMAT HOTSPOT ON/OFF WRITE HOTSPOT ON/OFF |
System Fields for Lists
a) Generating a list SY-PAGNO - Number of current page of current list; SY-LINNO - Number of current line on current page; SY-COLNO - Number of column where cursor is positioned in current list; SY-LINCT - Number of lines per page in current list SY-LINSZ - Line width of current list; SY-TITLE - Title that appears in the title bar of the display window; SY-SROWS - Current number of lines in display window; SY-SCOLS - Current number of columns in display window; b) Interactive Reporting After each interactive event, the following system fields are set automatically: SY-LSIND - Index of current list; SY-LILLI - Absolute number of a selected line in displayed list; SY-LISTI - Index of displayed list after line selection SY-LISEL - Contents of a selected line; SY-CUROW - Number of line in window to the cursor SY-CUCOL - Number of column in window to the cursor SY-CPAGE - Number of top displayed page in displayed list; SY-STARO - Number of top line on top displayed page SY-STACO - Number of first displayed column in the displayed list; SY-UCOMM - Function code that triggered the event in the displayed list; SY-PFKEY - Status of displayed list; |
SearchSAP.com Table des matières
Read
an area from an Excel sheet and write out a diagnostic
Logos on screen
Debugging : Export internal table to Excel for analysis
Send background job failure alerts by email
Download internal table data into Excel
Inserting photos into SAPscripts
Use Excel instead of Tab delimited text in BDC programs
How to handle time zones in ABAP
Report dynamique Table des matières
Trouvé dans RFPOSFX0
FORM generieren. READ REPORT 'RFEPOSX0' INTO reptab. Adaptation du modèle INSERT REPORT 'RFEPOSX0' FROM reptab. IF sy-subrc NE 0. MESSAGE a308 WITH 'GENERIEREN - INSERT REPORT'. ENDIF. GENERATE REPORT 'RFEPOSX1'. IF sy-subrc NE 0. MESSAGE a308 WITH 'GENERIEREN - GENERATE REPORT'. ENDIF. ENDFORM. SUBMIT rfeposx1 AND RETURN. |
REPORT rfeposx1 INCLUDE rfeposx0. |
Export rapide de structure Table des matières
Structure de dictionnaire > excel en 5 minutes
Tools / dictionnary (table) / display Structure / print with setting / sapmininfo / pas print immediat SP02 Display Goto list display / system / list / save / local file / spreadsheet Ouvrir le fichier excel |
What is the difference between ALE, EDI, IDocs and BAPI ? Table des matières
The interface concept of the classic R/3 is based on two different strategies: Remote Function Calls (RFC) and data exchange through IDoc message documents. RFC makes direct and synchronous calls of a program in the remote system. If the caller is an external program it will call an RFC-enabled function in R/3 and if the calling program is the R/3 system it will call an RFC-function in another R/3-system or it will call a non-R/3 program through a gateway-proxy (usually rfcexec.exe). BAPIs are a subset of the RFC-enabled function modules, especially designed as Application Programming Interface (API) to the SAP business object, or in other words: are function modules officially released by SAP to be called from external programs.
IDocs are text encoded documents with a rigid structure that are used to exchange data between R/3 and a foreign system. Instead of calling a program in the destination system directly, the data is first packed into an IDoc and then sent to the receiving system, where it is analyzed and properly processed. Therefore an IDoc data exchange is always an asynchronous process. The significant difference between simple RFC-calls and IDoc data exchange is the fact, that every action performed on IDocs are protocolled by R/3 and IDocs can be reprocessed if an error occurred in one of the message steps.
While IDocs have to be understood as a data exchange protocol, EDI and ALE are typical use cases for IDocs. R/3 uses IDocs for both EDI and ALE to deliver data to the receiving system. ALE is basically the scheduling mechanism that defines when and between which partners and what kind of data will be exchanged on a regular or event triggered basis. Such a set-up is called an ALE-scenario.
The philosophical difference between EDI and ALE can be pinned as follows: If we send data to an external partner, we generally speak of EDI, while ALE is a mechanism to reliable replicate data between trusting systems to store a redundant copy of the IDoc data. The difference is made clear, when we think of a purchase order that is sent as an IDoc. If we send the purchase order to a supplier then the supplier will store the purchase order as a sales order. However, if we send the purchase order via ALE to another R/3 system, then the receiving system will store the purchase order also as a purchase order.
html
NetWeaver : a definition Table des matières
searchsap.com :
Grasping the concept of NetWeaver, and understanding its components, isn't a simple task, the company has acknowledged. SAP America CEO Bill McDermott has pledged improved communication to customers on the topic, and analysts are predicting that SAP customers who pay attention can benefit from the integration and development environment. How important is NetWeaver? So important that McDermott advised SAP decision makers who attended the recent SearchSAP.com Chicago conference to change their upgrade plans from R/3 4.7 Enterprise to mySAP ERP, which includes the full power of NetWeaver. That doesn't mean you should, but it does mean that you may want to find out what all the fuss is about.
--------------------------------------------------------------------------------------------------------------------------------------------------------
NetWeaver is a collection of six components currently in ramp-up (Q1/2004) with completion due for (Q3/2004).
1. WebApp Server
2. BW
3. Master Data Management (MDM)
4. Exchange Infrastructure (EI)
5. Enterprise Portals
6. Mobile Infrastructure
In terms of what NetWeaver 'is', SAP describe it as the technical foundation for an Enterprise Services Architecture. I think this means it's best seen as a technical platform for web-enabling SAP's current products (R/3, CRM, BW, etc.) and any other 3rd party product you may have. Combine this with a mechanism for managing your master data across distributed systems (MDM), a business data exchange mechanism (EI), throw in a business data warehouse (BW) (all underpinned by the WebAS) and there's your architecture.
SAP's sales strategy from here on will concentrate on selling NetWeaver as a complete product to new customers and encouraging existing customers to upgrade piecemeal.
The WebApp Server is SAP's long term replacement for the ITS so I don't think ITS will come as standard. However unless SAP come up with replacements for their current ITS products (probably with BSPs or WebDynpro) you can plug in an ITS. I'm guessing however that they won't bother.
If you have an OSS logon I'd suggest you look at https://websmp205.sap-ag.de/netweaver.
--------------------------------------------------------------------------------------------------------------------------------------------------------
I know this much....If you are looking at enterprise to replace your SAP client for your data entry users, it is not recommended because the response time is MUCH slower (due to the ITS layer).
Retrieving the user IP address and logon ID Table des matières
data:
w_terminal like USR41-TERMINAL.
CALL FUNCTION 'TERMINAL_ID_GET'
EXPORTING
USERNAME = SY-UNAME
IMPORTING
TERMINAL = w_terminal
EXCEPTIONS
MULTIPLE_TERMINAL_ID = 1
NO_TERMINAL_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. |
Unicode, Tab & Enter hexa strings Table des matières
html
* non unicode method to code an hexadecimal string SAP 4.5 * DATA: BEGIN OF HT, X(1) TYPE X VALUE '09', END OF HT."it's a .TXT file * IF <T> CA HT. * non unicode for SAP 6.4 data htab(1) type x value '09'. field-symbols: <fsx1> type x, <fsc1> type c. assign htab to <fsx1> casting. assign <fsx1> to <fsc1> casting. IF <T> CA <fsc1>. * unicode method data ht(1). class cl_abap_char_utilities definition load. ht = cl_abap_char_utilities=>horizontal_tab. IF <T> CA HT. valeurs proposées par cl_abap_char_utilities : data boml type string. boml = cl_abap_char_utilities=>BYTE_ORDER_MARK_LITTLE. data bomb type string. bomb = cl_abap_char_utilities=>BYTE_ORDER_MARK_BIG. data bomu type string. bomu = cl_abap_char_utilities=>BYTE_ORDER_MARK_UTF8. data cs type string. cs = cl_abap_char_utilities=>CHARSIZE. data en type string. en = cl_abap_char_utilities=>ENDIAN. data mi type string. mi = cl_abap_char_utilities=>MINCHAR. data ma type string. ma = cl_abap_char_utilities=>MAXCHAR. data tab type string. tab = cl_abap_char_utilities=>HORIZONTAL_TAB. data vtab type string. vtab = cl_abap_char_utilities=>VERTICAL_TAB. data nl type string. nl = cl_abap_char_utilities=>NEWLINE. data crlf type string. crlf = cl_abap_char_utilities=>CR_LF. data ff type string. ff = cl_abap_char_utilities=>FORM_FEED. data bs type string. bs = cl_abap_char_utilities=>BACKSPACE. data char_utilities(50). concatenate boml bomb bomu cs en mi ma tab vtab nl crlf ff bs into char_utilities separated by ';'. Debug : char_utilities=FFFE;FEFF;EFBBBF;1 ;B;#;y;#;#;#;##;#;# 464646453B464546463B4546424242463B31203B423B003BFF3B093B0B3B0A3B0D0A3B0C3B08202020202020202020202020 F F F E ; F E F F ; E F B B B F ; 1 ; B ; # ; y ; # ; # ; # ; # # ; # ; # |
attribute | type | description | initial value |
BYTE_ORDER_MARK_LITTLE | ABAP_BYTE_ORDER_MARK | Unicode - Little Endian | 'FFFE' |
BYTE_ORDER_MARK_BIG | ABAP_BYTE_ORDER_MARK | Unicode - Big Endian | 'FEFF' |
BYTE_ORDER_MARK_UTF8 | ABAP_BYTE_ORDER_UTF8 | UTF-8 Representation of FEFF | 'EFBBBF' |
CHARSIZE | I | Character Length in Bytes | %_CHARSIZE |
ENDIAN | ABAP_ENDIAN | Byte Sequence of Application Server | %_ENDIAN |
MINCHAR | ABAP_CHAR1 | Minimum Possible Value | %_MINCHAR |
MAXCHAR | ABAP_CHAR1 | Maximum Possible Value | %_MAXCHAR |
HORIZONTAL_TAB | ABAP_CHAR1 | Horizontal Tab Stop Character | %_HORIZONTAL_TAB |
VERTICAL_TAB | ABAP_CHAR1 | Vertical Tab Stop Character | %_VERTICAL_TAB |
NEWLINE | ABAP_CHAR1 | New line | %_NEWLINE |
CR_LF | ABAP_CR_LF | Carriage Return and Line Feed" Character Pair | %_CR_LF |
FORM_FEED | ABAP_CHAR1 | Page Break Character | %_FORMFEED |
BACKSPACE | ABAP_CHAR1 | Backspace Character | %_BACKSPACE |
Implementation of SAP Table des matières
Avoid specific tools. There are so much SAP implementation in the world, someone has had the same problems you will encounter. So there is already a solution in SAP.
You will probably will ask for consultants (not probably, surely). Work with them for a standard solution for each issue, it is
the key of future upgrades. You will upgrade.
Consultants know the product. You know your business. choose your best inside professionals, free them half their time, and promote them Key Users. make what is necessary for this to be a promotion.
And the first job of your key users is to choose the junior that will work their job the half
time they are key users.
By this way, after ending SAP implementation you will have a strong product carrying a strong team (normaly, the junior + the senior becomes an effectiveness duo, this is your personnal challenge)
this was for the human point of view.
for the technical side, converting your actual data to SAP database can be done with at least half a dozen of
tools. Your job is to be able to export your data in flat files. Let consultants doing the insertion in SAP. The oldest technique is BCD, I continues to
use it daily. It's a way to simulate keying in sap screens in batch mode. The efficiency is based on the fact that loading is made with a batch input folder : you can track the errors and re-run data that are not already loaded. That is the key of loading SAP (or any other soft / database) : the warranty
of never missing any data.
Forms and Untransmitted fields Table des matières
Depuis un FORM, on peut lire les variables de l'appelant, même si l'appelant est un autre programme.
From a FORM, you can read fields into the caller, even if it's in an other
program.
Such as in the degugger, or in a SapScript
Sample :
REPORT zzjpl001 . DATA: kna1 LIKE kna1 . FIELD-SYMBOLS: <f>. START-OF-SELECTION. SELECT SINGLE * FROM kna1 INTO kna1 WHERE kunnr = '0000014844'. * that's to show selected data DO. ASSIGN COMPONENT sy-index OF STRUCTURE kna1 TO <f>. IF sy-subrc NE 0. EXIT. ENDIF. WRITE:/ <f>. ENDDO. * that's for setting a debug break point kna1 = kna1. * that's to illustrate this tip PERFORM form1 IN PROGRAM zzjpl002. |
REPORT zzjpl002 . DATA: kna1 LIKE kna1 . FIELD-SYMBOLS: <f1> , <f2>, <f3>. FORM form1. * kna1 is empty kna1 = kna1. DATA field(50). * assign the remote field to F1 field = '(ZZJPL001)KNA1'. ASSIGN (field) TO <f1>. * assign the local field to F2 field = 'KNA1'. ASSIGN (field) TO <f2>. * move remote field to local field <f2> = <f1>. ENDFORM. "form1 |
debug :
Noms de zones 1 - 4 Contenus de zones <f1>-kunnr 0000014844 <f2>-kunnr 0000014844 SY-SUBRC 0 SY-TABIX 1 SY-DBCNT 1 |
Using this method, you can not only read the remote fields, but you can also update the remote fields
* move local field to remote field <f1> = <f2>. |
And this is also valid for handling internal tables :
REPORT zzjpl001 . DATA: kna1 LIKE kna1 occurs 0 with header line . FIELD-SYMBOLS: <f>. START-OF-SELECTION. SELECT * FROM kna1 INTO table kna1 WHERE kunnr = '0000014844'. kna1[] = kna1[]. PERFORM form1 IN PROGRAM zzjpl002. |
REPORT zzjpl002 . DATA: kna1 LIKE kna1 occurs 0 with header line . FIELD-SYMBOLS: <f1> , <f2>, <f3>. *&---------------------------------------------------------------------* *& Form form1 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM form1. DATA field(50). field = '(ZZJPL001)KNA1[]'. ASSIGN (field) TO <f1>. field = 'KNA1[]'. ASSIGN (field) TO <f2>. <f2> = <f1>. ENDFORM. "form1 |
html