Sunday, 2 October 2011

Output Printer parameters to create a spool or direct print

  CALL FUNCTION gdf_fm_name1
  EXPORTING
*   ARCHIVE_INDEX              =
*   ARCHIVE_INDEX_TAB          =
*   ARCHIVE_PARAMETERS         =
    control_parameters         = gds_ctrlop
*   MAIL_APPL_OBJ              =
*   MAIL_RECIPIENT             =
*   MAIL_SENDER                =
    output_options             = gds_outopt
   USER_SETTINGS              = ' '           "important
    IMPORTING
*   DOCUMENT_OUTPUT_INFO       =
    job_output_info            = gdt_otfdata
*   JOB_OUTPUT_OPTIONS         =
    TABLES
    gdt_form_data              = gdt_form_data_fax
 EXCEPTIONS
   formatting_error           = 1
   internal_error             = 2
   send_error                 = 3
   user_canceled              = 4
   OTHERS                     = 5
            .





  DATA: gds_docdata TYPE sodocchgi1,"Data of an object which can changed
gds_ctrlop TYPE ssfctrlop, " Smart Forms: Control structure
gds_outopt TYPE ssfcompop, " SAP Smart Forms: Smart Composer options
gds_otfdata TYPE ssfcrescl, " sF: Return value at end of formprinting
gds_reclist TYPE somlreci1, "SAPoffice: Structure of the API Recip List
gds_pdf_tab TYPE tline. " Workarea for SAP Script Text Lines


gds_ctrlop-preview = ''."Print preview
***gds_ctrlop-no_open = ''.
***gds_ctrlop-no_close = 'X'.
*gds_ctrlop-no_dialog = 'X'.
gds_ctrlop-NO_DIALOG ='X'.
gds_ctrlop-device = 'PRINTER'."ESKERPRDGDR'.
***control_parameters-no_dialog = 'X'.
***control_parameters-no_open = 'X'.
***control_parameters-no_close = 'X'.
*gds_outopt-TDDEST = 'ESKP'."'PRINTER NAME'.
gds_outopt-TDPRINTER = 'HPLJ4'."Spool: Device type name
gds_outopt-TDNOPRINT = ''. "NO PRINT
gds_outopt-tdnewid = 'X'. "New Spool Request
gds_outopt-TDIMMED = 'X'. "Print Immediately

gds_outopt-TDNOPREV = ' '. "No print preview
gds_outopt-TDDATASET = 'FAX'. " Spool request: Name
*gds_outopt-RQPOSNAME = 'ESKERPRDGDR'. "Spool: Long name of printers for host spooler
*gds_outopt-TDCOVTITLE = 'SPOOL FOR FAX'."SPOOL NAME.


to select the printer name in 4 letters

  CALL FUNCTION 'CONVERSION_EXIT_SPDEV_INPUT'
  EXPORTING
    input         = 'eskerprdgdr'
 IMPORTING
   OUTPUT        = gds_outopt-TDDEST

Friday, 30 September 2011

Tcode Assigned to Maintenace view

start transaction SE16 with table TSTCP. After pressing enter, into the 'Parameter' field type: *SM30*name_of_the_Ztable/Zview*. Than go... You definetly find the tcode this eay (if exists...)

give the  PARM anme   *ZEM01T112* and execute.

Wednesday, 28 September 2011

Performance tuning in selection criteria(bold)

Use the selection criteria

SELECT * FROM SBOOK.                    
  CHECK: SBOOK-CARRID = 'LH' AND        
                  SBOOK-CONNID = '0400'.         
ENDSELECT.                              
SELECT * FROM SBOOK                      
  WHERE CARRID = 'LH' AND                
        CONNID = '0400'.                 
ENDSELECT.                               

Use the aggregated functions

C4A = '000'.               
SELECT * FROM T100         
  WHERE SPRSL = 'D' AND    
        ARBGB = '00'.      
  CHECK: T100-MSGNR > C4A. 
  C4A = T100-MSGNR.        
ENDSELECT.                 

SELECT MAX( MSGNR ) FROM T100 INTO C4A  
 WHERE SPRSL = 'D' AND                 
       ARBGB = '00'.                   

Select with view

SELECT * FROM DD01L                     
  WHERE DOMNAME LIKE 'CHAR%'            
        AND AS4LOCAL = 'A'.             
  SELECT SINGLE * FROM DD01T            
    WHERE   DOMNAME    = DD01L-DOMNAME  
        AND AS4LOCAL   = 'A'            
        AND AS4VERS    = DD01L-AS4VERS  
        AND DDLANGUAGE = SY-LANGU.      
ENDSELECT.                              

SELECT * FROM DD01V                     
 WHERE DOMNAME LIKE 'CHAR%'            
       AND DDLANGUAGE = SY-LANGU.      
ENDSELECT.                              

Select with index support

SELECT * FROM T100             
 WHERE     ARBGB = '00'       
       AND MSGNR = '999'.     
ENDSELECT.                     

SELECT * FROM T002.              
  SELECT * FROM T100             
    WHERE     SPRSL = T002-SPRAS 
          AND ARBGB = '00'       
          AND MSGNR = '999'.     
  ENDSELECT.                     
ENDSELECT.                       

Select … Into table

REFRESH X006.                  
SELECT * FROM T006 INTO X006.  
  APPEND X006.                 
ENDSELECT

SELECT * FROM T006 INTO TABLE X006.

Select with selection list

SELECT * FROM DD01L               
  WHERE DOMNAME LIKE 'CHAR%'      
        AND AS4LOCAL = 'A'.       
ENDSELECT

SELECT DOMNAME FROM DD01L     
 INTO DD01L-DOMNAME          
 WHERE DOMNAME LIKE 'CHAR%'  
       AND AS4LOCAL = 'A'.   
ENDSELECT

Key access to multiple lines

LOOP AT TAB.           
 CHECK TAB-K = KVAL.  
 " ...                
ENDLOOP.               

LOOP AT TAB WHERE K = KVAL.      
  " ...                          
ENDLOOP.                         

Copying internal tables

REFRESH TAB_DEST.               
LOOP AT TAB_SRC INTO TAB_DEST.  
  APPEND TAB_DEST.              
ENDLOOP.                        

TAB_DEST[] = TAB_SRC[].

Modifying a set of lines

LOOP AT TAB.              
  IF TAB-FLAG IS INITIAL. 
    TAB-FLAG = 'X'.       
  ENDIF.                  
  MODIFY TAB.             
ENDLOOP.                  

TAB-FLAG = 'X'.                   
MODIFY TAB TRANSPORTING FLAG      
           WHERE FLAG IS INITIAL. 

Deleting a sequence of lines

DO 101 TIMES.                
  DELETE TAB_DEST INDEX 450. 
ENDDO.                       

DELETE TAB_DEST FROM 450 TO 550.

Linear search vs. binary

READ TABLE TAB WITH KEY K = 'X'.

READ TABLE TAB WITH KEY K = 'X' BINARY SEARCH.

Comparison of internal tables

DESCRIBE TABLE: TAB1 LINES L1,       
                TAB2 LINES L2.       
                                     
IF L1 <> L2.                         
  TAB_DIFFERENT = 'X'.               
ELSE.                                
  TAB_DIFFERENT = SPACE.             
  LOOP AT TAB1.                      
    READ TABLE TAB2 INDEX SY-TABIX.  
    IF TAB1 <> TAB2.                 
      TAB_DIFFERENT = 'X'. EXIT.     
    ENDIF.                           
  ENDLOOP.                           
ENDIF.                               
                                     
IF TAB_DIFFERENT = SPACE.            
  " ...                              
ENDIF.                               

IF TAB1[] = TAB2[].   
 " ...               
ENDIF.                

Modify selected components

LOOP AT TAB.            
 TAB-DATE = SY-DATUM.  
 MODIFY TAB.           
ENDLOOP.                

WA-DATE = SY-DATUM.                     
LOOP AT TAB.                            
 MODIFY TAB FROM WA TRANSPORTING DATE. 
ENDLOOP.                                

Appending two internal tables

LOOP AT TAB_SRC.               
  APPEND TAB_SRC TO TAB_DEST.  
ENDLOOP

APPEND LINES OF TAB_SRC TO TAB_DEST.

Deleting a set of lines

LOOP AT TAB_DEST WHERE K = KVAL.  
  DELETE TAB_DEST.                
ENDLOOP

DELETE TAB_DEST WHERE K = KVAL.

Monday, 26 September 2011

TO display the currency in different format in scripts(22,234.00)



DATA:  gds_current LIKE rf140-saldo ,
      gds_current1(17) type c ,
      gds_current2(17) type c. 
gds_current1 = gds_current.

  WHILE gds_current1 is not INITIAL.
    if sy-index = 1.
      CONCATENATE gds_current2 gds_current1+13(3) into gds_current2.
    else.
      CONCATENATE gds_current1+13(3) gds_current2  into gds_current2.
    endif.
    shift gds_current1 by 3 places right.
    check sy-index <> 1.
    if gds_current1 is not INITIAL.
      CONCATENATE  ',' gds_current2 INTO gds_current2.
    endif.
    ENDWHILE.
  MOVE gds_current2 TO gdt_out_tab-value.

Tuesday, 20 September 2011

Using of import and Export parameters in the selection screen


 IMPORT gdf_dynnr TO gdf_dynnr FROM MEMORY ID 'Z1'.
  IMPORT gdf_activetab TO gdf_activetab FROM MEMORY ID 'Z2'.
  FREE MEMORY ID 'Z1'.
  FREE MEMORY ID 'Z2'.
        gdf_dynnr = t1-dynnr.
        gdf_activetab = t1-activetab.
        EXPORT gdf_dynnr FROM gdf_dynnr TO MEMORY ID 'Z1'.
        EXPORT gdf_activetab FROM gdf_activetab TO MEMORY ID 'Z2'.

Calling routine from script(changing more then one value)



 PERFORM FORM_GET_DATA IN PROGRAM ZEL01I0001
                                                    USING &LTAP-LGNUM&
                                                    USING &LTAP-TANUM&
                                                    USING &LTAP-TAPOS&
                                                    USING &LTAP-MATNR&
                                                    USING &LTAP-VSOLA&
                                                    USING &LTAP-ALTME&
                                                    USING &LTAP-VSOLM&
                                                    USING &LTAP-MEINS&
                                                    CHANGING &LDF_MAKTX&
                                                    CHANGING &LDF_QTY&
                                                    CHANGING &LDF_UNIT&
ENDPERFORM


FORM form_get_data TABLES  prt_in_tab  STRUCTURE itcsy      "#EC CALLED
                           prt_out_tab STRUCTURE itcsy.

*  TABLES: LTAP,                                             "#EC NEEDED
*          MARA.                                             "#EC NEEDED

  TYPES: BEGIN OF LTS_LTAP,
            LGNUM TYPE LTAP-LGNUM,
            TANUM TYPE LTAP-TANUM,
            TAPOS TYPE LTAP-TAPOS,
            MAKTX TYPE MAKTX,"MARA-MAKTX,
          END OF LTS_LTAP.

  DATA: LDT_LTAP TYPE TABLE OF LTS_LTAP,
        LDS_LTAP TYPE LTS_LTAP,                             "ZSEL01002,
        LDF_LGNUM LIKE LTAP-LGNUM,
        LDF_LGNUM_TMP LIKE LTAP-LGNUM,
        LDF_TANUM LIKE LTAP-TANUM,
        LDF_TANUM_TMP LIKE LTAP-TANUM,
        LDF_TAPOS LIKE LTAP-TAPOS,
        LDF_MATNR LIKE LTAP-MATNR,
        LDF_VSOLA LIKE LTAP-VSOLA,
        LDF_ALTME LIKE LTAP-ALTME,
        LDF_VSOLM LIKE LTAP-VSOLM,
        LDF_MEINS LIKE LTAP-MEINS,
        Ldf_LVSME type MLGN-LVSME.


  DATA: LDS_IN_TAB LIKE LINE OF PRT_IN_TAB,
        LDF_CONST(13) type c,"LTAP-VSOLM,
        LDF_CONST1(3) type c. "LTAP-MEINS.
*
*  FIELD-SYMBOLS: <FS_FIELD>,
*                 <FS_LTAP> LIKE LDT_LTAP,
*                 <FS_OUT_TAB> TYPE ITCSY.

  CONSTANTS: LCF_LGNUM(11) TYPE C VALUE 'LTAP-LGNUM',     "WAREHOUSE NUMBER
             LCF_TANUM(11) TYPE C VALUE 'LTAP-TANUM',     "TO NUMBER
             LCF_TAPOS(11) TYPE C VALUE 'LTAP-TAPOS',     "TO ORDER ITEM
             LCF_MATNR(11) type c value 'LTAP-MATNR',
             LCF_VSOLA(11) TYPE C VALUE 'LTAP-VSOLA',
             LCF_ALTME(11) TYPE C VALUE 'LTAP-ALTME',
             LCF_VSOLM(11) TYPE C VALUE 'LTAP-VSOLM',
             LCF_MEINS(11) TYPE C VALUE 'LTAP-MEINS',
             LCF_MAKTX(11) TYPE C VALUE 'LDF_MAKTX',     "MATERIAL DESCRIPTION
             LCF_QTY(9) type c value    'LDF_QTY',        "MATERIAL QUANTITY
             LCF_UNIT(10) type c value  'LDF_UNIT'.       "MATERIAL UNIT

  LOOP AT PRT_IN_TAB INTO LDS_IN_TAB.
    CASE LDS_IN_TAB-NAME.
      WHEN LCF_LGNUM.
        MOVE LDS_IN_TAB-VALUE TO LDF_LGNUM.
      WHEN LCF_TANUM.
        MOVE LDS_IN_TAB-VALUE TO LDF_TANUM.
      WHEN LCF_TAPOS.
        MOVE LDS_IN_TAB-VALUE TO LDF_TAPOS.
      WHEN LCF_MATNR.
        MOVE LDS_IN_TAB-VALUE TO LDF_MATNR.
      WHEN LCF_VSOLA.
        MOVE LDS_IN_TAB-VALUE TO LDF_VSOLA.
      WHEN LCF_ALTME.
        MOVE LDS_IN_TAB-VALUE TO LDF_ALTME.
      WHEN LCF_VSOLM.
        MOVE LDS_IN_TAB-VALUE TO LDF_VSOLM.
      WHEN LCF_MEINS.
        MOVE LDS_IN_TAB-VALUE TO LDF_MEINS.

    ENDCASE.
  ENDLOOP.

  IF LDF_LGNUM <> LDF_LGNUM_TMP OR LDF_TANUM <> LDF_TANUM_TMP.
    SELECT          "Choose the records pertaining to the TO number passed
    LGNUM
    TANUM
    TAPOS
    M~MAKTX
    INTO CORRESPONDING FIELDS OF TABLE LDT_LTAP
     FROM
       LTAP AS L
       JOIN MAKT AS M
         ON M~MATNR EQ L~MATNR
          AND M~SPRAS EQ 'E'"SY-LANGU
           WHERE L~TANUM EQ LDF_TANUM
            AND L~LGNUM EQ LDF_LGNUM.
  ENDIF.
  MOVE LDF_LGNUM TO LDF_LGNUM_TMP.
  MOVE LDF_TANUM TO LDF_TANUM_TMP.

 clear: Ldf_LVSME,
        LDF_CONST,
        LDF_CONST1.

  select LVSME    "sandep changes
     from MLGN
     into Ldf_LVSME
     where  MATNR eq ldf_matnr and
            LGNUM eq LDF_LGNUM.
  ENDSELECT.
  IF LDF_LVSME EQ ' '.
    MOVE : LDF_VSOLM TO LDF_CONST,
           LDF_MEINS TO LDF_CONST1.
  ELSE.
    MOVE : LDF_VSOLA TO LDF_CONST,
          LDF_ALTME TO LDF_CONST1.
 ENDIF.

CONDENSE: LDF_CONST,
          LDF_CONST1.

    READ TABLE LDT_LTAP WITH KEY
      TANUM = LDF_TANUM
      TAPOS = LDF_TAPOS
      INTO LDS_LTAP.

    IF SY-SUBRC = 0.
      LOOP AT PRT_OUT_TAB INTO LDS_IN_TAB.
        CASE LDS_IN_TAB.
          WHEN LCF_MAKTX.
            MOVE LDS_LTAP-MAKTX TO LDS_IN_TAB-VALUE.
            MODIFY PRT_OUT_TAB FROM LDS_IN_TAB TRANSPORTING VALUE.
          WHEN LCF_QTY.
            MOVE LDF_CONST TO LDS_IN_TAB-VALUE.
            MODIFY PRT_OUT_TAB FROM LDS_IN_TAB TRANSPORTING VALUE.
          WHEN LCF_UNIT.
            MOVE LDF_CONST1 TO LDS_IN_TAB-VALUE.
            MODIFY PRT_OUT_TAB FROM LDS_IN_TAB TRANSPORTING VALUE.
        ENDCASE.
      ENDLOOP.
    ENDIF.

  ENDFORM.                    "form_get_data