HR-ABAP macros avoid

I am new  to HR-ABAP
i want to avoid this macro
  rp-provide-from-last p0000 space pn-begda pn-endda.
plz send how to write code , with this place.
2. i want to move one internal table fileds to another table
   but i do not use move-corresponding ? how plz send code

1. to avoid the macro, here is exact code which works behind that macro.
SORT P0000.
PNP-SW-FOUND = '0'.
CLEAR PNP-SY-TABIX.
LOOP AT P0000.
  IF P0000-BEGDA LE PN-ENDDA AND P0000-ENDDA GE PN-ENDDA.
    PNP-SW-FOUND = '1'.
    EXIT.
  ENDIF.
  IF P0000-BEGDA LE PN-ENDDA AND P0000-ENDDA GE PN-BEGDA.
    PNP-SY-TABIX = SY-TABIX.
  ENDIF.
ENDLOOP.
IF PNP-SW-FOUND EQ '0'.
  IF PNP-SY-TABIX NE 0.
    PNP-SW-FOUND = '1'.
    READ TABLE P0000 INDEX PNP-SY-TABIX.
  ELSE.
    CLEAR P0000.
  ENDIF.
ENDIF.
2. To assign an internal table to another without move coresponding, just copy like this:
it_new[] = it_old[].

Similar Messages

  • HR ABAP Macro include files?

    Hi all ABAPers,
    I am trying to develope a BAPI using HR ABAP Macro. (Eg RP-EXP-C1-TX ,RP-EXP-C3-TY)
    obviously, ABAP Macro is pretty new to me....
    I have a feeling HR ABAP macro requires me to "Include" some file beforeI can use it.
    Can anyone please let me know what include file I should put it on.
    Any help appreciated!!!!

    Hi,
    before you can use it ABAP macro requires you to define it
    in the program ( or one of its includes) or in table TRMAC.
    In the macro definition you can use tables, files etc.
    e. g. for macro
    AA-BB-DD-XX
    you should code in the program ( or one of its includes):
    DEFINE AA-BB-DD-XX.
    LOOP AT ITAB.
    MOVE-CORRESPONDING ITAB TO ITAB2.
    ITAB2-FIELD1 = 8.
    APPEND ITAB2. " or write or upload etc.
    ENDLOOP.
    END-OF-DEFINITION.

  • How to debug abap macros?

    Hi,
    Can anyone tell me How to debug abap macros?
    Thanks in advance.
    -Selva

    Hi Rigel,
    Understand it is a very old thread, but still could you please help me out with this? I tried to search for the option which you mentioned, but to no avail. I have SAP ECC 7.0.
    Thanks in advance.

  • Hr abap- macro

    there is a problem in hr abap with the macros like rp-provide from frst and rp-provide from last. is there any solution in the form of sample codes it will be very helpful.
    the exact problem with the code is that
    rp-provide from last and frst are providing the same data from the table which is the last record, but which is not the desired function of the rp-provide from frst.
    if there are any solutions to the problem please mail me the solution.
    thank you
    ramesh

    Hello,
    Instead of using the rp-provide from last you can use the provide statement only. See attached a program here using the rp-read-infotype macro you can have a better control.
    AUTHOR      :   shekhar s kulkarni
    DATE        :   18th july 2003
    DESCRIPTION :
    DEV REQUEST :
    MODIFICATION LOGS
    VERSION
    DATE
    REQUEST NO
    DESCRIPTION
    REPORT zpyr_overseasemplist.
    *Declaration for type pool
    TYPE-POOLS :slis.
    *Declaration for tables
    TABLES : pa0000,pa0008, zhrrole, zhrband, zhrrole_assg,t001p,t503t,t500p
    ,t005h,t591s.
    <b>*Declaration for infotypes
    INFOTYPES : 0000,0001,9009,0008,9001,9015.</b>
    *Declaration data for alv list
    DATA: lv_tmplt LIKE disvariant VALUE 'ZPYR_ELIGIBLESALARY',
          lv_fieldcat TYPE slis_t_fieldcat_alv,
          lv_ls_layout TYPE slis_layout_alv,
          driver LIKE sy-repid,
          wa_lv_fieldcat TYPE slis_fieldcat_main,
          farben TYPE slis_specialcol_alv,             "color display
          it_events TYPE slis_t_event,
          wa_events TYPE slis_alv_event,
          gs_extract1 LIKE disextract.
    DATA: BEGIN OF it_leavedate OCCURS 0.
            INCLUDE STRUCTURE hida.
    DATA: END OF it_leavedate.
    *Declaration data for program zpyr_overseasemplist
    DATA : BEGIN OF it_overseas OCCURS 0,
            empno LIKE pa0008-pernr,
            name LIKE pa0001-ename,
            c_role_desc LIKE zhrrole-zrole_desc,
            band LIKE zhrband-zband_desc,
            perband LIKE pa0008-trfgr,
            category LIKE pa0001-ename,
            country LIKE t591s-stext,
            currency LIKE pa0008-waers,
            pu LIKE pa0001-btrtl,
            du LIKE pa9009-du_cd,
            location LIKE t500p-name1,
            region LIKE t005h-bezei,
            doj LIKE  sy-datum,
            start_period LIKE sy-datum,
            end_period LIKE sy-datum,
            basic LIKE pa0008-bet01,
            hra LIKE pa0008-bet01,
            insurance LIKE pa0008-bet01,
            oda LIKE pa0008-bet01,
            car_all LIKE pa0008-bet01,
            gross_1 LIKE pa0008-bet01,
            bonus LIKE pa0008-bet01,
            cpi LIKE pa0008-bet01,
            gross_2 LIKE pa0008-bet01,
            provision LIKE pa0008-bet01,
            tax LIKE pa0008-bet01,
            total LIKE pa0008-bet01,
            gross LIKE pa0008-bet01,
    END OF it_overseas.
    DATA : BEGIN OF it_empoverseas OCCURS 0,
            empno LIKE pa0008-pernr,
            name LIKE pa0001-ename,
            category LIKE pa0001-ename,
            country LIKE t591s-stext,
            currency LIKE pa0008-waers,
            gross LIKE pa0008-bet01,
    END OF it_empoverseas.
    *Declaration data for program
    DATA : gc_startdate TYPE pa0008-begda,
           gc_enddate TYPE pa0008-endda,
           lc_dt TYPE sy-datum,
           li_tdt TYPE i,
           li_days TYPE i,
           lf_mon_bonus TYPE pa0008-bet01,
           gc_chkdate TYPE pa0000-begda,
           lc_flag TYPE c.
    DATA: BEGIN OF ppbwla OCCURS 10.
            INCLUDE STRUCTURE pbwla.
    DATA: END OF ppbwla.
    ***********************Selection screen *******************************
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    PARAMETERS: p_pabrp LIKE qppnp-pabrp,
                p_pabrj LIKE qppnp-pabrj.
    PARAMETERS: p_prcnt LIKE pa0008-bet01 DEFAULT '8',
                p_bprcnt LIKE pa0008-bet01 DEFAULT '50'.
    SELECTION-SCREEN END OF BLOCK blk1.
    **********************Initialization*********************************
    INITIALIZATION.
      lv_ls_layout-group_change_edit  = 'X'.
      lv_ls_layout-get_selinfos = 'X'.
      driver = 'ZPYR_OVERSEASEMPLIST'.
      p_pabrp = sy-datum+4(2).
      p_pabrj = sy-datum+0(4).
    *********************Start of selection*****************************
    START-OF-SELECTION.
      PERFORM data_selection.      "Data selection from tables
      PERFORM alv_listdisplay.     "alv grid display
    END-OF-SELECTION.
    *&      Form  INIT_FIELDCAT
          Intialization of text for columns in the internal table
    FORM init_fieldcat.
      LOOP AT lv_fieldcat INTO wa_lv_fieldcat.
        CASE wa_lv_fieldcat-fieldname.
          WHEN 'EMPNO'.
            wa_lv_fieldcat-seltext_l = 'Emp Number'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'DOJ'.
            wa_lv_fieldcat-seltext_l = 'Join Date'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'NAME'.
            wa_lv_fieldcat-seltext_l = 'Name'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'BAND'.
            wa_lv_fieldcat-seltext_l = 'Job Band'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'PERBAND'.
            wa_lv_fieldcat-seltext_l = 'Personal Band'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'COUNTRY'.
            wa_lv_fieldcat-seltext_l = 'Country'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'CURRENCY'.
            wa_lv_fieldcat-seltext_l = 'Currency'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'BASIC'.
            wa_lv_fieldcat-seltext_l = 'Basic'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'HRA'.
            wa_lv_fieldcat-seltext_l = 'HRA'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'INSURANCE'.
            wa_lv_fieldcat-seltext_l = 'Insurance'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'ODA'.
            wa_lv_fieldcat-seltext_l = 'ODA'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'CAR_ALL'.
            wa_lv_fieldcat-seltext_l = 'Car Allow.'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'GROSS_1'.
            wa_lv_fieldcat-seltext_l = 'Total excl. Bonus & CPI'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'BONUS'.
            wa_lv_fieldcat-seltext_l = 'Bonus'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'CPI'.
            wa_lv_fieldcat-seltext_l = 'CPI'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'GROSS_2'.
            wa_lv_fieldcat-seltext_l = 'Total incl. Bonus & CPI'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'PU'.
            wa_lv_fieldcat-seltext_l = 'PU'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'DU'.
            wa_lv_fieldcat-seltext_l = 'DU'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'LOCATION'.
            wa_lv_fieldcat-seltext_l = 'Location'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'REGION'.
            wa_lv_fieldcat-seltext_l = 'Region'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'PROVISION'.
            wa_lv_fieldcat-seltext_l = 'Bonus @ 100 %'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'TAX'.
            wa_lv_fieldcat-seltext_l = 'Tax'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'TOTAL'.
            wa_lv_fieldcat-seltext_l = 'Total Bonus Cost @ 100%'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'START_PERIOD'.
            wa_lv_fieldcat-seltext_l = 'Start Period'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'END_PERIOD'.
            wa_lv_fieldcat-seltext_l = 'End Period'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'CATEGORY'.
            wa_lv_fieldcat-seltext_l = 'Category'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
          WHEN 'GROSS'.
            wa_lv_fieldcat-seltext_l = 'Expected Bonus Payout'.
            wa_lv_fieldcat-ddictxt = 'L'.
            wa_lv_fieldcat-ddic_outputlen = 13.
            MODIFY lv_fieldcat FROM wa_lv_fieldcat.
        ENDCASE.
      ENDLOOP.
    ENDFORM.                    " INIT_FIELDCAT
    *&      Form  ALV_LISTDISPLAY
          Use the function to display the alv list
    FORM alv_listdisplay.
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
           EXPORTING
                i_program_name         = driver
                i_internal_tabname     = 'IT_OVERSEAS'
                i_client_never_display = 'X'
                i_inclname             = driver
           CHANGING
                ct_fieldcat            = lv_fieldcat[]
           EXCEPTIONS
                inconsistent_interface = 1
                program_error          = 2
                OTHERS                 = 3.
      IF sy-subrc <> 0.
      ENDIF.
    *Add correct column names..
      PERFORM init_fieldcat.
    *Display the list.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
           EXPORTING
                i_callback_program      = driver
                it_fieldcat             = lv_fieldcat[]
                i_default               = 'X'
                i_save                  = 'A'
                is_variant              = lv_tmplt
                is_layout               = lv_ls_layout
                i_callback_user_command = 'USER_COMMAND'
           TABLES
                t_outtab                = it_overseas
           EXCEPTIONS
                program_error           = 1
                OTHERS                  = 2.
      IF sy-subrc <> 0.
      ENDIF.
    ENDFORM.                    " ALV_LISTDISPLAY
    *&      Form  DATA_SELECTION
          Select the data from various tables and logical database
    FORM data_selection.
      CONCATENATE  p_pabrj p_pabrp '01' INTO lc_dt.
    *Get the last date of the month
      CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
           EXPORTING
                day_in            = lc_dt
           IMPORTING
                last_day_of_month = gc_enddate
           EXCEPTIONS
                day_in_no_date    = 1.
      IF sy-subrc <> 0.
        WRITE : / 'Error in date entry'.
      ENDIF.
      CONCATENATE p_pabrj p_pabrp '01' INTO gc_startdate. "startdate
      SELECT * FROM pa0008
        WHERE (
                ( begda BETWEEN gc_startdate and gc_enddate )
                OR ( endda BETWEEN gc_startdate AND gc_enddate )
                OR ( begda >= gc_startdate AND endda >= gc_enddate )
                OR ( begda <= gc_startdate AND endda = '99991231' )
          AND subty NE '0'
          AND subty NE '11'.
        it_overseas-empno = pa0008-pernr.
        IF sy-subrc = 0.
    *Check whether employee has left.
          CALL FUNCTION 'HR_LEAVING_DATE'
               EXPORTING
                    persnr                 = pa0008-pernr
               IMPORTING
                    leavingdate            = gc_chkdate
               TABLES
                    leaving_dates          = it_leavedate
               EXCEPTIONS
                    leaving_date_not_found = 1
                    pernr_not_assigned     = 2
                    OTHERS                 = 3.
          IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
          ENDIF.
          IF sy-subrc = 0.
            IF gc_chkdate BETWEEN gc_startdate AND gc_enddate
                OR gc_chkdate >= gc_startdate.
            ELSE.
              CONTINUE.
            ENDIF.
          ENDIF.
    *Check whether the start date is less than the enddate of the month
    *If it is less than the enddate of the month then only take that record.
          IF pa0008-begda <= gc_enddate.
    Getting the name of the employees
            CALL FUNCTION 'CATS_GET_EMPLOYEE_NAME'
                 EXPORTING
                      pernr           = it_overseas-empno
                 IMPORTING
                      name            = it_overseas-name
                 EXCEPTIONS
                      pernr_not_found = 1.
            IF sy-subrc <> 0.
            ENDIF.
    *Get the joining date of the employees
            CALL FUNCTION 'RP_GET_HIRE_DATE'
                 EXPORTING
                      persnr          = it_overseas-empno
                      check_infotypes = '0000'
                 IMPORTING
                      hiredate        = it_overseas-doj.
    *Get the role information for the employee
           rp-read-infotype pa0008-pernr 9001 p9001 gc_startdate gc_enddate.
            PROVIDE * FROM p9001 BETWEEN gc_startdate AND gc_enddate.
    *Get the role description for that particular period.
              SELECT SINGLE zrole_desc INTO (it_overseas-c_role_desc)
              FROM zhrrole WHERE zrole_cd = p9001-zrole_cd.
    *Get the job Band for that employee
          SELECT SINGLE * FROM zhrrole_assg WHERE zrole_cd = p9001-zrole_cd.
              SELECT SINGLE zband_desc INTO it_overseas-band
                    FROM zhrband
                   WHERE zband_cd = zhrrole_assg-zband_cd.
            ENDPROVIDE.
    *Get Personal Sub Band
            it_overseas-perband = pa0008-trfgr.
    *Get pay data
            CALL FUNCTION 'RP_FILL_WAGE_TYPE_TABLE'
                 EXPORTING
                      appli                        = 'E'
                      begda                        = pa0008-begda
                      endda                        = pa0008-endda
                      infty                        = '0008'
                      pernr                        = pa0008-pernr
                      subty                        = pa0008-subty
                 TABLES
                      ppbwla                       = ppbwla  "output
                 EXCEPTIONS
                      error_at_indirect_evaluation = 1.
            IF sy-subrc <>  0.
              REFRESH ppbwla.
              CLEAR ppbwla.
            ELSE.
              LOOP AT ppbwla.
                it_overseas-currency = ppbwla-waers.
                IF ppbwla-lgart = '8101'
                  OR ppbwla-lgart = '6001' OR ppbwla-lgart = '6002'
                  OR ppbwla-lgart = '6003' OR ppbwla-lgart = '6004'
                  OR ppbwla-lgart = '7151' OR ppbwla-lgart = '6005'
                  OR ppbwla-lgart = '6006' OR ppbwla-lgart = '6007'
                  OR ppbwla-lgart = '6008' OR ppbwla-lgart = '6009'
                  OR ppbwla-lgart = '6010' OR ppbwla-lgart = '6011'
                  OR ppbwla-lgart = '6012' OR ppbwla-lgart = '6013'
                  OR ppbwla-lgart = '6014' OR ppbwla-lgart = '6015'.
                  it_overseas-basic = ppbwla-betrg.
                ELSEIF ppbwla-lgart = '8301'.
                  it_overseas-hra  = ppbwla-betrg.
                ELSEIF ppbwla-lgart = '7801'.
                  it_overseas-insurance  = ppbwla-betrg.
                ELSEIF ppbwla-lgart = '8302' OR ppbwla-lgart = '7802'
                  OR ppbwla-lgart = '6301' OR ppbwla-lgart = '6303'
                  OR ppbwla-lgart = '6302' OR ppbwla-lgart = '6304'
                  OR ppbwla-lgart = '6305' OR ppbwla-lgart = '6306'
                  OR ppbwla-lgart = '6307' OR ppbwla-lgart = '6308'
                  OR ppbwla-lgart = '6309' OR ppbwla-lgart = '6310'
                  OR ppbwla-lgart = '6311' OR ppbwla-lgart = '6312'
                  OR ppbwla-lgart = '6313' OR ppbwla-lgart = '6314'.
                  it_overseas-oda = ppbwla-betrg.
                ELSEIF ppbwla-lgart = '6409'
                  OR ppbwla-lgart = '6410' OR ppbwla-lgart = '6411'
                  OR ppbwla-lgart = '6412' OR ppbwla-lgart = '6413'
                  OR ppbwla-lgart = '6414' OR ppbwla-lgart = '8303'
                  OR ppbwla-lgart = '6401' OR ppbwla-lgart = '6402'
                  OR ppbwla-lgart = '6403' OR ppbwla-lgart = '6404'
                  OR ppbwla-lgart = '6405' OR ppbwla-lgart = '6406'
                  OR ppbwla-lgart = '6407' OR ppbwla-lgart = '6408'
                  OR ppbwla-lgart = '7803' OR ppbwla-lgart = '6415'.
                  it_overseas-car_all = ppbwla-betrg.
                ELSEIF ppbwla-lgart = '8945'
                  OR ppbwla-lgart = '6101' OR ppbwla-lgart = '6102'
                  OR ppbwla-lgart = '6103' OR ppbwla-lgart = '6104'
                  OR ppbwla-lgart = '7945' OR ppbwla-lgart = '6105'
                  OR ppbwla-lgart = '6106' OR ppbwla-lgart = '6107'
                  OR ppbwla-lgart = '6108' OR ppbwla-lgart = '6109'
                  OR ppbwla-lgart = '6110' OR ppbwla-lgart = '6111'
                  OR ppbwla-lgart = '6112' OR ppbwla-lgart = '6113'
                  OR ppbwla-lgart = '6114' OR ppbwla-lgart = '6115'.
                  it_overseas-bonus = ppbwla-betrg.
                ELSEIF ppbwla-lgart = '8975'
                  OR ppbwla-lgart = '6201' OR ppbwla-lgart = '6202'
                  OR ppbwla-lgart = '6203' OR ppbwla-lgart = '6204'
                  OR ppbwla-lgart = '7975' OR ppbwla-lgart = '6205'
                  OR ppbwla-lgart = '6206' OR ppbwla-lgart = '6207'
                  OR ppbwla-lgart = '6208' OR ppbwla-lgart = '6209'
                  OR ppbwla-lgart = '6210' OR ppbwla-lgart = '6211'
                  OR ppbwla-lgart = '6212' OR ppbwla-lgart = '6213'
                  OR ppbwla-lgart = '6214' OR ppbwla-lgart = '6215'.
                  it_overseas-cpi = ppbwla-betrg.
                ENDIF.
              ENDLOOP.
              REFRESH ppbwla.
            ENDIF.
    *Add which country according to the subtype of the record
            SELECT SINGLE stext INTO it_overseas-country
                      FROM t591s WHERE subty = pa0008-subty
                       AND infty = '0008'
                       AND sprsl = sy-langu.
    *Addition to gross components
            it_overseas-gross_1 = it_overseas-basic  + it_overseas-hra
                                 + it_overseas-insurance + it_overseas-oda
                                 + it_overseas-car_all.
            it_overseas-gross_2 =  it_overseas-bonus + it_overseas-cpi
                                    + it_overseas-gross_1.
    *Get PU DU Location and Region for the employee
           rp-read-infotype pa0008-pernr 0001 p0001 gc_startdate gc_enddate.
            PROVIDE * FROM p0001 BETWEEN gc_startdate AND gc_enddate.
              SELECT SINGLE * FROM t001p WHERE btrtl = p0001-btrtl.
              SELECT SINGLE * FROM t503t WHERE persk = p0001-persk.
              SELECT SINGLE * FROM t500p WHERE persa = p0001-werks.
              SELECT SINGLE * FROM t005h WHERE land1 = t500p-land1 AND
              regio = t500p-regio AND cityc = t500p-cityc.
              it_overseas-pu = t001p-btext.
              it_overseas-location = t500p-name1.               "dev903953
              it_overseas-region = t005h-bezei.
            ENDPROVIDE.
    *Get the DU Details from infotype 9009
    <b>      rp-read-infotype pa0008-pernr 9009 p9009 gc_startdate gc_enddate.
            PROVIDE * FROM p9009 BETWEEN gc_startdate AND gc_enddate.
              it_overseas-du = p9009-du_cd.
            ENDPROVIDE.</b>*Decide the category
            PERFORM get_category.
    *Calculate the Provision
    *Start and enddate of the period
            IF pa0008-begda <= gc_startdate.
              it_overseas-start_period = gc_startdate.
            ELSE.
              it_overseas-start_period = pa0008-begda.
            ENDIF.
            IF gc_enddate <= pa0008-endda.
              it_overseas-end_period = gc_enddate.
            ELSE.
              it_overseas-end_period = pa0008-endda.
            ENDIF.
    *The monthly bonus is bonus / 12
            lf_mon_bonus = it_overseas-bonus / 12.
    *Working days onsite. Add 1 to days to consider todays day.
    If employee has resigned.
            li_tdt = it_overseas-end_period - it_overseas-start_period  + 1.
            li_days = gc_enddate - gc_startdate + 1.
            it_overseas-provision = ( lf_mon_bonus * li_tdt ) / li_days.
    *Tax Calculation.
            it_overseas-tax = it_overseas-provision * p_prcnt / 100.
    *Total Provision
            it_overseas-total = it_overseas-provision + it_overseas-tax.
    *Gross Provision
            it_overseas-gross = it_overseas-total * p_bprcnt / 100.
            APPEND it_overseas.
            CLEAR it_overseas.
            CLEAR gc_chkdate.
            CLEAR : zhrrole, zhrband, zhrrole_assg,t001p,t503t,t500p.
            CLEAR : p0001,p9001,p9009.
          ENDIF.
        ENDIF.
      ENDSELECT.
    ENDFORM.                    " DATA_SELECTION
          FORM USER_COMMAND                                SK           *
          USER COMMAND FOR DYNAMIC REPORTING      -SHEKHAR KULKARNI     *
    -->  UCOMM                                                         *
    -->  SELFIELD                                                      *
    FORM user_command USING ucomm LIKE sy-ucomm
                           selfield TYPE slis_selfield.
      READ TABLE it_overseas INDEX selfield-tabindex.
      CHECK sy-subrc = 0.
      CASE ucomm.
        WHEN '&IC1'.
          CASE selfield-sel_tab_field.
    *If clicked on BAND.
            WHEN 'IT_OVERSEAS-EMPNO' OR 'IT_OVERSEAS-NAME'.
              PERFORM display_details USING it_overseas-empno.
    *If clicked on Purchase order.
          ENDCASE.
      ENDCASE.
    ENDFORM.
    *&      Form  DISPLAY_DETAILS
         Display the selected employee details.
         -->P_IT_OVERSEAS_EMPNO  text
    FORM display_details USING    p_it_overseas_empno.
    READ TABLE IT_OVERSEAS WITH KEY EMPNO = P_IT_OVERSEAS_EMPNO
                  BINARY SEARCH.
    *transporting empno total.
      IF sy-subrc = 0.
        LOOP AT it_overseas.
          it_empoverseas-empno = it_overseas-empno.
          it_empoverseas-country = it_overseas-country.
          it_empoverseas-currency = it_overseas-currency.
          it_empoverseas-category = it_overseas-category.
          it_empoverseas-name = it_overseas-name.
          it_empoverseas-gross = it_overseas-gross.
          APPEND it_empoverseas.
        ENDLOOP.
        SORT it_empoverseas BY category currency empno.
        REFRESH lv_fieldcat[].
        CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
             EXPORTING
                  i_program_name         = driver
                  i_internal_tabname     = 'IT_EMPOVERSEAS'
                  i_client_never_display = 'X'
                  i_inclname             = driver
             CHANGING
                  ct_fieldcat            = lv_fieldcat[]
             EXCEPTIONS
                  inconsistent_interface = 1
                  program_error          = 2
                  OTHERS                 = 3.
        IF sy-subrc <> 0.
        ENDIF.
        PERFORM init_fieldcat.
        CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
             EXPORTING
                  i_callback_program = driver
                  it_fieldcat        = lv_fieldcat[]
                  i_default          = 'X'
                  i_save             = 'A'
                  is_variant         = lv_tmplt
                  is_layout          = lv_ls_layout
             TABLES
                  t_outtab           = it_empoverseas
             EXCEPTIONS
                  program_error      = 1
                  OTHERS             = 2.
        IF sy-subrc <> 0.
        ENDIF.
      ENDIF.
      REFRESH it_empoverseas.
    ENDFORM.                    " DISPLAY_DETAILS
    *&      Form  GET_CATEGORY
         Find out the category of the person.
    FORM get_category.
      CASE p0001-btrtl.
        WHEN '30' OR '31' OR '35' OR '36' OR '39' OR '45' OR '47' OR '48'
        OR '49' OR '65' OR '71' OR '74'.
          it_overseas-category = 'Sales'.
        WHEN '63'.
          it_overseas-category = 'IBCS'.
        WHEN '54' OR '18' OR '19' OR '20'.
          it_overseas-category = 'Banking Bonus'.
        WHEN OTHERS.
          it_overseas-category = 'Others'.
      ENDCASE.
      IF (     p9001-zrole_cd = 'BM'
            OR p9001-zrole_cd = 'GEM'
            OR p9001-zrole_cd = 'KEYACMGR'
            OR p9001-zrole_cd = 'AM'
            OR p9001-zrole_cd = 'BSM'
            OR p9001-zrole_cd = 'ENGMGR' ).
        it_overseas-category = 'AM/BM/EM'.
      ENDIF.
      IF ( p9001-zrole_cd = 'PRINCIPAL'
          OR p9001-zrole_cd = 'SRPRIN' ).
        it_overseas-category = 'IBCS'.
      ENDIF.
    ENDFORM.                    " GET_CATEGORY
    <b></b>

  • Regarding abap Macros

    Hi Experts,
    I am wring the programming in Abap-Hr usnig Macros.
    But my clients requirement is, don't use macros when using LDB's. Is it possible for payroll results.
    By using the macro
    RP_PROVIDE_FROM_LAST P0002 SPACE LOW-DATE HIGH-DATE
    what is the alternative of this macro by retrieving the data from infotype based on PERNR.
    thanks in advance.
    Sai
    Edited by: Sai Babu on Nov 21, 2008 8:19 AM

    Hi
    You can use HR_READ_INFOTYPE function module to read latest record of an employee.
    pass system date (sy-datum) in importing parameters validbegin and validend.
    Thanks
    Vishal Kapoor

  • Abap macro parameter number limit?

    Is there any number of macro parameter restriction?
    I am using "set_column" to populate field-category for ALV report. Every is fine until I add ls_fcat-no_out    = &10.  I wonder the max parameter no. is 9? Then what can I do for this case?
      DEFINE set_column.
        clear ls_fcat.
        ls_fcat-fieldname = &1.
        ls_fcat-scrtext_l = &2.
        ls_fcat-edit      = &3.
        ls_fcat-do_sum    = &4.
        ls_fcat-no_zero   = &5.
        ls_fcat-just      = &6.
        ls_fcat-datatype  = &7.
        ls_fcat-outputlen = &8.
        ls_fcat-emphasize = &9.
        ls_fcat-no_out    = &10.
        append ls_fcat to pt_fcat.
      END-OF-DEFINITION.

    Only up to 9 parameters !!.
    Thanks
    Venkat.

  • Error in Bex Analyzer including the filter button command in Callback macro

    Hello,
    I have the following problem with the function filter button in the Bex Analyzer included in the callback macro:
    Because of using 2 hierarchies in the filter the setting drill down to level 2 in the query gives no right output in the Bex Analyzer. The drill down level 2 is not shown. SAP recommends the include of a filter button to solve this problem. With a filter button in the sheet the problem was solved.
    But after including the filter button command in the callback macro I get an error in MS Excel.
    The callback macro starts, the filter was set by the user and the data was refreshed. Because of the refreshing of the filter the callback function the callback function starts several times. After setting the filter the first time, the following macro avoids the several starting of the set filter function:
    Sub CallBack(ParamArray varname())
    On Error GoTo err_handler
       Dim lRange As Range
       Set lRange = varname(1)
    'Filter entfernend/delete filter
    Dim ZeichenFilter As Long
    ZeichenFilter = Len(Sheet4.Cells(41, 3).Value)
    Dim Filter1 As String, Filter2 As String
    Filter1 = Left(Sheet4.Cells(28, 3), ZeichenFilter)
    Filter2 = Left(Sheet4.Cells(41, 3).Value, ZeichenFilter)
    If Filter1 <> Filter2 And Filter2 <> "" Then
        onAction = True
        onAction = False
    End If
    'Filter setzen mit einmaligem durchlaufen/set filter and run one time
    If onAction = False Then
        onAction = True
        Call Sheet4.BUTTON_55_Click
        onAction = False
    End If
    exit_handler:
        Exit Sub
    err_handler:
        MsgBox Err.Description, vbOKOnly, "Error in " & " setMusterSub"
        Resume exit_handler
    End Sub
    After the filter was set the callback macro starts the second time. Then the Bex Analyzer erros with the sandglass. The working on VBA is possible, but not the working with Bex Analyer . Values in Excel weren’t shown.
    How can I avoid this error?

    Once I am adding VAR_VALUE_1 to the static parameters, the system generates two messages error:
    Program error in class SAPMSSY1 method : UNCAUGHT_EXCEPTION
    System error in program SAPLRRS2 and form GET_SID-1
    Best Regards,
    Hanit

  • Javascript in abap

    hi,
    I'm trying to dynamically build a condition and then do an IF cond.
    Unfortunately, dynamics are not supported very well in ABAP. Therefore, it was suggested to me by a gentleman named Christian to use javascript to do this.
    ex.
    //dynamically constructed cond
    if (cond).
      write:/ 'success'.
    else.
      write:/ 'F'.
    endif.
    I have already built the condition dynamically in ABAP, so I do not need to construct it in JAVA.
    I tried several ABAP macros and variations of syntax- unsuccessfully.
    Now I plan on creating a javascript within my ABAP. I'm using the following as documentation to lead me in the right direction. (https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/documents/a1-8-4/abap faqs.faq#q-17).
    It seems like the  <b>CL_JAVA_SCRIPT </b> javascript class is not available on 46. is this true?
    Is there another javascript class on the 46 system I can refer to?
    Also, that link refers me to the program DEMO_JAVA_SCRIPT_MINI_EDITOR. How do I access this?
    Please help if you can,
    Natasha

    Hi  Marcin,
    Thankyou for your quick reply.
    It is server side scripting only. but i have already chekced the link which u sent me. i did not find anything realted ... we are not able to debug the issue?
                This is the place where it is throwing the error:
           var lv_pct=`FREM-TBR_PCT[j]`
                       if (parseInt("`lv_pct`") == `i`)
    is the syntax of the code is correct?
    Do you want me to send the whole code to you?
    Also please tell me if there any way to debug the javascripts  for this IAC applications.
    Thanks & Regards,
    Kavitha.

  • Multiple page  in only one pdf in adobe forms abap?

    Hi,
    How to display multiple page  in only one pdf in adobe forms abap and avoid > sign in adobe for next page?

    Hi,
    Here are the steps how you can do it.
    1. Create a table.
    2. In the Library palette, click the Standard category and drag the Table object into a cell in the main table.
    Note: If you selected Donu2019t Show This Again in the Insert Table dialog box, when you select the Table object from the Library palette, LiveCycle Designer automatically inserts a table with the same number of columns and rows that you inserted the last time you used the Insert Table dialog box.
    3. In the Insert Table dialog box, enter the number of columns and rows. You can enter a maximum of 20 columns and 50 rows. You can add more columns and rows after the table is created by using the Insert commands on the Table menu.
    4. To add a header row, select Include Header Row In Table.
    5. To add a footer row, select the Include Footer Row In Table.
    6. Click OK.
    Regards
    Runal

  • How can I transport a single DP Macro???

    Hi,
    I have a macro book that has a number od DP macro's that have been developed within it.
    Over the years macro's have been updated directly within our production system so that I cannot be sure that the macro's already within our development system are the same as the macro's within our Quality System and production system
    I have developed a macro which I want to transport through correctly through the Development and Quality system in the correct way. However, I dont think that you can transport a single macro, I think you have to transport the whole Macro Book.
    Can anyone advise if there is a way that I can transport my single macro avoiding alot of jiggling around and the risk of making mistakes and overwriting the Production Macro's by mistake.
    Thanks in advance for any advise that you can give
    Mark

    Mark
    Please refer this thread
    How to transport single macro, NOT the entire macro book
    I also have another suggestion for you. Create a temporary data view which is a copy of the data view that contains the "new macro".  now go to production system  and backmigrate the macro book from the production system to developemnt system (take help from basis to do this).
    Now in development system your original data view will be in sync with the data view and macros in production. Now copy the "new macro" from your temp data view in development to the original data view and then create a transport for the original macro book  and release it
    Thanks
    Aparna

  • Macro syntax for non-negativity

    Hi,
    Could some one copy past the syntax for non-negativity like this
    If KF1 < 0, then KF1 = 0 else KF1
    This condition needs to be applied on top of existing macro for KF1 that does some arithmatic whose result could be < 0.
    would appreciate if you copy paste the steps.. that you may already have in any of your macro books.
    I also take this opportunity to request the macro experts to compile a wiki document on macro syntax.. A piecemeal approach would also do without relating to WHERE such a macro could be used. I find this learning the macro syntax by trial and error a rather unproductive and painful experience.
    If some of you could volunteer lets build a fantastic reference document on the macros where everyone can contribute and come with with something really useful.
    The final list can then be classified into artithmatical, conditional, control, abap macros. A brief description alongside each macro and some expert comments on possible application can be later expanded. newer and alternate ways of realzing the same macro creatively and in lesser steps could be regularly appended. I could moderate if such a thing is correct and agreeable
    Regards,
    Loknath

    I cant have more than 10 questions open. so closing this though there arent any responses

  • Scripts in ABAP

    Hello gurus!
    I have a question about scripts in ABAP. We have a program that requires a lot of queries to obtain info from oracle; we already have a functional version of it but we need to upgrade and this means we have to write a lot more of queries in ABAP. Is there a way to import a script to put in a variable an execute it in ABAP to avoid all this code writing?.
    Regards IA

    Hi Armando,
    if You want to use already programed Oracle SQL Queries in ABAP with no neccessity to recode them into Open SQL (SQL in ABAP), You can probably use [Native SQL|http://help.sap.com/saphelp_nw04/helpdata/EN/fc/eb3b8b358411d1829f0000e829fbfe/content.htm]. This can be done using [EXEC SQL statement|http://help.sap.com/abapdocu_70/en/ABAPEXEC_CURSOR.htm].
    Regards,
    Adrian

  • Macro and Field Symbol

    Hi Experts,
    I want to assign the fields of a field symbol using a macro because the field names come from a table
    the code look like this
        DEFINE ASSIGN_VALUE.
          &1-&2 = &3.
        END-OF-DEFINITION.
        ASSIGN_VALUE <RESULT_FIELDS> FIELDNAME FIELDVALUE.
    Where FIELDNAME is a CHAR variable containing the name of the field
    I get the following error:
    E:The data object "<RESULT_FIELDS>" does not have a component called
    "FIELDNAME".
    The macro and the call to it are located in a method of a class ( end routine of a transformation in BW)
    Thanks for your help
    Thibault

    Hi
    Welcome to SDN forum
    See the doc of MACROS and do accordingly
    Macros
    If you want to reuse the same set of statements more than once in a program, you can include them in a macro. For example, this can be useful for long calculations or complex WRITE statements. You can only use a macro within the program in which it is defined, and it can only be called in lines of the program following its definition.
    The following statement block defines a macro macro:
    DEFINE makro.
       statements
    END-OF-DEFINITION.
    You must specify complete statements between DEFINE and END-OF-DEFINITION. These statements can contain up to nine placeholders &1, &2,...., &9). You must define the macro before the point in the program at which you want to use it.
    Macros do not belong to the definition part of the program. This means that the DEFINE statement block is not interpreted before the processing blocks in the program. At the same time, however, macros are not operational statements that are executed within a processing block at runtime. When the program is generated, macro definitions are not taken into account at the point at which they are defined. For this reason, they do not appear in the overview of the structure of processing logic.
    A macro definition inserts a form of shortcut at any point in a program and can be used at any subsequent point in the program. As the programmer, you must ensure that the macro definition occurs in the program before the macro itself is used. Particular care is required if you use both macros and include programs, since not all include programs are included in the syntax check (exception: TOP include).
    To use a macro, use the following form:
    makro [p1 p2... p9].
    When the program is generated, the system replaces the macro by the appropriate statements and the placeholders &1, &2, …, &9 by the parameter p1, p2, …, p9. You can use macros within macros. However, a macro cannot call itself.
    REPORT demo_mod_tech_macros.
    DATA: result TYPE i,
          n1     TYPE i VALUE 5,
          n2     TYPE i VALUE 6.
    DEFINE operation.
      result = &1 &2 &3.
      output   &1 &2 &3 result.
    END-OF-DEFINITION.
    DEFINE output.
      write: / 'The result of &1 &2 &3 is', &4.
    END-OF-DEFINITION.
    operation 4 + 3.
    operation 2 ** 7.
    operation n2 - n1.
    This produces the following output:
    The result of 4 + 3 is          7
    The result of 2 ** 7 is        128
    The result of N2 - N1 is          1
    In this example, the two macros operation and output are defined. output is nested in operation. operation is called three times with different parameters. Note how the placeholders &1, &2,... are replaced in the macros.
    The following example shows that a macro definition only works in the program lines following its definition. Do not copy it!
    Let us have a look at a program with a subroutine test:
    PROGRAM macro_test.
    FORM test.
      WRITE '...'.
    ENDFORM.
    We can rewrite the program by introducing a macro macro:
    PROGRAM macro_test.
    FORM test.
    DEFINE macro.
        WRITE '...'.
      ENDFORM.
    END-OF-DEFINITION.
    MACRO.
    Inserting the macro changes nothing in the generated form of the program. Processing blocks - here a subroutine - are always indivisible. We could also write the program as follows:
    PROGRAM macro_test.
    DEFINE macro.
        WRITE '...'.
      ENDFORM.
    END-OF-DEFINITION.
    FORM test.
    MACRO.
    The most essential feature of a macro definition is that it should occur before the macro is used.
    Macro in ABAP
    Macro in ABAP
    Submitted by : SAP Basis, ABAP Programming and Other IMG Stuff
                   http://www.sap-img.com
    REPORT ZMACRO.
    DATA: RESULT TYPE I,
          N1     TYPE I VALUE 5,
          N2     TYPE I VALUE 6.
    DEFINE OPERATION.
       RESULT = &1 &2 &3.
       OUTPUT   &1 &2 &3 RESULT.
    END-OF-DEFINITION.
    DEFINE OUTPUT.
       WRITE: / 'The result of &1 &2 &3 is', &4.
    END-OF-DEFINITION.
    OPERATION 4 + 3.
    OPERATION 2 ** 7.
    OPERATION N2 - N1.
    *-- End of Program
    Regards
    Anji

  • Web Dynpro OfficeObject with VB Macros

    Hi all,
      I'm trying to employ an MS Word Template using the OfficeControl. The word template has macros in it, tied to buttons. When this is previewed in the Mime repository, the buttons are there and the macro runs. When the document is called in the WD, the Word document doesn't appear, just a big white box with SAP IOS instead of the place where the document would normally be previewed.
    Anyone know why this is and how to fix it?
    Thanks in advance.

    Hi, Patrick,
    I know this is a very old post, but I have got similar issues, so maybe you would be able to help. I have the same scenario + we would like to execute the macros directly from ABAP (macro is digitally signed by the customer). This looks impossible once you use setfields( ) method to do the mail-merge (I believe the macro's digital signature is lost then - the ACF protocol shows up the message - not signed).
    I tried opening two documents in the view at once (which looks impossible). When running the macro name ".macroname", it seems to look for .dot template in the default location C:\Users\"USERNAME"\AppData\Roaming\Microsoft\Templates\. We've got Office 2010, so .dotm template should be used. But ACF trace protocol shows a message that word cannot open this template:
    "(c:\users\"USERNAME"\appdata\...\.dot)". In fact, I only suppose the whole path is appdata\roaming..., because the protocol shows only this wrapper. It does not state the name of the file, but I suppose that Normal.dot is what it looks for.
    The office control itselft has a property "DocumentName". I would expect that this property has some meaning, but it seems it does not (if I try to run a macro "RealDocumentName.MacroName" - it states that there is no open document RealDocumentName.
    Now how to force the ACF to look for .dotm instead of .dot? Or did you find any other suitable solution? If I created a .dot template (in an older version of office - which I do not have right now), I suppose I would be able to let the customer to digitally sign the document. But how to distribute this kind of stuff to all the target PCs, that is very confusing (not all the users will have the same version of Office).
    Any push is greatelly appreciates.

  • Itu00B4s possible use a bapi inside a macro?

    Hello APO experts!!
    We need to create a macro that will have to get the values of the independent demand of some sku´s and check the capacity of the productive resources...if the demand is less than the capacity, more demand (independent necessities) will have to be created to fullfill it.
    There will be a lot of calculations besides the use of a bapi.
    It´s possible to use a bapi inside a macro?
    If you have any suggestions, please tell me.
    Thanks a lot!!
    Regards
    Angela

    yes, you would do it via an ABAP macro.
    be careful with how this interacts with default macro logic in the sense that a BAPI reads data that is in the database (LC) so you may end needing to hit the save key after the macro call if you want to re-run the macro.

Maybe you are looking for