Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- FUNCTION zsd_mx_idoc_filename_change.
- *"----------------------------------------------------------------------
- *"*"Local Interface:
- *" IMPORTING
- *" REFERENCE(DATATYPE) TYPE EDIPO-ACTRIG
- *" REFERENCE(DIRECTORY) TYPE EDIPO-OUTPUTDIR
- *" REFERENCE(FILENAME) TYPE EDIPO-OUTPUTFILE
- *" REFERENCE(CONTROL) TYPE EDIDC
- *" EXPORTING
- *" REFERENCE(PATHNAME) TYPE EDI_PATH-PTHNAM
- *"----------------------------------------------------------------------
- DATA: lv_key TYPE string.
- DATA: path TYPE string.
- DATA: lv_objky TYPE nast-objky.
- DATA: l_sdata TYPE edid4-sdata.
- DATA: l_dtint2 TYPE edid4-dtint2.
- DATA lv_search_string TYPE string.
- DATA lv_key_length TYPE i.
- DATA lv_parval TYPE zmx_cfdi_param-parval.
- DATA: ls_classname TYPE string.
- DATA lv_field TYPE string.
- DATA dataref TYPE REF TO data.
- DATA ls_edic_msg_par TYPE zmx_cfdi_param.
- DATA: lo_segment_type TYPE REF TO cl_abap_structdescr,
- lo_segment_data TYPE REF TO data.
- CONCATENATE directory filename INTO path.
- FIELD-SYMBOLS <f_data> TYPE any.
- FIELD-SYMBOLS <fs_field> TYPE any.
- SELECT SINGLE * INTO ls_edic_msg_par FROM zmx_cfdi_param
- WHERE mestyp = control-mestyp
- AND parid = 'KEY_SIZE'
- AND active = 'X'.
- IF sy-subrc IS NOT INITIAL.
- SELECT SINGLE * INTO ls_edic_msg_par FROM zmx_cfdi_param
- WHERE mestyp = control-mestyp
- AND parid = 'FILE_KEY'
- AND active = 'X'.
- lo_segment_type ?= cl_abap_structdescr=>describe_by_name( ls_edic_msg_par-segtyp ).
- CREATE DATA lo_segment_data TYPE HANDLE lo_segment_type.
- ASSIGN lo_segment_data->* TO <f_data>.
- ELSE.
- lv_key_length = ls_edic_msg_par-parval.
- ENDIF.
- SELECT SINGLE dtint2 sdata INTO (l_dtint2,l_sdata)
- FROM edid4
- WHERE docnum = control-docnum
- AND segnum = 1.
- IF sy-subrc IS INITIAL AND <f_data> IS ASSIGNED.
- MOVE l_sdata TO <f_data>.
- CONCATENATE '<f_data>-' ls_edic_msg_par-parval INTO lv_field.
- ASSIGN (lv_field) TO <fs_field>.
- lv_key = <fs_field>.
- lv_key_length = 18.
- ELSE.
- lv_key = l_sdata(lv_key_length).
- ENDIF.
- lv_search_string = '000000000000000000000000000000'.
- lv_search_string = lv_search_string(lv_key_length).
- REPLACE lv_search_string INTO path WITH lv_key.
- REPLACE '$SYSID$' INTO path WITH sy-sysid.
- CONDENSE path NO-GAPS.
- MOVE path TO pathname.
- MOVE lv_key TO lv_objky.
- ENDFUNCTION.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement