antelio
2/12/2016 - 3:21 AM

Z_LW_REPOST_910102001

Z_LW_REPOST_910102001

*&---------------------------------------------------------------------*
*& Report  ZZZ00001
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zzz00001.

TYPE-POOLS: slis.

PERFORM executar_programa.

DATA: fcode TYPE sy-ucomm,
      w_bkpf TYPE bkpf.


DATA:
  BEGIN OF t_output OCCURS 0,
    bukrs TYPE bukrs,
    belnr TYPE belnr_d,
    gjahr TYPE gjahr,
    buzei TYPE buzei,
    hkont TYPE hkont,
    shkzg TYPE shkzg,
    dmbtr TYPE dmbtr,
    waers TYPE waers,
    blart TYPE blart,
    sgtxt TYPE sgtxt,
    zuonr TYPE dzuonr,
    xblnr TYPE xblnr,
    ktosl TYPE ktosl,
    mwskz TYPE mwskz,
    hkont_post TYPE hkont,
    hkont_new TYPE hkont,
    kostl TYPE kostl,
    sgtxt_new TYPE txt20_skat,
    belnr_post TYPE belnr_d,
    mark,

  END OF t_output.



DATA: "ALV Data
  t_fcat    TYPE lvc_t_fcat,
  t_filters TYPE lvc_t_filt,
  w_layout  TYPE lvc_s_layo.


TYPES: BEGIN OF ty_belnr,
          bukrs TYPE bukrs,
          gjahr TYPE gjahr,
          belnr TYPE belnr_d,
          bktxt TYPE bktxt,
       END OF ty_belnr.

DATA: t_belnr TYPE TABLE OF ty_belnr,
      t_bkpf TYPE TABLE OF bkpf,
      t_bseg TYPE TABLE OF bseg.

TYPES: BEGIN OF ty_posts,
        bukrs TYPE bukrs,
        gjahr TYPE gjahr,
        belnr TYPE belnr_d,
        bktxt TYPE bktxt,
        blart TYPE blart,
        xreversal TYPE xreversal,
      END OF ty_posts,

      BEGIN OF ty_bktxt,
        bktxt TYPE bktxt,
      END OF ty_bktxt.


DATA: t_bktxt TYPE TABLE OF ty_bktxt,
      t_posts TYPE TABLE OF ty_posts.

SELECTION-SCREEN BEGIN OF SCREEN 0001.
PARAMETERS:
  p_saknr TYPE saknr OBLIGATORY DEFAULT '910102001',
  p_bukrs TYPE bukrs OBLIGATORY MEMORY ID buk.

SELECT-OPTIONS:
  s_budat FOR w_bkpf-budat OBLIGATORY NO-EXTENSION.

PARAMETERS:
  p_budat TYPE budat.

SELECTION-SCREEN:
 BEGIN OF LINE,
   PUSHBUTTON (10) start USER-COMMAND start,
 END OF LINE.
*SELECTion-SCREEN PUSHBUTTON start USER-COMMAND val.
SELECTION-SCREEN END OF SCREEN 0001.

*&---------------------------------------------------------------------*
*&      Form  executar_programa
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM executar_programa.
  CALL SELECTION-SCREEN '0001'.
ENDFORM.                    "executar_programa

AT SELECTION-SCREEN OUTPUT.
  DATA:
  w_datum LIKE LINE OF s_budat.
  IF sy-dynnr = '0001'.
    %_p_saknr_%_app_%-text = 'Cta. Contábil'.
    %_p_bukrs_%_app_%-text = 'Empresa'.
    start = 'Executar'.
    %_s_budat_%_app_%-text = 'Período Lançamento'.
    %_p_budat_%_app_%-text = 'Data p/ Ajuste'.
    IF p_budat IS INITIAL.
      READ TABLE s_budat INDEX 1.

      CALL FUNCTION 'LAST_DAY_OF_MONTHS'
        EXPORTING
          day_in            = s_budat-low
        IMPORTING
          last_day_of_month = p_budat
        EXCEPTIONS
          day_in_no_date    = 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.


    ENDIF.
  ENDIF.


AT SELECTION-SCREEN.
  IF sy-dynnr = '0001'.
    fcode = sy-ucomm.
    CASE fcode.
      WHEN 'START' OR 'CRET'.
        CHECK p_budat IS NOT INITIAL.
        PERFORM start_of_selection.
    ENDCASE.

  ENDIF.

*&---------------------------------------------------------------------*
*&      Form  start_of_selection
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM start_of_selection.
  PERFORM select_data.
  PERFORM process_data.
  PERFORM process_output.


ENDFORM.                    "start_of_selection

*&---------------------------------------------------------------------*
*&      Form  start_of_selection
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM select_data..
  REFRESH t_belnr.

  SELECT bukrs gjahr belnr FROM bsis INTO TABLE t_belnr
  WHERE budat IN s_budat
    AND hkont = p_saknr
    AND bukrs = p_bukrs.

  SELECT bukrs gjahr belnr FROM bsas
    APPENDING TABLE t_belnr
    WHERE budat IN s_budat
      AND hkont = p_saknr
      AND bukrs = p_bukrs.

  SORT t_belnr BY bukrs gjahr belnr ASCENDING.
  DELETE ADJACENT DUPLICATES FROM t_belnr COMPARING ALL FIELDS.

  SELECT * FROM bseg INTO TABLE t_bseg
    FOR ALL ENTRIES IN t_belnr
    WHERE belnr = t_belnr-belnr
      AND gjahr = t_belnr-gjahr
      AND bukrs = t_belnr-bukrs.


  SELECT * FROM bkpf INTO TABLE t_bkpf
    FOR ALL ENTRIES IN t_belnr
    WHERE belnr = t_belnr-belnr
      AND gjahr = t_belnr-gjahr
      AND bukrs = t_belnr-bukrs.

  DATA: w_bseg LIKE LINE OF t_bseg,
        w_bktxt LIKE LINE OF t_bktxt.
  CLEAR t_bktxt[].
  LOOP AT t_bseg INTO w_bseg WHERE hkont = p_saknr.
    CLEAR w_bktxt.
    CONCATENATE w_bseg-bukrs '-' w_bseg-gjahr '-' w_bseg-belnr '-' w_bseg-buzei
      INTO w_bktxt-bktxt.
    APPEND w_bktxt TO t_bktxt.
  ENDLOOP.

  IF t_bktxt[] IS NOT INITIAL.
    SELECT
        bukrs
        gjahr
        belnr
        bktxt
        blart
        xreversal
      FROM bkpf INTO TABLE t_posts
      FOR ALL ENTRIES IN t_bktxt
      WHERE bktxt = t_bktxt-bktxt
        AND blart = 'SA'
        AND xreversal = ' '.
  ENDIF.


ENDFORM.                    "start_of_selection
*&---------------------------------------------------------------------*
*&      Form  PROCESS_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM process_data .

  CLEAR t_output[].
  DATA: w_output LIKE LINE OF t_output,
        w_belnr LIKE LINE OF t_belnr,
        w_bkpf LIKE LINE OF t_bkpf,
        w_bseg LIKE LINE OF t_bseg,
        w_bseg_kostl LIKE LINE OF t_bseg,
        w_final(3) TYPE c.

  LOOP AT t_belnr INTO w_belnr.
    CLEAR w_output.

    LOOP AT t_bseg INTO w_bseg
      WHERE bukrs = w_belnr-bukrs
        AND belnr = w_belnr-belnr
        AND gjahr = w_belnr-gjahr.

      CHECK w_bseg-hkont EQ p_saknr.
      READ TABLE t_bkpf INTO w_bkpf WITH KEY
          bukrs = w_bseg-bukrs
          gjahr = w_bseg-gjahr
          belnr = w_bseg-belnr.

      CHECK w_bkpf-xreversal = ' '.

      w_output-bukrs = w_bkpf-bukrs.
      w_output-gjahr = w_bkpf-gjahr.
      w_output-belnr = w_bkpf-belnr.
      w_output-buzei = w_bseg-buzei.
      w_output-hkont = w_bseg-hkont.
      w_output-blart = w_bkpf-blart.
      w_output-xblnr = w_bkpf-xblnr.
      w_output-zuonr = w_bseg-zuonr.
*      w_output-sgtxt = w_bseg-sgtxt.
      w_output-waers = w_bkpf-hwaer.
      w_output-shkzg = w_bseg-shkzg.
      w_output-dmbtr = w_bseg-dmbtr.
      w_output-ktosl = w_bseg-ktosl.
      w_output-mwskz = w_bseg-mwskz.

      READ TABLE t_bseg WITH KEY
          bukrs = w_bseg-bukrs
          gjahr = w_bseg-gjahr
          belnr = w_bseg-belnr
          buzid = 'S' INTO w_bseg_kostl.
      IF sy-subrc IS INITIAL.
        w_output-kostl = w_bseg_kostl-kostl.
        w_output-hkont_post = w_bseg_kostl-hkont.

        IF w_bseg-ktosl = 'ZCC'. "COFINS
          w_final = '101'.
        ELSEIF w_bseg-ktosl = 'ZCP'.               "PIS
          w_final = '100'.
        ENDIF.
        w_output-sgtxt = w_bseg_kostl-sgtxt.

        CONCATENATE w_bseg_kostl-hkont+0(7) w_final INTO w_output-hkont_new.

        IF w_output-hkont_post = '0510302099' OR
          w_output-hkont_post = '0510302007' OR
          w_output-hkont_post = '0510301003' OR
          w_output-hkont_post = '0510203008'.

          IF w_bseg-ktosl = 'ZCC'. "COFINS
            w_output-hkont_new =  '0510304101'.
          ELSEIF w_bseg-ktosl = 'ZCP'.               "PIS
            w_output-hkont_new =  '0510304100'.
          ENDIF.

        ENDIF.

        IF w_output-hkont_post(5) = '06101'.
          IF w_bseg-ktosl = 'ZCC'. "COFINS
            w_output-hkont_new =  w_output-hkont_post.
            w_output-hkont_new+2(1) = '2'.
            w_output-hkont_new+6(1) = '3'.
          ELSEIF w_bseg-ktosl = 'ZCP'.               "PIS
            w_output-hkont_new =  w_output-hkont_post.
            w_output-hkont_new+2(1) = '2'.
            w_output-hkont_new+6(1) = '2'.
          ENDIF.

        ENDIF.


        IF w_output-hkont_new IS NOT INITIAL.
          SELECT SINGLE txt20 INTO w_output-sgtxt_new
            FROM skat
            WHERE saknr = w_output-hkont_new
              AND ktopl = 'PCLW'
              AND spras = sy-langu.
          IF sy-subrc IS NOT INITIAL.
            CLEAR w_output-sgtxt_new.
          ENDIF.
        ENDIF.
      ENDIF.


      DATA: w_bktxt TYPE bkpf-bktxt,
            w_post LIKE LINE OF t_posts.
      CONCATENATE w_output-bukrs '-' w_output-gjahr '-' w_output-belnr '-' w_output-buzei
        INTO w_bktxt.
      READ TABLE t_posts WITH KEY bktxt = w_bktxt INTO w_post.
      IF sy-subrc IS NOT INITIAL.
        CLEAR w_output-belnr_post.
      ELSE.
        w_output-belnr_post = w_post-belnr.
      ENDIF.


      APPEND w_output TO t_output.
    ENDLOOP.
  ENDLOOP.

ENDFORM.                    " PROCESS_DATA

*&---------------------------------------------------------------------*
*&      Form  CALL_ALV_OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM process_output.

  PERFORM build_fcat USING t_fcat.
  PERFORM call_alv_output  USING t_fcat w_layout t_filters t_output.



ENDFORM.                    " CALL_ALV_OUTPUT



*&---------------------------------------------------------------------*
*&      Form  build_fcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_T_FCAT   text
*----------------------------------------------------------------------*
FORM build_fcat  USING   p_t_fcat TYPE lvc_t_fcat.

  REFRESH p_t_fcat.
  DATA: w_fcat     LIKE LINE OF p_t_fcat.


*  perform fill_fcat_from_ddic using .
  REFRESH p_t_fcat.

  PERFORM get_fcat_dtel USING 'BUKRS' w_fcat. APPEND w_fcat TO p_t_fcat.
  PERFORM get_fcat_dtel USING 'BELNR_D' w_fcat.
  w_fcat-fieldname = 'BELNR'.
  APPEND w_fcat TO p_t_fcat.
  PERFORM get_fcat_dtel USING 'GJAHR' w_fcat. APPEND w_fcat TO p_t_fcat.
  PERFORM get_fcat_dtel USING 'BUZEI' w_fcat. APPEND w_fcat TO p_t_fcat.
  PERFORM get_fcat_dtel USING 'BLART' w_fcat. APPEND w_fcat TO p_t_fcat.
  PERFORM get_fcat_dtel USING 'SHKZG' w_fcat. APPEND w_fcat TO p_t_fcat.

  PERFORM get_fcat_dtel USING 'DMBTR' w_fcat. APPEND w_fcat TO p_t_fcat.
  PERFORM get_fcat_dtel USING 'WAERS' w_fcat. APPEND w_fcat TO p_t_fcat.
  PERFORM get_fcat_dtel USING 'SGTXT' w_fcat. APPEND w_fcat TO p_t_fcat.
  PERFORM get_fcat_dtel USING 'DZUONR' w_fcat.
  w_fcat-fieldname = 'ZUONR'.
  APPEND w_fcat TO p_t_fcat.
  PERFORM get_fcat_dtel USING 'KTOSL' w_fcat. APPEND w_fcat TO p_t_fcat.
  PERFORM get_fcat_dtel USING 'MWSKZ' w_fcat. APPEND w_fcat TO p_t_fcat.
  PERFORM get_fcat_dtel USING 'HKONT' w_fcat. APPEND w_fcat TO p_t_fcat.
  PERFORM get_fcat_dtel USING 'HKONT' w_fcat.
  w_fcat-fieldname = 'HKONT_POST'.
  APPEND w_fcat TO p_t_fcat.
  PERFORM get_fcat_dtel USING 'KOSTL' w_fcat. APPEND w_fcat TO p_t_fcat.
  PERFORM get_fcat_dtel USING 'HKONT' w_fcat.
  w_fcat-fieldname = 'HKONT_NEW'.
  APPEND w_fcat TO p_t_fcat.
  PERFORM get_fcat_dtel USING 'TXT20_SKAT' w_fcat.
  w_fcat-fieldname = 'SGTXT_NEW'.
  APPEND w_fcat TO p_t_fcat.
  PERFORM get_fcat_dtel USING 'BELNR_D' w_fcat.
  w_fcat-fieldname = 'BELNR_POST'.
  APPEND w_fcat TO p_t_fcat.
  PERFORM get_fcat_dtel USING 'XBLNR' w_fcat. APPEND w_fcat TO p_t_fcat.


ENDFORM.                    " BUILD_FCAT



*&---------------------------------------------------------------------*
*&      Form  get_fcat_dtel
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->VALUE(P_DTEL)  text
*      -->P_W_FCAT       text
*----------------------------------------------------------------------*
FORM get_fcat_dtel  USING    value(p_dtel)
                             p_w_fcat TYPE lvc_s_fcat.
  CLEAR p_w_fcat.
*  DATA:  ref_cl_abap_elemdescr TYPE REF TO cl_abap_elemdescr,
*         dd_x031l_table TYPE dd_x031l_table,
*         x031l LIKE LINE OF dd_x031l_table.

*  ref_cl_abap_elemdescr ?= cl_abap_typedescr=>describe_by_name( p_dtel ).
*  dd_x031l_table = ref_cl_abap_elemdescr->get_ddic_object( ).
*  READ TABLE dd_x031l_table INDEX 1 INTO x031l.

  DATA: dd04v TYPE dd04v.

  CALL FUNCTION 'DDIF_DTEL_GET'
    EXPORTING
      name          = p_dtel
*     STATE         = 'A'
      langu         = sy-langu
    IMPORTING
*     GOTSTATE      =
      dd04v_wa      = dd04v
*     TPARA_WA      =
    EXCEPTIONS
      illegal_input = 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.
  MOVE-CORRESPONDING dd04v TO p_w_fcat.
  p_w_fcat-fieldname = p_dtel.

ENDFORM.                    " GET_FCAT_DTEL
*&---------------------------------------------------------------------*
*&      Form  CALL_ALV_OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_T_FCAT  text
*      -->P_W_LAYOUT  text
*      -->P_T_FILTERS  text
*      -->P_ENDFORM  text
*----------------------------------------------------------------------*
FORM call_alv_output    USING
    p_fcat TYPE lvc_t_fcat
    p_layout TYPE lvc_s_layo
    p_filters TYPE lvc_t_filt
     p_dy_table TYPE data.

  FIELD-SYMBOLS:
    <dyn_table> TYPE STANDARD TABLE.

  p_layout-box_fname = 'MARK'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
*     I_INTERFACE_CHECK                 = ' '
*     I_BYPASSING_BUFFER                =
*     I_BUFFER_ACTIVE =
     i_callback_program                = sy-cprog
*     I_CALLBACK_PF_STATUS_SET          = ' '
      i_callback_user_command           = 'USER_COMMAND'
*     I_CALLBACK_TOP_OF_PAGE            = ' '
*     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*     I_CALLBACK_HTML_END_OF_LIST       = ' '
*     I_STRUCTURE_NAME                  =
*     I_BACKGROUND_ID = ' '
*     I_GRID_TITLE    =
*     I_GRID_SETTINGS =
      is_layout_lvc   = p_layout
      it_fieldcat_lvc = p_fcat
*     IT_EXCLUDING    =
*     IT_SPECIAL_GROUPS_LVC             =
*     IT_SORT_LVC     =
      it_filter_lvc   = p_filters
*     IT_HYPERLINK    =
*     IS_SEL_HIDE     =
*     I_DEFAULT       = 'X'
*     I_SAVE          = ' '
*     IS_VARIANT      =
*     IT_EVENTS       =
*     IT_EVENT_EXIT   =
*     IS_PRINT_LVC    =
*     IS_REPREP_ID_LVC                  =
*     I_SCREEN_START_COLUMN             = 0
*     I_SCREEN_START_LINE               = 0
*     I_SCREEN_END_COLUMN               = 0
*     I_SCREEN_END_LINE                 = 0
*     I_HTML_HEIGHT_TOP                 =
*     I_HTML_HEIGHT_END                 =
*     IT_ALV_GRAPHICS =
*     IT_EXCEPT_QINFO_LVC               =
*     IR_SALV_FULLSCREEN_ADAPTER        =
*   IMPORTING
*     E_EXIT_CAUSED_BY_CALLER           =
*     ES_EXIT_CAUSED_BY_USER            =
    TABLES
      t_outtab        = t_output
*   EXCEPTIONS
*     PROGRAM_ERROR   = 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.

ENDFORM.                    " CALL_ALV_OUTPUT


*&---------------------------------------------------------------------*
*&      Form  user_command
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm     LIKE sy-ucomm
                           rs_selfield TYPE slis_selfield.


  IF r_ucomm = 'POST'.
    PERFORM process_post.
  ENDIF.
ENDFORM.                    "user_command


*&---------------------------------------------------------------------*
*&      Form  post_documents
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM process_post.
  DATA: w_output LIKE LINE OF t_output.

  DATA: header TYPE bapiache09,
        accountgl TYPE TABLE OF bapiacgl09,
        accountar TYPE TABLE OF bapiacar09,
        accountcr TYPE TABLE OF bapiaccr09,
        document TYPE awkey,
        return TYPE TABLE OF bapiret2,
        w_bktxt TYPE bktxt.



  LOOP AT t_output INTO w_output.
    CHECK w_output-mark IS NOT INITIAL.
    CHECK w_output-belnr_post IS INITIAL.
    CHECK w_output-hkont_new IS NOT INITIAL.
    CONCATENATE w_output-bukrs '-'  w_output-gjahr
            '-' w_output-belnr '-' w_output-buzei
      INTO w_bktxt.
    CLEAR: header, accountgl[], accountar[], accountcr[].


    PERFORM post_header
      USING header w_output-bukrs p_budat p_budat w_bktxt  w_output-xblnr.

    PERFORM post_accountgl TABLES accountgl
      USING w_output-hkont w_output-hkont_new w_output-zuonr w_output-kostl.

    PERFORM post_accountcr TABLES accountcr
      USING w_output-dmbtr w_output-waers w_output-shkzg.


    CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
      EXPORTING
        documentheader    = header
      IMPORTING
        obj_key           = document
      TABLES
        accountgl         = accountgl
        accountreceivable = accountar
        currencyamount    = accountcr
        return            = return.

    READ TABLE return WITH KEY type = 'E' TRANSPORTING NO FIELDS.
    IF sy-subrc IS INITIAL.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.

*      belnr = document+0(10).
*      gjahr = document+14(4).
    ENDIF.

  ENDLOOP.
ENDFORM.                    "post_documents



*&---------------------------------------------------------------------*
*&      Form  post_header
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_HEADER   text
*      -->P_BUKRS    text
*      -->P_BUDAT    text
*      -->P_BLDAT    text
*      -->P_XBLNR    text
*      -->P_TEXT     text
*----------------------------------------------------------------------*
FORM post_header USING p_header  TYPE bapiache09
                               p_bukrs p_budat p_bldat p_text p_xblnr.

  CLEAR p_header.
  p_header-username   = sy-uname.
  p_header-header_txt = p_text.
  p_header-comp_code  = p_bukrs.
  p_header-doc_date   = p_bldat.
  p_header-pstng_date = p_budat.
  p_header-doc_type   = 'SA'.
  p_header-ref_doc_no = p_xblnr.

ENDFORM.                    " POST_DR_FILL_HEADER
*&---------------------------------------------------------------------*
*&      Form  POST_ACCOUNTGL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_ACCOUNTGL  text
*      -->P_W_OUTPUT_HKONT  text
*      -->P_W_OUTPUT_HKONT_NEW  text
*      -->P_W_OUTPUT_ZUONR  text
*----------------------------------------------------------------------*
FORM post_accountgl  TABLES  p_accountgl STRUCTURE bapiacgl09
                                "Introduzir nome correto para <...>
                     USING    p_w_output_hkont
                              p_w_output_hkont_new
                              p_w_output_zuonr
                              p_w_output_kostl.


  CLEAR p_accountgl.
  p_accountgl-itemno_acc = 1.
  p_accountgl-gl_account = p_w_output_hkont.
  p_accountgl-costcenter = p_w_output_kostl.
  p_accountgl-alloc_nmbr = p_w_output_zuonr.
  APPEND p_accountgl.

  CLEAR p_accountgl.
  p_accountgl-itemno_acc = 2.
  p_accountgl-gl_account = p_w_output_hkont_new.
  p_accountgl-costcenter = p_w_output_kostl.
  p_accountgl-alloc_nmbr = p_w_output_zuonr.
  APPEND p_accountgl.

ENDFORM.                    " POST_ACCOUNTGL
*&---------------------------------------------------------------------*
*&      Form  POST_ACCOUNTCR
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_ACCOUNTCR  text
*      -->P_W_OUTPUT_DMBTR  text
*      -->P_W_OUTPUT_WAERS  text
*----------------------------------------------------------------------*
FORM post_accountcr  TABLES   p_currencyamount STRUCTURE bapiaccr09
                                "Introduzir nome correto para <...>
                     USING    p_w_output_dmbtr
                              p_w_output_waers
                              p_w_output_shkzg.



  p_currencyamount-itemno_acc = 1.
  p_currencyamount-currency   = p_w_output_waers.
  IF p_w_output_shkzg = 'H'.
    p_currencyamount-amt_doccur =  p_w_output_dmbtr.
  ELSE.
    p_currencyamount-amt_doccur =  p_w_output_dmbtr * -1.
  ENDIF.
  APPEND p_currencyamount.

  p_currencyamount-itemno_acc = 2.
  p_currencyamount-currency   = p_w_output_waers.
  IF p_w_output_shkzg = 'H'.
    p_currencyamount-amt_doccur =  p_w_output_dmbtr * -1.
  ELSE.
    p_currencyamount-amt_doccur =  p_w_output_dmbtr.
  ENDIF.
  APPEND p_currencyamount.

ENDFORM.                    " POST_ACCOUNTCR