Saturday, March 1, 2025

Billing: Custom Variant: Example 1: Get Account Balance

FUNCTION isu_zaccbal.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(X_RED) TYPE  ISU2A_REDUCED_BILLING_DATA
*"     REFERENCE(X_OP) TYPE  ISU2A_VARIANT_PARAMETERS
*"     REFERENCE(X_SS) TYPE  ISU2A_SS
*"  CHANGING
*"     REFERENCE(XY_OBJ) TYPE  ISU2A_BILLING_DATA
*"     REFERENCE(XY_SOBJ) TYPE  ISU2A_DATA_COLLECTOR
*"  EXCEPTIONS
*"      GENERAL_FAULT
*"      REGULAR_ERROR
*"----------------------------------------------------------------------
*---------------------------------------------------*
*                     DATA
*---------------------------------------------------*
  INCLUDE ievarbasic.

  DATA:
    ls_zone         TYPE isu2a_zone,
    ls_fkkvkp       TYPE fkkvkp,
    lv_bal          TYPE bapicurr_d,
    ls_acc_bal      TYPE bapiaccbalances,
    lt_acc_bal      TYPE STANDARD TABLE OF bapiaccbalances.
*---------------------------------------------------*
*                     LOGIC
*---------------------------------------------------*
*---------------------------------------------------*
*           Getting Account Balance
*---------------------------------------------------*
  MOVE-CORRESPONDING x_ss TO werchz.
  "Initialize Output Operand 1
mac_init_output co_cont2 x_op-o1.
  SELECT SINGLE INTO ls_fkkvkp FROM fkkvkp WHERE vkont EQ xy_sobj-ever-vkonto.
  IF sy-subrc IS INITIAL.
    CALL FUNCTION 'BAPI_ACCOUNT_GETBALANCES'
      EXPORTING
        contractaccount  xy_sobj-ever-vkonto
        partner          ls_fkkvkp-gpart
      TABLES
        account_balances lt_acc_bal.
    LOOP AT lt_acc_bal INTO ls_acc_bal.
      CASE ls_acc_bal-text.
        WHEN 'Open'.
          lv_bal lv_bal + ls_acc_bal-withd_val.
        WHEN 'Credit'.
          lv_bal lv_bal ls_acc_bal-withd_val.
      ENDCASE.
    ENDLOOP.
  ENDIF.
  MOVE-CORRESPONDING werchz TO out_oper.
  out_oper-qnt_new lv_bal.
  out_oper-qnt_old lv_bal
"Updating operands into table IOPER, so that operand value is accessible in other schema steps
mac_output_ioper x_op-o1.  

  werchz-nettobtr lv_bal.
  ls_zone-operab  werchz-ab.
  ls_zone-z       werchz.
  APPEND ls_zone TO izone.
"Output results to invoice, prequisites, OUT_OPER and IZONE
mac_invoice_line co_dltyp01

ENDFUNCTION.

No comments:

Post a Comment