miércoles, 15 de mayo de 2013

0HR_PA_1: BEGDAT-1 para salidas, status empleado ='0'


Un empleado cesado el  1.4.2011 en la  PA20,  va a tener en el extractor una fecha de inicio para la salida de la empresa de 31.03.2011:

 En la página Help de SAP se indica: “A special date calculation takes place for leaving actions. Actions are only identified as leaving actions if the employment status of the action is changed to the value withdrawn (STAT2 = o). For these actions, one day is subtracted from the start date of the action” http://help.sap.com/saphelp_nw04/helpdata/en/29/02b43947f80c74e10000000a114084/content.htm

Notas: Note 381239 - HR BW: Counting leavings using actions

Si queremos que en el BW sea de 1.4.2011 tenemos que Incluir este código en la transformación:


Para dia:
* ABB 15.05.2013
* 0HR_PA_1 extractor returns in BW day -1 compared with that of
* ECC whenever the Employee Status change on incative (=0)  and the
* action type ( "10") .
* To avoid this in BW you may insert in the trasformation sample code:
* Note 381239 - HR BW: Counting leavings using actions
    if SOURCE_FIELDS-STAT2 = '0' and SOURCE_FIELDS-MASSN = '10'.
      RESULT = SOURCE_FIELDS-CALDAY + 1.
else.
      RESULT = SOURCE_FIELDS-CALDAY.
    endif.

* ABB 15.05.2013
Para mes:
    data: aux_day TYPE D.
    clear aux_day.
    if SOURCE_FIELDS-STAT2 = '0' and SOURCE_FIELDS-MASSN = '10'.
      aux_day = SOURCE_FIELDS-CALDAY + 1.
      RESULT = aux_day(6).
    else.
      RESULT = SOURCE_FIELDS-CALDAY(6).
    endif.

jueves, 9 de mayo de 2013

INFOPROVIDER_VARIABLE


*** Enhancement: MultiProvider using InfoProvider Variable
include YBW_INFOPROVIDER_VARIABLE.
*&---------------------------------------------------------------------*
*& Include YBW_INFOPROVIDER_VARIABLE *
*&---------------------------------------------------------------------*
DATA:
ls_var TYPE rrs0_s_var_range,
ls_range TYPE rsr_s_rangesid,
l_contained TYPE c,
ls_mapping TYPE ybw_mapping,
lt_mapping TYPE TABLE OF ybw_mapping.


* Called after variable popup
IF i_step = 2 AND i_vnam = 'INFOPROV'.
* Read mapping table

REFRESH lt_mapping.
SELECT * FROM ybw_mapping INTO TABLE lt_mapping.
* Process all selection for country variable
REFRESH e_t_range.
LOOP AT i_t_var_range INTO ls_var WHERE vnam = 'S_COUNT'.
* Process all mapping rules
LOOP AT lt_mapping INTO ls_mapping.
* Always fill LOW and HIGH, Otherwise logic below will not work
IF ls_mapping-high IS INITIAL.
ls_mapping-high = ls_mapping-low.
ENDIF.
* Check if selection is contained in the defined InfoProvider
CLEAR l_contained.
CASE ls_var-opt.
WHEN 'EQ'.
IF ls_var-low BETWEEN ls_mapping-low AND ls_mapping-high.
l_contained = 'X'.
ENDIF.
WHEN 'BT'.
IF ls_var-low <= ls_mapping-high AND
ls_var-high => ls_mapping-low.
l_contained = 'X'.
ENDIF.
ENDCASE.
* Add InfoProvider to return table
* Note: Use COLLECT to avoid duplicates
IF l_contained = 'X'.
CLEAR ls_range.
ls_range-sign = 'I'.
ls_range-opt = 'EQ'.
ls_range-low = ls_mapping-infoprov.
COLLECT ls_range INTO e_t_range.
ENDIF.
ENDLOOP. " lt_mapping
ENDLOOP. " i_t_var_range
EXIT.
ENDIF.

R3: EXIT_SAPLRSAP_004: Modify DataSource 0GLACCEXT_T011_HIER, 0PROFIT_CTR_0106_HIER, 0ACCOUNT_0109_HIER


CASE i_datasource.
  WHEN '0GLACCEXT_T011_HIER'.
    PERFORM jerarquia_balance TABLES c_t_hienode  c_t_hienode3.
    PERFORM jerarquia_carpetas TABLES C_T_FOLDERT.

  WHEN '0PROFIT_CTR_0106_HIER'.
      PERFORM profit_carpetas TABLES C_T_FOLDERT.

  WHEN '0ACCOUNT_0109_HIER'.
    PERFORM cuenta_carpetas TABLES C_T_FOLDERT.

ENDCASE.


*****************************


*&---------------------------------------------------------------------*
*&      Form  jerarquia_balance
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_I_T_DATA  text
*----------------------------------------------------------------------*

TYPE-POOLS: rsap.

TYPES: BEGIN OF s_reorg,
   nodo TYPE rshienodid,
   nodo_n TYPE rshienodid,
  END OF s_reorg.

TYPES t_reorg TYPE TABLE OF s_reorg.

TYPES: BEGIN OF s_node3,
  nodeid(8) TYPE n,
  iobjnm(30) TYPE c,
  nodename(32) TYPE c,
  tlevel(2) TYPE n,
  link TYPE c,
  parentid(8) TYPE n,
  childid(8) TYPE n,
  nextid(8) TYPE n,
  datefrom TYPE d,
  dateto TYPE d,
  intervl TYPE c,
  fieldnm(30) TYPE c,
  glaccext(18) TYPE c,
  rsign TYPE c,
  plumi TYPE c,
END OF s_node3.


*&---------------------------------------------------------------------*
*&      Form  jerarquia_balance
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->I_T_DATA   text
*----------------------------------------------------------------------*
FORM jerarquia_balance  TABLES i_t_data TYPE rsap_t_hienode
                               i_t_data3.

  DATA it_nodos TYPE rsap_t_hienode.
  DATA wa_nodos TYPE rsap_s_hienode.

  DATA wa_nodos_companyb33 TYPE rsap_s_hienode.
  DATA wa_nodos_companyb195 TYPE rsap_s_hienode.
  DATA lineas TYPE i.
  DATA nod_piv TYPE rshienodid.
  DATA ztab LIKE sy-tabix.
  DATA ztab_companyb33 LIKE sy-tabix.
  DATA ztab_companyb195 LIKE sy-tabix.

  DATA nodo_companyb126 TYPE rshienodid.
  DATA nodo_companyb138 TYPE rshienodid.
  DATA nodo_companybobsnotes TYPE rshienodid.
*  DATA nodo_companyb2 TYPE rshienodid.
  DATA nodo_companyb26 TYPE rshienodid.
*

*
  READ TABLE i_t_data INTO wa_nodos
    WITH KEY nodename = 'companyB126'.

  IF sy-subrc EQ 0.
    nodo_companyb126 = wa_nodos-nodeid.
  ENDIF.

  READ TABLE i_t_data INTO wa_nodos
  WITH KEY nodename = 'companyB138'.

  IF sy-subrc EQ 0.
    nodo_companyb138 = wa_nodos-nodeid.
  ENDIF.

  READ TABLE i_t_data INTO wa_nodos
  WITH KEY nodename = 'companyB26'.

  IF sy-subrc EQ 0.
    nodo_companyb26 = wa_nodos-nodeid.
  ENDIF.

  READ TABLE i_t_data INTO wa_nodos
  WITH KEY nodename = 'companyB0BSNOTES'.

  IF sy-subrc EQ 0.
    nodo_companybobsnotes = wa_nodos-nodeid.
  ENDIF.

*  READ TABLE i_t_data INTO wa_nodos
*  WITH KEY nodename = 'companyB2'.
*
*  IF sy-subrc EQ 0.
*    nodo_companyb2 = wa_nodos-nodeid.
*  ENDIF.



* En esta extraccion tenemos que colocar
* el nodo companyB138-Resultado del ejercicio 
* entre los nodos companyB33 y companyB195
* Así el nodo companyB138 tiene que ser nodo HIJO del nodo companyB26


  DATA it_reorg TYPE t_reorg.
  DATA wa_reorg TYPE s_reorg.

  DESCRIBE TABLE i_t_data LINES lineas.

  READ TABLE i_t_data INTO wa_nodos INDEX lineas.

  IF sy-subrc EQ 0.
    nod_piv = wa_nodos-nodeid.
  ENDIF.


  LOOP AT i_t_data INTO wa_nodos.
    IF wa_nodos-nodeid > nodo_companyb126.                      "1277
      EXIT.
    ENDIF.
    IF wa_nodos-nodeid >= nodo_companyb138. "875
      DELETE i_t_data INDEX sy-tabix.

      ADD 1 TO nod_piv.
      wa_reorg-nodo = wa_nodos-nodeid.
      wa_reorg-nodo_n = nod_piv.

      APPEND wa_reorg TO it_reorg.
      ADD 2 TO wa_nodos-tlevel.
      APPEND wa_nodos TO it_nodos.
    ENDIF.
  ENDLOOP.

  LOOP AT it_nodos INTO wa_nodos.

    IF wa_nodos-nodeid <> nodo_companyb138. "875
      ztab = sy-tabix.


      PERFORM dame_nuevo_nodo
                  TABLES
                     it_reorg
                  USING
                     wa_nodos-nodeid.

      PERFORM dame_nuevo_nodo
                  TABLES
                     it_reorg
                  USING
                     wa_nodos-parentid.

      PERFORM dame_nuevo_nodo
                  TABLES
                     it_reorg
                  USING
                     wa_nodos-childid.

      PERFORM dame_nuevo_nodo
                  TABLES
                     it_reorg
                  USING
                     wa_nodos-nextid.

      MODIFY it_nodos FROM wa_nodos INDEX ztab.
    ENDIF.

  ENDLOOP.


*------------------------------

  LOOP AT it_nodos INTO wa_nodos WHERE nodeid = nodo_companyb138. "875
    ztab = sy-tabix.

    PERFORM dame_nuevo_nodo
                TABLES
                   it_reorg
                USING
                   wa_nodos-nodeid.
    PERFORM dame_nuevo_nodo
                TABLES
                   it_reorg
                USING
                   wa_nodos-childid.

    READ TABLE i_t_data INTO wa_nodos_companyb33
    WITH KEY nodename = 'companyB33'.

    IF sy-subrc EQ 0.
      ztab_companyb33 = sy-tabix.
      wa_nodos_companyb33-nextid = wa_nodos-nodeid.
      MODIFY i_t_data FROM wa_nodos_companyb33 INDEX ztab_companyb33.
    ENDIF.


    READ TABLE i_t_data INTO wa_nodos_companyb195
    WITH KEY nodename = 'companyB195'.

    IF sy-subrc EQ 0.
      ztab_companyb195 = sy-tabix.
      wa_nodos-nextid = wa_nodos_companyb195-nodeid.
    ENDIF.

    MODIFY it_nodos FROM wa_nodos INDEX ztab.

  ENDLOOP.

*****************

*  DATA ztab_companyb180 LIKE sy-tabix.
*  DATA wa_nodos_companyb180 TYPE rsap_s_hienode.
*
*
*
*  READ TABLE i_t_data INTO wa_nodos_companyb180
*  WITH KEY nodename = 'companyB180'.
*
*  IF sy-subrc EQ 0.
*    ztab_companyb180 = sy-tabix.
*    wa_nodos_companyb180-nextid = nodo_companybobsnotes. "1278
*    MODIFY i_t_data FROM wa_nodos_companyb180 INDEX ztab_companyb180.
*  ENDIF.

**********************************************
  DATA ztab_companyb0bsnotes LIKE sy-tabix.
  DATA wa_nodos_companyb0bsnotes TYPE rsap_s_hienode.


  READ TABLE i_t_data INTO wa_nodos_companyb0bsnotes
  WITH KEY nodename = 'companyB0BSNOTES'.

  IF sy-subrc EQ 0.
    ztab_companyb0bsnotes = sy-tabix.
    CLEAR wa_nodos_companyb0bsnotes-childid.
    MODIFY i_t_data
    FROM wa_nodos_companyb0bsnotes INDEX ztab_companyb0bsnotes.
  ENDIF.

*******************************
  DATA ztab_companyb138 LIKE sy-tabix.
  DATA wa_nodos_companyb138 TYPE rsap_s_hienode.



  READ TABLE it_nodos INTO wa_nodos_companyb138
  WITH KEY nodename = 'companyB138'.

  IF sy-subrc EQ 0.
    ztab_companyb138 = sy-tabix.
    wa_nodos_companyb138-parentid = nodo_companyb26. "483
    wa_nodos_companyb138-tlevel = 5.
    MODIFY it_nodos FROM wa_nodos_companyb138 INDEX ztab_companyb138.
  ENDIF.

********************************************
  DATA ztab_companyb125 LIKE sy-tabix.
  DATA wa_nodos_companyb125 TYPE rsap_s_hienode.



  READ TABLE it_nodos INTO wa_nodos_companyb125
  WITH KEY nodename = 'companyB125'.

  IF sy-subrc EQ 0.
    ztab_companyb125 = sy-tabix.
    wa_nodos_companyb125-tlevel = 6.
    MODIFY it_nodos FROM wa_nodos_companyb125 INDEX ztab_companyb125.
  ENDIF.

********************************************
  DATA ztab_companyb126 LIKE sy-tabix.
  DATA wa_nodos_companyb126 TYPE rsap_s_hienode.



  READ TABLE it_nodos INTO wa_nodos_companyb126
  WITH KEY nodename = 'companyB126'.

  IF sy-subrc EQ 0.
    ztab_companyb126 = sy-tabix.
    wa_nodos_companyb126-tlevel = 6.
    MODIFY it_nodos FROM wa_nodos_companyb126 INDEX ztab_companyb126.
  ENDIF.


*******************************
  APPEND LINES OF it_nodos TO i_t_data.



* sincroniza

  i_t_data3[] = i_t_data[].

  FIELD-SYMBOLS TYPE s_node3.
  DATA long TYPE i.

  LOOP AT i_t_data3 ASSIGNING .

    IF -iobjnm = '0HIER_NODE'.
      -fieldnm = 'NODNAME'.
    ENDIF.

    IF -iobjnm = '0GLACCEXT'.
      -fieldnm = 'GLACCEXT'.
      -glaccext = -nodename.
      long = STRLEN( -nodename ).
      long = long - 2.
      IF -nodename+long = '1A'.
        -plumi = 1.
      ENDIF.
      IF -nodename+long = '2A'.
        -plumi = 1.
      ENDIF.

    ENDIF.

  ENDLOOP.







ENDFORM.                    " jerarquia_balance

*&---------------------------------------------------------------------*
*&      Form  dame_nuevo_nodo
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->T_REORG    text
*      -->NODO       text
*----------------------------------------------------------------------*
FORM dame_nuevo_nodo TABLES it_reorg TYPE t_reorg
                     USING nodo TYPE rshienodid.

  DATA wa_reorg TYPE s_reorg.

  IF NOT nodo IS INITIAL.

    READ TABLE it_reorg INTO wa_reorg
     WITH KEY nodo = nodo.

    IF sy-subrc EQ 0.
      nodo = wa_reorg-nodo_n.
    ELSE.
      BREAK-POINT.
    ENDIF.

  ENDIF.

ENDFORM.                    "dame_nuevo_nodo

*----------------------------------------------------------------------*
FORM jerarquia_carpetas TABLES C_T_FOLDERT TYPE RSAP_T_FOLDERT.
*  LOOP at C_T_FOLDERT..
*    C_T_FOLDERT-LANGU = 'EN'.
*    MODIFY C_T_FOLDERT.
*  ENDLOOP.


ENDFORM.                    "jerarquia_carpetas
*----------------------------------------------------------------------*
FORM profit_carpetas TABLES C_T_FOLDERT  TYPE RSAP_T_FOLDERT.

  LOOP at C_T_FOLDERT..

    IF C_T_FOLDERT-LANGU = 'E'.
      select single DESCRIPT into C_T_FOLDERT-TXTLG
      from SETHEADERT where
       LANGU   = 'S' and
       SUBCLASS = C_T_FOLDERT-NODENAME(4) and
       SETCLASS = '0106' and
       SETNAME = C_T_FOLDERT-NODENAME+4(24).

      C_T_FOLDERT-TXTSH = C_T_FOLDERT-TXTLG.
      C_T_FOLDERT-TXTMD = C_T_FOLDERT-TXTLG.
    ENDIF.


    MODIFY C_T_FOLDERT.
  ENDLOOP..
ENDFORM.                    "profit_carpetas
*----------------------------------------------------------------------*
FORM cuenta_carpetas TABLES C_T_FOLDERT  TYPE RSAP_T_FOLDERT.
  LOOP at C_T_FOLDERT..

    IF C_T_FOLDERT-LANGU = 'E'.
      select single DESCRIPT into C_T_FOLDERT-TXTLG
      from SETHEADERT where
       LANGU   = 'S' and
       SUBCLASS = C_T_FOLDERT-NODENAME(4) and
*       SETCLASS = '0106' and
       SETNAME = C_T_FOLDERT-NODENAME+4(10).

      C_T_FOLDERT-TXTSH = C_T_FOLDERT-TXTLG.
      C_T_FOLDERT-TXTMD = C_T_FOLDERT-TXTLG.
    ENDIF.


    MODIFY C_T_FOLDERT.
  ENDLOOP..
ENDFORM.                    "cuenta_carpetas

martes, 7 de mayo de 2013

Ficheros para SAP LOGON

saplogon.ini
SapLogonTree.xml
saprules.xml
sapshortcut.ini