SAP tips and tricks

 

1. Nuttige Transacties

1.1. Technisch

 

SLG1     Logging
SM31     Tabel customising vinden
SU53     Authorisatie object vinden na block
SE43     Area menu
SE71     Sapscript
STAT     Wat zijn de laatste transacties die je hebt uitgevoerd
SE39     Splitscreen SE38
SPAD     Printer settings
SCC1     Transporteren tussen clients
$SYNC    Leegmaken buffers
SM62     Maintain User events
SARA     Archiveren
SM13     Log van Update errors
SARP     Display report tree
SERP     Change report tree
SM58     Background processen opvolgen
LS23     Display single quant
LSMW     Legacy system migration workbench
SNRO     Eigen number range
EWK1     Global search in code
SE30     Trace (knopje analyze en dan menu goto/hitlist/standard
SM21     System log
SQVI     Quick viewer
OAAD     Archivering
SCMP     Compare tables
BS22     Status management
BUPT     Business data toolset (soort user exit)
FILE     Logical filenames aanmaken 
            - Physical file: IS.<SYSID>.naamvandefile 
            - Physical path: /home/dir1/dir2/<F=Zvariable>/dir3/dir4/<FILENAME>
SE39     Transacties in test mode => geen problemen met authorisaties
SM62     Events aanmaken (niet de WF events)
SEARCH_SAP_MENU  menupath terugvinden
FPCOPARA Print correspondance in ISU (see also print table DFKKCOH)

SHD0     Variant en screen transactions (default settings van velden in SAP transactions)
SCMP     tabel inhoud vergelijken
RZ01     Opvolgen van Jobs (soort SM37 met meer detail)
SM30     En dan maintain / utilities / adjust => tabel inhoud vergelijken en nadien aanpassen
S
NOTE    OSS management
RSB
DCSUB Shedule LSMW's in background
RBDAPP01 Inbound idocs in status 64 terug binnentrekken
SWLD     Area menu WF
AL16     SAP system performance monitor
AL11, CG3Y, CG3Z: Upload en download Unix files van/naar PC
SWEC     event triggeren bij change doc

 

 

 

 

1.2. Workflow

SWU3     Custo
SWO1     Object builder
PFTC     Task
SWDD     Builder
SWWL     Delete work item
SWL1     Layout inbox definieren per WF
SWUS     Test WF
SWI1     Overview work items
SWUD  
   WF diagnostic
SWU_OBUF Synchronisatie WF buffer
Dynamic columns: SAP Web application server  / Business management / Basic settings WF / Determine dynamic columns

 

 

1.3. Utilities
EWBC en EWBE : customising CIC0 scherm of transactie CIC8
    - SPRO : Utilities / Customer service / front office
    - Nuttige objecten en methods
        - CCPSJUMP
        - CCPSMSG

OB52   : open billing period

EWAC   : Hoe een ISU ALV aanpassen (zie ook Help van Function group EWA1)

 

navigator : welke objecten/velden weergeven in de environnement
SPRO : ISU / Cust. service / Customer information / Configere data - environnement display

 

CAWM Custo van ISU transacties (vb extra veldje op contract account transactie)

 

FKK_FUNC_MODULE_DETERMINE
Break point in deze functie : haalt alle 'ISU-events' op
(Custo van events : Financial accounting / CA receivable and payable / Program enhancements

 

G/L account XXX does not exist
Procedure als je nog eens die error krijgt: FS00 uitvoeren in SA1 voor deze nummer (en CoCo van het contract) en dan in SM2 hetzelfde nummertje met dezelfde gegevens aanmaken als in SA1. Als nummer in SA1 ook nog niet zou bestaan moeten fica boys zelf GL account eerst aanmaken.

 

RELEABL9 : schattings programma
 

REG_CHECK_DEVICE_INCONSISTENCY: Corrigeren van foutieve timeslices in EASTS, ETDZ...
 

 

 

2. Tips and tricks

2.1. Coding

 

In user exit SAP variables aanpassen die niet in interface zitten:  ASSIGN (‘(programmanaam)variablenaam’) to XXX

 

Indien in 4.6 probleem met call transaction dan
LS_OPT_NOBINPT = ‘X’
LS_OPT_DISMODE = ‘E’ (of A of ...)
LS_OPT_UPDMODE = ‘S’ (of A of ..)
Zie ook note 378248
En dan call transaction ‘XXX’ using IBDC
                                    Options from LS_OPT
                                    Messages into mess

 

Om in een functie module errors op te vangen die niet via het RAISE statement worden gegenereerd (dus errors die via MESSAGE statement worden opgeroepen). Een extra exceptions toevoegen => 
        ERROR_MESSAGE = 98
        OTHERS = 99

 

Central address management
SADR niet meer gebruiken (altijd ADDR_GET)
Note 85676 
Entry ZA01 in TSAD7
Entry ZA01 in TSADKV
Progr volgens template RSXADR91

 

Indien je in een user exit velden op een scherm wil aanpassen maar die niet gedefinieerd zijn als import/export parameter van de exit. Werken via field symbols:
ASSIGN (‘programmanaam)structuurnaam’) TO <fs>.  Nadien kun je field symbol <fs> aanpassen met de correcte waarde
Opm: zeker goed nazien wat de consequenties zijn. Soms kan SAP bepaalde schermwaardes al weggeschreven hebben naar andere variabelen. Als het voldoende is om de waardes te lezen (zonder aan te passen dan kan beter DYNP_VALUES_READ gebruikt worden.

 

Printen naar Spool. 
In Initialisation: Call funtion ‘GET_PRINT_PARAMETERS’
... coding programma ...
In New-page:
    - print on 
    - new-section 
    - parameters pripar
    - archive parameters arcpar
    - nodialog

 

Unix statement uitvoeren vanuit SAP
    CALL ‘SYSTEM’
    ID ‘COMMAND’ FIELD command
    ID ‘TAB’ tab-*sys*.
Met: Command : parameter char 20 met bijvoorbeeld ls/directory/directory in. Dit komt overeen met DIR van DOS.  Tab is een interne tabel met 1 veld : character 200 lang en het resultaat van het commando komt in deze table.

 

Om in een user exit een job te starten die de gegevens aanpast van het object dat door de user ext zelf wordt aangepast (en dus gelockt is). Bv. bij saven van een sales order wil je een job starten die de SO zelf moet aanpassen. Dan kan je in de laatste exit juist voor SAVE commando : 
CALL FUNCTION xxx in BACKGROUND TASK
Die fuctie xxx start met een lock van de SO. Die zal waarschijnlijk nog gelockt zijn, maar normaal zit er een vertraging op de ENQUEU functie. Kunt eventueel ook nog een wait statement toevoegen. Indien de lock toch niet lukt kun je later via SM58 toch nog de job opnieuw uitvoeren.  Als locken wel lukt dan weer dequeue’en en de BAPI of call transaction VA02 uitvoeren. 

 

Statement SCAN om ABAP code te evalueren

 

Sapscript: Bij problemen met barcodes kan onderstaande soms helpen
__ : </> bij problemen met barcodes 

 

String “’” : text = ’’’’

 

Sapscript: SET COUNTRY ‘BE’
Indien probleem met adres formatering of currency.

 

Sapscript: Logo 
/: include logonaam object text ID ADRS

 

Nieuwe pagina forceren wanneer je abap coding afdrukt. 
* eject

 

Om de hele tabel te zien als een rapport
GoTo => display data object => structured editor en dan
Display list => display condition

 

Development classes met demo programma’s
SABAPDOCU
SLIS en SGRP (list viewer, Gebruik SAPBC_TOOLS_GENERATOR_NEW om de vlucht tabellen automatisch op te vullen)
SDW*

 

Conversie programma voor Queries (4.5)
RSAQUM40

 

Upload programma voor Sapscripts
RSTXR3TR

 

Upload programma voor logo’s
RSTXLDMC

 

Transport programma voor logo’s en texten
RSTXTRAN

 

Een BDC sessie opstarten
Submit van RSBCSUB 

 

Een index forceren in een select (index naam kun je zien via trace)
WHERE belnr IN r_belnr0
AND invoiced EQ c_x
AND intopbel EQ space
%_HINTS ORACLE 'INDEX("ERCHC" "ERCHC~0")'.

 

RSTXR3TR
Sapscript upload / download tussen verschillende systemen
Opm : transport mag verschillende objecten bevatten, programma neemt enkel de sapscripts.
 

Field exits
Code PRFB in transactie CMOD
Zie ook note 29377
Programma RSMODPRF

 

CATT
Record transactie/module
Ga dan naar functions
Choose (dubbel klik op de lijn)
Field list en & voor de waarde zetten die je wil veranderen
Saven
Goto external variants / exports default => Staat nu file klaar die hij gaat binnenlezen

 

Upload in WM. Er bestaand direct input programma’s voor upload in WM maar probleem is dat ze altijd een TR nodig hebben. Maoet dus eerst aparte upload doen in IM en dan in IM corresponderende TR’s zoeken. Us soms eenvoudiger om TO met movement type 999 en source storage type 998 en source bin AUFNAHME te maken voor alle bins in legacy warehouse. Als nadien de bin AUFNAHME wordt gecleared wordt automatisch in IM het nodige gemaakt. Opm: wel voor zorgen dat batches en serie nurmmers en bin nummers bestaan !

 

How to find Business Add in's in a transaction
- Use transaction se80 to set a break-point in method "get_instance" in class "cl_exithandler"
- Start transaction you want to analyse (e.g. CIC0)
- Debugger stops at first BADI call
- Double-clic on field "exit_name" to have the name of the BADI shown
- Clic on "continue" to jump to the next BADI call

 

Choose Tools ® AcceleratedSAP ® Personalization to call the transaction
variant maintenance transaction, or use transaction code SHD0

 

Een mass activity zoals FPCOPARA kan je toch debuggen. Voor de "Schedule program run" typ je =DBUG in plaats van /H , dan runt de activity in foreground en wordt er op breakpoints gestopt.

 

Choose Tools ® AcceleratedSAP ® Personalization to call the transaction
variant maintenance transaction, or use transaction code SHD0

 

Make a DEBUG shortcut on desktop
- 'Generate shortcut' button from menu (voorlaatste knop)
- Type: system command, Command /h, Title ABAP_DEBUG

 

in table maintenance - eigen form oproepen bij aanpassen van een record:
In de menu van table maintence (se11) environment en dan events. In die events (bv 01 before save) kun je dan eingen Z-form routines toevoegen.

 

ISU_WEIGHTING_DETERMINE  : degree days bepalen

 

FPCOPARA in foreground laten lopen: in command box =DBUG typen

 

LOG_SYSTEM_GET_RFC_DESTINATION: indien je hier een breakpoint zet dan springt hij hier naar CRM.

 

Analyseren laatste SQL statements:

ST04OLD
detail analysys
SLQ request
in SQL statement template: *tabelnaam* vb: *ETTIFN*
En dan zie je de laatste select statements op deze tabel. Rechsts in de lijst oa programma naam. Dubbel klikken op SQL statement en kunt dan details zien
 

 

 

 

2.2. Workflow

 

Bij alternaticve binding : rechter muisknop op binding popup. Eerst SWC_CONTAINER_TO_RUNTIME (template SWA_TEMPLATE_EXECUTE_DATAFLOW)

 

SYSTEM.GENERICInstantiate

 

services/services for object
Opvragen alle WF's
Koppelen van attachements

 

 

3. Tables

3.1. Workflow

 

SWDSJEADER   WF definitian : basic data
SWWWIHEAD    Work item header table
SWETYPECOV   Events

 

 

3.2. Diverse

DEVACESS All dev. Keys
TADIR    Alle objecten
TRDIR    Programmas
TFDIR    Functies
TSTC     Transacties
DD04L    Data elementen (en teksten)
E07*     Transporten
STALIGHT, STACUST Kleurcodes Idoc
DD03VT     Velden in tabel - data dictionary

 

 

 

4. Functies

K_KKB_LIST_DISPLAY 
List viewer
Opm : zie BALV* demo programma’s
Via parameter I_INTERFACE_CHECK soort error log
SAPBC_TOOLS_GENERATOR_NEW gebruiken om flight tabellen op te vullen

HR_DISPLAY_BASIC_LIST
List viewer met grafiek ? Nooit goed getest

URL_CALL_BROWSER
Explorer openen vanuit abap

ADDR_GET
Adres gegevens ophalen

NAMETAB_GET
Geeft alle velden van een tabel terug in een itab

WS_UPLOAD / WS_DOWNLOAD
Schrijven van files van en naar presentatie server (C:/)

RS_DELETE_PROGRAM
ABAP programma deleten (is gedocumenteerd)

GET_TABLE_FROM_SYSTEM / RFC_READ_TABLE
Volledige tabel ophalen uit een ander systeem

RPY_PROGRAM_READ
Coding inlezen van een programma

EDITOR_SYNTAX_CHECK
Syntax check op coding

SO_NAME_CONVERT / SO_OBJECT_SEND / SO_NEW_DOCUMENT_SEND_API1
Mail zenden via SAP office en email

SAPGUI_PROGRESS_INDICATOR
Tellertje onderaan als message

UNIT_CONVERSION_SIMPLE
M <> KM <> CM

MATERIAL_UNIT_CONVERSION
PC <> PAL <> CAR

BAPI_MESSAGE_GETDETAIL
Message text ophalen

MATERIAL_BTCI_SELECTION
Welke views bestaan voor een materiaal

BAPI_MATERIAL_SAVEDATA
Material change

EDI_DOCUMENT_TREE_DISPLAY
Show idoc

ISU_O_PRINT_DOC_OPEN en ISU_O_BILL_DOC_OPEN
Header en item data ophalen van een printing document of billing document

F4_FILENAME
popup om in windows een file te selecteren. Soms practisch in een AT SELECTION SCREEN ON VALUE REQUEST FOR p_file

LC_POPUP_TO_CONFIRM_STEP_JNA
Popup

RV_SHIPMENT_VIEW
Alle data voor shipping (inpakken)

CONVERT_DATE_TO_EXTERNAL/INTERNAL
19.12.2002 <> 20021219

POPUP_WITH_TABLE_DISPLAY
Popup van een lijstje (itab) en mogelijkheid tot line selection
Meer popups in dev. Class SZP

HELP_VALUES_GET_WITH_TABLE >
F4TOOL_F4FUNCTION_BRIDGE
Popup met tabel - te selecteren

POPUP_GET_VALUES
Popup waar je velden kunt weergeven (meegeven als een field catalog)

POPUP_TO_INFORM
popup

READ_TEXT / CREATE_TEXT
Text objecten lezen/schrijven

DYNP_VALUES_READ
Waardes van een scherm inlezen

CSAP_MAT_BOM_READ
Bill of explosion
Zie ook RCS*Z001 => CS_BOM_EXPL_MAT_V2 

CHANGEDOCUMENT_READ
History changes opvragen

FILE_GET_NAME
Physical filename + path vinden voor een logical filename. Zie ook transactie FILE

BP_EVENT_RAISE
Event raisen waarmee je dan een job kunt starten
Wel eerst event definieren (Tools/CCMS/Jobs/Maintenancs Events/User Events of via transactie SM62)

SWE_EVENT_CREATE
WF events

MASTER_IDOC_DISTRIBUTE
Outbound Idoc aanmaken

IDOC_WRITE_AND_START_INBOUND
Inbound Idoc aanmaken

STATUS_READ, STATUS_TEXT_CONVERSION, STATUS_CHECK
Status behandeling in WM (zie ook dev. Class BSVA)

WFMC_MESSAGE_SYNC
Output opniew uitvoeren (~ vb output to screen in VF03)
Roept op zijn beurt RSNAST00 op

VIEW_GET_DDIC_INFO
Read structure of a DB table

ENQUEUE_E_TABLE
Generieke locking

F4IF_FIELD_VALUE_REQUEST
Search help oproepen => resultaat in itab

RFC_ABAP_INSTALL_AND_RUN
- Abap programmas maken in andere systemen zonder transport (zwaar chipoteren !)
- coding typen in program tables parameter en execute

LWMW
- Een LSMW die in foreground loopt doen verder lopen in errors only mode: /BDE
- Een LSMW die in foreground loopt stoppen: /BEND

 

Code user exit vinden

*
* Finding the user-exits of a SAP transaction code
*
* Enter the transaction code in which you are looking for the user-exit
* and it will list you the list of user-exits in the transaction code.
* Also a drill down is possible which will help you to branch to SMOD.
*
* Written by : SAP Basis, ABAP Programming and Other IMG Stuff
*              http://www.sap-img.com
*

report zuserexit no standard page heading.
tables : tstc, tadir, modsapt, modact, trdir, tfdir, enlfdir.
         tables : tstct.
data : jtab like tadir occurs 0 with header line.
data : field1(30).
data : v_devclass like tadir-devclass.
parameters : p_tcode like tstc-tcode obligatory.

select single * from tstc where tcode eq p_tcode.
if sy-subrc eq 0.
   select single * from tadir where pgmid = 'R3TR'
                    and object = 'PROG'
                    and obj_name = tstc-pgmna.
   move : tadir-devclass to v_devclass.
      if sy-subrc ne 0.
         select single * from trdir where name = tstc-pgmna.
         if trdir-subc eq 'F'.
            select single * from tfdir where pname = tstc-pgmna.
            select single * from enlfdir where funcname =
            tfdir-funcname.
            select single * from tadir where pgmid = 'R3TR'
                               and object = 'FUGR'
                               and obj_name eq enlfdir-area.

            move : tadir-devclass to v_devclass.
          endif.
       endif.
       select * from tadir into table jtab
                     where pgmid = 'R3TR'
                       and object = 'SMOD'
                       and devclass = v_devclass.
        select single * from tstct where sprsl eq sy-langu and
                                         tcode eq p_tcode.
        format color col_positive intensified off.
        write:/(19) 'Transaction Code - ',
             20(20) p_tcode,
             45(50) tstct-ttext.
                    skip.
        if not jtab[] is initial.
           write:/(95) sy-uline.
           format color col_heading intensified on.
           write:/1 sy-vline,
                  2 'Exit Name',
                 21 sy-vline ,
                 22 'Description',
                 95 sy-vline.
           write:/(95) sy-uline.
           loop at jtab.
              select single * from modsapt
                     where sprsl = sy-langu and
                            name = jtab-obj_name.
                   format color col_normal intensified off.
                   write:/1 sy-vline,
                          2 jtab-obj_name hotspot on,
                         21 sy-vline ,
                         22 modsapt-modtext,
                         95 sy-vline.
           endloop.
           write:/(95) sy-uline.
           describe table jtab.
           skip.
           format color col_total intensified on.
           write:/ 'No of Exits:' , sy-tfill.
        else.
           format color col_negative intensified on.
           write:/(95) 'No User Exit exists'.
        endif.
      else.
          format color col_negative intensified on.
          write:/(95) 'Transaction Code Does Not Exist'.
      endif.

at line-selection.
   get cursor field field1.
   check field1(4) eq 'JTAB'.
   set parameter id 'MON' field sy-lisel+1(10).
   call transaction 'SMOD' and skip first   screen.

*---End of Program