Function module logic

Hi Gurus,
I know the method of creating function module and basically that to extract data from many tables. Though I am not clear what sort of business logics we can incorporate into it while extracting. Can anyone pls tell me some scenarios? Is it really taking update/transfer rules to extraction level?
Thks
Suneth

Hi Semage,
Basically, you would use a FM to extract when you need data from different tables, and it's impossible to do it in a view. Suppose you need to get data from table Z and add some fields from table Y, but if in table Y you don't find the correct entry, you need to check table X. That is impossible to do it with a view, unless you take the three tables to BW and make the calculations there.
Also, using a FM you can have a delta datasource using proper delta, not using generic delta (if the code is correct, it can be like Business Content delta).
Hope this helps.
Regards,
Diego

Similar Messages

  • Implement Function module logic in BI

    Hi all,
    the bellow is the DataSource FM code i wanted to implement same in the BI side, instead system date user wants to enter the date according to the user entry date the calculation should happen
    if t_tab-net_d < sy-datum.
                  if t_bsid-shkzg = 'S'.
                    if t_bsid-dmbtr > 0.
                     t_tab-due_v = t_tab-due_v + t_bsid-dmbtr.
                      t_due-due_v = t_bsid-dmbtr.
                    endif.
                  else.
                    if t_bsid-dmbtr < 0.
                     t_tab-due_v = t_tab-due_v - t_bsid-dmbtr.
                      t_due-due_v = t_bsid-dmbtr * -1.
                    endif.
                  endif.
    In BI i have the t_tab-net_d,shkzg,dmbtr in my cube. now how can i calculate the due_v at report level.
    Regards,
    Kiran

    above is allready there in production and now user want to enter the date to caluculate
    below is also the logic of FM user want to implement this at BI side
                  if due_temp is initial or due_temp >= t_tab-net_d.
                    due_temp = t_tab-net_d.
                    t_tab-due_m = sy-datum - t_tab-net_d.
                  endif.
                endif.
    here due_temp = sy-datum.
    Please let me know how can i implement this in BI side
    Regards,
    Kiran
    Edited by: kiran kumar on Feb 9, 2010 6:05 PM

  • How to use Logical database in function module?

    I will create a function module in HR.
    but how to use Logical database  in function module ?  Logical database PNP always show screen.in function (RFC) code , it is a matter.

    You cannot attach the LDB to the main program of the function group.
    - So you may [SUBMIT|https://www.sdn.sap.com/irj/sdn/advancedsearch?cat=sdn_all&query=submit&adv=false&sortby=cm_rnd_rankvalue] a report which use the LDB and get back the data (export/import), by default in the syntax of SUBMIT the selection-screen will not be displayed
    - Use [LDB_PROCESS|https://www.sdn.sap.com/irj/sdn/advancedsearch?query=ldb_process&cat=sdn_all], fill a structured table for selection, and get data back in another table
    - Use [HR function modules to read Infotypes|https://www.sdn.sap.com/irj/sdn/advancedsearch?cat=sdn_all&query=hrfunctionmodulestoread+Infotypes&adv=false&sortby=cm_rnd_rankvalue].
    Regards

  • Use of Logical Database in function module

    Hello Experts,
    Is there a way of using logical database and Get enent inside a function module.
    I am trying to create a RFC for HR module and need this badly. Any help would be highly appriciated.
    Thanks,
    Gregory fernando

    This fm will work fine with all LDBs including PNP
    Have you checked the fm documentation ?

  • How to use a Logical Database in Function Module.

    Hi Experts,
    I want to use a logical database in a Function Module to fetch data from a standard SAP table into a Internal table for certain filter conditions.
    How can I get get this done????
    I called LDB_PROCESS FM in my FM, but I could not figure out how to store the extract in my IT table since we cant use GET in FM.
    Please provide me a sample code if possible.
    Thanks in Advance,
    Alex.

    Hi,
    i had an example program like this ,in this i want to get the data using pnp logical database with 5 fields in an interface program.
    data: begin of it_final occurs 0,
            pernr like pa0002-pernr,
            vorna like pa0002-vorna,
            nachn like pa0002-nachn,
           usrid like pa0105-usrid,
           usrid_long like pa0105-usrid_long,
           end of it_final.
    get pernr.
      clear : p0000,p0002,p0105.
      rp-provide-from-last p0000 space p_date p_date.
      if p0000-stat2 = '3'.
        v_pernr = pnppernr-low.
      else.
        reject.
      endif.
    *---Get employee pernr, First name ,Last name into final table
      rp-provide-from-last p0002 space p_date p_date.
      if pnp-sw-found = '1'.
       it_final-pernr = p0002-pernr.
       it_final-vorna = p0002-vorna.
       it_final-nachn = p0002-nachn.
      else.
    *---Error message if not infotype 0002 maintained
      T_ERROR-PERNR   = pnppernr-low.
      CONCATENATE TEXT-EMI '0002'
      INTO T_ERROR-MESSAGE SEPARATED BY SPACE.
      APPEND T_ERROR.
      CLEAR T_ERROR.
      endif.
    **--Get SYSTEM USERNAME to final table
      rp-provide-from-last p0105 0001 p_date p_date.
      if pnp-sw-found = '1'.
        it_final-usrid = p0105-usrid.
      else.
    *---Error message if not SYSTEM USERNAME maintained
        T_ERROR-PERNR   = pnppernr-low.
        CONCATENATE TEXT-003 '0105'
        INTO T_ERROR-MESSAGE SEPARATED BY SPACE.
        APPEND T_ERROR.
        CLEAR T_ERROR.
      endif.
    **--Get Email ID to final table
      rp-provide-from-last p0105 0010 p_date p_date.
      if pnp-sw-found = '1'.
        it_final-usrid_long = p0105-usrid_long.
      else.
    *---Error message if not Email ID maintained
        T_ERROR-PERNR   = pnppernr-low.
        CONCATENATE TEXT-004 '0105'
        INTO T_ERROR-MESSAGE SEPARATED BY SPACE.
        APPEND T_ERROR.
        CLEAR T_ERROR.
      endif.
       append it_final.
        clear it_final.
    reward points if useful,
    venkat.

  • Function Module-ABAP Logic

    Hi Experts,
    The following is the ABAP Code used in Function Module to extract Master Data from R/3 to BW.Could please convert that into human language (Explain logic of code)
    FUNCTION MDEX_MATERIAL_MD .
    ""Lokale Schnittstelle:
    *"  IMPORTING
    *"     VALUE(I_REQUNR) TYPE  SBIWA_S_INTERFACE-REQUNR OPTIONAL
    *"     VALUE(I_CHABASNM) TYPE  SBIWA_S_INTERFACE-CHABASNM OPTIONAL
    *"     VALUE(I_MAXSIZE) TYPE  SBIWA_S_INTERFACE-MAXSIZE OPTIONAL
    *"     VALUE(I_INITFLAG) TYPE  SBIWA_S_INTERFACE-INITFLAG OPTIONAL
    *"     VALUE(I_UPDMODE) TYPE  SBIWA_S_INTERFACE-UPDMODE OPTIONAL
    *"     VALUE(I_DATAPAKID) TYPE  SBIWA_S_INTERFACE-DATAPAKID OPTIONAL
    *"     VALUE(I_S_TIMEINT) TYPE  SBIWA_S_TIMEINT OPTIONAL
    *"     VALUE(I_RLOGSYS) TYPE  SRSC_S_INTERFACE-RLOGSYS OPTIONAL
    *"     VALUE(I_PRIVATE_MODE) OPTIONAL
    *"  TABLES
    *"      I_T_SELECT TYPE  SBIWA_T_SELECT OPTIONAL
    *"      I_T_FIELDS TYPE  SBIWA_T_FIELDS OPTIONAL
    *"      E_T_BIW_MARA_S STRUCTURE  BIW_MARA_S OPTIONAL
    *"      E_T_BIW_MARC_S STRUCTURE  BIW_MARC_S OPTIONAL
    *"      E_T_BIW_MARD_S STRUCTURE  BIW_MARD_S OPTIONAL
    *"      E_T_BIW_MVKE_S STRUCTURE  BIW_MVKE_S OPTIONAL
    *"      E_T_BIW_MARM_S STRUCTURE  BIW_MARM_S OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
    function acts as a S-API-compatible interface for the SD-extractor
    MATERIAL_DYNAM_DATA_SELECTION
      STATICS: L_FIRST_CALL TYPE SBIWA_FLAG,
               L_NO_SELECT  TYPE C.
      DATA: L_SUBRC TYPE SBIWM_SUBRC.
      DATA: L_T_CHABASCMP  LIKE RSSOSFIELD OCCURS 0 WITH HEADER LINE,
            L_S_REQUEST    TYPE RSAP_S_REQUEST,
            L_SLOGSYS      LIKE TBDLS-LOGSYS,
            L_RODCHABGEN   LIKE  RODCHABGEN,
            L_LINES        TYPE  I,
            L_TX_SELECT    TYPE  SBIWA_TX_SELECT,
            L_T_SELECT     TYPE  SBIWA_T_SELECT,
            L_S_SELECT     TYPE  SBIWA_S_SELECT.
      DATA: L_T_MARA     LIKE  MARA OCCURS 10 WITH HEADER LINE,
            L_T_MARC     LIKE  MARC OCCURS 10 WITH HEADER LINE,
            L_T_MARD     LIKE  MARD OCCURS 10 WITH HEADER LINE,
            L_T_MVKE     LIKE  MVKE OCCURS 10 WITH HEADER LINE,
            L_T_MARM     LIKE  MARM OCCURS 10 WITH HEADER LINE.
      DATA: L_S_MATNR_MATERIAL_KEYS LIKE PRE03,
            L_S_WERKS_MATERIAL_KEYS LIKE PRE01,
            L_S_LGORT_MATERIAL_KEYS LIKE PRE08,
            L_S_VTLIN_MATERIAL_KEYS LIKE PRE10.
          Variable to read compound information  "note383430 insED08052001
      DATA: i_chabasnm_cmp TYPE sbiwa_s_interface-chabasnm.
      "note383430 insED08052001
      IF I_INITFLAG = 'X'.
    Initialization: check input parameters
                    buffer input parameters
                    prepare data selection
    Invalid second initialization call -> error exit
        IF NOT G_FLAG_INTERFACE_INITIALIZED IS INITIAL.
          IF 1 = 2. MESSAGE E008(R3). ENDIF.
          LOG_WRITE 'E'                    "message type
                    'R3'                   "message class
                    '008'                  "message number
                    ' '                    "message variable 1
                    ' '.                   "message variable 2
          RAISE ERROR_PASSED_TO_MESS_HANDLER.
        ELSE.
          G_FLAG_INTERFACE_INITIALIZED = SBIWA_C_FLAG_ON.
        ENDIF.
    Check for supported update mode
        CASE I_UPDMODE.
          WHEN SBIWA_C_UPDMODE_FULL.
          WHEN SBIWA_C_UPDMODE_DELTAINIT.
          WHEN SBIWA_C_UPDMODE_DELTA.
          WHEN OTHERS.
            IF 1 = 2. MESSAGE E011(R3). ENDIF.
            LOG_WRITE 'E'                  "message type
                      'R3'                 "message class
                      '011'                "message number
                      I_UPDMODE            "message variable 1
                      ' '.                 "message variable 2
            RAISE ERROR_PASSED_TO_MESS_HANDLER.
        ENDCASE.
      Initialize variable to read compound information
        i_chabasnm_cmp = i_chabasnm.   "note383430 insED08052001
    **Check InfoObject validity and set IO-dependent parameters
        G_TAB1_FLG =  G_TAB2_FLG =  G_TAB3_FLG =  G_TAB4_FLG = ' '.
        g_tab5_flg = ' '.   "note417314 insED04072001
        G_NO_MARM = 'X'.
        CASE I_CHABASNM.
          WHEN '0MATERIAL'.
            G_TAB1_FLG = 'X'.
            G_TABLENAME = 'MARA'.
          WHEN '0ARTICLE'.                  "note383430 insED30042001
            G_TAB1_FLG = 'X'.               "note383430 insED30042001
            G_TABLENAME = 'MARA'.           "note383430 insED30042001
            i_chabasnm_cmp = '0MATERIAL'.   "note383430 insED08052001
          WHEN '0ME_MATERIAL'.              "note759687
            G_TAB1_FLG = 'X'.               "note759687
            G_TABLENAME = 'MARA'.           "note759687
            i_chabasnm_cmp = '0MATERIAL'.   "note759687
          WHEN '0MAT_PLANT'.
            G_TAB2_FLG = 'X'.
            G_TABLENAME = 'MARC'.
          WHEN '0ART_PLANT'.                "note383430 insED30042001
            G_TAB2_FLG = 'X'.               "note383430 insED30042001
            G_TABLENAME = 'MARC'.           "note383430 insED30042001
            i_chabasnm_cmp = '0MAT_PLANT'.  "note383430 insED08052001
          WHEN '0MAT_ST_LOC'.
            G_TAB3_FLG = 'X'.
            G_TABLENAME = 'MARD'.
          WHEN '0ART_ST_LOC'.               "note383430 insED30042001
            G_TAB3_FLG = 'X'.               "note383430 insED30042001
            G_TABLENAME = 'MARD'.           "note383430 insED30042001
            i_chabasnm_cmp = '0MAT_ST_LOC'. "note383430 insED08052001
          WHEN '0MAT_SALES'.
            G_TAB4_FLG = 'X'.
            G_TABLENAME = 'MVKE'.
         when '0ART_SALES'.      "note383430 insED30042001  "delED
           g_tab4_flg = 'x'.     "note383430 insED30042001  "delED
           g_tablename = 'MVKE'. "note383430 insED30042001  "delED
          WHEN '0ART_SALES'.      "insED
            G_TAB4_FLG = 'X'.     "insED
            G_TABLENAME = 'MVKE'. "insED
            i_chabasnm_cmp = '0MAT_SALES'.  "note383430 insED08052001
          WHEN '0MAT_UNIT'.
          G_TAB1_FLG = 'X'.     "note417314 delED04072001
            g_tab5_flg = 'X'.     "note417314 insED04072001
            G_TABLENAME = 'MARM'.
            G_NO_MARM = ' '.
          WHEN OTHERS.
            IF 1 = 2. MESSAGE E009(R3). ENDIF.
            LOG_WRITE 'E'                  "message type
                      'R3'                 "message class
                      '009'                "message number
                      I_CHABASNM           "message variable 1
                      ' '.                 "message variable 2
            RAISE ERROR_PASSED_TO_MESS_HANDLER.
        ENDCASE.
    ** fill parameter buffer for data extraction calls
        G_S_EXTR_IF-REQUNR    = I_REQUNR.
        G_S_EXTR_IF-CHABASNM  = I_CHABASNM.
        G_S_EXTR_IF-MAXSIZE   = I_MAXSIZE.
        G_S_EXTR_IF-INITFLAG  = I_INITFLAG.
        G_S_EXTR_IF-UPDMODE   = I_UPDMODE.
        G_S_EXTR_IF-DATAPAKID = I_DATAPAKID.
        g_s_interface-read_opt =.
        G_S_INTERFACE-MAX_MATNR = I_MAXSIZE.
        g_s_interface-max_lifnr =.
        g_s_interface-max_kunnr =.
        g_s_interface-max_werks =.
        CASE I_UPDMODE.
          WHEN SBIWA_C_UPDMODE_DELTA.
          ** settings for delta data transfer
          ** get additional information about current extraction
            CALL FUNCTION 'RSAN_LOGSYS_DETERMINE'
              EXPORTING
                I_CLIENT = SY-MANDT
              IMPORTING
                E_LOGSYS = L_SLOGSYS.
            L_S_REQUEST-SNDPRN   = L_SLOGSYS.
            L_S_REQUEST-RCVPRN   = I_RLOGSYS.
    *----- Fill Content release so get_rodchabgen will work ok -
            PERFORM GET_BWBCRL IN PROGRAM SAPLRSAP         "OSS 1054070/2000
                    USING    L_S_REQUEST-RCVPRN            "OSS 1054070/2000
                    CHANGING L_SUBRC.                      "OSS 1054070/2000
            PERFORM GET_RODCHABGEN IN PROGRAM SAPLRSAP
                      USING    L_RODCHABGEN
                               I_CHABASNM
                               L_S_REQUEST.
          ** get base characteristic information
            PERFORM DETERMINE_COMPOSITES IN PROGRAM SAPLRSAM
                      TABLES L_T_CHABASCMP
                    USING  I_CHABASNM.
                      USING  i_chabasnm_cmp.   "note383430 insED08052001
          ** Get information about modified data objects
            PERFORM FILL_MD_SELECT_ENTRYTABLE IN PROGRAM SAPLRSAP
                      TABLES   L_T_CHABASCMP
                      USING    L_RODCHABGEN-MSGTYP
                               I_CHABASNM
                      CHANGING L_TX_SELECT
                               L_SUBRC.
            DESCRIBE TABLE L_TX_SELECT LINES L_LINES.
            IF L_LINES = 0.
              L_NO_SELECT = 'X'.
            ENDIF.
          ** fill key-table for extractor
            REFRESH G_T_MATNR_MATERIAL_KEYS.
            REFRESH G_T_WERKS_MATERIAL_KEYS.
            REFRESH G_T_LGORT_MATERIAL_KEYS.
            REFRESH G_T_VTLIN_MATERIAL_KEYS.
            refresh g_t_marm_material_keys.   "note417314 insED04072001
            LOOP AT L_TX_SELECT INTO L_T_SELECT.
              CASE I_CHABASNM.
                WHEN '0MATERIAL' OR '0ARTICLE' "note383430 insED30042001
                     OR '0ME_MATERIAL'.
                  READ TABLE L_T_SELECT
                     INTO L_S_SELECT
                     WITH KEY FIELDNM = 'MATNR'.
                  L_S_MATNR_MATERIAL_KEYS-MATNR = L_S_SELECT-LOW.
                  APPEND L_S_MATNR_MATERIAL_KEYS TO G_T_MATNR_MATERIAL_KEYS.
                WHEN '0MAT_PLANT' OR '0ART_PLANT'. "note383430 insED30042001
                  READ TABLE L_T_SELECT
                     INTO L_S_SELECT
                     WITH KEY FIELDNM = 'MATNR'.
                  L_S_WERKS_MATERIAL_KEYS-MATNR = L_S_SELECT-LOW.
                  READ TABLE L_T_SELECT
                     INTO L_S_SELECT
                     WITH KEY FIELDNM = 'WERKS'.
                  L_S_WERKS_MATERIAL_KEYS-WERKS = L_S_SELECT-LOW.
                  APPEND L_S_WERKS_MATERIAL_KEYS TO G_T_WERKS_MATERIAL_KEYS.
                WHEN '0MAT_ST_LOC' OR '0ART_ST_LOC'.
                  "note383430 insED30042001
                  READ TABLE L_T_SELECT
                     INTO L_S_SELECT
                     WITH KEY FIELDNM = 'MATNR'.
                  L_S_LGORT_MATERIAL_KEYS-MATNR = L_S_SELECT-LOW.
                  READ TABLE L_T_SELECT
                     INTO L_S_SELECT
                     WITH KEY FIELDNM = 'WERKS'.
                  L_S_LGORT_MATERIAL_KEYS-WERKS = L_S_SELECT-LOW.
                  READ TABLE L_T_SELECT
                     INTO L_S_SELECT
                     WITH KEY FIELDNM = 'LGORT'.
                  L_S_LGORT_MATERIAL_KEYS-LGORT = L_S_SELECT-LOW.
                  APPEND L_S_LGORT_MATERIAL_KEYS TO G_T_LGORT_MATERIAL_KEYS.
                WHEN '0MAT_SALES' OR '0ART_SALES'. "note383430 insED30042001
                  READ TABLE L_T_SELECT
                     INTO L_S_SELECT
                     WITH KEY FIELDNM = 'MATNR'.
                  L_S_VTLIN_MATERIAL_KEYS-MATNR = L_S_SELECT-LOW.
                  READ TABLE L_T_SELECT
                     INTO L_S_SELECT
                     WITH KEY FIELDNM = 'VKORG'.
                  L_S_VTLIN_MATERIAL_KEYS-VKORG = L_S_SELECT-LOW.
                  READ TABLE L_T_SELECT
                     INTO L_S_SELECT
                     WITH KEY FIELDNM = 'VTWEG'.
                  L_S_VTLIN_MATERIAL_KEYS-VTWEG = L_S_SELECT-LOW.
                  APPEND L_S_VTLIN_MATERIAL_KEYS TO G_T_VTLIN_MATERIAL_KEYS.
              ENDCASE.
            ENDLOOP.
            IF L_SUBRC <> 0.
              IF 1 = 2. MESSAGE E009(R3). ENDIF.
              LOG_WRITE 'E'                "message type
                        'R3'               "message class
                        '009'              "message number
                        I_CHABASNM         "message variable 1
                        ' '.               "message variable 2
              RAISE ERROR_PASSED_TO_MESS_HANDLER.
              EXIT.
            ENDIF.
        ** settings for full data transfer or delta init.
    *----- Selektionsbedingungen müssen immer übernommen werden -
        WHEN sbiwa_c_updmode_full                            "DEL"TH090800
        OR   sbiwa_c_updmode_deltainit.                      "DEL"TH090800
          REFRESH g_t_sel_table.                             "DEL"TH090800
          LOOP AT i_t_select INTO l_s_select.                "DEL"TH090800
            g_s_sel_table-table  =  g_tablename.             "DEL"TH090800
            g_s_sel_table-field  =  l_s_select-fieldnm.      "DEL"TH090800
            MOVE-CORRESPONDING l_s_select TO g_s_sel_table.  "DEL"TH090800
            APPEND g_s_sel_table TO g_t_sel_table.           "DEL"TH090800
          ENDLOOP.                                           "DEL"TH090800
          WHEN OTHERS.
        ENDCASE.
    *----- Selektionsbedingungen müssen immer übernommen werden -
        REFRESH G_T_SEL_TABLE.                                 "INS"TH090800
        LOOP AT I_T_SELECT INTO L_S_SELECT.                    "INS"TH090800
          G_S_SEL_TABLE-TABLE  =  G_TABLENAME.                 "INS"TH090800
          G_S_SEL_TABLE-FIELD  =  L_S_SELECT-FIELDNM.          "INS"TH090800
          MOVE-CORRESPONDING L_S_SELECT TO G_S_SEL_TABLE.      "INS"TH090800
          APPEND G_S_SEL_TABLE TO G_T_SEL_TABLE.               "INS"TH090800
        ENDLOOP.                                               "INS"TH090800
        REFRESH G_T_FIELDS.
        APPEND LINES OF I_T_FIELDS TO G_T_FIELDS.
      ELSE.                 "Initialization mode or data extraction ?
        IF ( G_MORE_DATA_EXISTS = ' ' ) AND ( G_COUNTER_DATAPAKID NE 0 ).
          RAISE NO_MORE_DATA.
          EXIT.
        ENDIF.
        IF G_S_EXTR_IF-UPDMODE = SBIWA_C_UPDMODE_DELTA.
          IF NOT L_NO_SELECT IS INITIAL.
            RAISE NO_MORE_DATA.
          ENDIF.
        ENDIF.
        IF ( G_MORE_DATA_EXISTS = 'X' ) OR ( G_COUNTER_DATAPAKID = 0 ).
          REFRESH L_T_MARA.
          REFRESH L_T_MARC.
          REFRESH L_T_MARD.
          REFRESH L_T_MVKE.
          REFRESH L_T_MARM.
          CALL FUNCTION 'MATERIAL_DYNAM_DATA_SELECTION'
              EXPORTING
                  NO_MARM_DATA     = G_NO_MARM
                  READ_MARA_DATA   = G_TAB1_FLG
                  READ_MARC_DATA   = G_TAB2_FLG
                  READ_MARD_DATA   = G_TAB3_FLG
                  READ_MVKE_DATA   = G_TAB4_FLG
                  read_marm_data   = g_tab5_flg   "note417314 insED04072001
                JOIN_OPTION      = 'O'
                  IN_MAX_MATNR     = G_S_INTERFACE-MAX_MATNR
              TABLES
                  IN_SELECT_FIELDS = G_T_SEL_TABLE
                  IN_MATNR_KEYS    = G_T_MATNR_MATERIAL_KEYS
                  IN_WERKS_KEYS    = G_T_WERKS_MATERIAL_KEYS
                  IN_VTLIN_KEYS    = G_T_VTLIN_MATERIAL_KEYS
                  IN_LGORT_KEYS    = G_T_LGORT_MATERIAL_KEYS "insED22032001
                  in_marm_keys     = g_t_marm_material_keys  "note417314
                                                             "insED04072001
                  OUT_MARA_TAB     = L_T_MARA
                  OUT_MARC_TAB     = L_T_MARC
                  OUT_MARD_TAB     = L_T_MARD
                  OUT_MVKE_TAB     = L_T_MVKE
                  OUT_MARM_TAB     = L_T_MARM
              CHANGING
                  MORE_DATA_EXISTS = G_MORE_DATA_EXISTS
              EXCEPTIONS
                  WRONG_INPUT_DATA = 1
                  OTHERS           = 2
          IF SY-SUBRC <> 0.
            IF 1 = 2. MESSAGE E011(R3). ENDIF.
            LOG_WRITE 'E'                  "message type
                      'R3'                 "message class
                      '011'                "message number
                      SY-SUBRC             "message variable 1
                      ' '.                 "message variable 2
            RAISE ERROR_PASSED_TO_MESS_HANDLER.
          ENDIF.
          G_COUNTER_DATAPAKID = G_COUNTER_DATAPAKID + 1.
          LOOP AT L_T_MARA.
            MOVE-CORRESPONDING L_T_MARA TO E_T_BIW_MARA_S.
            APPEND E_T_BIW_MARA_S.
          ENDLOOP.
          LOOP AT L_T_MARC.
            MOVE-CORRESPONDING L_T_MARC TO E_T_BIW_MARC_S.
          provide additional attributes not contained in MARC
            PERFORM MARC_ADD_ATTRIBUTES CHANGING E_T_BIW_MARC_S
                                                 L_SUBRC.
            IF L_SUBRC <> 0.
              IF 1 = 2. MESSAGE E501(R§). ENDIF.
              "insED03082001 begin  note216922
              log_write 'W'                "message type
                        'R§'               "message class
                        '501'              "message number
                        e_t_biw_marc_s-werks "message variable 1
                        ' '.               "message variable 2
              "insED03082001 end    note216922
              "delED03082001 begin  note216922
              LOG_WRITE 'E'                "message type
                       'R§'               "message class
                       '501'              "message number
                        E_T_BIW_MARC_S-WERKS "message variable 1
                       ' '.               "message variable 2
              RAISE ERROR_PASSED_TO_MESS_HANDLER.
              "delED03082001 end   note2169222
            ENDIF.
            APPEND E_T_BIW_MARC_S.
          ENDLOOP.
          LOOP AT L_T_MARD.
            MOVE-CORRESPONDING L_T_MARD TO E_T_BIW_MARD_S.
            APPEND E_T_BIW_MARD_S.
          ENDLOOP.
          LOOP AT L_T_MVKE.
            MOVE-CORRESPONDING L_T_MVKE TO E_T_BIW_MVKE_S.
            APPEND E_T_BIW_MVKE_S.
          ENDLOOP.
          LOOP AT L_T_MARM.
            MOVE-CORRESPONDING L_T_MARM TO E_T_BIW_MARM_S.
            APPEND E_T_BIW_MARM_S.
          ENDLOOP.
        ENDIF.
      ENDIF.
    ENDFUNCTION.
    Thanks

    Hi,
    This might not be the right forum for this. You can post your question in more relevant forum like Netweaver-Exchange Infrastructure.

  • Function module for logical file path and name

    Hello all,
    I am wondering is there any function module available to translate a logical file path to a physical file path and a logical file name to a physical file name? Thanks a lot!
    Regards,
    Anyi

    Please check the FM FILE_NAME_GET.
          CALL FUNCTION <b>'FILE_GET_NAME'</b>
             EXPORTING
               logical_filename = 'ZDELCHKREP'
               parameter_1 = it_cntry-cntry
             IMPORTING
               file_name        = l_file
             EXCEPTIONS
               file_not_found   = 08.
        CALL FUNCTION <b>'FILE_GET_NAME_USING_PATH'</b>       EXPORTING
             logical_path = 'ZDELCHKREP'
             file_name = l_file
           IMPORTING
             file_name_with_path = l_file.
    Message was edited by: Anurag Bankley
    Message was edited by: Anurag Bankley

  • How to defined which logical database to use in a function module?

    Hey,
    I am trying to do logical database in a function module. I need to know where do i go to define which logical database to use? Becuase i get syntax error on my Get statement. The logical database i am trying to use is HR PNP .
    Any useful help will be appreciated,
    Thanks

    I think we can't assign logical database to FM or FG. Because there isn't any option to put the logical database in the FM or FG's attributes.
    You must have to create a executable report to have the LDB in use.
    Regards,
    Naimesh Patel

  • Problem in Logical Databse Call via Function Module - Urgent

    Hi Experts,
    To use the Logical Database(LDB) in the function module(Custom) I am using the function module - LDB_PROCESS. But I didn't get any output. I am attaching the code. Please Help me in this.
    DATA : W_LDBNAME LIKE TRDIR-LDBNAME.
    DATA : IT_CALLBACK LIKE TABLE OF LDBCB WITH HEADER LINE,
           IT_SELECTIONS LIKE TABLE OF RSPARAMS WITH HEADER LINE,
           IT_PERNR TYPE TABLE OF PERNR WITH HEADER LINE.
    MOVE 'PNP' TO W_LDBNAME.
    IT_CALLBACK-LDBNODE = 'PERNR'.
    IT_CALLBACK-GET     = 'X'.
    IT_CALLBACK-CB_PROG = SY-CPROG.
    IT_CALLBACK-CB_FORM = 'CALLBACK_PERNR'.
    APPEND IT_CALLBACK.
    CLEAR IT_CALLBACK.
    IT_SELECTIONS-KIND    = 'S'.
    IT_SELECTIONS-SELNAME = 'PNPPERNR'.
    IT_SELECTIONS-SIGN    = 'I'.
    IT_SELECTIONS-OPTION   = 'EQ'.
    IT_SELECTIONS-LOW      = '100178'.
    APPEND IT_SELECTIONS.
    CLEAR IT_SELECTIONS.
    CALL FUNCTION 'LDB_PROCESS'
    EXPORTING
        LDBNAME                    = W_LDBNAME
      VARIANT                    =
      EXPRESSIONS                =
      FIELD_SELECTION            =
      DYN_NODE_TYPES             =
    TABLES
        CALLBACK                   = IT_CALLBACK
       SELECTIONS                 = IT_SELECTIONS
    EXCEPTIONS
       LDB_NOT_REENTRANT           = 1
       LDB_INCORRECT               = 2
       LDB_ALREADY_RUNNING         = 3
       LDB_ERROR                   = 4
       LDB_SELECTIONS_ERROR        = 5
       LDB_SELECTIONS_NOT_ACCEPTED = 6
       VARIANT_NOT_EXISTENT        = 7
       VARIANT_OBSOLETE            = 8
       VARIANT_ERROR               = 9
       FREE_SELECTIONS_ERROR       = 10
       CALLBACK_NO_EVENT           = 11
       CALLBACK_NODE_DUPLICATE     = 12
       CALLBACK_NO_PROGRAM         = 13
       CALLBACK_NO_CBFORM          = 14
       DYN_NODE_NO_TYPE            = 15
       DYN_NODE_INVALID_TYPE       = 16
       OTHERS                      = 17.
    IF SY-SUBRC <> 0.
      MESSAGE I039(ZABA) WITH  SY-SUBRC.
    ENDIF.
    LOOP AT IT_PERNR.
      message i039(zaba) with 'Inside loop'.
      WRITE : / IT_PERNR-PERNR, IT_PERNR-BUKRS.
    ENDLOOP.
    *&      Form  CALLBACK_PERNR
          text
         -->L_LDBNAME     text
         -->L_IT_PAYROLL  text
         -->TYPE          text
         -->PAY99_REULT   text
         -->L_EVT         text
         -->L_CHK         text
    FORM CALLBACK_PERNR USING  L_LDBNAME LIKE TRDIR-LDBNAME
                               L_IT_PERNR LIKE PERNR
                               L_EVT type C
                               L_CHK type C.
      message i039(zaba) with 'Inside Callback'.
      WRITE : / L_IT_PERNR-PERNR,
                L_IT_PERNR-BUKRS.
      MOVE-CORRESPONDING L_IT_PERNR TO IT_PERNR.
      APPEND IT_PERNR.
      CLEAR IT_PERNR.
    ENDFORM.                    "CALLBACK_PERNR
    Thanks in advance
    Arul Jothi.

    Hi,
    I think Arul commented the 'it_selections' while trying out.. I couldn't get the fm work for PNP.. it worked fine with the FI LDBs.. just didn't seem to like the PNP..
    Regards,
    Suresh Datti

  • Function Module Call Via CMOD Logic for Master Data Enhancement

    Hi Friends Please help me to resolve this, would really be very kind of all of you.
    Requirement. I want to Enhance the field ZFACTREG from VIBDBE table in my datasource 0busentity_attr extract structure l_s_REIS_BUSENTITY_ATTR, I want to create the logic in CMOD exit_saplrsap_002 to call my function module for enhancement of master data. Please help me Step by Step
    Thanks
    Poonam Roy
    <b>Step #1</b>
    I put this code which gives me error in CMOD like this
    ERROR : Das formale Argument 'OTHERS' muss am Schluss der Ausnahmeliste stehen.
    ABAP Code#1 IN exit_saplrsap_002     
    DATA: l_d_fmname(30) TYPE c.
    CONCATENATE 'Z_DS_' i_datasource(25) INTO l_d_fmname.
    TRY.
    CALL FUNCTION l_d_fmname
    EXPORTING
    I_DATASOURCE = I_DATASOURCE
    I_UPDMODE = I_UPDMODE
    TABLES
    I_T_SELECT = I_T_SELECT
    I_T_FIELDS = I_T_FIELDS
    I_T_DATA = I_T_DATA
    C_T_MESSAGES = C_T_MESSAGES
    EXCEPTIONS
    RSAP_CUSTOMER_EXIT_ERROR = 1
    OTHERS = 2
    IF FOUND.
    IF SY-SUBRC <> 0.
    RASIE RSAP_CUSTOMER_EXIT_ERROR.
    END IF
    CATCH CX_SY_DYN_CALL_ILLEGAL_FUNC.
    ENDTRY.
    <b>Step#2</b>
    I simple created the Function module Z_DS_BUSINESS
    and put the code in source code  which gives me error . what should i put in other tabs like"Import", Export", Tables" i kept blank
    ABAP CODE give me error : The Dictionary structure or table "FIELD-SYMBOLS" is either not active. i have to remove include in the FM. WHY SO??
    FUNCTION Z_DS_BUSINENSS
    ""Lokale Schnittstelle:
    *"       IMPORTING
    *"             VALUE(I_DATASOURCE) TYPE  RSAOT_OLTPSOURCE
    *"             VALUE(I_CHABASNM) TYPE  SBIWA_S_INTERFACE-CHABASNM
    *"             VALUE(I_UPDMODE) TYPE  SBIWA_S_INTERFACE-UPDMODE
    *"       TABLES
    *"              I_T_SELECT TYPE  SBIWA_T_SELECT
    *"              I_T_FIELDS TYPE  SBIWA_T_FIELDS
    *"              I_T_DATA
    *"              C_T_MESSAGES STRUCTURE  BALMI OPTIONAL
    *"       EXCEPTIONS
    *"              RSAP_CUSTOMER_EXIT_ERROR
    INCLUDE ZXRSAU02.
      WRITE: / 'INSIDE THE Z_DS_MEASUREMENTS PROGRAM'.
    TABLES: REIS_BUSENTITY_ATTR,
            VIBDBE,
    field-symbols:.<fs_REIS_BUSENTITY_ATTR> like REIS_BUSENTITY_ATTR.
    DATA: BEGIN OF i_c_t_data OCCURS 0.
              include structure REIS_BUSENTITY_ATTR.
    DATA END OF i_c_t_data.
    DATA: i_c_t_data_copy like i_c_t_data OCCURS 0 WITH HEADER LINE,
          begin of i_vibdbe occurs 0,
          INTRENO like vibdbe-INTRENO,
          ZFACTREG like vibdbe-ZFACTREG,
                  end of i_vibdbe.
    i_c_t_data_copy[] = i_c_t_data[] = c_t_data[].
    sort i_c_t_data_copy by vibdbe.
    Select  INTRENO
            into table i_VIBDBE from VIBDBE
            for all entries in i_c_t_data_copy
            where  INTRENO = i_c_t_data_copy- INTRENO.
    if sy-subrc = 0.
      sort i_VIBDBE by INTRENO.
      loop at i_c_t_data assigning <fs_REIS_BUSENTITY_ATTR>.
        clear: i_VIBDBE.
        read table i_VIBDBE with key INTRENO = <fs_REIS_BUSENTITY_ATTR>-INTRENO
        BINARY SEARCH
        transporting ZFACTREG .
        if sy-subrc = 0.
          <fs_REIS_BUSENTITY_ATTR>-ZZFACTORY = i_vibebe-ZFACTREG
        endif.
    null

    (I leave office until Monday morning, Europe time)
    in include from customer-exit ZXRSAU01, etc.
    CASE I_DATASOURCE.
    WHEN '0CUSTOMER_ATTR'.
       PERFORM 0customer_attr changing i_t_data...
    ENDCASE.
    In each perform, doing what you wrote ; select (needed fields) from complementary-database-table into an internal table with a for all entries. sort the table. LOOP and MODIFY on i_t_data.
    In some case i had to insert lines of i_t_data to an internal table of DS_structure when entering subroutine and back at exit. (on 4.6C PI 2003 if i remember)
    Some optimization done when reading small tables (T001 society and the same, these are filled once and not for each packet of data.
    Your idea of creating different FM is of interest, but the cost of passing i_t_data between two programs (two function groups) may overcome the gain of performance. In a job only one DataSource is processed so only one routine is actually called.
    Regards.

  • Counter logic  in Function module of the generic extraction

    Hi,
    I had like to add this counter field which can be used in reporting..
    As this extraction logic is bit different, i cannot include it in transformations with 1 as a constant..
    so i am wrtiting this logic in Function Module..
    in the main table loop i had assigned this counter as 1 and after appending it i am clearing the counter field...
    is it a correct way or is there any thing that needs to be taken care?

    Hi,
    it will put 1 for every record.
    Can you share your coding ? please copy past your coding
    Regards,
    G

  • How to specify  or link Logical database to a Function Module.

    Hi Experts,
                      If a logical database is used in a function module, then  I want to know how & where to specify Logical database name. Like incase of  a normal se38 program we specify this name via menupath Program----> Attributes of ABAP editor screen.

    Hi,
    There are two ways of using a logical database: Either by linking it with an executable program, or by using the function module LDB_PROCESS in any ABAP program.
    Also check this link,
    http://help.sap.com/saphelp_nw2004s/helpdata/en/60/183d78163011d2953c0000e8353423/content.htm
    Regards,
    Ruthra

  • Function module for logical database

    hi
    which function module will return the logical database for a given application component from the SAP hierarchy.
    Example:
    Input- application component- LO
    output- MSM, etc.,
    Thank you.

    RS_COMPONENT_VIEW
    TADIR and LDBT
    LDB_INFO

  • Date conversion logic using function modules

    Hi there,
    I have been researching in the forum how data conversion is done in ABAP and I found out about the function modules
    CONVERSION_EXIT_LDATE_OUTPUT
    and
    MONTH_NAMES_GET
    It seems that the first function module can convert the date format 06/08/2011 to MONTH DD,YYYY and the second function can easily translate the month names once language SPRAS has been specified.
    Problem is I am not sure how I can convert my VBRK-FKDAT with format MM/DD/YYYY into the format DD MONTH YYYY format with the MONTH still dependent on the specified language.
    I tried to look at how to MONTH_NAMES_GET FM works and made this code:
    DATA: d_return like sy-subrc,
          itab_T247 like T247 occurs 0 with header line,
          gs_spras type spras.
    gs_spras = 'RU'.
    CALL FUNCTION 'MONTH_NAMES_GET'
    EXPORTING
       LANGUAGE                    = gs_spras
    IMPORTING
       RETURN_CODE                 = d_return
      TABLES
        MONTH_NAMES                 = itab_T247
    EXCEPTIONS
       MONTH_NAMES_NOT_FOUND       = 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.
    Loop at itab_t247.
    Write:/ itab_t247-LTX.
    endloop.
    The code just lists the months in Russian (which is the language I need). I am just new to ABAP so I am an avid reader of the forum. I hope someone can help.
    Thanks,
    dgrachee

    Hi Dgrachee ;
    You can change it as follows.
    Best Regards.
    gs_spras = sy-langu. "'RU'.
    CALL FUNCTION 'MONTH_NAMES_GET'

  • How to pass dynamic logical expression to function module

    Hi,
    I'm using FM META_READ_TABLE as below:
    As mentioned above im using META_READ_TABLE FM to get company codes from CSKS table of ECC. Below is the code im using:
       DATA:i_opt type STANDARD TABLE OF RFC_DB_OPT, i_fld type STANDARD TABLE OF RFC_DB_FLD,
           i_res type STANDARD TABLE OF TAB512.
    Constants:   c_expr(72) TYPE c VALUE 'KOSTL EQ COST_CTR', c_fld(5) TYPE c VALUE 'BUKRS'.
      w_opt-text = c_expr.
    w_fld-FIELDNAME = c_fld.
    append: w_opt to i_opt,
            w_fld to i_fld.
    data i_control type STANDARD TABLE OF BBP_CONTROL_RECORD.
    **&&--Get Co code from ECC (CSKS table)
    CALL FUNCTION 'META_READ_TABLE'
      EXPORTING
        QUERY_TABLE          = c_table
    *   DELIMITER            = ' '
    *   NO_DATA              = ' '
    *   ROWSKIPS             = '0'
    *   ROWCOUNT             = '0'
        LOGICAL_SYSTEM       = v1_logsys
      TABLES
        OPTIONS              = i_opt
        FIELDS               = i_fld
        DATA                 = i_res
        CONTROL_RECORD       = i_control.
    however it is giving me 'Communication Error' while executing this piece of code. I guess the problem here is with passing query to i_opt table. obviously the way im doing this is wrong and it has to be dynamic. Could anybody please give me idea how to execute fm with dynamic query i.e., 'KOSTL EQ COST_CTR' where COST_CTR is cost center and an importing parameter to this.please advise.
    Rgds

    The "communication error" would seem more likely to be a problem with an RFC call - does 'META_READ_TABLE" call another function in the remote system?
    We don't have that function module here (is it SRM?) but you should be able to construct your dynamic "where" something like this (p_kostl is the variable in this example):
      data:
        l_where     type text72.
      concatenate
        'KOSTL EQ_'
        p_kostl      "variable
        into l_where.
      translate l_where using '_ '.  "replace underscore with space
    Jonathan

Maybe you are looking for

  • File CC not picking file after module is added

    Hi Experts, I am trying to develop an sample adapter module just to pick the name of the file and put it in the payload. I managed to deploy the module through SDM and it is showing as active in the visual admin. But when I run the interace it doesn'

  • Images wont load for a certain website how do I fix this ?

    Please help me !! I do a lot of surveys but on one website in particular (Global Testmarket) has for a while stopped showing me their images when I come out of one survey to start another, all I see is a blank white screen. I have asked their support

  • InDesign / Color Separations / BW Laser printer

    In the past, I have always used an old HP Laserjet 4MV/PS for our spot color separations from Pagemaker. Most InDesign (CS2 & CS3 / PC) files are too big for it to handle, so we create pdfs and output that way. The 4MV has now died and we want someth

  • 4th post plz help

    I am having a problems with dynamic text fields and strings... Using Flash 8 Professional by the way. I have a number of swfs that load their content from XML files generated by Flash using the strings panel. My problem is that when I update one of t

  • Error when compiling iOS app

    I have tried to start learning iOS development, however whenever i try to compile my app i always get a load of errors with the 4.2 frameworks this is the errors i keep getting http://pastebin.com/raw.php?i=kavS0zNA does anyone know what i have done