Sub routine in Function module

Hello
i want to create a subroutin in a function module
is it better to do like this
FUNCTION TEST.
perform f_routine using im_bukrs im_werks.
ENDFUNCTION.
form f_routine using im_bukrs im werks.
// here i have to use using import parameter since i wont have access to the import parameter
endform.
or i put the
perform in another include let's say include01 but in this way will i have access to my import parameter directly without the USING

Hi Newbie,
   If you are askign about the parameters used in the subroutines form (im_bukrs and im_werks), you can very well use them in your form as they are getting passed to the form with "USING" statement.
But one thing you need to chnage in the form statement to use this is:
if im_bukrs is of type bukrs
  and im_werks if of type werks
then you have to mention that in your form as
form f_routine using im_bukrs type bukrs
im_ werks type werks.
endform.
   and If you are asking about the Function module parameters  to use in form the you have to declare separately in the program.
Hope this will help
Reagrds.
Swarna Munukoti.
Edited by: Swarna Munukoti on Jul 24, 2008 8:24 AM
Edited by: Swarna Munukoti on Jul 24, 2008 8:25 AM

Similar Messages

  • Handling pop up of sub type HR_MAINTAIN_MASTERDATA function module

    Hi All,
    I am using HR_MAINTAIN_MASTERDATA for creating employee it's working fine but i am not able to handle pop up for sub type.
    For example sub type for Address it gives me pop up with values 1 Permamant address 2 Office address etc.
    Anybody know how to handle such pop up in function module. How to provide values to sub type.
    Thanks in advance.

    Hi,
    <li>Instead of using HR_MAINTAIN_MASTERDATA function module, you can use HR_INFOTYPE_OPERATION, because HR_MAINTAIN_MASTERDATA is used inside HR_INFOTYPE_OPERATION.
    <li>Check the sample program .
    REPORT  ztest_notepad .
    DATA:p0006  TYPE STANDARD TABLE OF p0006 WITH HEADER LINE.
    DATA:return LIKE  bapireturn1.
    p0006-pernr = '00001234'.
    p0006-subty = '2'.
    p0006-endda = '99991231'.
    p0006-begda = sy-datum.
    p0006-anssa = '2'.
    p0006-name2 = 'xyz'.
    p0006-stras = 'Street 64'.
    p0006-ort01 = 'US'.
    p0006-pstlz = '560634'.
    APPEND p0006.
    CLEAR  p0006.
    LOOP AT p0006.
      CALL FUNCTION 'HR_EMPLOYEE_ENQUEUE'
        EXPORTING
          number = p0006-pernr.
      CALL FUNCTION 'HR_INFOTYPE_OPERATION'
        EXPORTING
          infty         = '0006'
          number        = p0006-pernr
          subtype       = p0006-subty
          validityend   = p0006-endda
          validitybegin = p0006-begda
          record        = p0006
          operation     = 'INS'
          tclas         = 'A'
        IMPORTING
          return        = return.
      IF  return IS INITIAL.
        WRITE 'Successfully records created'.
      ENDIF.
      CALL FUNCTION 'HR_EMPLOYEE_DEQUEUE'
        EXPORTING
          number = p0006-pernr.
    ENDLOOP.
    Thanks
    Venkat.O

  • Conversion Routines and Function Modules

    Hi All,
    I have to write the Conversion Routines and Transformation Process for below Fields,
    I have a situation, where am having text files with the data having below fields, and before uploading the data to Database i have to do conversion.
    So anybody Plz help me regarding this conversion topic how to write the process and how to write the code.
    Table       Field Name  Type    Length        Short Text
    BKPF     BLART       CHAR     2     Document Type       
    BKPF     BUKRS       CHAR     4     Company Code     
    BSEG     BUKRS       CHAR     4     Company Code     
    BSEG     HKONT       CHAR     10     General Ledger Account
    BSEG     KOSTL       CHAR     10     Cost Center       
    BSEG     VERTN       CHAR      13     Contract Number     
    KNA1     KUNNR       CHAR     10     Customer Number

    Hi Bala
      Supposing all the fields exist in internal table itab. You can add the code simple as below:
    loop at itab.
       perform conv_fld changing: itab-bukrs,
                                  itab-blart,
                                  itab-hkont,
                                  itab-kostl,
                                  itab-vertn,
                                  itab-kunnr.
    endloop.
    *&      Form  conv_fld
    FORM conv_fld  CHANGING fld.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT         = fld
    IMPORTING
       OUTPUT        = fld.
    ENDFORM.                    " conv_fld
    So for each field depending on its length the conversion routine acts and gives the right output. Please make sure, that your internal table if defined with the right field references or length.
    Kind Regards
    Eswar

  • Exiting from a function module.

    Hi,
    I have a function module in which i am extracting output message from NAST based on vbeln.
    I record is not found, then i am updating return table with error message using 'MESSAGE_TEXT_BUILD'.
    Now i have to exit from the function module as my select statement is unsuccessful.
    how do you do this?
    can i use subroutines in a function module?
    thanks,
    Sandeep

    Hi Sandeep,
    You can use EXIT statement to exit out of the FM.
    Yes, you can use sub-routines in Function Module. If you are using EXIT inside a sub-routine, the program control will come out of sub-routine and not the FM> So if it is inside a sub-routine, return sy-subrc value as a parameter of the sub-routine. Outside the sub-routine, check the value and use EXIT statement accordingly.
    Best Regards,
    Ram.

  • How to use selection-screen in function module?

    Hello
    I've created a function module and i have to create within the function module a selection-screen(with select-options for entering data) but i get an error that within form routines and function modules this statement is not allowed.
    Can anybody help?
    thanx

    Hi,
       YOu cannot create a selection screen withing a function module.
    What you can do is to call a screen , say '0100'.
    Create a screen '0100' and then include a selection -screen as a subscreen in that screen.
    Regards,
    Ravi

  • Calling a function module from within a transformation routine

    I created a routine within a transformation and experience the following weird behavior now:
    When I call a function module within that routine, the load fails with the following error message:
    Exceptions in Substep: Rules
    When I click on the button next to this text, it point me to my function module call.
    What I do not understand is, that the following two scenarios work fine:
    - Having the same function call (with fake values) in a plain ABAP program works beautilfully
    - If I copy the content of my function module directly into my transformation routine, everything works fine as well
    I am now wondering whether the routine does not "see" the function module I am calling. The module resides in a different package. Is that a problem? Do I have to include something first?
    Here is the code that calls my FM (
    CALL FUNCTION 'Z_CA_CONVERT_US_COST'
         EXPORTING
            PSOURCEVAL                      = SOURCE_FIELDS-/BIC/USFRZMFC
            PSOURCEUOM                      = SOURCE_FIELDS-BASE_UOM
            PUSITM                          = SOURCE_FIELDS-/BIC/USITM
            PTARGETUOM                      = PRODUCTION_UOM
         IMPORTING
            PTARGETVAL                = RESULT
         EXCEPTIONS
           CONVERSION_NOT_MAINTAINED = 1
           PARTNO_NOT_FOUND          = 2
           OTHERS                    = 3.
    Thanks a lot for your help. Points will be assigned.
    Dennis

    Good catch, BI Learner. This was exactly it: when assigning the values from SOURCEFIELDS directly to the import/export parameters, you have to make sure that the types are EXACTLY the same, otherwise it will not work (the routine stops with an error when calling the FM, but there is no dump).
    Therefore, to solve my problem, I created the declarations precisely as expected by the FM and assigned the values to these fields:
    DATA:
          SOURCEVAL TYPE  /BIC/OIINVQTY,
          SOURCEUOM TYPE  /BIC/OIUSUOM,
          USITM TYPE  /BIC/OIUSITM,
          TARGETUOM TYPE  /BIC/OIUSUOM,
          CONVERTED_COST TYPE  /BIC/OIINVQTY.
    DATA PRODUCTION_UOM TYPE /BIC/OIUSUOM.
    " get the Production UOM
        SELECT SINGLE I~/BIC/USPRDUOM
          FROM /BIC/PUSITM AS I
          INTO PRODUCTION_UOM
          WHERE I~/BIC/USITM = SOURCE_FIELDS-/BIC/USITM AND I~OBJVERS = 'A'.
        IF ( SY-SUBRC = 4 ). " no records found
          "RAISE PARTNO_NOT_FOUND.
          RAISE EXCEPTION TYPE CX_RSROUT_SKIP_RECORD.
        ENDIF.
    " load the parameters
        SOURCEVAL = SOURCE_FIELDS-/BIC/USFRZMFC.
        SOURCEUOM = SOURCE_FIELDS-BASE_UOM.
        USITM = SOURCE_FIELDS-/BIC/USITM.
    " then you can call the FM
        CALL FUNCTION 'Z_CA_CONVERT_US_COST'
          EXPORTING
            PSOURCEVAL                = SOURCEVAL
            PSOURCEUOM                = SOURCEUOM
            PUSITM                    = USITM
            PTARGETUOM                = PRODUCTION_UOM
          IMPORTING
            PTARGETVAL                = CONVERTED_COST
          EXCEPTIONS
            CONVERSION_NOT_MAINTAINED = 1
            PARTNO_NOT_FOUND          = 2
            OTHERS                    = 3.
    " ... [do the rest]
    Thanks for your help,
    Dennis

  • POPUP_UNIT_CONVERSION SAP Function module in Transformation routine

    Hi Experts,
    I'm using above function module to convert the value of measuring document. I have the unit value in and unit value out, I need help on how to achieve this with function module in the routine... I wrote below code but it is giving me errors...
    CALL FUNCTION POPUP_UNIT_CONVERSION
                  EXPORTING
                        VALUE_IN = 'SOURCE_FIELDS-DESIR'
                        INDICATOR_VALUE = ' '
                        UNIT_IN = 'SOURCE_FIELDS-MSSIE'
                        UNIT_OUT = 'SOURCE_FIELDS-RECDU'
                        POSITION_COLUMN = '20 '
                        POSITION_ROW = '5'
                   IMPORTING
                         VALUE_out.
    RESULT = VALUE_out.
    Can any of you guys used this before , can you please sugget the code. Thanks
    -Ganesh

    Hi Ganesh,
    I suggest to use Function Module UNIT_CONVERSION_SIMPLE. The Function Module you mentioned seems to be applicable for dialog processing.
    The coding could look as follows:
    CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
      EXPORTING
        INPUT    = SOURCE_FIELDS-DESIR
        UNIT_IN  = SOURCE_FIELDS-MSSIE
        UNIT_OUT = SOURCE_FIELDS-RECDU
      IMPORTING
        OUTPUT   = RESULT.
    Best regards,
    Sander

  • BOM function module to find sub components

    Hi all ,
    I got a requirement . I have to find out the components required for a given product .Like if A is made up of X,Y and Z . If i have A , a final product , then how could i  know its sub components  X,Y and Z .
    Is there any Function module .
    Regards ,
    Raj

    Aparna,
    One doubt.Does the function module metioned by you will even explode if a Component under the header material is having a sub-assembly  which again is having some components and those componenets also have sub-assembly so on....
    I mean in one shot if we give the header material it should explode all the BOMS of the corresponding components.
    We have developed a small program kindly have a look at it.Does this whole program can be replaced by that function module alone?
    As we need supply area w.r.t a component under header material we are displaying only those fields in the output.
    REPORT ZBOMEXPLOSION.
    TABLES: MBEW,
            MARA, "Material Master
            MAKT,
            MARC,
            MAST, "BOM Header
            STKO, "BOM Detail
            STPO, "Bom Components
            STAS. "BOM Alternative
    *Declarations for ALV
    type-pools slis.
    DATA:itfieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
    DATA:itrepid TYPE sy-repid.
    itrepid = sy-repid.
    DATA:itevent TYPE slis_t_event.
    DATA:itlistheader TYPE slis_t_listheader.
    DATA:walistheader LIKE LINE OF itlistheader.
    DATA:itlayout TYPE slis_layout_alv.
    DATA:top TYPE slis_formname.
    DATA:itsort TYPE slis_t_sortinfo_alv WITH HEADER LINE.
    DATA :itsort1 TYPE slis_sortinfo_alv.
    DATA:itprintparams TYPE slis_print_alv.
    DATA:itvariant TYPE disvariant.
    data : title type lvc_title.
    field-symbols <fs> type LVC_TITLE.
    concatenate 'BOM Explosion level by level' ' ' into title separated by
    space.
    assign title to <fs>.
    DATA:PARENT-MATNR LIKE MAST-MATNR,
    CHILD-MATNR LIKE STPO-IDNRK,
    CHILD-WERKS LIKE MAST-WERKS,
    CHILD-STLAL LIKE MAST-STLAL,
    W_MAKTX LIKE MAKT-MAKTX,
    W_LEVEL TYPE I,
    W_DOT(1),
    W_LVL(12),
    W_LVL1(12),
    W_LVL2(2),
    WCNT TYPE I.
    DATA: BEGIN OF ITAB OCCURS 100,
    CNT TYPE I,
    LEVEL TYPE I,
    LVL1 LIKE W_LVL1,
    WERKS LIKE MAST-WERKS,
    POSNR LIKE STPO-POSNR,
    IDNRK LIKE STPO-IDNRK,
    PRVBE LIKE STPO-PRVBE,
    END OF ITAB.
    DATA: BEGIN OF ITAB1 OCCURS 100,
    WERKS LIKE MAST-WERKS,
    IDNRK LIKE STPO-IDNRK,
    END OF ITAB1.
    DATA: BEGIN OF ITAB2 OCCURS 100,
    CNT TYPE I,
    SUBCNT TYPE I,
    LEVEL TYPE I,
    LVL1 LIKE W_LVL1,
    WERKS LIKE MAST-WERKS,
    POSNR LIKE STPO-POSNR,
    IDNRK LIKE STPO-IDNRK,
    prvbe like stpo-prvbe,
    SBASE TYPE P,
    MAKTX LIKE MAKT-MAKTX,
    END OF ITAB2.
    PARAMETERS: P_WERKS LIKE MAST-WERKS,
                P_MATNR LIKE MAST-MATNR,
                P_STLNR LIKE MAST-STLNR,
                P_STLAN LIKE MAST-STLAN,
                P_STLAL LIKE MAST-STLAL.
    perform zmm.
    perform alv.
    *&      Form  zmmspt
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form zmm .
    SELECT * FROM MAST WHERE WERKS = P_WERKS
                         AND MATNR = P_MATNR
                         AND STLNR = P_STLNR
                         AND STLAN = P_STLAN
                         AND STLAL = P_STLAL.
    SELECT SINGLE * FROM MARA WHERE MATNR = MAST-MATNR.
    IF SY-SUBRC NE 0.
    CONTINUE.
    ENDIF.
    IF MARA-LVORM <> 'X'.
    PARENT-MATNR = MAST-MATNR.
    CHILD-MATNR = MAST-MATNR.
    CHILD-WERKS = MAST-WERKS.
    CHILD-STLAL = MAST-STLAL.
    CLEAR ITAB.
    CLEAR ITAB-LEVEL.
    MOVE MAST-WERKS TO ITAB-WERKS.
    MOVE MAST-MATNR TO ITAB-IDNRK.
    WCNT = WCNT + 1.
    MOVE WCNT TO ITAB-CNT.
    APPEND ITAB.
    W_LEVEL = 1.
    PERFORM GETCHILD.
    ENDIF.
    ENDSELECT.
    SORT ITAB BY LEVEL DESCENDING.
    LOOP AT ITAB.
    PERFORM GET_BOM.
    MOVE ITAB-WERKS TO ITAB1-WERKS.
    MOVE ITAB-IDNRK TO ITAB1-IDNRK.
    APPEND ITAB1.
    CLEAR ITAB2.
    MOVE-CORRESPONDING ITAB TO ITAB2.
    APPEND ITAB2.
    ENDLOOP.
    SORT ITAB2 BY CNT.
    LOOP AT ITAB2.
    CLEAR: MAKT-MAKTX.
    SELECT SINGLE * FROM MAKT WHERE MATNR = ITAB2-IDNRK AND
    SPRAS = 'E'.
    SELECT SINGLE * FROM MBEW WHERE MATNR = ITAB2-IDNRK AND
    BWKEY = ITAB2-WERKS.
    ITAB2-MAKTX = MAKT-MAKTX.
    MODIFY ITAB2.
    ENDLOOP.
    endform.                    " zmm
    *&      Form  GETCHILD
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form GETCHILD .
    SELECT * FROM STPO WHERE STLNR = MAST-STLNR
    ORDER BY POSNR.
    SELECT SINGLE * FROM STKO WHERE STLNR = STPO-STLNR
    AND STLAL = MAST-STLAL.
    SELECT SINGLE * FROM STAS WHERE STLNR = STPO-STLNR AND
    STLKN = STPO-STLKN AND
    STLAL = MAST-STLAL.
    IF SY-SUBRC EQ 0.
    CLEAR: W_DOT, W_LVL, W_LVL1.
    PERFORM MOV_DATA.
    CHILD-MATNR = STPO-IDNRK.
    W_LEVEL = W_LEVEL + 1.
    PERFORM SUBCHILD.
    W_LEVEL = W_LEVEL - 1.
    ENDIF.
    ENDSELECT.
    endform.                    " GETCHILD
    *&      Form  SUBCHILD
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form SUBCHILD .
    SELECT SINGLE * FROM MAST WHERE MATNR = CHILD-MATNR
    AND WERKS = CHILD-WERKS.
    IF SY-SUBRC NE 0.
    EXIT.
    ENDIF.
    SELECT * FROM STPO WHERE STLNR = MAST-STLNR
    ORDER BY POSNR.
    SELECT SINGLE * FROM STKO WHERE STLNR = STPO-STLNR AND
    STLAL = MAST-STLAL.
    SELECT SINGLE * FROM STAS WHERE STLNR = STPO-STLNR AND
    STLKN = STPO-STLKN AND
    STLAL = STKO-STLAL.
    IF SY-SUBRC EQ 0.
    W_DOT = '.'.
    PERFORM MOV_DATA.
    CHILD-MATNR = STPO-IDNRK.
    W_LEVEL = W_LEVEL + 1.
    PERFORM SUBCHILD.
    W_LEVEL = W_LEVEL - 1.
    SHIFT W_LVL.
    ENDIF.
    ENDSELECT.
    endform.                    " SUBCHILD
    *&      Form  MOV_DATA
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form MOV_DATA .
    W_LVL2 = W_LEVEL.
    CONCATENATE W_DOT W_LVL INTO W_LVL.
    CONCATENATE W_LVL W_LVL2 INTO W_LVL1.
    MOVE W_LVL1 TO ITAB-LVL1.
    MOVE W_LEVEL TO ITAB-LEVEL.
    MOVE MAST-WERKS TO ITAB-WERKS.
    MOVE STPO-POSNR TO ITAB-POSNR.
    MOVE STPO-IDNRK TO ITAB-IDNRK.
    MOVE STPO-PRVBE TO ITAB-PRVBE.
    WCNT = WCNT + 1.
    ITAB-CNT = WCNT.
    APPEND ITAB.
    endform.                    " MOV_DATA
    *&      Form  GET_BOM
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form GET_BOM .
    SELECT SINGLE * FROM MAST WHERE MATNR EQ ITAB-IDNRK AND
    WERKS = ITAB-WERKS.
    IF SY-SUBRC EQ 0.
    SELECT * FROM STPO WHERE STLTY = 'M' AND
    STLNR = MAST-STLNR AND
    DATUV LE SY-DATUM.
    SELECT SINGLE * FROM STKO WHERE STLTY = 'M' AND
    STLNR = STPO-STLNR AND
    STLAL = MAST-STLAL.
    SELECT SINGLE * FROM STAS WHERE STLNR = STPO-STLNR AND
    STLKN = STPO-STLKN AND
    STLAL = STKO-STLAL.
    ENDSELECT.
    ENDIF.
    endform.                    " GET_BOM
    *&      Form  alv
    *       text
    *  -->  p1        text
    *  <--  p2        text
    form alv .
    IF itab2[] IS INITIAL.
    MESSAGE 'No Values exist for the Selection.' TYPE 'S'.
    STOP.
    ENDIF.
    DEFINE m_fieldcat.
        itfieldcat-fieldname = &1.
        itfieldcat-col_pos = &2.
        itfieldcat-seltext_l = &3.
        itfieldcat-do_sum = &4.
        itfieldcat-outputlen = &5.
        append itfieldcat to itfieldcat.
        clear itfieldcat.
      END-OF-DEFINITION.
      m_fieldcat 'LVL1' '' 'Level' '' 04.
      m_fieldcat 'POSNR' '' 'Item' '' 06.
      m_fieldcat 'IDNRK' '' 'Component' '' 18.
      m_fieldcat 'MAKTX' '' 'Description'  '' 40.
      m_fieldcat 'PRVBE' '' 'Supply Area' '' 12.
      itlayout-zebra = 'X'.
      itlayout-colwidth_optimize = 'X'.
      itlayout-no_subtotals = ' '.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
    *     I_INTERFACE_CHECK              = ' '
    *     I_BYPASSING_BUFFER             =
    *     I_BUFFER_ACTIVE                = ' '
         I_CALLBACK_PROGRAM             = sy-repid
    *     I_CALLBACK_PF_STATUS_SET       = ' '
    *     I_CALLBACK_USER_COMMAND        = ' '
    *     I_STRUCTURE_NAME               =
         IS_LAYOUT                      = itlayout
         IT_FIELDCAT                    = itfieldcat[]
    *     IT_EXCLUDING                   =
    *     IT_SPECIAL_GROUPS              =
         IT_SORT                        = itsort[]
    *     IT_FILTER                      =
    *     IS_SEL_HIDE                    =
    *     I_DEFAULT                      = 'X'
    *     I_SAVE                         = ' '
    *     IS_VARIANT                     =
    *     IT_EVENTS                      =
    *     IT_EVENT_EXIT                  =
    *     IS_PRINT                       =
    *     IS_REPREP_ID                   =
    *     I_SCREEN_START_COLUMN          = 0
    *     I_SCREEN_START_LINE            = 0
    *     I_SCREEN_END_COLUMN            = 0
    *     I_SCREEN_END_LINE              = 0
    *   IMPORTING
    *     E_EXIT_CAUSED_BY_CALLER        =
    *     ES_EXIT_CAUSED_BY_USER         =
        TABLES
          t_outtab                       = itab2
    *   EXCEPTIONS
    *     PROGRAM_ERROR                  = 1
    *     OTHERS                         = 2
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    EXPORT ITAB2 TO MEMORY ID 'KK_ITAB2'.
    endform.                    " alv
    K.Kiran.

  • Routine based on Function Module

    Hello All,
    i have to write code for a routine using a custom function module that is created previously.
    the function has input parameter IN_YEAR_WEEK  and output parameter EN_WEEK_1 ,  EN_WEEK_2.
    this routine is in the transformation between cube and open hub between the 0calweek of the cube and a custom field znum_week in the open hub.
    the input parameter of the function like 201005 (the fifth week in 2010 year) is the same value that i will have in the 0calweek of my cube and give in output 2 parameters between 0 and 5 that's mean the number of week in the month.
    the value between 0 and 5 should be puted in the znum_week field
    if the function return value between 1 and 5 i should have duplicate records in the open hub file.
    can you give me please some advice how should be my abap coding for this routine.
    should i use start routine? or routine of the single field?
    thanks
    Bilal

    Hi ALL,
    i have created this code for start routine to duplicate records in my open hub, can you tell me please if the logic is correct?
    data: v_week_1 like n.
    data : v_week_2 like n.
    DATA: vn_tabix LIKE sy-tabix.
    data: wa_temp LIKE SOURCE_PACKAGE.
    LOOP AT SOURCE_PACKAGE ASSIGNING <SOURCE_FIELDS>.
    CALL FUNCTION ' ZIV_DP_FUNC_NUM_WEEK_LA '
        EXPORTING
            IN_YEAR_WEEK = <SOURCE_FIELDS>-/bic/0calweek
        IMPORTING
          EN_WEEK_1  = v_week_1
           EN_WEEK_2  =  v_week_2.
    If v_week_1 between 1 and 5 and v_week_2 = 0
    <SOURCE_FIELDS>-/bic/0calweek = v_week_1.
    MODIFY SOURCE_PACKAGE INDEX vn_tabix FROM < SOURCE_FIELDS>.
    Endif.
    Else
    If  v_week_1 between 1 and 5 and v_week_2  between 1 and 5
    <SOURCE_FIELDS>-/bic/0calweek = v_week_1.
    MODIFY SOURCE_PACKAGE INDEX vn_tabix FROM < SOURCE_FIELDS>.
    MOVE <SOURCE_FIELDS> to wa_temp.
    wa_temp-/bic/0calweek = v_week_2.
    APPEND wa_temp TO SOURCE_PACKAGE.
    Endif.
    REFRESH: wa_temp.
    thanks a lot
    Bilal

  • Function Module to retrive conversion exit function module names based on conversion routine

    Hi All,
    Can you people help me out in finding a function module, which takes conversion routine name as input and gives all the conversion exit function modules as output.
    Thanks and Regards,
    Shivaraj Naik.

    Curious, I looked for the way SAP do the job in SE11, and they also use the CONCATENATE option...
    From Include LSD11F01 Form OBJ_GOTO
    *       Objektspezifische Navigationsziele
    *      --> GOTOID   Kennung für Navigationsziele
    *      --> DDNAME   Dictonary-Name
    form obj_goto using  gotoid type gotoid
                         ddname.
      case gotoid.
        when 'CNVE'.   "Konvertierungsexit zu Domäne
          data: wb_request type ref to cl_wb_request.
          data: fb_name like tfdir-funcname
                            value 'CONVERSION_EXIT_'.
          concatenate fb_name ddname '*' into fb_name.
          condense fb_name.
    * Request für Infosystem erzeugen
          class cl_wb_infosystem definition load.
          call method cl_wb_infosystem=>create_request
            exporting
              p_object_type        = 'FF'
              p_object_name        = fb_name
              p_operation          = swbm_c_op_search
              p_suppress_selection = 'X'
              p_show_as_popup      = 'X'
            importing
              p_wb_request         = wb_request
            exceptions
              action_cancelled     = 1
              execute_in_batch     = 2
              error_occured        = 3.
    Regards,
    Raymond

  • Possibility to write Functional module in "end routines"

    Hello guys,
    Can you please tell me whether we can write functional module in end routines or not??? If yes,then what is the procedure?
    Thanks in advance,
    Regards,
    Bunty.

    End routines are a feature of BI 7.0, allowing you to take the end results of a transformation, and muck it about with ABAP.
    It is not possible to WRITE function modules in end routines. But it is possible to use them. Function modules exist inside function groups - not end routines.

  • Help needed - ABAP for  function modules and routines.

    Dear BW gurus,
    Hope everyone is doing great.
    I gotta project recently and we are going live in 3 weeks.My BWLead is getting rolled out in a week and he has to make the knowledge transfer to me ASAP.The bottle-necking thing is I need to have a good idea about the function modules and routines.So I request our SND community to help me out with good ABAP documents for function modules,routines and query.
    my mail id is [email protected]
    Thanks in advance
    Have a nice day
    Regards
    sathiya

    Hello Sam,
    You can create function module in ABAP using tcode SE37.
    For more informations on ABAP:
    http://help.sap.com/saphelp_47x200/helpdata/en/c9/5472f6787f11d194c90000e8353423/frameset.htm
    Use http://help.sap.com
    and also use <b>ABAPDOCU</b> transaction.
    Check these links also...
    <b>Online PDFs:</b>
    http://easymarketplace.de/online-pdfs.php
    <b>ABAP HELP</b>
    If you check these links, you can find many example programs.
    http://www.sap-img.com/abap.htm
    http://www.sapdevelopment.co.uk/tips/tipshome.htm
    http://help.sap.com/printdocu/core/Print46c/en/Data/Index_en.htm
    http://sap.ittoolbox.com/nav/t.asp?t=322&p=322&h1=322
    http://sappoint.com/abap/
    FAQs in ABAP
    http://www.sap-img.com/abap/more-than-100-abap-interview-faqs.htm
    Smart forms
    http://www.sap-basis-abap.com/sapsf001.htm
    Workflow
    <http://www.sap-img.com/workflow/sap-workflow.htm>
    ALV
    http://www.geocities.com/mpioud/Abap_programs.html
    Mail
    http://www.geocities.com/mpioud/Z_EMAIL_ABAP_REPORT.html
    http://www.thespot4sap.com/Articles/SAP_Mail_SO_Object_Send.asp
    Table control in BDC
    http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm
    SAP Scripts:
    http://sappoint.com/abap/
    http://www.henrikfrank.dk/abapuk.html
    Some useful ABAP Links for learning:
    http://cma.zdnet.com/book/abap/index.htm
    http://www.sapdevelopment.co.uk/
    http://www.sap-img.com/
    http://juliet.stfx.ca/people/fac/infosys/abap.htm
    http://help.sap.com/saphelp_46c/helpdata/en/d3/2e974d35c511d1829f0000e829fbfe/frameset.htm
    http://help.sap.com/saphelp_46c/helpdata/en/d6/0db357494511d182b70000e829fbfe/frameset.htm
    http://www.henrikfrank.dk/abapexamples/SapScript/sapscript.htm
    http://www.sapgenie.com/abap/example_code.htm
    http://www.geocities.com/SiliconValley/Campus/6345/abapindx.htm
    http://help.sap.com/printdocu/core/Print46c/en/Data/Index_en.htm
    http://help.sap.com/saphelp_40b/helpdata/en/4f/991f82446d11d189700000e8322d00/applet.htm
    http://www.sap-img.com/abap-function.htm
    http://www.sapgenie.com/abap/code/abap19.htm
    http://www.sap-img.com/abap/more-than-100-abap-interview-faqs.htm
    http://www.planetsap.com/Tips_and_Tricks.htm
    http://help.sap.com/saphelp_40b/helpdata/ru/d6/0dc169494511d182b70000e829fbfe/applet.htm
    http://www.henrikfrank.dk/abapexamples/SapScript/symbols.htm
    http://www.henrikfrank.dk/abapexamples/index.html
    http://sap.ittoolbox.com/documents/document.asp?i=752
    http://members.aol.com/_ht_a/skarkada/sap/
    http://sappoint.com/abap/
    http://members.tripod.com/abap4/SAP_Functions.html
    http://members.ozemail.com.au/~anmari/sap/index.html
    http://www.planetsap.com/Userexit_List.htm
    http://www.planetsap.com/Tips_and_Tricks.htm
    http://www.kabai.com/abaps/q.htm
    http://www.planetsap.com/Userexit_List.htm
    http://help.sap.com/saphelp_bw21c/helpdata/en/c4/3a8090505211d189550000e829fbbd/frameset.htm
    http://www.sapgenie.com/abap/bapi/example.htm
    http://help.sap.com/saphelp_45b/helpdata/en/65/897415dc4ad111950d0060b03c6b76/content.htm
    http://www.sap-basis-abap.com/index.htm
    http://help.sap.com/saphelp_40b/helpdata/en/fc/eb2c46358411d1829f0000e829fbfe/frameset.htm
    http://help.sap.com/saphelp_46c/helpdata/en/aa/aeb23789e95378e10000009b38f8cf/frameset.htm
    http://www.geocities.com/ResearchTriangle/1635/system.html
    http://www.sapdesignguild.org/resources/MiniSG/3_Managing/3_Functions_Table_Control.htm
    http://help.sap.com/saphelp_45b/helpdata/en/d1/801bdf454211d189710000e8322d00/content.htm
    http://www.sapfans.com/sapfans/repos/saprep.htm
    http://www.planetsap.com/howdo_a.htm
    http://help.sap.com/saphelp_util464/helpdata/en/69/c2516e4ba111d189750000e8322d00/content.htm
    http://www.sapgenie.com/abap/smartforms_detail.htm
    http://www.sap-img.com/abap.htm
    http://help.sap.com/saphelp_46c/helpdata/en/fc/eb2d67358411d1829f0000e829fbfe/content.htm
    http://www.geocities.com/victorav15/sapr3/abap.html
    http://www.henrikfrank.dk/abapexamples/SapScript/sapscript.htm
    http://abap4.tripod.com/Other_Useful_Tips.html
    http://help.sap.com/saphelp_45b/helpdata/en/cf/21ee2b446011d189700000e8322d00/content.htm
    http://www.sap-basis-abap.com/sapmm.htm
    http://sap.ittoolbox.com/nav/t.asp?t=303&p=448&h1=303&h2=322&h3=448
    http://sapfans.com/
    http://cma.zdnet.com/book/abap/ch03/ch03.htm
    http://help.sap.com/saphelp_40b/helpdata/en/4f/991f82446d11d189700000e8322d00/applet.htm
    http://sappoint.com/abap/
    http://www.henrikfrank.dk/abapuk.html
    http://www.sts.tu-harburg.de/teaching/sap_r3/ABAP4/abapindx.htm
    http://www.sapgenie.com/abap/index.htm
    http://www.sap-img.com/abap.htm
    http://www.sapdevelopment.co.uk/tips/tipshome.htm
    http://help.sap.com/printdocu/core/Print46c/en/Data/Index_en.htm
    http://sap.ittoolbox.com/nav/t.asp?t=322&p=322&h1=322
    http://sap.ittoolbox.com/nav/t.asp?t=448&p=448&h1=448
    http://www.thespot4sap.com/
    http://www.kabai.com/abaps/q.htm
    http://www.geocities.com/mpioud/Abap_programs.html
    http://www.sapgenie.com/abap/tips_and_tricks.htm
    http://www.sapassist.com/code/d.asp?whichpage=1&pagesize=10&i=10&a=c&o=&t=&q=&qt=
    For FAQ
    http://www.sap-img.com/abap/more-than-100-abap-interview-faqs.htm
    http://www.sapgenie.com/faq/abap.htm
    BAPI-step by step
    http://www.sapgenie.com/abap/bapi/example.htm
    http://www.sapgenie.com/abap/bapi/example.htm
    Web log for receive email and processing it through ABAP
    /people/thomas.jung3/blog/2004/09/09/receiving-e-mail-and-processing-it-with-abap--version-610-and-higher
    For Logical database
    http://help.sap.com/saphelp_46c/helpdata/en/9f/db9bed35c111d1829f0000e829fbfe/frameset.htm
    http://help.sap.com/saphelp_46c/helpdata/EN/35/2cd77bd7705394e10000009b387c12/frameset.htm
    Useful link to websites
    http://www.hernangn.com.ar/sap.htm
    Useful for background
    http://www.sappoint.com/basis/bckprsng.pdf
    http://help.sap.com/saphelp_nw04/helpdata/en/6f/08703713bf277ee10000009b38f8cf/frameset.htm
    http://publib.boulder.ibm.com/infocenter/wbihelp/index.jsp?topic=/com.ibm.wbix_adapters.doc/doc/mysap4/sap4x41.htm
    Table control in BDC
    http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm
    For posting web log,
    /people/sap.user72/blog/2005/06/28/sdn-weblogs-making-it-easier
    Dynamic Internal table -web log in sdn
    /people/subramanian.venkateswaran2/blog/2004/11/19/dynamic-internal-table
    ALV
    http://www.geocities.com/mpioud/Abap_programs.html
    Mail
    http://www.geocities.com/mpioud/Z_EMAIL_ABAP_REPORT.html
    http://www.thespot4sap.com/Articles/SAP_Mail_SO_Object_Send.asp
    http://www.sapdevelopment.co.uk/reporting/email/attach_xls.htm
    BOM Explosion
    /people/prakash.singh4/blog/2005/05/15/explode-boms-in-enterprise-portal-using-htmlb-tree--part-1-abap
    BOM
    http://help.sap.com/saphelp_erp2005/helpdata/en/ea/e9b7234c7211d189520000e829fbbd/frameset.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/d1/2e4114a61711d2b423006094b9d648/frameset.htm
    http://www.sap-img.com/sap-sd/sales-bom-implementation.htm
    http://www.sap-basis-abap.com/sappp007.htm
    OLE
    http://www.sapgenie.com/abap/ole.htm
    http://help.sap.com/saphelp_46c/helpdata/en/59/ae3f2e488f11d189490000e829fbbd/frameset.htm
    ALVGRID with refresh
    http://www.geocities.com/mpioud/Z_DEMO_ALV_REFRESH_BUTTON.html
    For language setting and decimal separator
    /people/horst.keller/blog/2004/11/16/abap-geek-7-150-babylonian-confusion
    Oracle queries
    http://sqlzoo.net/
    To format SQL
    http://www.sqlinform.com/
    SCOT settings
    http://www.sap-img.com/basis/basis-faq.htm
    Status Icon [ALV,Table Control,Tab Strip]
    http://www.sapdesignguild.org/resources/MiniSG-old/from_develop/norm_status_icons.htm#positioning_4
    ALV Group Heading
    http://www.sap-img.com/fu037.htm
    For multiMedia
    /people/thomas.jung3/blog/2005/05/11/using-classic-activex-controls-in-the-abap-control-framework
    Uploading LOGO in SAP
    http://www.sap-img.com/ts001.htm
    LSMW
    http://www.sap-img.com/sap-data-migration.htm
    http://www.sapgenie.com/saptech/lsmw.htm
    http://sapabap.iespana.es/sapabap/manuales/pdf/lsmw.pdf
    http://www.sap.info/public/INT/int/glossary/int/glossaryletter/Word-17643ed1d6d658821_glossary/L#Word-17643ed1d6d658821_glossary
    http://www.consolut.de/saphelp/sap_online_help.html
    http://www.sap-img.com/
    http://www.sappoint.com/
    http://www.sapdevelopment.co.uk/
    http://www.allsaplinks.com/idoc_search.html
    Best Regards,
    Thangesh

  • Difference between Function Module and Routine

    Hi,
      I am zero at ABAP Skill.
      Can any one explain me what is the difference between Routine in BW  and Function Module .
    Thanks

    Hi,
    well basically it is almost the same. Both have a defined interface. You can pass variables to them and they can return variables. They can also change parameters... The main difference is, that a routine (form routine) can be used within the program where it is defined only and a function module can be used in all programs, form routines.
    regards
    Siggi

  • A FUNCTION MODULE FOR THE HR MODULE FOR PAYROLL OF EMPLOYEES

    hi,
    i want some a function module or code where i need to get the payroll details like the basic pay ,hra,special allowance,medical allowance,other allowance of an employee on the monthly basis.
    the data that i have on ot os not on the basis of months it contains datd of more than one month.like the baisc pay of an employee is given on a radom day basis of more than one month.
    but i need to bifercatethe data on monthly basis.
    waiting for the reply.
    thanks and regards

    Hi,
    Use the fun module
    RP_FILL_WAGE_TYPE_TABLE_EXT
    which willget PA0008 results.
    but to get the real payroll results you have to import data from clusters by writing the program. Data will be fetch from RT and CRT internal tables based on the Wage Types
    see the sample code:
    report zporgr0100
           line-size 252
           line-count 60(1)
           no standard page heading
           message-id zndc.
    Database Tables & Infotypes
    tables: pcl1,        " HR Cluster1
            pcl2,        " HR Cluster1
            pa0003,      " Master data - Payroll Status
            cskt,        " Cost Center Texts
            t528t,       " Positions Texts
            t513s,       " Job Titles
            pernr,       " Logical PNP
            t001p,       " Personnel Subarea
            t500p,       " Personnel Area
            t501,        " Employee Group
            t503k,       " Employee Subgroup
            csks.        " Cost Center
    infotypes:0000,0001.
    *include rpclst00.
    include rpc2rx00.
    include rpc2rxx0.
    include rpc2cd00.
    *include rpc2ps00.
    *include rpc2pt00.
    *include rpcfvp00.
    *include rpcfdc10.
    *include rpcfdc00.
    include rpppxd00.
    include rpppxd10.
    Declaration of Internal Tables
    Internal Table for Output Data
    data: begin of rep_tab occurs 0,
            kostl like pa0001-kostl,      " Cost Center
            pernr like pa0001-pernr,      " Personal Number
            ename like pa0001-ename,      " Employee Name
            ctext like cskt-ltext,        " Cost Center Text
            ptext like t528t-plstx,       " Position Text
            ot1   type p decimals 2,      " Jan OT Amount
            ot2   type p decimals 2,      " Feb OT Amount
            ot3   type p decimals 2,      " Mar OT Amount
            ot4   type p decimals 2,      " Apr OT Amount
            ot5   type p decimals 2,      " May OT Amount
            ot6   type p decimals 2,      " Jun OT Amount
            ot7   type p decimals 2,      " Jul OT Amount
            ot8   type p decimals 2,      " Aug OT Amount
            ot9   type p decimals 2,      " Sep OT Amount
            ot10  type p decimals 2,      " Oct OT Amount
            ot11  type p decimals 2,      " Nov OT Amount
            ot12  type p decimals 2,      " Dec OT Amount
            ott   type p decimals 2,      " Total OT Amount
          end of rep_tab.
    Declaration of Variables
    data: v_mon(2) type n,                   " Month
          v_no     type i,                   " Data Lines
          v_year(4)  type c,                 " Year
          v_date   like sy-datum,            " Date
          v_date1  like sy-datum,            " Date
          v_seqnr  like  pc261-seqnr.        " Sequence No.
    Declaration of Constants
    data: c_type   like hrp1001-otype  value 'S',  " Object Type
          c_kokrs  like cskt-kokrs value '1000',   " Controlling Area
          c_date1  like sy-datum value '18000101', " Date
          c_date2  like sy-datum value '99991231', " Date
          c_x       type c value 'X',              " Sign
         c_mon(2)  type c value '01',             " Month
          c_val1(2) type c value '31',             " Date
          c_val2(2) type c value '12',             " Month Type
          c_val    like p0041-dar01 value '01',    " Date Type
          c_lgart1 like p0008-lga01 value '0722',  " Wage Type
          c_lgart2 like p0008-lga01 value '0723',  " Wage Type
          c_1(2)   type n value '01',                           " Month1
          c_2(2)   type n value '02',                           " Month2
          c_3(2)   type n value '03',                           " Month3
          c_4(2)   type n value '04',                           " Month4
          c_5(2)   type n value '05',                           " Month5
          c_6(2)   type n value '06',                           " Month6
          c_7(2)   type n value '07',                           " Month7
          c_8(2)   type n value '08',                           " Month8
          c_9(2)   type n value '09',                           " Month9
          c_10(2)  type n value '10',                           " Month10
          c_11(2)  type n value '11',                           " Month11
          c_12(2)  type n value '12'.                           " Month12
    Selection-screen
    parameters:
      p_year like pc2b0-pabrj obligatory.       " Payroll Year
    At selection-screen
    at selection-screen.
    Validate the Selection Screen fields
      perform validate_screen.
    Start-of-Selection
    start-of-selection.
    Selection of Period
      perform get_period.
    Get PERNR from LDB
    get pernr.
    Get the Master data from infotype 0001
      perform get_master_data.
    Top-of-page
    top-of-page.
    Write the Report and Column Headings
      perform top_of_page.
    End-of-Page
    end-of-page.
      write /1(252) sy-uline.
    End-of-Selection
    end-of-selection.
    Display the Output Report.
      perform display_report.
    Form-Routines
    *&      Form  validate_screen
    Validation of selection Screen fields
    form validate_screen.
    Validation of Cost Center
      clear csks.
      if not pnpkostl[] is initial.
        select single kostl
          into csks-kostl
          from csks
          where kostl in pnpkostl.
        if sy-subrc <> 0.
          message e999 with 'Invalid Cost Center'(003).
        endif.
      endif.
    Validation of Personnel Number
      clear pa0003.
      if not pnppernr[] is initial.
        select pernr
        from pa0003 up to 1 rows
          into pa0003-pernr
          where pernr in pnppernr.
        endselect.
        if sy-subrc <> 0.
          message e999 with 'Incorrect Personal Number Entered'(002).
        endif.
      endif.
    Validation of Personnel Area
      clear t500p.
      if not pnpwerks[] is initial.
        select persa
        from t500p up to 1 rows
          into t500p-persa
          where persa in pnpwerks.
        endselect.
        if sy-subrc <> 0.
          message e999 with 'Incorrect Personnel Area Entered'(001).
        endif.
      endif.
    Validation of Personnel Sub Area
      clear t001p.
      if not pnpbtrtl[] is initial.
        select btrtl
        from t001p up to 1 rows
          into t001p-btrtl
          where btrtl in pnpbtrtl.
        endselect.
        if sy-subrc <> 0.
          message e999 with 'Incorrect Personnel Sub Area Entered'(037).
        endif.
      endif.
    Validation of Employee Group
      clear t501.
      if not pnppersg[] is initial.
        select persg
        from t501 up to 1 rows
          into t501-persg
          where persg in pnppersg.
        endselect.
        if sy-subrc <> 0.
          message e999 with 'Incorrect Employee Group Entered'(038).
        endif.
      endif.
    Validation of Employee Sub Group
      clear t503k.
      if not pnppersk[] is initial.
        select persk
        from t503k up to 1 rows
          into t503k-persk
          where persk in pnppersk.
        endselect.
        if sy-subrc <> 0.
          message e999 with 'Incorrect Employee Sub Group Entered'(039).
        endif.
      endif.
    endform.                  "validate_screen
    *&      Form  get_period
    Get the Correct Period based on Selection screen selection
    form get_period.
      clear: v_year,v_mon, v_date, v_date1.
      v_year = sy-datum+0(4).
      v_mon  = sy-datum+4(2).
      if pnptimr1 = c_x.      " Current Date
        pnpbegda = sy-datum.
        pnpendda = sy-datum.
      elseif pnptimr2 = c_x.  " Current Month
        concatenate v_year v_mon c_val into v_date.
        concatenate v_year v_mon c_val1 into v_date1.
        pnpbegda = v_date.
        pnpendda = v_date1.
      elseif pnptimr3 = c_x.  " Current Year
        concatenate v_year c_val c_val into v_date.
        concatenate v_year c_val2 c_val1 into v_date1.
        pnpbegda = v_date.
        pnpendda = v_date1.
      elseif pnptimr4 = c_x.  " Upto Today
        pnpbegda = c_date1.
        pnpendda = sy-datum.
      elseif pnptimr5 = c_x.  " From Today
        pnpbegda = sy-datum.
        pnpendda = c_date2.
      else.
        if ( pnpbegda is initial and pnpendda is initial ).
          pnpbegda = c_date1.
          pnpendda = c_date2.
        elseif pnpbegda is initial and not pnpendda is initial.
          pnpbegda = c_date1.
          pnpendda = pnpendda.
        elseif not ( pnpbegda is initial and pnpendda is initial ).
          pnpbegda = pnpbegda.
          pnpendda = pnpendda.
        endif.
      endif.
    endform.              "get_period
    *&      Form  get_master_data
    Get the Master Data from Database Tables PA0001,0002,0003
    form get_master_data.
    Get data from Respective Infotypes
      rp_provide_from_last p0001 space pnpbegda pnpendda.
      if p0001-kostl in pnpkostl.
        rep_tab-kostl = p0001-kostl.
        rep_tab-pernr = p0001-pernr.
        rep_tab-ename = p0001-ename.
    Get the Position Text
        clear t528t-plstx.
        select single plstx into t528t-plstx from t528t
                where plans = p0001-plans and
                      otype = c_type and
                      sprsl = sy-langu.
        if sy-subrc = 0.
          rep_tab-ptext = t528t-plstx.
        endif.
    Get the Cost Center Text
        clear cskt-ltext.
        select single ltext into cskt-ltext from cskt
                where spras = sy-langu and
                      kokrs = c_kokrs and
                      kostl = p0001-kostl.
        if sy-subrc = 0.
          rep_tab-ctext = cskt-ltext.
        endif.
    Get the Overtime Payment Data
        perform get_ot_data.
        rep_tab-ott = rep_tab-ot1 + rep_tab-ot2 + rep_tab-ot3 +
                      rep_tab-ot4 + rep_tab-ot5 + rep_tab-ot6 +
                      rep_tab-ot7 + rep_tab-ot8 + rep_tab-ot9 +
                      rep_tab-ot10 + rep_tab-ot11 + rep_tab-ot12.
        append rep_tab.
        clear  rep_tab.
      endif.
      sort rep_tab by kostl pernr.
      delete rep_tab where kostl = ' '.
      delete rep_tab where ott = 0.
    endform.                 "get_master_data
    *&      Form  get_ot_data
    Get the Overtime Payment Data
    form get_ot_data.
      cd-key = pernr-pernr.
      rp-imp-c2-cd.
      sort rgdir by seqnr.
    To get sequence number for the payroll period
      loop at rgdir where void     is initial
                        and reversal is initial
                        and outofseq is initial
                        and srtza    eq 'A'.
        if rgdir-fpper+0(4) = p_year.
    To consider offcycle run data
          if not rgdir-ocrsn is initial.
            v_seqnr = rgdir-seqnr.
            exit.
          endif.
          v_seqnr = rgdir-seqnr.
        endif.
        if not v_seqnr is initial.
          perform import_rx.
        endif.
        perform process_wagetypes.
      endloop.
    endform.                 "get_ot_data
    include rpppxm00.
    *&      Form  Import_rx
    Import the RX data from Clusters
    form import_rx.
      rx-key-pernr = cd-key-pernr.
      rx-key-seqno = v_seqnr.
      rp-init-buffer.
      rp-imp-c2-rx.
    endform.                    " Import_rx
    *&      Form  Process_wagetypes
    Calculate the Overtime Amount based on Wage types
    form process_wagetypes.
      loop at rt.
        if  rt-lgart = c_lgart1 or rt-lgart = c_lgart2.
          if rgdir-fpper+0(4) = p_year.
            v_mon = rgdir-fpper+4(2).
            case v_mon .
              when c_1.
                rep_tab-ot1 = rep_tab-ot1 + rt-betrg.
              when c_2.
                rep_tab-ot2 = rep_tab-ot2 + rt-betrg.
              when c_3.
                rep_tab-ot3 = rep_tab-ot3 + rt-betrg.
              when c_4.
                rep_tab-ot4 = rep_tab-ot4 + rt-betrg.
              when c_5.
                rep_tab-ot5 = rep_tab-ot5 + rt-betrg.
              when c_6.
                rep_tab-ot6 = rep_tab-ot6 + rt-betrg.
              when c_7.
                rep_tab-ot7 = rep_tab-ot7 + rt-betrg.
              when c_8.
                rep_tab-ot8 = rep_tab-ot8 + rt-betrg.
              when c_9.
                rep_tab-ot9 = rep_tab-ot9 + rt-betrg.
              when c_10.
                rep_tab-ot10 = rep_tab-ot10 + rt-betrg.
              when c_11.
                rep_tab-ot11 = rep_tab-ot11 + rt-betrg.
              when c_12.
                rep_tab-ot12 = rep_tab-ot12 + rt-betrg.
            endcase.
          endif.
        endif.
      endloop.
    endform.          "process_wagetypes
    *&      Form  top_of_page
    Write the Report and Column Headings
    form top_of_page.
      format color col_heading on.
      write: /1(252) 'NATIONAL DRILLING COMPANY'(010) centered,
             /1(252) 'Overtime Payments Details'(011) centered.
      format color off.
      if pnptimr1 = c_x.      " Current Date
        write: /2 'Period From     :'(036), sy-datum, 'To:'(006), sy-datum.
      elseif pnptimr2 = c_x.  " Current Month
        write: /2 'Period From     :'(036), v_date, 'To:'(006), v_date1.
      elseif pnptimr3 = c_x.  " Current Year
        write: /2 'Period From     :'(036), v_date, 'To:'(006), v_date1.
      elseif pnptimr4 = c_x.  " Upto Today
        write: /2 'Period From     :'(036), c_date1, 'To:'(006), sy-datum.
      elseif pnptimr5 = c_x.  " From Today
        write: /2 'Period From     :'(036), sy-datum, 'To:'(006), c_date2.
      else.
        if ( pnpbegda is initial and pnpendda is initial ).
          write: /2 'Period From     :'(036), c_date1, 'To:'(006), c_date2.
        elseif pnpbegda is initial and not pnpendda is initial.
          write: /2 'Period From     :'(036), c_date1, 'To:'(006), pnpendda.
        elseif not ( pnpbegda is initial and pnpendda is initial ).
          write: /2 'Period From     :'(036), pnpbegda,
                   'To:'(006), pnpendda.
        endif.
      endif.
      write: 219 'Report Run Date:'(018), sy-datum.
      if not pnpkostl[] is initial.
        if pnpkostl-high is initial.
          write: /2 'Cost Center     :'(004), pnpkostl-low,
                219 'Time           :'(020), sy-uzeit.
        else.
          write: /2 'Cost Center From:'(005), pnpkostl-low+7(3),
                                    'To:'(006), pnpkostl-high,
                219 'Time           :'(020), sy-uzeit.
        endif.
      else.
        write: /219  'Time           :'(020), sy-uzeit.
      endif.
      if not pnppernr[] is initial.
        if pnppernr-high is initial.
          write: /2 'Personal Number :'(007), pnppernr-low,
                 219 'User           :'(021), sy-uname.
        else.
          write: /2 'Personal No.From:'(008),  pnppernr-low,
                                    'To:'(006), pnppernr-high,
                 219 'User           :'(021), sy-uname.
        endif.
      else.
        write: /219 'User           :'(021), sy-uname.
      endif.
      write: /219 'Page No        :'(022), sy-pagno.
      format color col_heading.
      write /1(252) sy-uline.
      write:/1 sy-vline, 10 sy-vline,
            41 sy-vline,
            67 sy-vline, 68(167) 'Overtime Payments(Dirhams)'(013) centered,
           235 sy-vline,252 sy-vline.
      format color col_heading.
      write:/1 sy-vline,  2(8)  'Emp #'(019) centered,
            10 sy-vline, 11(30) 'Employee Name'(012) centered,
            41 sy-vline, 42(25) 'Position'(014) centered,
            67 sy-vline, 68(167)  sy-uline,
           235 sy-vline,236(16)  'Total'(017) centered,
           252 sy-vline.
      write:/1 sy-vline, 10 sy-vline,
            41 sy-vline,
            67 sy-vline, 68(13)  'JANUARY'(024) centered,
            81 sy-vline, 82(13)  'FEBRUARY'(025) centered,
            95 sy-vline, 96(13)  'MARCH'(026) centered,
           109 sy-vline,110(13)  'APRIL'(027) centered,
           123 sy-vline,124(13)  'MAY'(028) centered,
           137 sy-vline,138(13)  'JUNE'(029) centered,
           151 sy-vline,152(13)  'JULY'(030) centered,
           165 sy-vline,166(13)  'AUGUST'(031) centered,
           179 sy-vline,180(13)  'SEPTEMBER'(032) centered,
           193 sy-vline,194(13)  'OCTOBER'(033) centered,
           207 sy-vline,208(13)  'NOVEMBER'(034) centered,
           221 sy-vline,222(13)  'DECEMBER'(035) centered,
           235 sy-vline,252 sy-vline.
      format color off.
      write /1(252) sy-uline.
    endform.            "top_of_page
    *&      Form  Display_report
    Write the Report Output
    form display_report.
      clear v_no.
      describe table rep_tab lines v_no.
      if v_no = 0.
        message i999 with
         'No Data found for the entered Selection'(015).
      endif.
      loop at rep_tab.
        format color 3.
        at new kostl.
          read table rep_tab index sy-tabix.
          write:/1 sy-vline, 2(12) 'Cost Center:'(009),
                 14(10) rep_tab-kostl,
                 25(30) rep_tab-ctext,
                252 sy-vline.
          format color off.
          write /1(252) sy-uline.
        endat.
        format color col_normal.
        write: /1 sy-vline, 2(8)   rep_tab-pernr,
              10 sy-vline, 11(30)  rep_tab-ename,
              41 sy-vline, 42(25)  rep_tab-ptext,
              67 sy-vline, 68(13)  rep_tab-ot1 no-zero,
              81 sy-vline, 82(13)  rep_tab-ot2 no-zero,
              95 sy-vline, 96(13)  rep_tab-ot3 no-zero,
             109 sy-vline,110(13)  rep_tab-ot4 no-zero,
             123 sy-vline,124(13)  rep_tab-ot5 no-zero,
             137 sy-vline,138(13)  rep_tab-ot6 no-zero,
             151 sy-vline,152(13)  rep_tab-ot7 no-zero,
             165 sy-vline,166(13)  rep_tab-ot8 no-zero,
             179 sy-vline,180(13)  rep_tab-ot9 no-zero,
             193 sy-vline,194(13)  rep_tab-ot10 no-zero,
             207 sy-vline,208(13)  rep_tab-ot11 no-zero,
             221 sy-vline,222(13)  rep_tab-ot12 no-zero,
             235 sy-vline,236(16)  rep_tab-ott no-zero,
             252 sy-vline.
        at end of kostl.
          write /1(252) sy-uline.
        endat.
        format color off.
        at last.
          sum.
          format color 1.
          write: /1 sy-vline,
                10 sy-vline, 11(30) 'Total'(017) centered,
                41 sy-vline,
                67 sy-vline, 68(13)  rep_tab-ot1 no-zero,
                81 sy-vline, 82(13)  rep_tab-ot2 no-zero,
                95 sy-vline, 96(13)  rep_tab-ot3 no-zero,
               109 sy-vline,110(13)  rep_tab-ot4 no-zero,
               123 sy-vline,124(13)  rep_tab-ot5 no-zero,
               137 sy-vline,138(13)  rep_tab-ot6 no-zero,
               151 sy-vline,152(13)  rep_tab-ot7 no-zero,
               165 sy-vline,166(13)  rep_tab-ot8 no-zero,
               179 sy-vline,180(13)  rep_tab-ot9 no-zero,
               193 sy-vline,194(13)  rep_tab-ot10 no-zero,
               207 sy-vline,208(13)  rep_tab-ot11 no-zero,
               221 sy-vline,222(13)  rep_tab-ot12 no-zero,
               235 sy-vline,236(16)  rep_tab-ott no-zero,
               252 sy-vline.
          write /1(252) sy-uline.
        endat.
        format color off.
      endloop.
    endform.          "display_report
    reward points if useful
    regards,
    Anji

  • Need code for a function module- Urgent

    Hi friends,
    I have a requirement where I am giving material description as an import parameter in the function module. ( Material description could be a wild search -- say - Mat* ) I want a sub routine in the function module which should get all the materials from the database ( mara or makt..not sure ) for the user entered Material description.
    I want this particular code to be written using a sub-routine using formal parameters inside this fm . Could any one send me the code for this.
    Thanks in advance,
    Vishnu.

    Hi Vishvanath,,
    Please find the below code.
    DATA : BEGIN OF itab OCCURS 0,
           matnr LIKE makt-MATNR,
           MAKTX LIKE makt-MAKTX,
           END OF itab.
    DATA : BEGIN OF itab1 OCCURS 0,
           matnr LIKE makt-MATNR,
           MAKTX LIKE makt-MAKTX,
           END OF itab1.
    data : a(5) type c value 'TEST'.
    perform mat_no using a.
    form mat_no  using    p_a.
    data : lv_temp(4) type c.
    select matnr maktx from makt into table itab.
    loop at itab.
    lv_temp = itab-maktx+0(4).
    if lv_temp = p_a.
      move itab to itab1.
      APPEND ITAB1.
    endif.
    endloop.
    loop at itab1.
    write :/ itab1.
    endloop.
    endform.                    " mat_no
    Thanks.
    Amjad.

Maybe you are looking for