Homelab, Linux, JS & ABAP (~˘▾˘)~
 

[ABAP] Restrict Select-Option to single values

INITIALIZATION.

  DATA: ls_restrictions TYPE sscr_restrict.

  APPEND VALUE #( name = 'CP' options-cp = abap_true ) TO ls_restrictions-opt_list_tab.

  APPEND VALUE #( kind    = 'S' name    = 'S_GRUND' sg_main = 'I'
                  sg_addy = ' ' op_main = 'CP'      op_addy = 'CP' ) TO ls_restrictions-ass_tab.

  CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
    EXPORTING
      restriction = ls_restrictions.

[FI] CALCULATE_TAX_FROM_GROSSAMOUNT

    DATA lt_mwdat TYPE TABLE OF RTAX1U15.

    CALL FUNCTION 'CALCULATE_TAX_FROM_GROSSAMOUNT'
      EXPORTING
        i_bukrs                 = lv_bukrs
        i_mwskz                 = lv_mwskz
*       I_TXJCD                 = ' '
        i_waers                 = lv_waers
        i_wrbtr                 = lv_wrbtr
*     IMPORTING
*       E_FWNAV                 =
*       E_FWNVV                 =
*       E_FWSTE                 =
*       E_FWAST                 =
      TABLES
        t_mwdat                 = lt_mwdat
      EXCEPTIONS
        bukrs_not_found         = 1
        country_not_found       = 2
        mwskz_not_defined       = 3
        mwskz_not_valid         = 4
        account_not_found       = 5
        different_discount_base = 6
        different_tax_base      = 7
        txjcd_not_valid         = 8
        not_found               = 9
        ktosl_not_found         = 10
        kalsm_not_found         = 11
        parameter_error         = 12
        knumh_not_found         = 13
        kschl_not_found         = 14
        unknown_error           = 15
        OTHERS                  = 16.
    IF sy-subrc <> 0 OR lt_mwdat IS INITIAL. 
      RAISE EXCEPTION TYPE zcx_xxx
        EXPORTING
          textid = zcx_xxx=>zcx_xxx
          msgv1  = SWITCH #( sy-subrc
         WHEN 1 THEN 'BUKRS_NOT_FOUND  '
         WHEN 2 THEN 'COUNTRY_NOT_FOUND'
         WHEN 3 THEN 'MWSKZ_NOT_DEFINED'
         WHEN 4 THEN 'MWSKZ_NOT_VALID'
         WHEN 5 THEN 'ACCOUNT_NOT_FOUND'
         WHEN 6 THEN 'DIFFERENT_DISCOUNT_BASE'
         WHEN 7 THEN 'DIFFERENT_TAX_BASE'
         WHEN 8 THEN 'TXJCD_NOT_VALID'
         WHEN 9 THEN 'NOT_FOUND'
         WHEN 10 THEN 'KTOSL_NOT_FOUND'
         WHEN 11 THEN 'KALSM_NOT_FOUND'
         WHEN 12 THEN 'PARAMETER_ERROR'
         WHEN 13 THEN 'KNUMH_NOT_FOUND'
         WHEN 14 THEN 'KSCHL_NOT_FOUND'
         WHEN 15 THEN 'UNKNOWN_ERROR' )
          mtype  = 'E'.
    ENDIF.

[ABAP] Modify Infotype

METHOD operate_it.

    DATA ls_return TYPE bapireturn1.
    DATA key       TYPE bapipakey.

    CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'
      EXPORTING
        number = is_2002-pernr
      IMPORTING
        return = ls_return.
    IF ls_return IS NOT INITIAL.
      RAISE EXCEPTION TYPE zcx_xxx MESSAGE ID ls_return-id TYPE ls_return-type NUMBER ls_return-number.
    ENDIF.

    CALL FUNCTION 'HR_INFOTYPE_OPERATION'
      EXPORTING
        infty         = '2002'
        number        = is_2002-pernr
        subtype       = is_2002-subty
        objectid      = is_2002-objps
        lockindicator = is_2002-sprps
        validityend   = is_2002-endda
        validitybegin = is_2002-begda
        recordnumber  = is_2002-seqnr
        record        = is_2002_chg
        operation     = iv_actio          "MOD,INS,DEL
        tclas         = 'A'
        dialog_mode   = '0'
      IMPORTING
        return        = ls_return
        key           = key.
    IF ls_return IS NOT INITIAL.
      RAISE EXCEPTION TYPE zcx_xxx MESSAGE ID ls_return-id TYPE ls_return-type NUMBER ls_return-number.
    ENDIF.

    CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'
      EXPORTING
        number = is_2002-pernr.

ENDMETHOD.

[ABAP] Read Infotype

DATA: ls_p0001           TYPE p0001,
      lt_p0001           TYPE TABLE OF p0001,  
      lr_infotype_reader TYPE REF TO if_hrpa_read_infotype, 
      lt_infotype        TYPE hrpad_prelp_tab, 
      ls_infotype        TYPE prelp, 
      lv_missing_auth    TYPE boole_d 
      lv_data_exists     TYPE boole_d. 

* Infotyp reader initialisieren
   CALL METHOD cl_hrpa_read_infotype=>get_instance
     IMPORTING
       infotype_reader = lr_infotype_reader.

 * Infotyp 1 lesen
   CLEAR lt_infotype.
   CALL METHOD lr_infotype_reader->read
     EXPORTING
       tclas         = 'A'
       pernr         = lv_pernr
       infty         =  '0001' 
       begda         = iv_begda
       endda         = iv_endda
       no_auth_check = abap_true
     IMPORTING
       infotype_tab  = lt_infotype
       data_exists   = lv_data_exists
       missing_auth  = lv_missing_auth.

   LOOP AT lt_infotype INTO ls_infotype.
     CALL METHOD cl_hr_pnnnn_type_cast=>prelp_to_pnnnn
       EXPORTING
         prelp = ls_infotype
       IMPORTING
         pnnnn = ls_p0001.
        APPEND ls_p0001 TO lt_p0001.
   ENDLOOP.